一、寻址方式
1.指令的基本格式:
操作码 | 操作数 | ....... | 操作数 |
操作数字段可以为0个、一个、二个或三个。对应的称为零地址指令、一地址指令、二地址指令或三地址指令。
二、数据寻址方式
- 立即寻址方式 MOV AX , 2000H
- 寄存器寻址方式 MOV AX , BX
- 直接寻址方式 MOV AX , [2000H]
- 寄存器间接寻址方式 MOV AX , [BX]
- 基址变址寻址方式 MOX AX,[BX][SI]
- 寄存器相对寻址方式 MOX AX,ARRAY[BX]
- 相对基址变址寻址方式 MOX AX,ARRAY[BX][DI]
- 比例变址寻址方式 MOX EAX,[EBX+4*ECX]
MOX EAX,ARRAY[4*ECX]
MOX AX,[EBX+2*EDI]
三、详述
在汇编语言中,用"[]"表示存储单元的内容。
(1)立即寻址方式
操作数直接存放在指令中
注意:
- 该寻址方式只能用在SRC(即源操作数)的寻址上,不能用于DST
- SRC和DST的字长(位数)要一致
(2)寄存器寻址方式
操作数在寄存器中,指令指定寄存器号
注意:
- SRC和DST的字长(位数)要一致
- DST不能为CS
(3)直接寻址方式
(4) 寄存器间接寻址方式
(5)寄存器相对寻址方式
有效地址时寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX/BP/SI/DI+8/16位位移量。其中,BX/SI/DI寄存器默认数据段DS,BP寄存器默认堆栈段SS。
(6)基址变址寻址方式
当得到的有效地址超过FFFFH时,要取其64k的模。
(7)相对基址变址寻址方式
使用基址寄存器(BX/BP)和变址寄存器(SI/DI),还在指令中指定一个8/16位的位移量,这三者之和构成操作数的有效地址EA,即EA=BX/BP+SI/DI+8/16位的位移量。与BX寄存器约定的段为数据段DS,与BP寄存器约定的段为堆栈段SS
指令中的位移量采用补码表示,如果是8位,则被带符号扩展到16位。如果得到的有效地址EA超过FFFFH,则取其64K的模