设当前程序的堆栈收寄存器(SS)=6000H,堆栈指针寄存器(SP)=2000H;(AX)=3000H (BX)=5000H,问执行 PUSH AX、PUSH BX和POP AX后,问(SS)=?(SP)=?(AX)=?(BX)=?并分别画图依次说明执行上述三条指令时堆栈指针的变化情况)
时间: 2023-06-20 11:09:12 浏览: 126
执行 PUSH AX 操作时,将 AX 的值 3000H 压入栈中。由于栈是向下生长的,所以 SP 的值会减少 2 个字节,即 SP=1FFEh。栈中的内容如下($表示空出的位置):
| 1FFFh | 3000h |
| ----- | ----- |
| 1FFEh | $ |
| 1FFDh | $ |
| ... | ... |
| 2000h | $ |
执行 PUSH BX 操作时,将 BX 的值 5000H 压入栈中。同样,SP 的值会再次减少 2 个字节,即 SP=1FFCh。栈中的内容如下:
| 1FFFh | 3000h |
| ----- | ----- |
| 1FFEh | 5000h |
| 1FFDh | $ |
| ... | ... |
| 2000h | $ |
执行 POP AX 操作时,将栈顶的值 5000H 弹出并存入 AX 中。SP 的值会增加 2 个字节,即 SP=1FFEh。栈中的内容如下:
| 1FFFh | 3000h |
| ----- | ----- |
| 1FFEh | $ |
| 1FFDh | $ |
| ... | ... |
| 2000h | $ |
执行完毕后,AX 的值为 5000H。
最终的状态为:(SS)=6000H,(SP)=1FFEh,(AX)=5000H,(BX)=5000H。
堆栈指针的变化情况如下图所示:
![堆栈指针变化图](https://img-blog.csdn.net/20180820144518707?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B1YmxpY19vZmZpY2lhbF9sb2dv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
阅读全文