微机原理8086的七种寻址方式

电子常识

2640人已加入

描述

形成操作数或指令地址的方式,称为寻址方式。8086有七种寻址方式:立即数寻址方式 、寄存器寻址方式 、直接寻址方式 、寄存器间接寻址方式 、寄存器相对寻址方式 、基址变址寻址方式 、相对基址变址寻址方式。

1)立即数寻址方式

操作数作为指令的一部分存放在操作码之后的内存单元中这种操作数被称为立即数

8位数值(00H~FFH)

16位数值(0000H~FFFFH)

立即数寻址方式常用来给寄存器赋值

2)寄存器寻址方式

1.有效地址

有效地址(EA)=位移量(disp)+基址(base)+变址(index)

位移量:存放在指令中的数,但它不是立即数,而是一个地址,可以用变量或标号表示。

基址:存放在基址寄存器(BX、BP)中,有效地址的基址部分。

变址:存放在变址寄存器(SI、DI)中,有效地址的变址部分。

2.段前缀使用规则

8086允许程序员用段跨越前缀来改变系统所指定的默认段,如:允许数据存放在DS以外的段中,使用时指明段前缀,但是有些情况是不可以修改的。

(1)串处理操作中目的串必须用ES段,即默认为ES:DI,不可修改。

(2)压栈(push)、弹栈(pop)必须使用SS段,即默认为SS:SP不可修改。

(3)指令必须存放在CS段中。

8086

3) 直接寻址

操作数的地址中的偏移量直接跟在操作码之后,默认情况下基址存放在DS中,这个时候不需要加前缀,如果是加了别的前缀,如ES,则表示基址在ES中。

例如:

movax,[4000h]

movax,value (如果我们在前面定义了“符号地址”value=4000h,那么这句和上面的是一样的)

data segment

W dw 4

X dw 5

Y dw 1

data ends

这里的 W,X,Y就是符号地址,它代表变量的在段中偏移量。

这个时候我们就可以使用:

MOV AX, W

这里表示的W表示的就是偏移量,所以属于直接寻址。

4)寄存器间接寻址方式

有效地址在寄存器SI/DI/BX/BP中

若在SI、DI、BX中,则操作数默认在数据段

若在BP中,则操作数默认在堆栈段

操作数在存储器中,而其有效地址存放在某个寄存器中,可用寄存器有 BX、BP、SI、DI。

区别于寄存器寻址,前者操作数存放在寄存器中,在指令中存放相应的寄存器号码,不需要访存;后者的寄存器存放操作数的有效地址,而操作数本身在存储器中。指令要先通过该寄存器获取操作数有效地址,在通过该地址访存获取操作数。

同样也可以为其指定其他段前缀。

图形示意:

8086

代码示意:

mov ax,[bx] ;假设 (ds) = 2000H,(bx) = 1000H ,则执行结果为:(ax) = (21000) ,即取出存储单元 21000H-21001H 位置的值赋给 ax

5)寄存器相对寻址方式

8086

(1)基址相对寻址

对于BX寄存器来说,使用DS作为基址寄存器。例如:

mov ax,count[bx] 或 movax, [count+bx] ------DS基址,上面2条指令作用是相同的。

对于BP寄存器来说,使用SS作为基址寄存器。

例如:

mov ax,count[bp] 或 movax, [count+bp] ------SS基址

(2)变址相对寻址

使用2个变址寄存器si,di.例如:

movax, count[si] 或 mov ax,[count+si]

movax, count[di] 或 mov ax,[count+di]

最后的物理地址计算总体是这样的:

物理地址=16D*(DS)+(BX)+8

或(SI)或16位位移量

或(DI)

物理地址=16D*(SS)+(BP)+8位位移量

或16位位移量

6)基址变址寻址方式

操作数有效地址等于基址寄存器与变址寄存器内容之和,可使用寄存器有 BX、BP、SI、DI。

有效地址(EA)= 基址 + 变址。

图形示意:

8086

代码示意:

mov ax, [bx][di]/[bx+di] ;假设 (ds) = 2100H ,(bx) = 0158H ,(di) = 10A5H ,则执行结果为:(ax) = (221FDH),即取出存储单元 221FDH-221FEH 位置的值赋给 ax

7)相对基址变址寻址方式

有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和:

EA=[BX]/[BP]+[SI]/[DI]+8/16位位移量

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分