指令的尋址方式

什麼是尋址方式

彙編指令由操做碼字段操做數字段構成。spa

對於雙操做指令,第一個操做數稱爲目的操做數,表示操做後的結果;第二個操做數稱爲源操做數,表示來源操做數。二者以逗號分隔。如:設計

尋址方式,通俗地說就是尋找操做數地址的方法。指針

尋址方式的數量表明瞭微機系統對存儲器管理能力的強弱,合理地使用尋址方式能夠擴大訪存空間,縮短指令長度,知足各類程序設計須要。code

與數據有關的尋址方式劃分爲三類:當即尋址方式,寄存器尋址方式,存儲器尋址方式。blog

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

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

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

選擇尋址方式有兩條原則:第一實用,第二有效。最終都應達到運行速度快、指令代碼短的高效率目標程序的目的。當即尋址和寄存器尋址不管從指令長度和指令執行時間都比存儲器尋址要好,可是也要根據具體狀況選用。學會使用尋址方式是理解指令做用的關鍵。程序設計

1. 當即尋址方式

所要找的操做數直接寫在指令中,這種操做數叫當即數。在808六、80286中當即數是8位或16位的,在80386以上能夠是32位的當即數。當即尋址方式用來表示常數class

在DEBUG下數據都是十六進制表示的,所以不須要用H標註,同時要把十進制變爲十六進制才行。效率

在DEBUG下執行:sed

-A
MOV AX,3060
MOV AL,5
MOV BL,FF
MOV BX,A46D 
MOV CX,17

 接着用T命令單步執行,觀察各寄存器的值。

注意:執行T命令以前,指令指針寄存器IP的值要用R IP 修改爲第一條指令的偏移地址,這樣T命令才能從第一條指令開始執行。 

2. 寄存器尋址方式

    在寄存器尋址方式中,操做數在寄存器中,在指令中指定寄存器名便可。 

MOV BX,1234
MOV AX,BX

3. 直接尋址方式

    操做數存放在內存中。操做數的偏移地址(也稱爲有效地址EA)直接寫在指令中,EA加上DS的基地址纔是數據存放的物理地址。

(1)存儲器讀操做

MOV AX,DS:[2000H]

(2)存儲器寫操做

MOV DS:[4000H],AX

4. 寄存器間接尋址方式

    操做數存放在內存中。指令形式如: MOV AX,[BX]

5. 寄存器相對尋址方式

    操做數存放在內存中。指令形式如: MOV AX,[BX+1200H]

6. 基址變址尋址方式

    操做數存放在內存中。指令形式如: MOV AX,[BX+SI]

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

    操做數存放在內存中。指令形式如: MOV AX,[BX+SI+1200H]

實驗示例

根據題目要求,寫出相應的彙編指令:

  1. AX、BX寄存器分別賦值爲0008H0006H
  2. AX和BX的內容相加,結果在AX中
  3. 用寄存器間接尋址將相加的結果保存到6號單元
MOV AX,0008H
MOV BX,0006H
ADD AX,BX
MOV [BX],AX
HLT                   ;停機指令
相關文章
相關標籤/搜索