汇编语言中的PUSH的用法

PUSH src 首先,堆栈指针-2送给堆栈指针,再把源操作数(字)推入堆栈中。我想问的是减2是什么意思?减是的2的十六进制吗??设(ax)=1234H,(sp)=0010H,执行指令"push ax",寄存器和堆栈中的情况如何?重点就在于如何SP-2,如何减。帮忙算一下吧。sp-2j是如何计算的?这一步请高手具体的说一下吧。我先谢过了。不好意思,没分了。

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

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于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位)。
第2个回答  2008-12-16
减2就是指针上移2个单元, 题中例子里, push ax后, sp=000EH。本回答被提问者采纳
第3个回答  2008-12-17
相当于
SUB SP,2
第4个回答  2008-12-16
有点难度。

push是什么指令
push指令就是汇编语言指令 栈。

汇编语言中的PUSH的用法
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...

汇编语言中的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]注意:每进...

汇编push和pop指令
push指令用于将寄存器中的数据压入栈中,pop指令则用于从栈中弹出数据到寄存器中。具体操作如下:push寄存器:将指定寄存器的内容压入栈顶。pop寄存器:从栈顶弹出数据到指定寄存器中。下面通过一段汇编代码演示栈操作的实现过程,代码使用MASM编辑器进行编写(假设使用了王爽的环境配置)。假设选择10000H至100...

push和pop是什么指令?
具体来说,"push" 操作会将一个数据项压入栈顶,通常会将栈顶指针向下移动(递增)。这个数据项可以是任何类型的数据,包括整数、浮点数、字符、指针等等。例如,在汇编语言中,可以使用 "push" 指令将一个寄存器的值压入栈顶。相反,"pop" 操作会从栈顶弹出一个数据项,并将其移除栈顶。通常会将...

汇编push压桟指令
push可以保存现场,然后调用其他函数,等其他函数返回后,又可以接着原来的运行。push也可以将参数传递给函数调用。当然还有其他的作用。

汇编(关于PUSH的SP问题)
PUSH AX 同理SP=SP-2,此时SP=00FCH 物理地址=SS*10H+SP=3000H*10H+00FCH=300FCH CALL L1 调用子程序即过程调用,为了保护现场,会压栈保存断点,段内调用,说明L1的属性为NEAR,只需保存IP,SP=SP-2,但是如果是段间调用则需要保存CS和IP 那么SP=SP-4.不管怎么样,在执行完RET后,要恢复...

汇编语言 PUSH 用法疑问
如果,16进制的数是一A - F之间的字母开头的话,必须在前面加上0 即push 0FFFFh,push不一定是将16位源操作数压入栈,32位的程序,就是压入32位的数值

push表是什么意思?
push操作在编程中有很多应用。例如,在汇编语言中,push操作用于将寄存器的值压入栈中,以便保存这些值。在高级编程语言中,push操作用于将函数的参数压入栈中,并跳转到函数执行的代码。在Web开发中,push操作可以用于将数据存储到数据库、缓存中,以及向队列、任务队列等发送消息,实现异步任务。push操作...

汇编语言 push指令后面的内存地址可以是奇数吗?比如push [3]合法吗?
可以。push [3] 合法。

相似回答