絕對定址

絕對定址

絕對定址(absolute addressing)又稱“直接定址”,絕對定址利用定址存儲單元,其特點是指令中包含一個固定地址。地址可以用其地址標號或程式中定義的符號參數來表示。由於絕對地址代碼的位數關係,會影響到絕對地址須知的指令的字長。 絕對定址是一種基本的定址方法,其特點是:在指令格式的地址的欄位中直接指出運算元在記憶體的地址。由於運算元的地址直接給出而不需要經過某種變換,所以稱這種定址方式為直接定址方式。在指令中直接給出參與運算的運算元及運算結果所存放的主存地址,即在指令中直接給出有效地址。

概念

絕對定址(absolute addressing)又稱“直接定址”,絕對定址利用定址存儲單元,其特點是指令中包含一個固定地址。地址可以用其地址標號或程式中定義的符號參數來表示。由於絕對地址代碼的位數關係,會影響到絕對地址須知的指令的字長。

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

在指令格式的地址欄位中直接指出運算元在記憶體的地址ID 。在通常情況下,運算元存放在數據段中,所以,其物理地址將由數據段暫存器DS和指令中給出的有效地址直接形成,但如果使用段超越前綴,那么,運算元可存放在其它段。直接定址方式常用於處理記憶體單元的數據,其運算元是記憶體變數的值。

以暫存器中的內容為地址,該地址的內容為運算元的定址方式稱為暫存器間接定址。能夠進行暫存器間接定址的暫存器有:R0、R1、DPTR,用前面加@表示,如@R0、@R1、@DPTR。暫存器間接定址的存儲空間包括內部數據存儲器和外部數據存儲器。由於內部數據存儲器共有128位元組,因此用一位元組的R0和R1可間接定址整個空間。而外部數據存儲器最大可達64K,僅R0或R1無法定址整個空間,為此需要由P2連線埠提供外部RAM高8位地址,由R0或R1提供低8位地址,由此共同定址64K位元組範圍。也可用16位的DPTR暫存器間接定址64K位元組存儲空間。

基本原理

採用絕對定址的指令皆為三位元組指令。指令的運算元部分給出的是運算元在存貯器中的有效地址,稱為絕對地址,又稱直接地址。

由於運算元地址是用兩個位元組(十六位)表示,所以它可以是整個64K存貯器中的任何一個地址。但是注意,這種定址方式的指令表示成機器碼時,運算元地址是低位元組在前,高位元組在後。

立即定址方式和直接定址方式的書寫格式的不同。在程式中,直接定址的地址要寫在括弧“[]”內,立即地址通常用記憶體變數名來表示,如:MOV BX, VARW,其中,VARW是記憶體字變數;直接定址如:MOV AX [2000H]。

在直接定址中,指令運算元欄位中存放的是運算元的16位偏移地址EA,即運算元的偏移地址EA和操作碼一起存放在代碼段中,而運算元可以存放在數據段,也可以存放在其它段,運算元的物理地址由其所在段的暫存器內容左移4位與指令中給出的偏移地址EA相加形成。物理地址PH=(DS)*10H+EA(Disp)EA可以用符號或數值表示。如果用數值表示EA則必須用括弧括起來,而且是在方括弧前應給出段暫存器名,直接定址的運算元可以是字或位元組。

如果沒有特殊說明,直接定址的運算元一般在記憶體的數據段中,即隱含的段暫存器是DS。但是8086/8088也允許段超越,即允許使用CS,SS,ES作為段暫存器,此時需要在指令中特別標明,方法是在有關運算元的前面協商暫存器的名字,再加上冒號。

相關詞條

相關搜尋

熱門詞條

聯絡我們