汇编语言 王爽 题目求答案
1 mov ax ,2000H ;ax=2000H
2 mov ss ,ax ;ss=ax
3 mov sp,0 ;sp=0
4 add sp,10 ;sp=10 栈顶2000H:10H
5 pop ax ;debug的结果是002a 问题是哪个地址出栈放进ax中? 是2000H:12H?
6 pop bx ;debug的结果是0011 问题是哪个地址出栈放进bx中? 是2000H:14H?
7 push ax ;ax放进栈
8 push bx ;bx放进栈
9 pop ax ;ax=0011
10 pop bx ;bx=002a
4 , 5 , 6这三行不理解
题目上看栈是非空的不然pop ax 会有 002a ,pop bx 会有 0011
现在我想知道 002a 的物理地址 0011的物理地址
是否分别是2000H:12H 和 2000H:14H
追问:我的答案是
pop ax ;结果是002a 对应2000H:12H这个物理地址 我是当前栈顶sp+2后算的
pop bx ;结果是0011 对应2000H:14H这个物理地址
你的意思是
pop ax ;结果是002a 对应2000H:10H这个物理地址 因为你说pop ax 是当前栈顶
pop bx ;结果是0011 对应2000H:12H这个物理地址
就是说我错啦?
答案:POP AX;表示把当前栈顶指到的内容先送AX,根据之前的指令知此时SS=2000H,SP=0010H,也就是说它是把(SS:SP)->(AX),物理地址就是20010H,然后SP+2-->SP,SP变成了0012H.
POP BX;(SS:SP)-->(BX),物理地址为20012H,然后SP+2-->SP,SP变成了0014H
其他:4 add sp,10 ;sp=10 栈顶2000H:10H
5 pop ax ;debug的结果是002a 是2000H:10H出栈放进ax
6 pop bx ;debug的结果是0011 是2000H:12H出栈放进bx AX 是16位,
POP AX ;结果是002a 对应2000H:10H,2000H:11H这个物理地址,执行后SP 指向2000H:12
POP BX ;结果是0011 对应2000H:12H,2000H:13H这个物理地址,执行后SP 指向2000H:14
上一个:这个等程序怎么删掉?谢谢
下一个:什么是微分型指令和非微分型指令?各有何执行特点