版权归原作者所有,如有侵权,请联系我们

[科普中国]-寻址概念

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

概念

存储单元中存放的数据信息大致可分为两大类:一类是指令信息;另一类是操作数。两类信息的寻址方式既有相同之处,又各有特点。

由于程序中的指令序列通常是顺序排列的,对于顺序推进的指令序列,采用程序计数器PC加1的方式自动形成下一条指令的地址。当程序发生转移时,就不能采用上述方式,此时把指令地址的形成转换为操作数地址的寻址。把指令不当指令信息,而当作操作数信息来处理、按操作数的寻址方式获得指令地址。

操作数地址的寻址方式比较复杂,主要原因是,操作数本身不能像指令那样顺序排列,很多操作数是公用的,集中放在某一划定的区域。有些操作数是原始值存放在存储器中,有些则是中间运算的结果或先前运算的结果。它们的来源并无规律,具有很大的随机性和浮动性,这样就增加了获得有效地址的难度。另一方面随着程序设计技巧的发展,为了提高程序的质量也提出了很多操作数设置方法,丰富了寻址的手段。

寻址可用寻址单位来度量。它的含义是用一个有效地址访问存储器取出操作数的长度。操作数是按位、字节、字、块和页来组织的,因此寻址单位就有位地址、字节地址、字地址、块地址和页地址。就是说,如果有效地址是位地址,访问存储器后,取出操作数长度只有一位,如果寻址单位是字节地址,取出的操作数长度是8位(一个字节);其余依此类推。

一个指令系统具有哪几种寻址方式,能否为编制程序提供方便是指令系统设计的关键,也是一个技巧性极强的问题,它是初学者理解一个指令系统的难点。在不同的计算机中,寻址方式的分类和名称不很统一,但大多可以归纳为以下几种方式(包括它们的变型与组合):立即寻址、直接寻址、间接寻址、变址寻址。

工作原理指令的寻址方式指令寻址比较简单,它又可以细分为顺序寻址和跳跃寻址。

1、顺序寻址方式

程序中的指令序列在主存中是顺序存放的。因此,程序执行时,是从该程序的第一条指令开始,逐条取出并逐条执行的。这种程序的顺序执行过程,称为顺序寻址方式。顺序寻址可通过程序计数器PC加1,自动形成下一条指令的地址。

2、跳跃寻址方式

跳跃寻址则需要通过程序转移类指令实现。跳跃寻址的转移地址形成方式有3种:直接(绝对)、相对和间接寻址,它们与下面介绍的操作数寻址方式中的直接、相对和间接寻址是相同的,只不过寻找到的不是操作数的有效地址而是转移地址而已。

操作数的寻址方式1、立即寻址(立时寻址、立即操作数)

指令中直接给出了操作数,操作数紧跟在操作码的后面,在取出指令的同时,也就取出了操作数。立即有操作数可供操作之用,所以称为立即操作数,或立即寻址。

立即寻址的指令执行起来很快,CPU将数据与指令一起从存储器取出,不必通过寻址计算就获得了操作数。立即寻址也便于程序员使用。但是,因为数据和地址都是固定的,所以这种寻址方式灵活性最差。

立即寻址方式可用来提供常数,设置初始值等。

2、直接寻址

指令中的地址码是操作数的有效地址,用这个有效地址访问一次存储器便获得操作数,这种寻址方式称为直接寻址。因为不需要任何寻址计算,所以称指令带有操作数的有效地址的寻址方式为直接寻址。通常说寻址的范围就是用这个地址直接访问存储空间的大小,它也受到地址字段长度的限制。

对于使用次数很少又不需要做什么变化的地址码,可采用直接寻址方式。

3、间接寻址

间接寻址方式意味着指令中的地址字段使操作数地址的地址,即操作数的地址是间接提供的,通常在指令格式中划出一位作为直接寻址或间接寻址的标志位,间接寻址用标志符@指出。CPU先从存储器中取出含有间接地址的指令,然后访问间接地址单元,从中取出有效地址。CPU需要多执行一次访问存储器操作,所以间接寻址比直接寻址执行速度要慢。

4、变址寻址

为了使地址量可以灵活地进行某种变化,大多数计算机都设置了变址寻址方式,即指定某寄存器作为变址寄存器,并在指令地址段中给出一个形式地址,变址寄存器的内容与形式地址之和就是有效的操作数地址。

变址寻址方式是一种应用广泛的方式,它的典型做法是将指令中给出的形式地址当作基准地址或是一个常数,变址寄存器的内容则作为修改量,经地址加法器形成有效的操作数地址。1