以下为存放于存储器中的寻址方式:
1、直接寻址:指令中直接给出操作数在内存中的偏移地址
eg:MOV AX,[1200H]
将偏移地址1200H传送给AX(AX是16位寄存器)
直接寻址方式下,操作数默认在数据段,但允许段重设,即由指令给出所在逻辑段
eg:MOV AX,ES: [1200H]。 ES: 段重设符
2、寄存器间接寻址:操作数存放在内存中,数据在内存中的偏移地址为方括号中通用寄存器的内容 。
仅有4个通用寄存器可用于存放数据的偏移地址。(BX,BP,SI,DI命名为:间址寄存器)间接寻址的一般格式为:[间接寄存器]
eg:MOV BX , 1200H
MOV AX , [BX]
操作数的段地址(数据处于哪个段)取决于选择哪一个简址寄存器:
BX,SI,DI → 默认在数据段
BP → 默认在堆栈段
3、寄存器相对寻址:操作数的偏移地址为寄存器的内容加上一个位移量
eg:MOV AX ,[BX+DATA]
DATE为任意8bit或16bit常数,段地址由所选间址寄存器决定
eg:MOV AX ,2000H 立即寻址,把2000H常数直接传输给AX
MOV DS ,AX 寄存器间接寻址,把AX传输给DS
MOV BX ,1200H 立即寻址,把1200H常数传输给BX
MOV AL ,[BX]5 寄存器相对寻址,BX偏移地址+5传输给AL
4、 基址、变址寻址:操作数的偏移地址为,一个基址寄存器的内容 + 一个变址寄存
器的内容
操作数的段地址由选择的基址寄存器决定
基址寄存器为BX,默认在数据段
基址寄存器为BP,默认在堆栈段
基址变址寻址方式与相对寻址方式一样,主要用于一维数组操作。
eg:MOV SI , 1100H
MOV BX, SI
MOV AX , [SI + BX] 也可表示为[BX][SI]
5、基址、变址、相对寻址:操作数的偏移地址为,基址寄存器内容+变址寄存器内容+位移量
操作数的段地址由选择的基址寄存器决定
基址变址相对寻址方式主要用于二维表格操作。
eg:MOV DI ,1100H
MOV BP, DI
MOV AL ,[BP][DI]5 因为基址寄存器选择BP,表示操作数在堆栈段