常用的7中尋址方式
昨天稍微講了一下,立即數尋址,今天繼續講解尋址方式.
(注意,這個屬於簡陋版的,寫了4個小時的博客,也就是第一版,保存了一下,但是博客出問題了,重新打開后發現保存的內容沒了,讓我很無語
所以我星期六星期天重新編輯這一張,現在發出這些先簡單的預習一下謝謝)
1.操作碼,操作數,位移量,立即數的概念
8086的尋址方式,這個尋址方式是什么意思,是讓我們書序8086匯編指令的格式,
尤其是其中的操作數的表達方法
操作碼: mov add ....等指令,暫時就先把這些認定為mov即可.后面會一一講解指令
操作數, 例如 mov ax,1234 那么操作數就是 ax,和 1234 其中 1234成為源操作數,ax成為目標操作數
為什么這樣說,因為我們要把源操作數 通過 mov 傳送指令, 傳送給 目標操作數ax
對於操作數而言
1.操作數可以是一個具體的值(也就是 立即數,其中立即數是后面翻譯過來的,叫做(imm縮寫))
2.操作數可以是存放數據的寄存器(上面也說了, ax目的地操作數)
3.操作數可以是存儲器的地址(怎么理解,可以理解為 mov ax,[2000])可以是一個地址
常用的7中尋址方式
昨天稍微講了一下,立即數尋址,今天繼續講解尋址方式.
1.操作碼,操作數,位移量,立即數的概念
8086的尋址方式,這個尋址方式是什么意思,是讓我們書序8086匯編指令的格式,
尤其是其中的操作數的表達方法
操作碼: mov add ....等指令,暫時就先把這些認定為mov即可.后面會一一講解指令
操作數, 例如 mov ax,1234 那么操作數就是 ax,和 1234 其中 1234成為源操作數,ax成為目標操作數
為什么這樣說,因為我們要把源操作數 通過 mov 傳送指令, 傳送給 目標操作數ax
對於操作數而言
1.操作數可以是一個具體的值(也就是 立即數,其中立即數是后面翻譯過來的,叫做(imm縮寫))
2.操作數可以是存放數據的寄存器(上面也說了, ax目的地操作數)
3.操作數可以是存儲器的地址(怎么理解,可以理解為 mov ax,[2000])可以是一個地址
立即尋址
mov ax,2000h
格式是:
操作碼 立即數
操作碼則是mov 立即數就是后面的數
寄存器尋址方式
mov ax,1234h
mov bx,ax
機器代碼格式
操作碼
89 操作碼和操作數
存儲器尋址方式
- 8086設計了多種存儲器尋址方式
1、直接尋址方式
2、寄存器間接尋址方式
3、寄存器相對尋址方式
4、基址變址尋址方式
5、相對基址變址尋址方式
五種尋址方式,加上上面兩種總共其中
直接尋址方式
mov ax,[2000h]
反匯編:
機器代碼格式
操作碼 立即數
A1 0020
寄存器間接尋址方式
有效地址存放在基址寄存器BX或變址寄存器SI、DI中
默認的段地址在DS段寄存器,可使用段超越前綴改變
MOV AX,[SI] ;AX←DS:[SI]
機器碼格式
操作碼 尋址方式,目的寄存器
8B 04
04拆分為二進制為 0000 0100 00(尋址方式) 000(目的寄存器) 100 (源操作數)
可以對應下方的表格
查找 (mod 尋址方式 )
由此得出源操作數是SI
寄存器相對尋址
有效地址是寄存器內容與有符號8位或16位位移量之和,寄存器可以是BX、BP或SI、DI
有效地址=BX/BP/SI/DI+8/16位位移量
段地址對應BX/SI/DI寄存器默認是DS,對應BP寄存器默認是SS;可用段超越前綴改變
mov ax,[di + 06h]兩種不同的形式,如過06是8位的話那么尋址方式是不同的.
操作碼 尋址方式/目標寄存器/源操作數 位移量
8B 45 06
45 得出尋址方式目的寄存器,和源操作數
01 000 101
代表了DI 要加一個8位的偏移量即可.
基址變址尋址方式
有效地址由基址寄存器(BX或BP)的內容加上變址寄存器(SI或DI)的內容構成:
有效地址=BX/BP+SI/DI
段地址對應BX基址寄存器默認是DS,對應BP基址寄存器默認是SS;可用段超越前綴改變
mov ax,[bx+si] 基址寄存器(bx bp) 變址寄存器(SI DI)
操作碼 尋址指令/目標寄存器,源操作數
8B 00
基址變址,相對尋址
mov ax,[bx + si +06h]
操作碼 尋址公式/目標寄存器/源操作數 位偏移
8B 40 06
拆分40得出 0100 0000
表示BX + SI 還需要家后面的8位偏移量6