8086/8088系列计算机由7种基本数据寻址方式:
1、立即寻址:即指令中直接给出操作数本身。
【例】MOV AX, 1234H: AX ← 1234H
2、寄存器寻址(执行速度快):操作数存放在寄存器中,指令中给出寄存器名。
(1)MOV AX , 1234H ; 目标操作数
(2)MOV DX, AX ;目标操作数、源操作数
3、直接寻址:即指令中给出操作数所在存储单元的有效地址,缺省的段为数据段。
(1)MOV AX , [2000H] ;AX ← (DS:2000H)
(2)MOV [1200], BL ;(DS:1200H) ← BL
(3)MOV ES:[0100] , AL ;(ES:0100H) ← AL
4、寄存器间接寻址:把内存操作数的有效地址存储于寄存器中,指令中给出存放地址的寄存器名。
(1)MOV AX,[SI] ;AX← (DS:SI+1,DS:SI)
(2)MOV [BX],1234H ;(DS:BX+1,DS:BX)← 1234H
5、寄存器相对寻址
采用寄存器相对寻址时,操作数的有效地址分为两部分,一部分存于寄存器中,指令中给出该寄存器名;另一部分以偏移量大方式在指令中给出。
(1)MOV AL,8[BX]
(2)MOV AX,COUNT[SI]
6、基址变址寻址
采用基址变址寻址时,一部分存于基址寄存器(BX或BP)中,另一部分存于变址寄存器(SI或DI)中,指令中分别给出两个寄存器名。操作数的有效地址为:
EA = BX +SI/DI
或EA = BP +SI/DI
【例】MOV AL,[BP][SI]
7、相对基址加变址寻址
采用相对基址变址寻址时,操作数的有效地址分为三部分:一部分存鱼基址寄存器SI或DI中;一部分存于变址寄存器BX或BP中;一部分为偏移量。指令中分别给出两个寄存器及8位或者16位偏移量。操作数的有效地址为:
EX=BX+SI/DI+8位/16位 disp
【例】MOV AL , 5[BP][SI]