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