码迷,mamicode.com
首页 > 其他好文 > 详细

8086 寻址方式

时间:2015-06-17 23:24:54      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:内存   存储   

(段超越前缀用来改变默认的段寻址,通常内址寻址是数据段或者堆栈段。

但是可以在指令前加上段超越前缀,来访问其他段的数据。比如 di,si,bx 的段默认位是 ds,bp 默认为 ss。)


1.立即寻址方式:

操作数包含在指令中,跟在操作码后存在在代码段。

立即数寻址方式主要用来给寄存器和存储单元赋值,因此这种寻址方式不能用于单操作数指令;

若用于双操作数指令,也只能用于源操作数字段,不能用于目的操作数字段。

比如 "mov ax, 1111H"。


2.寄存器寻址方式:

不需要通过访问存储器来取得操作数, 所以执行速度快。

比如 "mov si, ax", "mov eax, ebx", "add vard, eax", "add varw, ax"。


3.直接寻址方式:

操作数在存储器中,指令直接包含有操作数的有效地址。

操作数一般放在数据段。所有操作数的地址由 DS 加上指令中直接给出的 16 位偏移得出。

如果采用超越段前缀,则操作数也可含在数据段外的其他段中。

比如在 ds 内容为 6000H,物理地址为 61111H 中存储内容是 7777H 的情况下,

执行 "mov ax, [1111H]" 后,寄存器 ax 中的内容为 7777H。


目标数采用直接寻址,并且使用了段超越前缀的形式:"mov es:[5678H], al"

这种寻址方式常用于处理单个存储器变量的情况。它可实现在 64k 字节的段内寻找操作数。

直接寻址的操作数通常是程序使用的变量。

注意立即寻址和直接寻址书写上的不同:

"mov ax, 1111H" 为立即数寻址, "mov ax, [1111H]" 为直接寻址。

若 value 为内存字变量: "mov ax, value" 和 "mov ax, [value]" 都为直接寻址。


4.寄存器间接寻址:

比如在 ds 内容为 6000H,si 内容为 1111H,物理地址为 61111H 处存储内容为 7777H 的情况下,

执行 "mov ax, [si]" 后,ax 中的内容为 7777H。

源操作数采用寄存器间接寻址,并使用了段超越前缀的形式:"mov dl, cs:[bx]" 

目的操作数采用寄存器间接寻址,使用 bp 作为指针寄存器,缺省的段寄存器为 ss 的形式:"mov [bp], cx"。


5.寄存器相对寻址方式:

操作数在存储器中,操作数的有效地址是一个( 基址寄存器 or 变址寄存器 ) + ( 8 位 or 16 位 )位移量之和。

在指令中给定的 8 位或 16 位位偏移量采用补码形式。

在计算有效地址时,若位偏移量为 8 位,则被带符号拓展成 16 位。

当所得的有效地址超越 FFFFH 时,则取其 64k 的模。

比如在 ds 内容为 5000H, di 内容为 1111H,物理地位 52222H 中存储的内容为 AAAAH 的情况下,

执行 "mov ax, [di+1111H]" 后,ax 内容为 AAAAH。

源操作数采用寄存器相对寻址,引用的段寄存器为 ss 的形式: "mov bx, [bp-4]"

目的操作数采用寄存器相对寻址,引用的段期存器为 ss: 的形式 "mov es:[bx+5], al"


6.基址加变址寻址方式:

操作数在存储器中,操作数的有效地址由基址寄存器 + 变址寄存器的内容得到,

当所得到的有效地址超过 FFFFH 时,就去其 64k 的模。

比如在 ds 为 5000H, bx 为 1111H, di 为 11H,物理地址为 51122H 存储的内容 AAAAH 的情况下,

执行 "mov ax, [bx+di]" 后,ax 内容为 AAAAH。

源操作数采用基址加变址寻址,通过段超越前缀来引用段期存器 es 的形式:"mov ax, es:[bx+si]"

目的操作数采用基址加变址寻址,引用的段寄存器是 ds 的形式:"mov ds:[bp+si], al"


7.相对基址加变址寻址方式:

操作数在存储器中,操作数的有效地址由基址寄存器 + 变址寄存器 + ( 8 位 or 16 位 ) 位偏移量得到。

当所得到的有效地址超过 FFFFH 时,就去其 64k 的模。

比如在 ds 内容为 5000H, bx 为 1111H,di 为 11H,物理地址为 51120H 处存储内容为 AAAAH 的情况下,

执行 "mov ax, [bx+di-2]" 后,ax 内容为 AAAAH。


8086 寻址方式

标签:内存   存储   

原文地址:http://blog.csdn.net/pandora_madara/article/details/46539363

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!