问题 3.8
(1) 将 10000H~1000FH 这段空间当作栈,初始状态栈为空
参考“问题 3.7”:
mov cx, 1000H
mov SS, cx
mov SP, 0010H
(2) 设置 AX=001AH,BX=001BH
mov ax, 001AH
mov bx, 001BH
(3) 将 AX、BX 中的数据入栈
push ax
push bx
(4) 将 AX、BX 清零
sub ax, ax
mov bx, ax
(5) 从栈中恢复 AX、BX 原来的内容
pop bx
pop ax
注意,栈空间中出、入栈遵循的规则是“后进先出”,因此不能将这两条指令的执行序列颠倒。可见,用栈来暂存以后需要恢复的寄存器数据时,出栈顺序要和入栈顺序相反,因为最后入栈的寄存器数据在栈顶,所以在恢复时要让它先出栈。