新聞中心

8086尋址方式

作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
BTW--符號的說明:

PA表示某一存儲單元的物理地址
EA表示某一存儲單元的有效地址
(地址)表示地址的內(nèi)容
[地址]表示地址的內(nèi)容為偏移地址
DEST表示目的地址,即目的操作數(shù)存放的偏移地址
SOUR表示源地址,即源操作數(shù)存放的偏移地址
-表示傳送。如:(AX)-BX表示把AX的內(nèi)容傳送給BX
?邏輯與
?邏輯或
邏輯異或
----上劃線表示邏輯非
____下劃線表示從鍵盤輸入
或者
Flags表示狀態(tài)寄存器

8086和8088 CPU就功能而言可分成兩大部分:總線接口單元BIU(Bus Inte***ce Unit)和執(zhí)行單元EU(Execution Unit)

EU主要實現(xiàn)兩種操作:一是根據(jù)指令進行算術(shù)邏輯運算。二是由計算出指令要求尋址單元地址偏移量,以形成一個20位物理地址,去存取器存取所要求的操作數(shù)。
BIU主要負責(zé)80868088 CPU與存儲器和外設(shè)之間的信息傳送,BIU用來實現(xiàn)EU所有總線操作。
在EU執(zhí)行指令的過程中,BIU負責(zé)從內(nèi)存指定區(qū)域取出傳送給EU部分去執(zhí)行。在執(zhí)行指令時,所需的操作數(shù)也是由BIU從內(nèi)存指定區(qū)域取出傳送給EU部分執(zhí)行。

與數(shù)據(jù)有關(guān)的尋址方式

1 立即尋址方式(Immediate addressing)

立即數(shù)可以是8位的或16位的。如果是16 位數(shù),則高位字節(jié)存放在高地址中,低位字節(jié)存放在低地址中,如果是32 位數(shù),則高位字在高地址中,低位字在低地址中。

  立即尋址方式常用于給寄存器賦初值,并且只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段。


例 MOV AL, 9
         指令執(zhí)行后,(AL)= 09H

例 MOV AX, 3064H
         指令執(zhí)行后,(AX)= 3064H

注意:不能直接給段寄存器和標志寄存器賦予立即數(shù)。

     顯然,下面的指令是錯誤的:
     MOV DS, 1250H

2 寄存器尋址方式(Register addressing)

  對于16位操作數(shù),寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP、CS、DS、ES和SS;對于8位操作數(shù),寄存器可以是AL、AH、BL、BH、CL、CH、DL、DH。由于操作數(shù)就在寄存器中,指令執(zhí)行時不需要訪問存儲器,因此這是一種快速的尋址方式。

例 MOV  AX, BX
          如指令執(zhí)行前(AX)= 1234H,(BX)= 5678H;
          則指令執(zhí)行后(AX)= 5678H,(BX)保持不變。

  注意:源寄存器和目的寄存器的位數(shù)必須一致。

  例如:MOV CL, BX是一條錯誤指令。


  除上述兩種尋址方式外,下面五種尋址方式的操作數(shù)都在除代碼段以外的存儲區(qū)中。
  這里先引入有效地址EA(Effective Address)的概念:在8086里,把操作數(shù)的偏移地址稱為有效地址,下面五種計算EA的方法體現(xiàn)了五種尋址方式。

3 直接尋址方式(Direct addressing)

  在這種尋址方式中,操作數(shù)存放在存儲單元中,而這個存儲單元的有效地址就在指令的操作碼之后,操作數(shù)的物理地址可通過((DS)×16)再加上這個有效地址形成。
  
  在匯編語言指令中,可以用符號地址(變量名或標號)代替數(shù)值地址。
  例如: MOV AX, DATA
    或 MOV AX, [DATA]
    這里DATA是存放操作數(shù)單元的符號地址。

  直接尋址方式默認操作數(shù)在數(shù)據(jù)段中,如果操作數(shù)定義在其它段中,則應(yīng)在指令中指定段跨越前綴。
  例如: MOV AX, ES:NUMBER
    或 MOV AX, ES:[NUMBER]
    這里NUMBER是附加段中的字變量。

  直接尋址方式適合于處理單個變量。

例 MOV AX, [2000H]
         如果(DS)= 3000H,則執(zhí)行情況如圖3.2所示。
         最后的執(zhí)行結(jié)果為(AX)= 3050H。

4 寄存器相對尋址方式(Register indirect addressing)

  這種尋址方式通過基址寄存器BX、BP或變址寄存器SI、DI與一個位移量相加形成有效地址,計算物理地址的缺省段仍然是SI、DI和BX為DS,BP為SS?! ?br />
  寄存器相對尋址方式也可以使用段跨越前綴。
  例如:MOV AX, ES:[DI+10]

  這種尋址方式同樣可用于表格處理。
  表格的首地址可設(shè)置為位移量,修改基址或變址寄存器的內(nèi)容取得表格中的值。

例 MOV AX, COUNT[SI](也可表示為MOV AX, [COUNT+SI])
        其中COUNT為16位位移量的符號地址。
        如果 (DS)= 3000H,(SI)= 2000H,COUNT = 3000H

        則物理地址 = 30000H + 2000H + 3000H = 35000H
        指令執(zhí)行情況如圖3.4所示,最后的執(zhí)行結(jié)果是(AX)= 1234H。

5 基址變址尋址方式(Based indexed addressing)

  這是一種基址加變址來定位操作數(shù)地址的方式,也就是說,操作數(shù)的有效地址是一個基址寄存器(BP或BX)和一個變址寄存器(SI或DI)的內(nèi)容之和。如基址寄存器為BX時,與DS形成的物理地址指向數(shù)據(jù)段;如基址寄存器為BP時,與SS形成的物理地址指向堆棧段。如左圖所示。  

  此種尋址方式也可使用段跨越前綴。
  例如:MOV AX, ES:[BX][SI]

  注意:一條指令中同時使用基址寄存器或變址寄存器是錯誤的。
  例如:MOV CL, [BX+BP] 或 MOV AX, [SI+DI] 均為非法指令。

  這種尋址方式同樣適用于數(shù)組或表格處理。
  首地址可存放在基址寄存器中,而用變址寄存器來訪問數(shù)組中的各個元素。由于兩個寄存器的值都可以修改,所以它比寄存器相對尋址方式更加靈活。

例 MOV AX, [BX][DI] (或?qū)憺?MOV AX, [BX+DI])
        如 (DS ) = 2100H,(BX)= 0158H,(DI)= 10A5H
        則 EA = 0158H +10A5H = 11FDH


        物理地址 = 21000H +11FDH = 221FDH
        指令執(zhí)行情況如圖3.5所示,最后的執(zhí)行結(jié)果是(AX)= 1234H。

6 相對基址變址尋址方式(Relative based indexed addressing)

  這種尋址方式與基址變址尋址方式類似,不同的是基址加變址再加上一個位移量形成操作數(shù)的有效地址。缺省段的使用仍然是DS與BX組合,SS與BP組合?! ?br />
  這種尋址方式通常用于對二維數(shù)組的尋址。
  例如,存儲器中存放著由多個記錄組成的文件,則位移量可指向文件之首,基址寄存器指向某個記錄,變址寄存器則指向該記錄中的一個元素。

上一頁 1 2 下一頁

關(guān)鍵詞: 8086尋址方

評論


技術(shù)專區(qū)

關(guān)閉