什么是立即操作数?

什么是立即操作数?

问题的发现

在汇编语言中, 用作立即操作数 的所有标签和数字常量 ( 即不在诸如 3 (%eax, %ebx, 8) 这样的地址计算中 ) 总是以美元符号 $ 为前缀. 需要的时候, 前缀 0x 表示十六进制数, 例如 $ 0xABC . 如果没有前缀, 则默认该数字为十进制数。

AT&T汇编格式中,用$前缀表示一个立即操作数。(在Intel汇编格式中,立即数的表示不用带任何前缀。)那我们就有必要知道什么是立即操作数,以便正确添加&~

我们先了解一下什么是立刻数、什么是操作数?


1. 什么是立刻数

立刻数是一个常量,可以写成十进制(D),十六进制(H),八进制(O),二进制(B)。例如:ADD AX,0FFH;其中的0FFH就是立刻数。

通俗一点的理解:一个你可以凭空捏出来给CPU,不需要CPU去各种寄存器取的常量数据。

注意一点:立即数只能作为源操作数,不能放在目的操作数位置。也就是指令中结果所存放的数据位。


2. 什么是操作数

通常一条指令包含操作符和操作数,操作数是指令执行的参与者,也就是说操作数是参与某种功能操作的数据

操作数有三种方式提供:立即数、寄存器存放的数据、内存中的数据

通俗一点的理解:操作符是加工的方式,操作数是被加工的东西。


3. 立即操作数到底是什么

前面提到操作数有一种提供方式是立即数,那么通常把在立即寻址方法指令中给出的数称为立即操作数。(7种寻址方法)

或者这样理解:指令要操作的数据以常量的形式出现在指令中,称为立即操作数

同样的可以这样延伸理解寄存器操作数内存操作数


参考文章

什么是操作码和操作数

七种寻址方式

立即数

汇编立即操作数有哪些

你可能感兴趣的:(汇编语言)