汇编语言中的PUSH的用法
PUSHsrc首先,堆栈指针-2送给堆栈指针,再把源操作数(字)推入堆栈中。我想问的是减2是什么意思?减是的2的十六进制吗??设(ax)=1234H,(sp)=0010H...
PUSH src 首先,堆栈指针-2送给堆栈指针,再把源操作数(字)推入堆栈中。我想问的是减2是什么意思?减是的2的十六进制吗??设(ax)=1234H,(sp)=0010H,执行指令"push ax",寄存器和堆栈中的情况如何?重点就在于如何SP-2,如何减。帮忙算一下吧。sp-2j是如何计算的?这一步请高手具体的说一下吧。我先谢过了。不好意思,没分了。
展开
5个回答
展开全部
PUSH的操作过程是: (SP)<--(SP)-2,((sp))<--OPRD 即先修改堆栈指针SP(压入时为自动减2),然后,将指定 的操作数送入新的栈顶位置。
此处的((SP))<--OPRD,也可以理解为:
[(SS)*16+(SP)]<--OPRD 或 [SS:SP]<--OPRD
示例: PUSH DX
PUSH BP
PUSH CS
PUSH DATA1
PUSH ALFA[BX][SI]
注意: 每进行一次压入操作,都压入一个字(16位)。
扩展资料
PUSH 指令
PUSH 指令首先减少ESP的值,再将源操作数复制到堆栈。操作数是16位的,则ESP减 2,操作数是32位的,则 ESP减4,PUSH指令有3种格式:
PUSH reg/mem16
PUSH reg/mem32
PUSH inm32
推荐于2017-09-01
展开全部
push,汇编术语,实现压入操作的指令是PUSH指令;实现弹出操作的指令是POP指令。
PUSH的操作过程是:
(SP)<--(SP)-2,((sp))<--OPRD 即先修改堆栈指针SP(压入时为自动减2),然后,将指定 的操作数送入新的栈顶位置,简单来说:减2就是指针上移2个单元。
此处的((SP))<--OPRD,也可以理解为:
[(SS)*16+(SP)]<--OPRD 或 [SS:SP]<--OPRD
3. 示例: PUSH DX
PUSH BP
PUSH CS
PUSH DATA1
PUSH ALFA[BX][SI]
注意: 每进行一次压入操作,都压入一个字(16位)。
PUSH的操作过程是:
(SP)<--(SP)-2,((sp))<--OPRD 即先修改堆栈指针SP(压入时为自动减2),然后,将指定 的操作数送入新的栈顶位置,简单来说:减2就是指针上移2个单元。
此处的((SP))<--OPRD,也可以理解为:
[(SS)*16+(SP)]<--OPRD 或 [SS:SP]<--OPRD
3. 示例: PUSH DX
PUSH BP
PUSH CS
PUSH DATA1
PUSH ALFA[BX][SI]
注意: 每进行一次压入操作,都压入一个字(16位)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
减2就是指针上移2个单元, 题中例子里, push ax后, sp=000EH。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
相当于
SUB SP,2
SUB SP,2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有点难度。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询