16位匯編第第四講常用的7種尋址方式


常用的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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM