408考研计算机之计算机组成与设计——知识点及其做题经验篇目3:指令的寻址方式
创始人
2024-05-31 21:32:04
0

        上篇文章我们讲到,指令的基本格式,一条指令通常包括操作码字段和地址码字段两部分:

操作码字段地址码字段

        并且我们还讲到根据操作数地址码的数目不同,可将指令分为零一二三四地址指令。感兴趣的小伙伴们可以看看小编的上一篇文章:

408考研计算机之计算机组成与设计——知识点及其做题经验篇目2:指令系统_计算机鬼才~的博客-CSDN博客

         那么本期的博客小编将会探讨,计算机通过地址码字段,找到指令或者操作数有效地址的方式,跟随好小编的脚步,我们发车啦!

目录

一、指令寻址

1、顺序寻址

2、跳跃寻址

二、数据寻址具体方式

1、直接寻址与间接寻址

①直接寻址         

②间接寻址

2、寄存器寻址与寄存器间接寻址

①寄存器寻址

②寄存器间接寻址

3、立即寻址

4、隐含寻址

5、偏移寻址

①相对寻址

②基址寻址

③变址寻址

6、堆栈寻址

三、几种寻址的比较


一、指令寻址

考点1:指令寻址

        寻址方式分为指令寻址与数据寻址两大类,其中寻找下一条将要执行的指令地址称为指令地址;寻找本条指令的数据地址称为数据寻址。

        其中较为简单的是指令寻址,看篇幅我们就知道,数据寻址有十种方法,基本上除了考点1里面讲到了指令寻址,其他的全是数据寻址。

        指令寻址有有两种方式,一种是顺序寻址方式,另一种是跳跃寻址方式。

1、顺序寻址

        《王道考研》书上边就一句话,叫“通过程序计数器PC加1(1个指令字长),自动形成下一条指令的地址”。

        但其实,这个自动加一,大有文章可言,尤其是括号里的1个指令字长,妙不可言。这个1是泛指而不是特指,你可以把这个1理解为,下一条指令的地址是下一条地址,但是具体问题要具体分析。比如说当主存按字节编址,而指令字长有两个字节,如下图:

编号1:01101100
编号2:10100011
编号3:11001010
编号4:00110010
……

        主存按字节变址,所以每8位构成主存的一个存储单元 ,此时的PC存放的内容为01101100的地址,我们暂时以编号1来称呼这个地址名。而由于指令字长有两个字节,即编号1(01101100)与编号2(10100011)共同构成了这一条指令。那么想要执行下一条指令,我们需要执行(PC)+2\rightarrowPC,即执行从编号3开始构成的这条指令。

        这一问题不大容易直接考,但是融合到某个选择题或者大题里面,不注意就容易错!

2、跳跃寻址

        通过转移类指令来实现,比如说无条件转移指令、有条件转移指令。所谓跳跃,是指下条指令的地址不由程序计数器PC自动给出,而是由本条指令给出下条指令的计算方式,跳跃的结果为当前指令修改PC值,所以下一条指令依然由PC给出。

我们看一道例题,感受一下:

例题:对按字寻址的机器,程序计数器和指令寄存器的位数各取决于___、____

A.机器字长

B.存储器的字数

C.指令字长

D.地址总线宽度

【答案】:B、 C

【解析】:程序寄存器PC存放的是下一条执行指令的地址,即指令在内存中的地址,指令寄存器IR存放的是当前指令的内容,所以程序计数器PC的位数取决于存储器的字数,而指令寄存器IR取决于指令字长。

二、数据寻址具体方式

       

        但是在具体讲之前,我们先要明白几个符号。指令中的地址码并不代表操作数的真实地址,这种地址我们称为形式地址A,而经过数据寻址,我们找到操作数真实的地址,这种地址称为有效地址EA。

        其中A代表地址,即编号,而(A)代表A地址中存放的数字。

操作码寻址特征形式地址A

考点2:简单的寻址

1、直接寻址与间接寻址

        如果就这样讲,略显单调,所以小编在这一部分的开头要举一个小例子:假设小伍同学与桃园小区的很多小朋友都是是好朋友,小伍同学每天放学后都要去一个好朋友的家里玩,但是又记不清每一个同学的家庭住址,小伍同学有一个只能记录一个人家庭住址的备忘录,此时我们该如何找到这个“地址”呢?

①直接寻址         

        第一种方式:备忘录上就是要找的这个好朋友的地址,找到某个好朋友的家庭住址。

        这种方式很直接,指令字中的形式地址A就是操作数的真实地址EA,即EA=A。而且只用去一个好朋友的家里,即只用访存一次,而且还特别简单好理解。

②间接寻址

        第二种方式:查备忘录,然后先去第一个好朋友A的家里,让这个好朋友告诉自己好朋友B的家庭地址。我不能直接知道地址,但是我可以问别人,让别人告诉我正确的地址。

        这种方式指令的地址字段给出的形式地址不是操作数真正的地址,而是操作数有效地址所在的存储单元的地址,也就是说操作数地址的地址,即EA=(A)。

        同时,倘若第一个好朋友A也不知道B的地址,他可以告诉你C的地址,并且说“我不知道B住哪儿,但我知道C在哪儿,你去问一问C吧,C没准知道B住在哪儿”。这种情况就是多次间接寻址了。在实际的主存中,主存字第一位为1时,表示去除的仍然不是操作数的地址,这个1就好比是“我不知道B住在哪儿”这句话。

        间接寻址的优点为:可扩大寻址范围,因为有效地址EA的位数大于形式地址A的位数,也便于完成子程序的返回,缺点是,要进行多次访存(到好几个小朋友的家里去问),极大的降低了时间。

2、寄存器寻址与寄存器间接寻址

①寄存器寻址

        寄存器寻址是指在指令字中直接给出操作数所在的寄存器编号,即EA=R,其操作数在由R所指的寄存器内。

        寄存器寻址的优点是指令在执行阶段不访问主存,只访问寄存器,引寄存器数量较少,对应地址码长度较小,使得指令字段且不用访存,所以执行速度快,缺点是寄存器价格太贵了,寄存器的个数有限。

②寄存器间接寻址

        寄存器间接寻址是指在寄存器R中给出的不是一个操作数,而操作数所在主存单元的地址,即(EA)=R。

        寄存器间接寻址的特点是,与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存。注意哦,不出意外的话,就访存一次,《王道考研》书上边没有提到多次寄存器间接寻址。

3、立即寻址

        这种类型的指令的地址字段指出的不是操作数的地址,而是操作数本身,又称立即数,采用补码表示。其中#表示立即寻址特征,A就是操作数。

        立即寻址的优点是指令在执行阶段不访问主存,指令执行时间最短,缺点为A的位数限制了立即数的范围。

4、隐含寻址

        这种类型的指令不明显给出操作数的地址,而是在指令中隐含操作数的地址。例如单地址的指令格式就不明显的在地址段指出第二操作数的地址,而规定累加器ACC作为第二操作数地址,累加器ACC对单地址指令格式来说就是隐含寻址。

        隐含寻址的优点是有利于缩短指令字长,缺点是需增加存储操作数货隐含地址的硬件。

来看两道道题目:

例题1:为了简化地址结构,我们采用()

A.立即寻址

B.寄存器寻址

C.隐含寻址

D.间接寻址

【答案】:C

【解析】:隐地址不给出明显的操作数地址,而在指令中隐含操作数的地址,因此可以简化地址结构,而CPU中的寄存器数量不会太多,用很短的编码就可以指定寄存器,因此也能有效的缩短地址段的位数。但是寄存器寻址简化地址结构的效果没有隐含寻址更加厉害,所以当选项中有隐含寻址的时候,就选隐含寻址,没有隐含寻址的时候,就选寄存器寻址

例题2:假设某条指令的第一个操作数采用寄存器间接寻址的方式,指令中给出的寄存器编号为8,8号寄存器的内容为1200H,地址为1200H的单元中的内容为12FCH,地址为12FCH的单元中的内容为38D8H,则该操作数的有效地址为()

A.8

B.1200H

C.12FCH

D.38D8H

【答案】:B

【解析】:我们画一个表,感受一下:

编号/主存号8(寄存器)1200H12FCH
存放内容1200H12FCH38D8H

由于是寄存器间接寻址,则8号寄存器放的是有效操作数所在的主存地址,即有效地址。故1200H为有效地址,而12FCH为真实操作数。大家千万要注意,题目中问的是有效地址还是操作数!不审题就容易功亏一篑。

考点3:偏移寻址

5、偏移寻址

①相对寻址

        相对寻址是把PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(PC)+A,其中A是相对于当前PC值的位移量,可正可负,补码表示。

        这种寻址的优点是操作数的地址不固定,岁PC值的变化而变化,而且于指令地址见总是差一个固定值,因此便于程序浮动。

        但是特别注意:当CPU从存储器中取出一字节是,会自动执行(PC)+1\rightarrowPC,也就是说PC先自增,用这个自增的地址进行偏移,我们看一道例题就能立马明白:

例题:(2009年统考真题)某机器字长为16位,主存按字节编址,转移指令采用相对寻址,由两字节组成,第一字节为操作码字段,第二字段为相对位移量字段,假定取指令时,每去一字节PC自动加1,若某次转移指令所在主存地址为2000H,相对位移量字段的内容为06H,则该转移指令成功转移后的目的地址为()

A.2006H

B.2007H

C.2008H

D.2009H

【答案】:C

【解析】:首先这是2009年的统考题,直接选D(笑死,不会真的有人这么想吧)。首先机器字长为16位,即两个字节,那么CPU取出这一指令时,PC会立马加2,存放2002H,然后经过偏移06H,得到目的地址为2008H。

②基址寻址

        基址寻址是将CPU中的基址寄存器BR的内容加上指令格式中的形式地址A二形成操作数的有效地址,即EA=(BA)+A。其中基址寄存器既能采用专用寄存器,又能采用通用寄存器。

        至于基址寻址的功能,我们一句话总结为“面向系统,主要用于多道程序或数据分配空间”,很好理解,因为基址寄存器的内容不变,而形式地址则作为偏移量。用户不必为自己的程序存于哪个空间区域而烦恼,系统会安排的,因此有利于多道程序。

③变址寻址

        变址寻址是指有效地址EA等于指令字中形式地址A与变址寄存器IX的内容之和,即EA=(IX)+A。

        我们依然用一句话总结“面向用户,主要用于处理好数组问题”,变址寄存器的内容由用户设定,但是指令字中的A是不可变的。而且在数组处理过程中,可设定A为数组首地址,不断改变变址寄存器IX的内容,便很容易形成数组中任意一个数据的地址,特别适合编制循环程序。

6、堆栈寻址

        堆栈是存储器中一块特定的、满足后进先出原则的存储区,该存储区中读写单元的地址由一个特定的寄存器给出,该寄存器称为SP,即堆栈指针。

三、几种寻址的比较

考点4:对比

寻址方式有效地址访存次数速度用途与特点
隐含寻址程序指定0\缩短指令字长
立即寻址A即为操作数01补码,快
直接寻址EA=A13
一次间接寻址EA=(A)28扩大寻址范围、有利于子程序返回
寄存器寻址EA=R02快,不访存,指令字长短
寄存器一次间接寻址EA=(R)13扩大寻址范围
相对寻址EA=(PC)+A15便于程序浮动
基址寻址EA=(BR)+A15面向系统
变址寻址EA=(IX)+A15面向用户,解决数组

例题()便于处理数组问题。

A.间接寻址

B.变址寻址

C.相对寻址

D.基址寻址

【答案】:B

【解析】:略,自己重新看上边的表格

        好的,本期的计算机考研总结性文章就到此为止啦,感兴趣的好兄弟们快来关注一波,让小编感受到大家的赞赏。

相关内容

热门资讯

小学英语作文我们的班会(优选... 小学英语作文我们的班会 篇一Our Class MeetingOur class recently ...
介绍猫的英语作文(推荐6篇) Introduction to Cats (Part 1)Cats are one of the m...
家人的英语作文【最新6篇】 家人的英语作文 篇一My FamilyMy family is the most important...
克服困难的英语作文【通用4篇... 克服困难的英语作文 篇一Overcoming Difficulties in Learning En...
后天英文观后感【优选3篇】 后天英文观后感 篇一The Day After Tomorrow: A Tale of Enviro...
英语邀请函接受范文(实用6篇... 英语邀请函接受范文 篇一Dear [Name],I hope this letter finds y...
英语作文英汉互译(最新3篇) 篇一:英语作文英汉互译英文标题:The Importance of Learning English...
my dream job英语... 篇一:My Dream JobMy dream job is to become a success...
祝中考顺利的英语句子【推荐6... 祝中考顺利的英语句子 篇一The Importance of Preparation for a S...
元宵节的英语作文(优秀6篇) 元宵节的英语作文 篇一Lantern FestivalThe Lantern Festival fa...
英语投诉信万能句子(优质5篇... 英语投诉信万能句子 篇一Dear Sir/Madam,I am writing to express...
自然资源英语作文(通用3篇) 自然资源英语作文 篇一The Importance of Conserving Natural Re...
考研英语作文范文背诵口诀(优... 考研英语作文范文背诵口诀 篇一标题:背诵口诀的重要性背诵口诀在考研英语作文中的重要性不可忽视。首先,...
圣诞节最经典歌曲:《平安夜》... 圣诞节最经典歌曲:《平安夜》英文歌词  《平安夜》是奥地利的一个小地方的小乡村教会的神父Joseph...
英语作文我最喜欢的作家【优选... 英语作文我最喜欢的作家 篇一My Favorite Writer - J.K. RowlingJ.K...
春节贴对联英语怎么说(精选6... 春节贴对联英语怎么说 篇一The Art of Writing Couplets during th...
大专英语高考作文范文【优质6... 大专英语高考作文范文 篇一Title: The Importance of Learning a S...
人物英语作文:Thomas ... 人物英语作文:Thomas Edison 篇一Thomas Edison: The Inventor...
yesterday once... yesterday once more中文歌词 篇一《yesterday once more》是一首...
人物描写英语作文(推荐6篇) 人物描写英语作文 篇一A Courageous SoldierI want to share the...