关于单片机堆栈指针sp变化的问题1.如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:POP\x05\x05DPH;POP\x05\x05DPL;POP\x05\x05SP;则:(DPH)= ___3CH___;(DPL)=___5FH___;(SP)=___50H___; 如上
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 17:53:52
关于单片机堆栈指针sp变化的问题1.如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:POP\x05\x05DPH;POP\x05\x05DPL;POP\x05\x05SP;则:(DPH)= ___3CH___;(DPL)=___5FH___;(SP)=___50H___; 如上
关于单片机堆栈指针sp变化的问题
1.如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:
POP\x05\x05DPH;
POP\x05\x05DPL;
POP\x05\x05SP;
则:(DPH)= ___3CH___;(DPL)=___5FH___;(SP)=___50H___;
如上题,我不理解为什么sp=50h,执行POP\x05SP首先把(30H)=50H的内容给SP,然后因为是出栈所以要减一不是吗?为什么不是(SP)=4FH
还有进栈的时候设一开始sp=50H,A=01H然后执行PUSH ACC,指针SP先加一,再把A=01H放入51H,
还是先再把A=01H放入51H,再加一?
如果是第一种,那50H岂不是没利用到?
我试过了,第一问却是是等于50h,很奇怪,不理解
org 0000h
ajmp main
org 0050h
main:mov sp,#32h
\x05 mov 30h,#50h
\x05 mov 31h,#5fh
\x05 mov 32h,#3ch
\x05 POP DPH;
\x05 POP DPL;
\x05 POP SP;
\x05 nop
\x05 end
关于单片机堆栈指针sp变化的问题1.如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:POP\x05\x05DPH;POP\x05\x05DPL;POP\x05\x05SP;则:(DPH)= ___3CH___;(DPL)=___5FH___;(SP)=___50H___; 如上
为什么不是(SP)=4FH ?
应该是4FH.
问题二:那50H岂不是没利用到?
50H是不用的.
复位后,SP=07H. 但是,07H就从来不用于堆栈.第一次压栈,是压入了08H单元.