当前位置:编程学习 > 汇编语言 >>

汇编语言 王爽 题目求答案

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 

上一个:这个等程序怎么删掉?谢谢
下一个:什么是微分型指令和非微分型指令?各有何执行特点

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,