8086寻址方式

    • 8086寻址方式
    • 立即数寻址
    • 寄存器寻址
      • Reg to Reg
      • Seg to Reg
      • Reg to Seg
    • 存储器寻址
      • 直接寻址
      • 寄存器间接寻址
      • 寄存器相对寻址
      • 寄存器变址寻址
      • 寄存器相对变址寻址

8086寻址方式

8086寻址方式主要分为三种,立即数寻址方式,寄存器寻址方式,存储器寻址方式。
寻址:就是寻找操作数的过程。注:获取操作数采用的寻址方式,会影响机器运行效率。

操作码:有时候指,机器指令的二进制编码。有时候指机器指令对应的英文缩写(助记符)
指令中的操作数:1可以指具体的数值。2可以是存放数据的寄存器。3指明数据在主存位置的存储器地址

立即数寻址

1.从内存中取指令。
2.从内存中取立即数第位八位,放在指令暂存区。
3.从内存中取立即数高八位,放在指令暂存区。
4.从指令暂存区,将拼装好的立即数,送入寄存器。
mov ax, 0000h
mov al, 00h
mov ah, 00h

byte byte/word(1bit) High/Low(1bit) reg(3big) 立即数 指令
1011 1 0 00 0000h mov ax, 0000h
1011 1 0 01 0000h mov cx, 0000h
1011 1 0 10 0000h mov dx, 0000h
1011 1 0 11 0000h mov bx, 0000h
1011 1 1 00 0000h mov sp, 0000h
1011 1 1 01 0000h mov bp, 0000h
1011 1 1 10 0000h mov si, 0000h
1011 1 1 11 0000h mov di, 0000h
1011 0 0 00 00h mov al, 00h

寄存器寻址

Reg to Reg

8BC0-8BC7 8BC8-8BCF 8BD0-8BD7 8BD8-8BDF
mov ax, ax mov cx, ax mov dx, ax mov bx, ax
mov ax, cx mov cx, cx mov dx, cx mov bx, cx
mov ax, dx mov cx, dx mov dx, dx mov bx, dx
mov ax, bx mov cx, bx mov dx, bx mov bx, bx
mov ax, sp mov cx, sp mov dx, sp mov bx, sp
mov ax, bp mov cx, bp mov dx, bp mov bx, bp
mov ax, si mov cx, si mov dx, si mov bx, si
mov ax, di mov cx, di mov dx, di mov bx, di

Seg to Reg

8CC0-8CC7 8CC8-8CCF 8CD0-8CD7 8CD8-8CDF
mov ax, es mov ax, cs mov ax, ss mov ax, ds
mov cx, es mov cx, cs mov cx, ss mov cx, ds
mov dx, es mov dx, cs mov dx, ss mov dx, ds
mov bx, es mov bx, cs mov bx, ss mov bx, ds
mov sp, es mov sp, cs mov sp, ss mov sp, ds
mov bp, es mov bp, cs mov bp, ss mov bp, ds
mov si, es mov si, cs mov si, ss mov si, ds
mov di, es mov di, cs mov di, ss mov di, ds

Reg to Seg

8EC0-8EC7 8EC8-8ECF 8ED0-8ED7 8ED8-8EDF
mov es,ax mov cs ,ax mov ss ,ax mov ds ,ax
mov es,cx mov cs ,cx mov ss ,cx mov ds ,cx
mov es,dx mov cs ,dx mov ss ,dx mov ds ,dx
mov es,bx mov cs ,bx mov ss ,bx mov ds ,bx
mov es,sp mov cs ,sp mov ss ,sp mov ds ,sp
mov es,bp mov cs ,bp mov ss ,bp mov ds ,bp
mov es,si mov cs ,si mov ss ,si mov ds ,si
mov es,di mov cs ,di mov ss ,di mov ds ,di

存储器寻址

直接寻址

  1. 取指令
  2. 取立即数(暂存到内部暂存器),与Seg运算,获得操作数地址
  3. 取操作数
B8,0100-BF,0100
mov ax, [0001h]
mov cx, [0001h]
mov dx, [0001h]
mov bx, [0001h]
mov sp, [0001h]
mov bp, [0001h]
mov si, [0001h]
mov di, [0001h]

寄存器间接寻址

有效地址存放在基址寄存器BX或变址寄存器SI、DI中
默认的段地址在DS段寄存器,可使用段超越前缀改变
1. 取指令,要取两次。
2. 将寄存器的数值放到暂存器中,与Reg运算。
3. 根据运算结果取内存中的地址。

BX IS DI
ax 8B07 8B04 8B05
cx 8B0F 8B0C 8B0D
dx 8B17 8B14 8B15
bx 8B1F 8B1C 8B1D
sp 8B27 8B24 8B25
bp 8B2F 8B2C 8B2D
si 8B37 8B34 8B35
di 8B3F 8B3C 8B3D
BX IS DI
es 8E07 8E04 8E05
cs 8E0F 8E0C 8E0D
ss 8E17 8E14 8E15
ds 8E1F 8E1C 8E1D

寄存器相对寻址

有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX、BP或SI、DI
有效地址=BX/BP/SI/DI+8/16位位移量
段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变

1.取指令
2.区操作数获得操作的寄存器,将寄存器的值暂存到ALU中,
3.取立即数,将立即数存放到内部暂存器中。取完立即数后,将其送往ALU
3. ALU做运算,计算出偏移值,由地址加法器算出地址。
4. 由计算出的地址取相应的值。

mov ax [SI +01]

SI DI BP BX
ax 8B44xx 8B45xx 8B46xx 8B47xx
cx 8B4Cxx 8B4Dxx 8B4Exx 8B4Fxx
dx 8B54xx 8B55xx 8B56xx 8B57xx
bx 8B5Cxx 8B5Dxx 8B5Exx 8B5Fxx
sp 8B64xx 8B65xx 8B66xx 8B67xx
bp 8B6Cxx 8B6Dxx 8B6Exx 8B6Fxx
si 8B74xx 8B75xx 8B76xx 8B77xx
di 8B7Cxx 8B7Dxx 8B7Exx 8B7Fxx

mov ax [SI +0101]

SI DI BP BX
ax 8B84xxxx 8B85xxxx 8B86xxxx 8B87xxxx
cx 8B8Cxxxx 8B8Dxxxx 8B8Exxxx 8B8Fxxxx
dx 8B94xxxx 8B95xxxx 8B96xxxx 8B97xxxx
bx 8B9Cxxxx 8B9Dxxxx 8B9Exxxx 8B9Fxxxx
sp 8BA4xxxx 8BA5xxxx 8BA6xxxx 8BA7xxxx
bp 8BACxxxx 8BAExxxx 8BADxxxx 8BAFxxxx
si 8BB4xxxx 8BB5xxxx 8BB6xxxx 8BB7xxxx
di 8BBCxxxx 8BBExxxx 8BBDxxxx 8BBFxxxx

寄存器变址寻址

BX+SI BX+DI BP+SI BP+DI
ax 8B00 8B01 8B02 8B803
cx 8B08 8B09 8B0A 8B80B
dx 8B10 8B11 8B12 8B813
bx 8B18 8B19 8B1A 8B81B
sp 8B20 8B21 8B22 8B823
bp 8B28 8B29 8B2A 8B82B
si 8B30 8B31 8B32 8B833
di 8B38 8B39 8B3A 8B83B

寄存器相对变址寻址

BX+SI+XXXX BX+DI+XXXX BP+SI+XXXX BP+DI+XXXX
ax 8B80xxxx 8B81xxxx 8B82xxxx 8B83xxxx
cx 8B88xxxx 8B89xxxx 8B8Axxxx 8B8Bxxxx
dx 8B90xxxx 8B91xxxx 8B92xxxx 8B93xxxx
bx 8B98xxxx 8B99xxxx 8B9Axxxx 8B9Bxxxx
sp 8BA0xxxx 8BA1xxxx 8BA2xxxx 8BA3xxxx
bp 8BA8xxxx 8BA9xxxx 8BAAxxxx 8BABxxxx
si 8BB0xxxx 8BB1xxxx 8BB2xxxx 8BB3xxxx
di 8BB8xxxx 8BB9xxxx 8BBAxxxx 8BBBxxxx
BX+SI+XX BX+DI+XX BP+SI+XX BP+DI+XX
ax 8B40xx 8B41xx 8B42xx 8B43xx
cx 8B48xx 8B49xx 8B4Axx 8B4Bxx
dx 8B50xx 8B51xx 8B52xx 8B53xx
bx 8B58xx 8B59xx 8B5axx 8B5Bxx
sp 8B60xx 8B61xx 8B62xx 8B63xx
bp 8B68xx 8B69xx 8B6Axx 8B6Bxx
si 8B70xx 8B71xx 8B72xx 8B73xx
di 8B78xx 8B79xx 8B7Axx 8B7Bxx

你可能感兴趣的:(汇编,16位汇编)