• 正在加载中...
  • 寻址方式

    寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。显然,此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号(可以是8位也可以是16位(AX,BX,CX,DX))。相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。直接端口寻址是在指令中直接给出要访问的端口地址,一般采用2位十六进制数表示,也可以是符号,访问的端口范围0~255. 例如: IN AL,20H 表示从I/0端口地址为20H的端口中取数据送入AL寄存器中。

    编辑摘要

    目录

    指令寻址/寻址方式 编辑

    指令的寻址方式有以下两种。

    顺序寻址方式

    由于指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令地顺序进行。也就是说,从存储器取出第1条指令,然后执行这条指令;接着从存储器取出第2条指令,再执行第二条指令;接着再取出第3条指令。

    这种程序顺序执行的过程,称为指令的顺序寻址方式。为此,必须使用程序计数器(又称指令指针寄存器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。

    跳跃寻址方式

    当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。注意,程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。

    采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。

    操作数寻址/寻址方式 编辑

    形成操作数的有效地址的方法称为操作数的寻址方式。由于大型机、小型机、微型机和单片机结构不同,从而形成了各种不同的操作数寻址方式。下面介绍一些比较典型又常用的操作数寻址方式。

    隐含寻址

    这种类型的指令,不是明显地给出操作数的地址。而是在指令中隐含着操作数的地址。例如,单地址的指令格式,就不明显地在地址字段中指出第2操作数的地址,而是规定累加寄存器AC作为第2操作数地址。指令格式明显指出的仅是第1操作数的地址D。因此,累加寄存器AC对单地址指令格式来说是隐含地址。

    如:DAA ;

    立即寻址

    指令的地址字段指出的不是操作数的地址,而是操作数本身,这种寻址方式称为立即寻址。立即寻址方式的特点是指令执行时间很短,因为它不需要访问内存取数,从而节省了访问内存的时间。

    如:MOV AX,5678H 注意:立即数只能作为源操作数,不能作为目的操作数。

    直接寻址

    直接寻址是一种基本的寻址方法,其特点是:在指令格式的地址的字段中直接指出操作数在内存的地址。由于操作数的地址直接给出而不需要经过某种变换,所以称这种寻址方式为直接寻址方式。在指令中直接给出参与运算的操作数及运算结果所存放的主存地址,即在指令中直接给出有效地址

    间接寻址

    间接寻址是相对直接寻址而言的,在间接寻址的情况下,指令地址字段中的形式地址不是操作数的真正地址,而是操作数地址的指示器,或者说此形式地址单元的内容才是操作数的有效地址。

    寄存器寻址方式和寄存器间接寻址方式

    当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式。显然,此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号(可以是8位也可以是16位(AX,BX,CX,DX))。指令结构中的RR型指令,就是采用寄存器寻址方式的例子。如:MOV DS,AX

    寄存器间接寻址方式与寄存器寻址方式的区别在于:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。

    相对寻址方式

    相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。“相对”寻址,就是相对于当前的指令地址而言。采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,因而所编程序可以放在内存的任何地方。

    指令格式:MOVAX,[BX+1200H]操作数物理地址PA=(DS/SS)*10H+EA EA=(BX/BP/SI/DI)+(6/8)位偏移量Disp 对于BX,SI,DI寄存器来说段寄存器默认为DS,对于SP来说,段寄存器默认为SS

    基址寻址方式

    在基址寻址方式中将CPU中的基址寄存器的内容,加上变址寄存器的内容而形成操作数的有效地址。基址寻址的优点是可以扩大寻址能力,因为与形式地址相比,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中寻址。

    变址寻址方式

    变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。

    但使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律变化。为此,必须使变址寄存器的内容实现有规律的变化(如自增1、自减1、乘比例系数)而不改变指令本身,从而使有效地址按变址寄存器的内容实现有规律的变化。

    块寻址方式

    块寻址方式经常用在输入输出指令中,以实现外存储器或外围设备同内存之间的数据块传送。块寻址方式在内存中还可用于数据块移动。

    特点/寻址方式 编辑

    1:寄存器直接寻址:

    你就想成:其实你已经站在你要找的"门户号(家)"面前了,直接敲门进去就OK了!

    例子: MOV AX,【2000H】

    MOV AX,2000H -->2000H为存放操作数单元号的符号地址

    上面两者是不等效的

    2:寄存器间接寻址方式:

    你就想成:你已经站在你要找的"门户号(家)"的"单元号",你要找到它,必须知道它在当前"单元号"几楼.假如它在6楼,那你就上到6楼就OK了!!注意,最高只有16楼,因为什么呢?那就用DEBUG的D命令看看呀,慢慢数哦,呵呵!!

    例子: MOV AX,【BX】

    计算公式: 物理地址=16d*(DS)+(BX)

    物理地址=16d*(DS)+(SI)

    物理地址=16d*(DS)+(DI)

    物理地址=16d*(SS)+(BP)

    3:寄存器相对寻址方式:

    你就想成:你要找的"门户号(家)"其实就在你家的楼上或者楼下,你要找到它,就 必须知道它在你楼上几楼,或者在楼下几楼!就OK了!

    例子: MOV AX,COUNT【SI】

    MOV AX,【COUNT+SI】

    其中 COUNT为位移量的符号地址

    计算公式: 物理地址=16d*(DS)+(BX)+8位位移量

    或+(SI) 或 16位位偏移量

    或+(DI)

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

    4:基址变址寻址方式:

    你就想成:你要找的"门户号(家)"是跟住在同一栋楼的不同"单元号",你要找到它,就必须知道它是该栋的哪个"单元号",并且住在几楼!那样你就可以找到它了 !

    例子: MOV AX,【BX】【DI】

    MOV AX,【BX+DI】

    计算公式: 物理地址=16d*(DS)+(BX)+(SI)

    或+(DI)

    物理地址=16d*(SS)+(BP)+(SI)

    或+(DI)

    5:相对基址变址寻址方式:

    你就想成:你就想成:你要找的"门户号(家)"是跟住在同一栋楼的不同"单元号",它比你高几层楼或者低几层楼,然后用的你目前的楼数+/-就可以得出你要找的住在几楼了!

    例子: MOV,AX,MASK【BX】【SI】

    MOV,AX,MASK【BX+SI】

    MOV,AX,【MASK+BX+SI】

    以上三个例子是等效的!!

    计算公式: 物理地址=16d*(DS)+(BX)+(SI)+8位位移量

    或+(DI) 或 16位位偏移量

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

    或+(DI) 或 16位位偏移量

    与I/0端口有关的寻址方式/寻址方式 编辑

    8086微处理器采用独立编址的I/0端口,有专门的输入指令IN和输出指令OUT,寻址方式有以下两种。

    直接端口寻址

    直接端口寻址是在指令中直接给出要访问的端口地址,一般采用2位十六进制数表示,也可以是符号,访问的端口范围0~255. 例如: IN AL,20H 表示从I/0端口地址为20H的端口中取数据送入AL寄存器中。

    间接端口寻址

    若访问的端口地址大于255时,就要用间接寻址方式。可以访问的端口范围0~65535. 例如: MOV DX,356H ;将端口地址356H送入DX寄存器 OUT DX,AL ;将AL中的内容输出到DX指定的端口

    添加视频 | 添加图册相关影像

    互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于www.baike.com。

    登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。

    互动百科用户登录注册
    此词条还可添加  信息模块

    WIKI热度

    1. 编辑次数:14次 历史版本
    2. 参与编辑人数:13
    3. 最近更新时间:2015-11-20 10:57:50

    互动百科

    扫码下载APP