什么是尋址方式
匯編指令由操作碼字段
和操作數字段
構成。
對於雙操作指令,第一個操作數稱為目的操作數,表示操作后的結果;第二個操作數稱為源操作數,表示來源操作數。兩者以逗號分隔。如:
尋址方式,通俗地說就是尋找操作數地址的方法。
尋址方式的數量代表了微機系統對存儲器管理能力的強弱,合理地使用尋址方式可以擴大訪存空間,縮短指令長度,滿足各種程序設計需要。
與數據有關的尋址方式划分為三類:立即尋址方式,寄存器尋址方式,存儲器尋址方式。
七種與數據有關的尋址方式
要求掌握下列七種與數據有關的尋址方式。其中后五種屬於存儲器尋址方式。
- 立即尋址方式(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位的立即數。立即尋址方式用來表示常數。
在DEBUG下數據都是十六進制表示的,因此不需要用H標注,同時要把十進制變為十六進制才行。
在DEBUG下執行:
-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]
實驗示例
根據題目要求,寫出相應的匯編指令:
- AX、BX寄存器分別賦值為
0008H
和0006H
- AX和BX的內容相加,結果在AX中
- 用寄存器間接尋址將相加的結果保存到6號單元
MOV AX,0008H
MOV BX,0006H
ADD AX,BX
MOV [BX],AX
HLT ;停機指令