全球专业中文经管百科,由121,994位网友共同编写而成,共计436,047个条目

直接定址

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

目錄

什麼是直接定址

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

直接定址的解讀

  在指令格式的地址欄位中直接指出操作數在記憶體的地址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位元組存儲空間。

直接定址註意點

  立即定址方式和直接定址方式的書寫格式的不同。在程式中,直接定址的地址要寫在括弧"[]"內,立即地址通常用記憶體變數名來表示,如: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作為段寄存器,此時需要在指令中特別標明,方法是在有關操作數的前面協商寄存器的名字,再加上冒號。如:MOV AX EX :[2000H]。

相關條目

本條目對我有幫助4
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您認為本條目還有待完善,需要補充新內容或修改錯誤內容,請編輯條目投訴舉報

本条目由以下用户参与贡献

刘维燎.

評論(共0條)

提示:評論內容為網友針對條目"直接定址"展開的討論,與本站觀點立場無關。

發表評論請文明上網,理性發言並遵守有關規定。

打开APP

以上内容根据网友推荐自动排序生成

官方社群
下载APP

闽公网安备 35020302032707号