8086彙編(2)——指令系統與尋址方式

8086彙編(2)——指令系統與尋址方式

1、尋址方式

一、與數據有關的尋址方式

【指令的組成】
指令由操做碼和地址碼組成。編碼

  • 操做碼:說明執行什麼操做。
  • 地址碼:說明操做數從哪裏取出。

在彙編語言中的操做碼和地址碼:
操做碼:code

  • 用一個惟一的助記符表示
  • 對應機器指令的一個二進制編碼

地址碼:效率

  • 能夠是一個具體的數值
  • 能夠是存放數據的寄存器
  • 或指明數據在主存位置的存儲器地址

【尋址方式】
尋址方式對機器運行的速度和效率有很大的影響。
8086的機器代碼格式:
變量

【1. 當即數尋址方式】
當即數(imm)能夠是8位數值i8(00H ~ FFH),也能夠是16位數值i16(0000H ~ FFFFH)。
當即數尋址方式經常使用來給寄存器賦值。二進制

MOV AX, 1234H

【2. 寄存器尋址方式】
操做數存放在CPU的內部寄存器reg中,能夠是:im

  • 8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL
  • 16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP
  • 4個段寄存器seg:CS、DS、SS、ES
MOV BX, AX

【3. 存儲器尋址方式】
指令中給出操做數的主存地址信息(偏移地址,稱爲有效地址EA),而段地址在默認的或用段超越前綴指定的段寄存器中。數據

多種存儲器尋址方式:img

  1. 直接尋址方式
    有效地址在指令中直接給出,默認段地址在DS段,可以使用段超越前綴改變。
mov ax, [2000H]
mov ax, ES:[2000H]
  1. 寄存器間接尋址方式
    有效地址存放在基址寄存器BX或變址寄存器SI、DI中。默認段爲DS,可段超越。
mov ax, [si]
  1. 寄存器相對尋址方式
    有效地址是寄存器內容與有符號8位16位位移量之和,寄存器能夠是BX、BP或SI、DI:
    "EA=BX/BP/SI/DI+8/16位位移量"
    段地址對應BX/SI/DI寄存器默認是DS,對應BP寄存器默認是SS;可用段超越前綴改變。
mov ax, [DI+06H]
mov bx, [BP+06H]
  1. 基址變址尋址方式
mov ax, [BX+SI]
mov ax, [BP+DI]
mov ax, DS:[BP+DI]
  1. 相對基址變址尋址方式
    有效地址是基址寄存器(BX/BP)、變址寄存器(SI/DI)與一個8位或16位位移量之和
    "EA=BX/BP+SI/DI+8/16位位移量"
    段地址對應BX基址寄存器默認是DS,對應BP基址寄存器默認是SS;可用段超越前綴改變。
mov ax, [BX+SI+06H]

在寄存器相對尋址或相對基址變址尋址方式中,位移量能夠用符號來表示:語言

mov ax, [SI+COUNT]   ;COUNT是預先定義好的變量或常量(數值)
mov ax, [BX+SI+WNSUM]

同一尋址方式能夠寫成不一樣的形式:co

mov ax, [BX][SI]
    ;至關於mov ax, [BX+SI]
mov ax, COUNT[SI]
    ;至關於mov ax, [SI+COUNT]
mov ax, WNSUM[BX][SI]
    ;至關於mov ax, WNSUM[BX+SI]
    ;至關於mov ax, [BX+SI+WNSUM]

二、與轉移地址有關的尋址方式

  1. 段內直接尋址
    在同一段內,CS不變,只變IP。指令中直接給出了轉移地址的偏移量(8位或16位),該值與轉移指令的下一條指令的首地址相加,即得IP的新值。
    偏移量>0 向高地址方向轉移
    偏移量<0 向低地址方向轉移
    偏移量8位,短跳轉,範圍 -128~+127
    JMP SHORT QUEST
    偏移量16位,近跳轉,範圍 -32768~+32767
    JMP NEAR PTR QUEST
  2. 段內間接尋址
    轉移的有效地址值在寄存器或存儲器中。指令中直接給出了寄存器名或給出訪問存儲器的各類尋址方式,以便在存儲器中找到轉移的有效地址。
    指令格式:
    JMP BX
    JMP WORD PTR[BP+TABLE]
    例:
    設(DS)=2000H, (BX)=1256H, (SI)=528FH
    位移量=20A1H, (232F7H)=3280H, (264E5H)=2450H

    JMP  BX         ;(IP)=1256H
     JMP  TABLE[BX]  ;(IP)=3280H
     JMP  [BX][SI]   ;(IP)=(264E5H)=2450H
  3. 段間直接尋址
    不在同一段內,同時改變CS和IP。段間直接轉移,指令中直接給出了新的段地址CS和偏移地址IP。偏移地址(IP)在低地址,段地址在高地址。
    指令格式:
    JMP FAR PTR NEXTROUTINT
  4. 段間間接尋址
    新的段地址(CS)和偏移地址(IP)在存儲器的連續4個字節單元中(段地址在高地址中,偏移地址在低地址中)。存儲器的地址由指令中給出的各類尋址方式(當即尋址方式和寄存器尋址方式除外)求得。其段地址隱含爲數據段。 指令格式: JMP DWORD PTR[INTERS+BX]

相關文章
相關標籤/搜索