关于汇编的~~,实在搞不懂了??

来源:百度知道 编辑:UC知道 时间:2024/05/21 17:52:40
PUSH AX
执行前:(AX)=04F8H, (SP)=1000H
执行: 1.(SP)-1→SP;(AH)→[SP]
2.(SP)-1→SP;(AL)→[SP] (AX)→↓(SP)
操作结束后,堆栈段中的偏移地址0FFEH中的内容为04F8H.用符号表示为:
(OFFEH)=04F8H

PUSH AX
这条指令是将AX中的值进行入栈的操作.
在8086汇编中,所有的入栈,出栈操作都是以"字"进行的,而不是"字节"
所以,LZ的"执行: 1.(SP)-1→SP;(AH)→〔SP〕
2.(SP)-1→SP;(AL)→〔SP〕"写法是错误的!
应该这样:
执行:1)SP-2->SP
2)向SS:SP指向的字单元中送入数据.
原来(SP)=1000H,执行-2后是(SP)=0FFEH
再将AX中的内容送入,则SS:0FFEH=04F8H

注意一点:1000H-1=0FFFH,0FFFH-1=0FFEH,不是楼上说的1000H-1=0FFEH

在SS段中,SP先减一(即1000H-2=0FFEH),然后把AX的值放入SP中,此时(SP)=0FFEH。应该就是这样吧~~~欢迎交流讨论!