立即數尋址方式:MOV AX,0102H
源操作數是數
寄存器尋址方式 : MOV BX,AX
源操作數是寄存器。這些寄存器有:16位的AX BX CX DX SI DI SP BP
8位的AH AL BH BL CH CL DH DL
直接尋址方式 :MOV AX,[2000H]
源操作數是地址,與立即數尋址的區別就是,地址一般就是有【】
寄存器間接尋址方式 :MOV AX,[SI]
源操作數中的寄存器是BX BP SI DI 中的任意一個
寄存器相對尋址方式 :MOV AX,[DI+06H] ;AX←DS:[DI+06H]
源操作數是BX BP SI DI 中的任意一個與數字的和
基址變址尋址方式 :MOV AX,[BX+SI] ;AX←DS:[BX+SI]
源操作數是(BX BP)和( SI DI )這兩組中的任意兩個的和
相對基址變址尋址方式 :MOV AX,[BX+SI+06H] ;AX←DS:[BX+SI+06H]
這種尋址方式就是上兩種的組合
8086/8088有7種基本的尋址方式:立即尋址,寄存器尋址,直接尋址,寄存器間接
尋址,寄存器相對尋址,基址加變址尋址方式,相對基址加變址尋址。
1 立即數尋址
操作數就在指令中,作為指令的一部分,跟在操作碼后存放在代碼段。
eg. mov ah,01h
mov ax,1204h
;如果立即數是16位的,則高地址放在高位,低地址放在低位
2 寄存器尋址
操作數在寄存器中,指令中指定寄存器號。對於8位操作數,寄存器可以是AL,AH,BL,BH,CL,CH,DL,DH。 對於16位操作數,寄存器可以是AX,BX,CX,DX,BP,SP,SI,DI等
eg. mov ah,ch
mov bx,ax
3 直接尋址方式
操作數在存儲器中,指令直接包含操作數的有效地址EA。
eg. mov ax,[1122h] ;將ds:1122的數據放在ax,默認段為DS
mov es:[1234],al ;采用了段前綴
4 寄存器間接尋址
操作數在存儲器中,操作數的有效地址在SI,DI,BX,BP這4個寄存器之一中。在不采用段前綴的情況下, 對於DI,SI,BX默認段為DS,而BP為SS。
eg. mov ah,[bx]
mov ah,cs:[bx] ;使用了段前綴
5 寄存器相對尋址
操作數在存儲器中,操作數的有效地址是一個基址寄存器(BX,BP)或變址寄存器(SI,DI)的內容加上8位或16位的位移之和。在指令中的8位和16位的常量采用補碼表示,8位要被帶符號擴展為16位。
eg. mov ah,[bx+6];段址默認情況與寄存器間接尋址相同
6 基址加變址尋址
操作數在存儲器中,操作數的有效地址是一個基址寄存器(BX,BP)加上變址寄存器(SI,DI)的
內容。如果有BP,則默認段址為SS,否則為DS.
eg. mov ah,[bx+si]
7 相對基址加變址尋址
操作數在存儲器中,操作數的有效地址是一個基址寄存器(BX,BP)和變址寄存器(SI,DI)的內容加上8位或16位的位移之和。如果有BP,則默認段址為SS,否則為DS.
eg. mov ax,[bx+di-2]
mov ax,1234h[bx][di]
[注]:上面3~7為存儲器尋址方式
