汇编中push指令后面可以直接加数字吗?

如题所述

push 指令后面可以压入立即值,但限于一字节,即0-255
push 1
push 12

push 可以压入内存,但必须指定型别
push word ptr [100]
push dword ptr [100]

push 可以压入任何16或32位暂存器(ip除外)

使用格式为:
PUSH DATA
比如:PUSH  50
当SP=0100H时,执行该语句后0100H这个地址中就存入了50这个数据。
与之对应的是POP语句,这个语句后面是不能跟数字的,因为POP后面是目标地址。

温馨提示:内容为网友见解,仅供参考
无其他回答

汇编中push指令后面可以直接加数字吗?
push指令后面可以压入立即值,但限于一字节,即0-255push1push12push可以压入内存,但必须指定型别pushwordptr[100]pushdwordptr[100]push可以压入任何16或32位暂存器(ip除外)使用格式为:PUSHDATA比如:PUSH 50当SP=0100H时,执行该语句后0100H这个地址中就存入了50这个数据。与之对应的是POP语句,...

汇编中push指令后面可以直接加数字吗 比如push
不能是立即数 因此 push 1000H 对于8086CPU 操作码后面的数字代表的是立即数 是非法指令 2 但是如果是单片机(如51单片机) 如:push 90H 操作码后面的数字代表的是寄存器或存储器的直接地址 则 是合法的 呵呵 满意 就给加分哦 ...

汇编中push指令后面可以直接加数字吗?
push 指令后面可以压入立即值,但限于一字节,即0-255push 1push 12push 可以压入内存,但必须指定型别push word ptr [100]push dword ptr [100]push 可以压入任何16或32位暂存器(ip除外)使用格式为:PUSH DATA比如:PUSH 50当SP=0100H时,执行该语句后0100H这个地址中就存入了50这个数据。与...

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

汇编语言里面关于 push mov lea的一点小问题。
push 的后面,应该写16位的操作数,可以是寄存器名称,如:push AX push BX ……--- mov eax,[xxx],是把逗号右边,当做源,左边当做目的。80x86 的汇编,都是这样的。其它的汇编语言,也有用左边的当做源。

汇编语言问题
只能顺着做 PUSH指令是执行一次后SP自加1的,这是解题重点,PUSH #53H即将#53H存为40H地址SP加1 同理PUSH #54H即将#54H存为41H,那么这时41H里的数就是#54H了,SP再自加1,即为42H。MOV A,41H 就是将41H的数给A,那么A=#54H了 最后结果为 SP=42H A=54H ...

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

汇编语言中的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汇编
在汇编指令中,PUSH和POP是两种重要的堆栈操作。PUSH用于将数据压入堆栈,其格式为PUSH OPRD,其中OPRD是一个16位的操作数,可以是寄存器或存储器的值。执行PUSH时,首先执行(SP) -= 2,然后将OPRD的值存储在新的栈顶位置,这一过程可以用[(SS)*16+(SP)] = OPRD或[SS:SP] = OPRD来理解。例...

汇编push 问题
当你用PUSH指令往这个段里写数据时,实际是在破坏DOS系统。在DOS系统核心已被破坏得不知什么样子的情况下,出现各种异常都有可能。使用DEBUG时,要注意一点:不带参数直接启动DEBUG时的DS、ES、SS的值已经指向了用户可用内存的最低端。实验过程中,不能往段地址比初始DS更小的内存中写入数据。

相似回答
大家正在搜