huanghaozi 的窝

我是真滴辣鸡 开始使用

自学笔记——汇编语言 (2)

SS(Stack Segment)

SS是存放这个堆栈段所在的地址的一个段寄存器,表示的是栈顶

注意,不可直接把数据写入SS这个寄存器!只能用其他寄存器(如ax)中转

;示例:
;正确写法
MOV ax,1000H
MOV ss,ax        

;错误写法
MOV ss,1000H

SP(Stack Pointer)

SP是这个栈内游标所在的位置,从栈底下面一个单元开始,随着元素push进来向栈顶方向走
无标题5.jpg

注:栈为空的时候,SP指针指向的是栈底下面的单元,在PUSH指令作用后,SP指针将上移一个单元

通过对SS和SP赋值,可确定栈顶和栈底所在的地址,由此确定一个栈

由此可推理出,给SP赋予的初始值实际上是整个栈的大小,比如要用16个字节,10000H1000FH里面定义一个栈,也就是1000里的 0F,那么SS就要赋值1000H,SP就赋值16字节,也就是0010H

PUSH

PUSH 16    ;将16入栈
PUSH ax    ;将ax里的数据入栈

POP

POP ax    ;出一个栈顶元素,放进ax里

综合示例

mov ax,0056H ;栈顶在0056H处
mov ss,ax

mov sp, 0080H ;16*8=128字节
评论
留下你的脚步
推荐阅读