8086尋址方式
PA
EA
(地址)
[地址]
DEST
SOUR
-
?
?
⊕
----
____
Flags
在EU執(zhí)行指令的過程中,BIU負(fù)責(zé)從內(nèi)存指定區(qū)域取出傳送給EU部分去執(zhí)行。在執(zhí)行指令時,所需的操作數(shù)也是由BIU從內(nèi)存指定區(qū)域取出傳送給EU部分執(zhí)行。
1 立即尋址方式(Immediate addressing)
立即尋址方式常用于給寄存器賦初值,并且只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段。
指令執(zhí)行后,(AL)= 09H
指令執(zhí)行后,(AX)= 3064H
注意:不能直接給段寄存器和標(biāo)志寄存器賦予立即數(shù)。
顯然,下面的指令是錯誤的:
MOV DS, 1250H
2 寄存器尋址方式(Register addressing)
對于16位操作數(shù),寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP、CS、DS、ES和SS;對于8位操作數(shù),寄存器可以是AL、AH、BL、BH、CL、CH、DL、DH。由于操作數(shù)就在寄存器中,指令執(zhí)行時不需要訪問存儲器,因此這是一種快速的尋址方式。
如指令執(zhí)行前(AX)= 1234H,(BX)= 5678H;
則指令執(zhí)行后(AX)= 5678H,(BX)保持不變。
注意:源寄存器和目的寄存器的位數(shù)必須一致。
例如:MOV CL, BX是一條錯誤指令。
除上述兩種尋址方式外,下面五種尋址方式的操作數(shù)都在除代碼段以外的存儲區(qū)中。
這里先引入有效地址EA(Effective Address)的概念:在8086里,把操作數(shù)的偏移地址稱為有效地址,下面五種計算EA的方法體現(xiàn)了五種尋址方式。
3 直接尋址方式(Direct addressing)
在這種尋址方式中,操作數(shù)存放在存儲單元中,而這個存儲單元的有效地址就在指令的操作碼之后,操作數(shù)的物理地址可通過((DS)×16)再加上這個有效地址形成。
在匯編語言指令中,可以用符號地址(變量名或標(biāo)號)代替數(shù)值地址。
例如: MOV AX, DATA
或 MOV AX, [DATA]
這里DATA是存放操作數(shù)單元的符號地址。
直接尋址方式默認(rèn)操作數(shù)在數(shù)據(jù)段中,如果操作數(shù)定義在其它段中,則應(yīng)在指令中指定段跨越前綴。
例如: MOV AX, ES:NUMBER
或 MOV AX, ES:[NUMBER]
這里NUMBER是附加段中的字變量。
直接尋址方式適合于處理單個變量。
如果(DS)= 3000H,則執(zhí)行情況如圖3.2所示。
最后的執(zhí)行結(jié)果為(AX)= 3050H。
4 寄存器相對尋址方式(Register indirect addressing)
這種尋址方式通過基址寄存器BX、BP或變址寄存器SI、DI與一個位移量相加形成有效地址,計算物理地址的缺省段仍然是SI、DI和BX為DS,BP為SS。
寄存器相對尋址方式也可以使用段跨越前綴。
例如:MOV AX, ES:[DI+10]
這種尋址方式同樣可用于表格處理。
表格的首地址可設(shè)置為位移量,修改基址或變址寄存器的內(nèi)容取得表格中的值。
其中COUNT為16位位移量的符號地址。
如果 (DS)= 3000H,(SI)= 2000H,COUNT = 3000H
則物理地址 = 30000H + 2000H + 3000H = 35000H
指令執(zhí)行情況如圖3.4所示,最后的執(zhí)行結(jié)果是(AX)= 1234H。
5 基址變址尋址方式(Based indexed addressing)
這是一種基址加變址來定位操作數(shù)地址的方式,也就是說,操作數(shù)的有效地址是一個基址寄存器(BP或BX)和一個變址寄存器(SI或DI)的內(nèi)容之和。如基址寄存器為BX時,與DS形成的物理地址指向數(shù)據(jù)段;如基址寄存器為BP時,與SS形成的物理地址指向堆棧段。如左圖所示?! ?br />
此種尋址方式也可使用段跨越前綴。
例如:MOV AX, ES:[BX][SI]
注意:一條指令中同時使用基址寄存器或變址寄存器是錯誤的。
例如:MOV CL, [BX+BP] 或 MOV AX, [SI+DI] 均為非法指令。
這種尋址方式同樣適用于數(shù)組或表格處理。
首地址可存放在基址寄存器中,而用變址寄存器來訪問數(shù)組中的各個元素。由于兩個寄存器的值都可以修改,所以它比寄存器相對尋址方式更加靈活。
如 (DS ) = 2100H,(BX)= 0158H,(DI)= 10A5H
則 EA = 0158H +10A5H = 11FDH
物理地址 = 21000H +11FDH = 221FDH
指令執(zhí)行情況如圖3.5所示,最后的執(zhí)行結(jié)果是(AX)= 1234H。
6 相對基址變址尋址方式(Relative based indexed addressing)
這種尋址方式與基址變址尋址方式類似,不同的是基址加變址再加上一個位移量形成操作數(shù)的有效地址。缺省段的使用仍然是DS與BX組合,SS與BP組合?! ?br />
這種尋址方式通常用于對二維數(shù)組的尋址。
例如,存儲器中存放著由多個記錄組成的文件,則位移量可指向文件之首,基址寄存器指向某個記錄,變址寄存器則指向該記錄中的一個元素。
評論