编程并命名
![](https://img.haomeiwen.com/i11408017/fb21320ae4b67158.png)
编译
![](https://img.haomeiwen.com/i11408017/e69c74eb5d23966e.png)
链接
![](https://img.haomeiwen.com/i11408017/de211069b9202cdd.png)
使用debug运行追踪
运行:
![](https://img.haomeiwen.com/i11408017/96f55fde4cbf46b9.png)
![](https://img.haomeiwen.com/i11408017/7f9f61a8d1efa2b6.png)
![](https://img.haomeiwen.com/i11408017/b050cf30c2abeea8.png)
![](https://img.haomeiwen.com/i11408017/eeb84101493bcf85.png)
分析:
一:指定栈顶位置
mov ax,2000h
mov ss,ax
mov sp,10
二:出栈两次并将数据存放到ax,bx
pop ax
pop bx
此时ax,bx的数据改为出栈的数据
三:入栈,将ax,bx中的数据按顺序入栈
push ax
push bx
此时,bx是栈顶元素,ax在栈底
四:出栈两次,分别将出栈的数据存储到ax,bx中
pop ax
pop bx
此时ax的值与bx的值和上一次入栈时的值相反,即ax中存放上一次bx出栈的值,bx存放上一次ax出栈时的值
五:运行返回程序代码,程序结束运行
mov ax,4c00h
int 21h
网友评论