您的位置:首页 > 其它

8086寻址方式

2017-09-04 22:57 218 查看
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

bytebyte/word(1bit)High/Low(1bit)reg(3big)立即数指令
101110000000hmov ax, 0000h
101110010000hmov cx, 0000h
101110100000hmov dx, 0000h
101110110000hmov bx, 0000h
101111000000hmov sp, 0000h
101111010000hmov bp, 0000h
101111100000hmov si, 0000h
101111110000hmov di, 0000h
1011000000hmov al, 00h

寄存器寻址

Reg to Reg

8BC0-8BC78BC8-8BCF8BD0-8BD78BD8-8BDF
mov ax, axmov cx, axmov dx, axmov bx, ax
mov ax, cxmov cx, cxmov dx, cxmov bx, cx
mov ax, dxmov cx, dxmov dx, dxmov bx, dx
mov ax, bxmov cx, bxmov dx, bxmov bx, bx
mov ax, spmov cx, spmov dx, spmov bx, sp
mov ax, bpmov cx, bpmov dx, bpmov bx, bp
mov ax, simov cx, simov dx, simov bx, si
mov ax, dimov cx, dimov dx, dimov bx, di

Seg to Reg

8CC0-8CC78CC8-8CCF8CD0-8CD78CD8-8CDF
mov ax, esmov ax, csmov ax, ssmov ax, ds
mov cx, esmov cx, csmov cx, ssmov cx, ds
mov dx, esmov dx, csmov dx, ssmov dx, ds
mov bx, esmov bx, csmov bx, ssmov bx, ds
mov sp, esmov sp, csmov sp, ssmov sp, ds
mov bp, esmov bp, csmov bp, ssmov bp, ds
mov si, esmov si, csmov si, ssmov si, ds
mov di, esmov di, csmov di, ssmov di, ds

Reg to Seg

8EC0-8EC78EC8-8ECF8ED0-8ED78ED8-8EDF
mov es,axmov cs ,axmov ss ,axmov ds ,ax
mov es,cxmov cs ,cxmov ss ,cxmov ds ,cx
mov es,dxmov cs ,dxmov ss ,dxmov ds ,dx
mov es,bxmov cs ,bxmov ss ,bxmov ds ,bx
mov es,spmov cs ,spmov ss ,spmov ds ,sp
mov es,bpmov cs ,bpmov ss ,bpmov ds ,bp
mov es,simov cs ,simov ss ,simov ds ,si
mov es,dimov cs ,dimov ss ,dimov ds ,di

存储器寻址

直接寻址

取指令

取立即数(暂存到内部暂存器),与Seg运算,获得操作数地址

取操作数

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. 根据运算结果取内存中的地址。

BXISDI
ax8B078B048B05
cx8B0F8B0C8B0D
dx8B178B148B15
bx8B1F8B1C8B1D
sp8B278B248B25
bp8B2F8B2C8B2D
si8B378B348B35
di8B3F8B3C8B3D
BXISDI
es8E078E048E05
cs8E0F8E0C8E0D
ss8E178E148E15
ds8E1F8E1C8E1D

寄存器相对寻址

有效地址是寄存器内容与有符号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]

SIDIBPBX
ax8B44xx8B45xx8B46xx8B47xx
cx8B4Cxx8B4Dxx8B4Exx8B4Fxx
dx8B54xx8B55xx8B56xx8B57xx
bx8B5Cxx8B5Dxx8B5Exx8B5Fxx
sp8B64xx8B65xx8B66xx8B67xx
bp8B6Cxx8B6Dxx8B6Exx8B6Fxx
si8B74xx8B75xx8B76xx8B77xx
di8B7Cxx8B7Dxx8B7Exx8B7Fxx
mov ax [SI +0101]

SIDIBPBX
ax8B84xxxx8B85xxxx8B86xxxx8B87xxxx
cx8B8Cxxxx8B8Dxxxx8B8Exxxx8B8Fxxxx
dx8B94xxxx8B95xxxx8B96xxxx8B97xxxx
bx8B9Cxxxx8B9Dxxxx8B9Exxxx8B9Fxxxx
sp8BA4xxxx8BA5xxxx8BA6xxxx8BA7xxxx
bp8BACxxxx8BAExxxx8BADxxxx8BAFxxxx
si8BB4xxxx8BB5xxxx8BB6xxxx8BB7xxxx
di8BBCxxxx8BBExxxx8BBDxxxx8BBFxxxx

寄存器变址寻址

BX+SIBX+DIBP+SIBP+DI
ax8B008B018B028B803
cx8B088B098B0A8B80B
dx8B108B118B128B813
bx8B188B198B1A8B81B
sp8B208B218B228B823
bp8B288B298B2A8B82B
si8B308B318B328B833
di8B388B398B3A8B83B

寄存器相对变址寻址

BX+SI+XXXXBX+DI+XXXXBP+SI+XXXXBP+DI+XXXX
ax8B80xxxx8B81xxxx8B82xxxx8B83xxxx
cx8B88xxxx8B89xxxx8B8Axxxx8B8Bxxxx
dx8B90xxxx8B91xxxx8B92xxxx8B93xxxx
bx8B98xxxx8B99xxxx8B9Axxxx8B9Bxxxx
sp8BA0xxxx8BA1xxxx8BA2xxxx8BA3xxxx
bp8BA8xxxx8BA9xxxx8BAAxxxx8BABxxxx
si8BB0xxxx8BB1xxxx8BB2xxxx8BB3xxxx
di8BB8xxxx8BB9xxxx8BBAxxxx8BBBxxxx
BX+SI+XXBX+DI+XXBP+SI+XXBP+DI+XX
ax8B40xx8B41xx8B42xx8B43xx
cx8B48xx8B49xx8B4Axx8B4Bxx
dx8B50xx8B51xx8B52xx8B53xx
bx8B58xx8B59xx8B5axx8B5Bxx
sp8B60xx8B61xx8B62xx8B63xx
bp8B68xx8B69xx8B6Axx8B6Bxx
si8B70xx8B71xx8B72xx8B73xx
di8B78xx8B79xx8B7Axx8B7Bxx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  16位汇编