很奇怪,堆栈指针SP的问题!!

2020-02-04 09:35发布

堆栈指针SP的问题,很奇怪,大家进来看一下,谢谢
org 0000h
ajmp main
org 0050h
main:mov sp,#32h         
     mov 30h,#50h      
     mov 31h,#5Fh   
     mov 32h,#3ch   
     POP DPH;  
     POP DPL;     
     POP SP;     
     nop     
     end
运行完以上程序后,我不理解为什么sp=50h,执行POP SP首先把(30H)=50H的内容给SP,然后因为是出栈所以要减一不是吗?为什么不是(SP)=4FH   ?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
byd396558
1楼-- · 2020-02-05 03:08
回复【3楼】BDXing6
当然是50h,因为你前面有一句mov 30h,#50h
当执行到pop sp时,会把30h单元内容送入sp
-----------------------------------------------------------------------

有道理,我刚才试了下。确实如此
到弹出指令pop时:
  sp=32h-->(3ch)“POP DPH”(将3ch压入DPH)
sp-1=31h-->(5fh)“POP DPL”(将5fh压入DPL)
sp-1=30h-->(50h)“POP SP”(将50h压入SP)
最后一个pop是把目前指针对着的地址内容压入sp,此时未执行压入指令之前,sp=30h,对应的地址里面装得数据是50h。

一周热门 更多>