一道堆栈的问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 00:51:41
若8051的(SP)=50H,(A)=37H,(10H)=73H
执行 PUSH ACC
PUSH 10H
POP ACC
则 (A)=______,(10H)=________,
(SP)=_______

正确答案:(A)=73H (10H)=73H (SP)=51H
push,pop指令准则如下
执行push是先将SP加1,再填入数据
执行pop是先弹出数据,SP再减1

PcrazyC - 经理 五级
所回答的push和pop指令执行规则为8086里面的,不是51的;

(A)=10H,(10H)=73H,
(SP)=4FH

(A)=73H
(10h)=73H
(SP)=4E

每执行一次PUSH,SP就会减2(一个字的大小,占两个字节),然后将操作数或寄存器压入栈中,执行一次POP,SP就会加2,并将栈顶元素的值送到指定的寄存器中,所以最后SP减2
而(10H)在整个过程中没有改变,所以还是73H,而(A)却在最后一个POP指令改变了其值,也就是最后入栈的那个寄存器的值,所以也是73H

我还没有学汇编,刚才在网上翻了一下资料后的个人理解,有错误的话,楼主你就拿砖头来吧

8051的汇编栈的一些设计方面可能不像我所考虑的一样吧