原文鏈接:https://www.cnblogs.com/jadeshu/p/10663543.html
覺得寫的言簡意賅,存一下。如果介意,立馬刪除。
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) 的內容加上偏移量。
eg. MOV AH,[BX+6];段址默認情況與寄存器間接尋址相同
6 基址加變址尋址
操作數在內存單元中,操作數的有效地址是一個基址寄存器(BX,BP) 加上 變址寄存器(SI,DI) 的內容。如果有BP,則默認段址爲SS,否則爲DS。
eg. MOV AH,[BX+SI]
7 相對基址加變址尋址
操作數在內存單元中,操作數的有效地址是一個基址寄存器(BX,BP) 和 變址寄存器(SI,DI) 的內容加上偏移量。如果有BP,則默認段址爲SS,否則爲DS。
eg. MOV AX,[BX+DI-2]
MOV AX,1234H[BX][DI]
上面3~7爲存儲器尋址方式