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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编中push指令后面可以直接加数字吗 比如push相关的知识,希望对你有一定的参考价值。

比如 push 1000H 请问这个格式对吗?

呵呵 那要看你使用的是哪种CPU的汇编指令
1 对于8086CPU
汇编中PUSH指令 为入栈操作指令 可以将寄存器、段寄存器、存储器的内容送入堆栈保存
只有3种格式:
PUSH reg
PUSH sreg
PUSH mem
操作数只能是 寄存器 reg、段寄存器 sreg、存储器mem。
不能是立即数 因此 push 1000H 对于8086CPU 操作码后面的数字代表的是立即数 是非法指令

2 但是如果是单片机(如51单片机) 如:
push 90H 操作码后面的数字代表的是寄存器或存储器的直接地址 则 是合法的

呵呵 满意 就给加分哦
参考技术A PUSH后面是可以直接加数字的,相当于将后面这个数字压入当前栈顶。使用格式为:
PUSH DATA
比如:PUSH 50
当SP=0100H时,执行该语句后0100H这个地址中就存入了50这个数据。
与之对应的是POP语句,这个语句后面是不能跟数字的,因为POP后面是目标地址。
参考技术B 呵呵 那要看你使用的是哪种CPU的汇编指令
1 对于8086CPU
汇编中PUSH指令 为入栈操作指令 可以将寄存器、段寄存器、存储器的内容送入堆栈保存
只有3种格式:
PUSH reg
PUSH sreg
PUSH mem
操作数只能是 寄存器 reg、段寄存器 sreg、存储器mem。
不能是立即数 因此 push 1000H 对于8086CPU 操作码后面的数字代表的是立即数 是非法指令

2 但是如果是单片机(如51单片机) 如:
push 90H 操作码后面的数字代表的是寄存器或存储器的直接地址 则 是合法的。
参考技术C 你好,push指令是可以加立即数的,所以push 1000H是可以的 参考技术D PUSH有这种格式,但8086不允许。

汇编指令,INC指令的操作数都可以是啥

可以是通用寄存器,可以是存储器, 可不可以是变量常量?

所谓的变量,就是指存储器操作数。
所以,变量是可以的。

常量肯定不行。
INC指令中的操作数,既是源操作数,也是存放结果的目的操作数。
而目的操作数,一定不可以用常量立即数。
参考技术A INC,累加1,通常用于循环累加,地址累加或者指针累加
INC是汇编语言中算术运算类指令,起到加1的功能。   助记符 指令说明 字节数 周期数   INC A 累加器加1 1 1   INC Rn 寄存器加1 1 1   INC direct 直接地址加1 2 1   INC @Ri 间接RAM 加1 1 1   INC DPTR 数据指针加1 1 2
参考技术B 楼主可以下一个汇编指令查询器:1. OPRD 为寄存器或存储器操作数.2. 这条指令执行结果影响AF、OF、PF、SF、ZF标志位,但不影响CF标志位.3. 示例:
INC SI;(SI)<--(SI)+1
INC WORD PTR[BX]
INC BYTE PTR[BX+DI]
INC CL;(CL)<--(CL)+1 注意: 上述第二,三两条指令,是对存储字及存储字节的内容加1以替代原来的内容.变量可以 你可以吧变量想象成一个容器它可以装任何东西常量 不可以 常量就好比你的名字从生到死一直都是你那个名字

以上是关于汇编中push指令后面可以直接加数字吗 比如push的主要内容,如果未能解决你的问题,请参考以下文章

汇编指令学习(寻址方式)

汇编语法

汇编指令,INC指令的操作数都可以是啥

汇编语言中CALL可以用啥代替

我可以先执行“ PUSH”指令使用其他指令执行的相同任务吗?

汇编效率优化:指令处理机制