80x86指令系統和尋址方式

一、數據類型   

   計算機執行指令過程中需要處理各種類型的機器數,可處理的數據類型有七種:

   1)無符號二進制數

   2)帶符號二進制數

   3)BCD碼

   4)數的定點和浮點表示法

   5)串數據

   6)ASCII碼數據

   7)指針類數據

二、尋址方式

      尋址方式是指尋找指令中操作數或指令轉移地址的方式,分爲數據尋址方式和程序尋址方式。數據尋址方式是指獲取指令所需的操作數或操作數地址的方式;程序尋址方式指在程序中出現轉移和調用時的程序定位方式。指令系統是指機器所支持的所有指令的集合。

   數據尋址方式:立即數尋址、寄存器尋址、存儲器尋址。

   (CPU可以直接將數據本身與指令一起編碼作爲指令代碼的一部分,也可以存放在寄存器或主存儲器中,直接尋址、寄存器間接尋址、基址尋址、變址尋址、基址、變址尋址都屬於存儲器尋址方式。

   程序尋址方式:段內直接尋址方式、段內間接尋址方式、段間直接尋址方式、段間間接尋址方式。

   指令系統:數據傳輸指令、算術運算指令、邏輯運算指令和存儲器控制指令,以及保護模式下的指令等。


1.數據尋址方式

1.1 立即數尋址(操作數直接存放在指令中)

   操作數直接包含在指令機器碼中,它緊跟在操作碼的後面,與操作碼一起放在代碼中。特點是執行速度快,主要給寄存器賦值。同樣不需要執行總線週期。   

    MOV AX,0A7FH     ;AX←0A7FH,執行後,AH=0AH,AL=7FH
    MOV AL,5H        ;AL←5H

1.2 寄存器尋址(操作數在寄存器中)

    操作數包含在CPU內部的寄存器中。對於16位操作數,寄存器可以是AX、BX、CX、DX、SI、DI、DP、BP;8位操作數,寄存器可以是AH、AL、BH、BL、CH、CL、DH、DL。寄存器尋址的指令本身存放在存儲器的代碼段,操作數在CPU寄存器中。特點是執行速度快。

    MOV AH,AL </span>  
1.3 直接尋址(操作數在存儲器中,指令給出存儲器的偏移地址)

   在指令的操作碼後面直接給出操作數的16位偏移地址(有效地址),它與指令的操作碼一起,存放在內存的代碼段,低8位在前,高8位在後。操作數隱含數據段操作,存放在內存的數據段DS區域中,在給定的16位有效地址的地方。

    MOV AX,[2000H]    ;把內存中的地址爲DS,偏移地址爲2000H的2個字節數據送到AX中。
1.4 寄存器間接尋址(操作數的地址在基址寄存器或變址寄存器中,操作數在存儲器中)

   指令中的操作數存放在存儲器中,存儲單元的有效地址由寄存器指出,這些寄存器可以是BX(基址寄存器)、BP、SI(變址寄存器)、DI(變址寄存器)之一,即有效地址等於其中某一寄存器的值,對寄存器指向的存儲單元進行數據操作,這些用來存放存儲器操作數偏移地址的寄存器稱爲地址指針。允許段超越改變段地址。
   (1)以BX、SI、DI(作爲地址指針)進行寄存器間接尋址的方式

   MOV AX,[BX]  ;PA=DS*16+BX
   MOV BX,[SI]   ;PA=DS*16+SI
   MOC [DI],DX  ;PA=DS*16+DI

   (2)以BP(作爲地址指針)進行寄存器間接尋址的方式

   MOV [BP],BX  ;PA=SS*16+BP

1.5 變址尋址

   用SI、DI變址寄存器進行的間接尋址。操作數存放在存儲單元中,操作數的物理地址是段寄存器的內容左移4位加上變址寄存器SI或DI的內容,再加上由指令中所指出的16位或8位位移量DISP。 

   MOV AX,3003H[SI]          ;設DS=3000H,SI=2000H,3003H位位移量DISP。PA=DS*10H+EA=3000H+2000H+3003H=35003H
1.6 基址尋址

   使用基址寄存器BX或基址指針寄存器BP進行尋址。當使用BX寄存器實現基址尋址時,隱含的段地址在DS寄存器中;當使用BP時,隱含的段地址在SS寄存器中。同樣允許段超越。

   操作數存放在存儲單元中,操作數的物理地址是段寄存器的內容左移4位加上BX或BP的內容,再加上由指令中所指出的16位或8位位移量。 

   MOV SI,08H[BX]         ;PA=DS*16+BX+08H
   MOV AX,[BX+100H]       ;PA=DS*16+BX                                   
   MOV AL,[BP+08H]        ;PA=DS*16+SP+08H
   MOV 0200H[BP],AX       ;PA=SS*16+BP                        
1.7 基址、變址尋址

   操作數在存儲單元中,其物理地址由段寄存器內容左移4位加上一個基址寄存器和一個變址寄存器,再加上16位或8位位移量。  

   MOV AX,MASK[BX][SI]  ;PA=DS*10H+EA=6000H*10H+A500H+2200H+64H=6C764H(設MASK=64H,BX=A500H,SI=2200H,DS=6000H)

2.程序尋址方式

2.1 直接尋址方式(相對尋址方式)
    把指令本身提供的位移量加到指令指針寄存器中,形成有效目標地址的尋址方式。

   JMP   1000H ;跳到CS:1000H這個位置
   CALL 1000H ;調用CS:1000H這個位置的函數
2.2 段內間接尋址方式


2.3 段間直接尋址方式


2.4 段間間接尋址方式



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章