暫存器定址方式

暫存器尋方式,是一種定址方式。

總共有14個16位暫存器,8個8位暫存器
通用暫存器:
數據暫存器:
AH(8位)AL(8位)AX(16位)(AX和AL又稱累加器)
BH(8位)BL(8位)BX(16位)(BX又稱基址暫存器,唯一作為存儲器指針使用暫存器)
CH(8位)CL(8位)CX(16位)(CX用於字元串操作,控制循環的次數,CL用於移位)
DH(8位)DL(8位)DX(16位)(DX一般用來做32位的乘除法時存放被除數或者保留餘數)
指針暫存器:
SP堆疊指針(存放棧頂地址)
BP基址指針(存放堆疊基址偏移)
變址暫存器:主要用於存放某個存儲單元地址的偏移,或某組存儲單元開始地址的偏移,
即作為存儲器(短)指針使用。作為通用暫存器,它們可以保存16位算術邏輯運算中的操
作數和運算結果,有時運算結果就是需要的存儲單元地址的偏移.
SI源地址(源變址暫存器)
DI目的地址(目的變址暫存器)
控制暫存器:
IP指令指針
FLAG標誌暫存器
①進位標誌 CF,記錄運算時最高有效位產生的進位值。
②符號標誌 SF,記錄運算結果的符號。結果為負時置1,否則置0。
③零標誌 ZF,運算結果為0時ZF位置1,否則置0。
④溢出標誌 OF,在運算過程中,如運算元超出了機器可表示數的範圍稱為溢出。溢出時OF位置1,否則置0。
⑤輔助進位標誌 AF,記錄運算時第3位(半個位元組)產生的進位值。
⑥奇偶標誌 PF,用來為機器中傳送信息時可能產生的代碼出錯情況提供檢驗條件。當結果運算元中1的個數為偶數時置1,否則置0。
段暫存器
CS代碼段IP
DS數據段
SS堆疊段SPBP
ES附加段
二、七種定址方式:
1、立即定址方式:
運算元就包含在指令中。作為指令的一部分,跟在操作碼後存放在代碼段。
這種運算元成為立即數。立即數可以是8位的,也可以是16位的。
例如:
指令:MOVAX,1234H
則:AX=1234H
2、暫存器定址方式:
運算元在CPU內部的暫存器中,指令指定暫存器號。
對於16位運算元,暫存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等。
對於8位運算元,暫存器可以是AL、AH、BL、BH、CL、CH、DL、DH。
這種定址方式由於運算元就在暫存器中,不需要訪問存儲器來取得運算元
因而可以取得較高的運算數度。
3、直接定址方式:
運算元在暫存器中,指令直接包含有運算元的有效地址(偏移地址)
註:運算元一般存放在數據段
所以運算元的地址由DS加上指令中直接給出的16位偏移得到。如果採用
段超越前綴,則運算元也可含在數據段外的其他段中。
例如:
MOVAX,[8054]
如(DS)=2000H,
則執行結果為(AX)=3050H
(物理地址=20000+8054=28054H)
28054H里的內容為3050H
在彙編語言指令中,可以用符號地址代替數值地址
如:MOVAX,VALUE
此時VALUE為存放運算元單元的符號地址。
如寫成:MOVAX,[VALUE]也是可以的,兩者是等效的。
如VALUE在附加段中,則應指定段超越前綴如下:
MOVAX,ES:VALUE或MOVAX,ES:[VALUE]
4、暫存器間接定址方式:
運算元在暫存器中,運算元有效地址在SI、DI、BX、BP
這四個暫存器之一中。在一般情況下,如果有效地址在
SI、DI和BX中,則以DS段暫存器中的內容為段值。如果
有效地址在BP中,則以SS段暫存器中的內容為段值
例如:
MOVAX,[SI]
如果(DS)=5000H(SI)=1234H
則物理地址=50000+1234=51234H
51234H地址中的內容為:6789H
執行該指令後,(AX)=6789H
5、暫存器相對定址方式:
運算元在存儲器中,運算元的有效地址是一個基址暫存器(BX、BP)
或變址暫存器(SI、DI)的內容加上指令中給定的8位或16位位移量之和
BX8位位移量
EA(有效地址)=BP+
SI16位位移量
DI
在一般情況下,如果SI、DI、或BX中的內容作為有效地址的一部分,那么
引用的段暫存器是DS;如果BP中的內容作為有效地址的一部分,那么引用的
段暫存器是SS。
物理地址=16d×(DS)+(BX)+8
或(SI)或16位位移量
或(DI)
物理地址=16d×(SS)+(BP)+8位位移量
或16位位移量
在指令中給定的8位或16位位移量採用補碼形式表示。在計算有效地址時,如
位移量是8位,則被帶符號擴展成16位。
例如:
MOVAX,[DI+1223H]
假設,(DS)=5000H,(DI)=3678H
則物理地址=50000+3678+1233=5489BH
5489BH地址中的內容:55AAH
執行該指令後AX=55AAH
下面指令中,源運算元採用暫存器相對定址,引用的段暫存器是SS:MOVBX,[BP-4]
下面指令中,目的運算元採用暫存器相對定址,引用的段暫存器是ES:MOVES:[BX+5],AL
指令:MOVAX,[SI+3]與MOVAX,3[SI]是等價的
6、基址加變址定址方式:
運算元在暫存器中,運算元的有效地址由:
基址暫存器之一的內容與變址暫存器之一的內容相加
BXSI
即:EA=+
BPDI
在一般情況下,如果BP之內容作為有效地址的一部分,則以SS之內容為段值,否則已DS
為段值。
例如:
MOVAX,[BX][DI]
如:(DS)=2100H,
(BX)=0158H,
(DI)=10A5H
則EA=0158+10A5=11FD
物理地址=21000+11FD=221FDH
221FDH地址中的內容:1234H
執行該指令後AX=1234H
下面指令中,目的運算元採用基址加變址定址,
引用的段暫存器是DS:MOVDS:[BP+SI],AL
下面指令中,源運算元採用基址加變址定址,
引用的段暫存器ES:MOVAX,ES:[BX+SI]
這種定址方式使用與數組或表格處理。用基址暫存器存放數組首地址,而用變地暫存器
來定位數組中的各元素,或反之。由於兩個暫存器都可改變,所以能更加靈活地訪問數
組或表格中的元素。
下面的兩種表示方法是等價的:
MOVAX,[BX+DI]
MOVAX,[DI][BX]
7、相對基址加變址定址方式:
運算元在存儲器中,運算元的有效地址由於基址暫存器之一的內容與變址暫存器之一的
內容及指令中給定的8位或16位位移量相加得到。
BXSI8位
即:EA=++位移量
BPDI16位
在一般情況下,如果BP中的內容作為有效地址的一部分,則以SS段暫存器中的內容為段
值,否則以DS段暫存器中的內容為段值。
在指令中給定的8位或16位位移量採用補碼形式表示。
在計算有效地址時,如果位移量是8位,那么被帶符號擴展成16位。
當所得的有效地址操作FFFFH時,就取其64K的模
例如:
MOVAX,[BX+DI-2]
假設,(DS)=5000H,(BX)=1223H,DI=54H,(51275)=54H,(51276)=76H
物理地址=50000+1223+0054+FFFE(-2各位取反末位加一)=51275H
執行該指令後(AX)=7654H
相對基址加變址這種定址方式的表示方法多種多樣,以下四種方法均是等價的:
MOVAX,[BX+DI+1234H],MOVAX,1234H[BX][DI]
MOVAX1234H[BX+DI],MOVAX,1234H[DI][BX]

相關詞條

熱門詞條

聯絡我們