立即数是什么意思-立即数是否合法
KTV115116
添加不了直接电话
立即数是什么意思 立即数介绍
1、立即数:一个立即数是一块数据存储作为指令本身,而不是在一个中的一部分内容存储器位置或寄存器。立即值通常用于加载值或对常量执行算术或逻辑运算的指令。
2、比如一个数 10,把他存入内存中,高级语言表示法是 int i=10,这个数放入内存之前叫立即数,放入之后就不是了,再比如一个数 10,把他存入寄存器中,这个数放入寄存器之前叫立即数,放入之后就不是了
什么是立即数寻址?
立即数;指在程序存储区的常数,运行时数据不可改变。
立即数寻址是mcs-51单片机的一种寻址方式,操作数就写在指令中,立即寻址方式所提供的操作数紧跟在操作码后面,与操作码一起放在指令代码段中,不需要到其他地址单元中去取。
立即数寻址指在程序存储区对立即数读取。
如:mov
mov
a
,#4fh
4fh
是在程序存储区存放的,所以是写死的,运行时改变不了。
立即数是什么意思
在8086等CPU处理器中可按下面例子。 单片机为例。
通常把在立即寻址方式指令中给出的数称为立即数。
立即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。例如:
MOV AH, 80H ADD AX, 1234H MOV ECX, 123456H
MOV B1, 12H MOV W1, 3456H ADD D1, 32123456H
其中:B1、W1和D1分别是字节、字和双字单元。
以上指令中的第二操作数(源操作数)都是立即数,在汇编语言中,规定:立即数不能作为指令中的第一操作数(目的操作数)。该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。
立即数寻址方式通常用于对通用寄存器或内存单元赋初值。
下面以ARM汇编编译器为例:
立即数方式:每个立即数由一个8位的常数循环右移偶数位得到。其中循环右移的位数由一个4位二进制的两倍表示。如果立即数记作immediate,8位常数记作immed_8,4位的循环右移值记作rotate_imm,则有:
immediate=immed_8循环右移(2*rotate_imm)
这样并不是每一个32位的常数都是合法的立即数,只有能够通过上面构造方法得到的才是合法的立即数。
怎么分辨立即数 寄存器操作数 存储器操作数
立即数是什么意思,最好举个例子?
立即能从指令流中得到的数,
mov
ax,0ffffh;对应机器指令为:b8
ff
ff,
其中的0ffffh即为立即数,它存在于指令中,可立即获得
寄存器操作数是什么意思,最好举个例子?
上例中的
ax
即为寄存器操作数,操作数本身存放于寄存器中,在指令中只是给出了几个位的代码来表示它具体存放在那个寄存器中。
以下是一些指令的机器码和对应的汇编指令
b80000
mov
ax,0000
baffff
mov
dx,ffff
b9ffff
mov
cx,ffff
bbffff
mov
bx,ffff
存储器操作数是什么意思,最好举个例子?
那就是存放在内存器中的操作数,
如:
mov
si,
[2000h]中的[2000h]
mov
[bx+si+02],ax中的[bx+si+02]
这些操作数实际被存放于内存储器中,被操作或运算时需要从存贮器中取出并被cpu接受送到运算器等参与操作运算。
内存操作数是什么意思,最好举个例子??
没太听说,要有的话,也就和存储器操作数没有多大差别