彙編語言(二)

指令的尋址方式

彙編指令由操作碼字段操作數字段構成。對於雙操作指令,第一個操作數稱爲目的操作數,表示操作後的結果;第二個操作數稱爲源操作數,表示來源操作數。兩者以逗號分隔。如:

img

所謂尋址方式,即指令中提供操作數或操作數地址的方式。通俗地說就是尋找操作數地址的方法。尋址方式的數量代表了微機系統對存儲器管理能力的強弱,合理地使用尋址方式可以擴大訪存空間,縮短指令長度,滿足各種程序設計需要。與數據有關的尋址方式劃分爲三類:立即尋址方式,寄存器尋址方式,存儲器尋址方式。

七種與數據有關的尋址方式

要求掌握下列七種與數據有關的尋址方式。其中後五種屬於存儲器尋址方式。

  • 立即尋址方式(Immediate addressing)
  • 寄存器尋址方式(Register addressing)
  • 直接尋址方式(Direct addressing)
  • 寄存器間接尋址方式(Register indirect addressing)
  • 寄存器相對尋址方式(Register relative addressing)
  • 基址變址尋址方式(Based indexed addressing)
  • 相對基址變址尋址方式(Relative based indexed addressing)

1. 立即尋址方式

所要找的操作數直接寫在指令中,這種操作數叫立即數。在8086、80286中立即數是8位或16位的,在80386以上可以是32位的立即數。立即尋址方式用來表示常數。

img

2. 寄存器尋址方式

在寄存器尋址方式中,操作數在寄存器中,在指令中指定寄存器名即可。 img

3. 直接尋址方式

操作數存放在內存中。操作數的偏移地址(也稱爲有效地址EA)直接寫在指令中。

(1)存儲器讀操作

MOV指令可以實現CPU對存儲器的讀寫。若傳送指令的目的操作數是CPU的寄存器,源操作數是存儲單元,就完成了對存儲器的讀操作。

例1 MOV AX,DS:[2000H]
該指令表示從數據段的2000H單元讀出一個字送入AX。

(2)存儲器寫操作

如果要實現CPU寫內存操作,只要把MOV指令的目的操作數變爲存儲單元,源操作數爲CPU的寄存器即可。

例2 MOV DS:[4000H],AX
將AX的值寫入數據段的4000H單元。

操作數存放在內存中。指令形式如: MOV AX,[BX]
操作數的EA在基址寄存器BX、BP或變址寄存器SI、DI中,而操作數的段地址在數據段DS或堆棧段SS中。如果有效地址由BX、SI、DI指出,則默認爲對應於數據段,而用BP指出則對應於堆棧段。 img

5. 寄存器相對尋址方式

操作數存放在內存中。指令形式如: MOV AX,[BX+1200H]
操作數的EA是一個基址或變址寄存器的內容再加上8位或16位位移量之和。也就是說在寄存器間接尋址的基礎上,增加一個相對量(位移量)。這個位移量可以是立即數,也可以是符號地址。 img

6. 基址變址尋址方式

操作數存放在內存中。指令形式如: MOV AX,[BX+SI]
操作數的EA爲一個基址寄存器和一個變址寄存器的內容之和。 img

7. 相對基址變址尋址方式

操作數存放在內存中。指令形式如: MOV AX,[BX+SI+1200H]
操作數的EA爲一個基址寄存器加一個變址寄存器再加一個位移量,三者之和。可用於二維表查表和棧處理。

發佈了106 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章