直接定址

直接定址

直接定址是一種基本的定址方法,其特點是:在指令格式的地址的欄位中直接指出運算元在記憶體的地址。由於運算元的地址直接給出而不需要經過某種變換,所以稱這種定址方式為直接定址方式。在指令中直接給出參與運算的運算元及運算結果所存放的主存地址,即在指令中直接給出有效地址。

基本信息

簡介

直接定址直接定址
在指令格式的地址欄位中直接指出運算元在記憶體的地址ID
在通常情況下,運算元存放在數據段中,所以,其物理地址將由數據段暫存器DS和指令中給出的有效地址直接形成,但如果使用段超越前綴,那么,運算元可存放在其它段。
直接定址方式常用於處理記憶體單元的數據,其運算元是記憶體變數的值。
指令中直接給出運算元地址(dir)的定址方式稱為直接定址。
定址對象為:
1內部數據存儲器,在指令中以直接地址表示;
2特殊功能暫存器SFR,在指令中用暫存器名稱表示。
以暫存器中的內容為地址,該地址的內容為運算元的定址方式稱為暫存器間接定址。能夠進行暫存器間接定址的暫存器有:R0、R1、DPTR,用前面加@表示,如@R0、@R1、@DPTR。暫存器間接定址的存儲空間包括內部數據存儲器和外部數據存儲器。由於內部數據存儲器共有128位元組,因此用一位元組的R0和R1可間接定址整個空間。而外部數據存儲器最大可達64K,僅R0或R1無法定址整個空間,為此需要由P2連線埠提供外部RAM高8位地址,由R0或R1提供低8位地址,由此共同定址64K位元組範圍。也可用16位的DPTR暫存器間接定址64K位元組存儲空間。

注意

立即定址方式和直接定址方式的書寫格式的不同。在程式中,直接定址的地址要寫在括弧“[]”內,立即地址通常用記憶體變數名來表示,如:MOVBX,VARW,其中,VARW是記憶體字變數;直接定址如:MOVAX[2000H]。
在直接定址中,指令運算元欄位中存放的是運算元的16位偏移地址EA,即運算元的偏移地址EA和操作碼一起存放在代碼段中,而運算元可以存放在數據段,也可以存放在其它段,運算元的物理地址由其所在段的暫存器內容左移4位與指令中給出的偏移地址EA相加形成。物理地址PH=(DS)*10H+EA(Disp)EA可以用符號或數值表示。如果用數值表示EA則必須用括弧括起來,而且是在方括弧前應給出段暫存器名,直接定址的運算元可以是字或位元組。
如果沒有特殊說明,直接定址的運算元一般在記憶體的數據段中,即隱含的段暫存器是DS。但是8086/8088也允許段超越,即允許使用CS,SS,ES作為段暫存器,此時需要在指令中特別標明,方法是在有關運算元的前面協商暫存器的名字,再加上冒號。如:MOVAXEX:[2000H].

相關詞條

相關搜尋

熱門詞條

聯絡我們