更新时间:2023-02-16 12:02
立即寻址方式的目的就是将操作数紧跟在操作码后面,与操作码一起放在指令代码段中,在程序运行时,程序直接调用该操作数,而不需要到其他地址单元中去取相应的操作数,上述的写在指令中的操作数也称作立即数。
在MCS-51单片机汇编语言编程中,该寻址方式是将“#”号放在立即数前面,以表示该寻址方式为立即寻址,如将操作数写为#52H。
例: MOV A ,#52H
上述例子中“MOV”为操作码,“A”为第一操作数,其意义为累加寄存器,“#52H”为第二操作数,其意义就是立即数。通过该条程序指令可将十六进制数52H直接放入累加器中,当然也可以将立即数表示为二进制数或十进制数,如#00B。
在8086系列微型处理器汇编语言编程中,该寻址方式不用将“#”放在立即数前面。
例: MOV AH,80H
上述例子中的第一个操作数“AH”表示高位累加器,第二个操作数为立即数,其前不用加入“#”。
1、 根据数制类型不同,可以使用二进制、八进制、十进制、十六进制等表示方法,并在相应的数制类型后面加上B、O、D、H作为区分,例如:00001111B,02H等。
2、根据微型处理器的处理位数不同,程序编写时应对其取值范围、存储方式加以注意。如对于8位处理器,应采用00H至FFH(以十六进制表示)之间的数。
3、对于16位以上的处理器在立即数为16位或32位时,它将按“高高低低”的原则进行存储。
例如(以下的例子为8086系列汇编语言中指令格式,括号中为指令的解释):
MOV AH,80H (将八位立即数存入高位累加寄存器)
ADD AX,1234H (将十六位立即数与累加寄存器中的数相加并存入累加寄存器)
MOV ECX,12345678H(将三十二位立即数存入扩展计数寄存器)
MOV B1, 12H(将八位立即数存入字节单元)
MOV W1,3456H(将十六位立即数存入字单元)
ADD D1,32123456H(将三十二位立即数与双字单元中的数相加)
应注意,以上指令中的第二操作数(例:MOV AH,80H中80H为第二操作数)都是立即数,在汇编语言中规定:立即数不能作为指令中的第一操作数。该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。