8086/8088 操作数的寻址方式
8086/8088提供了8种寻址方式对操作数寻址,它们是:隐含寻址、立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址。
- 
隐含寻址 隐含寻址就是指令中不指明操作数,但隐含 在操作码中。如乘法指令(MUL src) 
- 
立即数寻址 - 可以是8位数或16位数
- 常用来给寄存器赋值,不执行总线周期,速度快
- 只能用于源操作数
 例: MOV AL, 2CHMOV AX, 2C40H
- 
寄存器寻址 操作数包含在CPU内的某个寄存器中,指令直接给出寄存器名。 - 
对16位的操作数,寄存器可以是:AX,BX,CX,DX,SI,DI,SP,BP 对8位的操作数,寄存器可以是:AL,BL,CL,DL及AH,BH,CH,DH 
- 
源操作数和目的操作数都可用 
- 
不执行总线周期,执行速度快 
 例: INC CXMOV AX, BX
- 
以下介绍五种存储器寻址方式:
- 
直接寻址 操作数在存储器中,16位有效地址EA由指令直接给出 - 如果没有指定段超越前缀默认操作数在数据段
 例:  MOV AL, [1400H]
- 
寄存器间接寻址 操作数的有效地址在指令中指定的某个寄存器中 - 能用作间址寄存器的寄存器:BX, BP, SI, DI
- BP为间址寄存器时,操作数在堆栈段中,其余为数据段
 例:  MOV AX, [DI]
- 
寄存器相对寻址 偏移地址是寄存器内容与带符号8位或16位位移量之和 - 寄存器可以是BX、BP或SI、DI。
- EA = BX/BP 或 SI/DI +0/8/16位位移量
- 段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS,可用段超越前缀改变。
 例: MOV AX, [DI+0100H]
- 
基址变址寻址 偏移地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成 - EA=BX/BP+SI/DI
- 段基址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS,可用段超越前缀改变。
 例: MOV AX, [BX] [SI] ← → MOV AX, DS: [BX+SI]
- 
相对基址变址寻址 有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和 - EA=BX/BP+SI/DI+8/16位位移量
- 段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS,可用段超越前缀改变。
 例: MOV AX, 06H[BX+SI] ← → MOV AX, DS:[BX+SI+06H]

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号