二、立即寻址
在立即寻址方式中,立即操作数可以是8位或16位,并且是指令的一部分。立即数据总是紧跟在指令操作码之后并和操作码一起存放在代码段中,因而立即数据总是和操作码一起被放入BIU中的指令队列里,在指令执行时不需再存取存储器。
汇编格式:n (n为立即操作数)
功能:指令下一单元的内容为操作数n。
立即寻址的寻址方式如图所示:
对立即寻址方式,我们可和寄存器寻址比较学习。首先这两种寻址方式都不需要访问内存,这是它们之间的共同点,其次,立即寻址的操作数就在代码段里的操作码之后,是指令的一部分,而寄存器寻址的操作数则放在指令规定的寄存器中。
例:2003年4月考题
根据下面定义的数据段:
DSEG SEGMENT
DAT1 DB ‘1234‘
DAT2 DW 5678H
ADDR EQU DAT2-DAT1
DSEG ENDS
执行MOV AX,ADDR指令后,AX寄存器中的内容是:
(A)5678H (B)7856H
(C)4444H (D)0004H
答案:D
内存分配示意图:
分析:首先根据题目定义的数据段画出内存分配示意图,画图时要注意字符在内存中是以ASCII码的形式存放,同时标出每个存储单元的偏移地址(EA),在相应的存储单元标出变量名。从内存分配示意图,我们可知DAT1和DAT2的EA分别为0和4,因此表达式DAT2-DAT1的值为4。指令EQU是符号定义伪指令,则ADDR为一个符号常量,代表4。MOV AX,ADDR指令中的源操作数ADDR是立即寻址,执行后就是把4的传给AX。所以答案选D。
立即寻址方式主要用来给寄存器或存储器赋初值,也可以与寄存器操作数或存储器操作数进行算术逻辑运算。采用立即寻址方式不仅能简化数据的存取,而且可使指令的书写直观、清晰。在程序设计中,立即寻址方式使用得相当多。
三、直接寻址
在直接寻址方式中,操作数的偏移地址(EA)是指令的一部分,它与操作码一起存放在代码段中,而操作数可以存放在数据段,也可以存放在其他段。操作数的物理地址(PA)由其所在段的段寄存器内容左移4位与指令中给出的偏移地址(EA)相加形成。