目录

  • 第七章
    • 1. 什么叫机器指令?什么叫指令系统?为什么说指令系统与机器的主要功能以及硬件结构之间存在着密切的关系?
    • 2. 什么叫寻址方式?为什么要学习寻址方式?
    • 3. 什么是指令字长、机器字长和存储字长?
    • 4. 零地址指令的操作数来自哪里?在一地址指令中,另一个操作数的地址通常可采取什么寻址方式获得?各举一例说明。
    • 5. 对于二地址而言,操作数的物理地址可安排在什么地方?举例说明。
    • 6. 某指令系统字长为16位,地址码取4位,试提出一种方案,使指令系统有8条三地址指令、16条二地址指令、100条一地址指令。
    • 7. 设指令字长为16位,采用扩展操作码技术,每个操作码的地址为6位。如果定义了13条二地址指令,试问还可安排多少条一地址指令?
    • 8. 某机指令字长16位,每个操作数的地址码为6位,设操作码长度固定,指令分为零地址、一地址和二地址三种格式,若零地址指令有M种,一地址指令有N种,则二地址指令最多有几种?若操作码位数可变,则二地址指令最多允许几种?
    • 9. 试比较间接寻址和寄存器间接寻址。
    • 10. 试比较基址寻址和变址寻址。
    • 11. 画出先变址再间址寻址及先间址再变址的寻址过程示意图。
    • 12. 画出“SUB @R1”指令对操作数的寻址及减法过程的流程图。设被减数和结果存于ACC中,@表示间接寻址,R1寄存器的内容为2074H。
    • 13. 画出换行“ADD*-5"指令(*为相对寻址特征)的信息流程图。设另一个操作数和结果存于ACC 中,并假设(PC)=4000H 。
    • 14. 设相对寻址的转移指令占两个字节,第一个字节是操作码,第二个字节是相对位移量,用补码表示。假设当前转移指令第一字节所在的地址为 2000H,且 CPU 每取出一个字节便自动完成(PC)+1→PC( PC)+1\to PC(PC)+1→PC 的操作。试问当执行JMP∗+8”和“JMP∗−9JMP\ *+8 ”和“ JMP\ *-9JMP ∗+8”和“JMP ∗−9 "指令时,转移指令第二字节的内容各为多少?
    • 15. 一相对寻址的转移指令占3个字节,第一字节是操作码,第二、三字节为相对位移量,而且数据在存储器中采用以高字节地址为字地址的存放方式。假设 PC 当前值是 4000H。试问当结果为 0,执行“JZ * +35”和“ JZ * - 17"指令时,该指令的第二、第三字节的机器代码各为多少?
    • 16. 某机主存容量为 4M×164\ M\times 164 M×16 位,且存储字长等于指令字长,若该机指令系统可完成108种操作,操作码位数固定,且具有直接、间接、变址、基址、相对、立即等六种寻址方式,试回答以下问题。
    • 17. 举例说明哪几种寻址方式在指令的执行阶段不访问存储器,哪几种寻址方式在指令的执行阶段只需访问一次存储器?完成什么样的指令,包括取指令在内共访问存储器4次?
    • 18. 某机器共能完成 78 种操作,若指令字长为 16 位,试问一地址格式的指令地址码可取几位?若想使指令寻址范围扩大到 2162^{16}216 ,可采用什么方法?举出三种不同例子加以说明。
    • 19. CPU 内有 32 个 32 位的通用寄存器,设计一种能容纳 64 种操作的指令系统。假设指令字长等于机器字长,试回答以下问题。
    • 20. 什么是RISC? 简述它的主要特点。
    • 21. 比较 RISC 和 CISC 的异同之处。
    • 22. RISC 机中指令简单,有些常用的指令未被选用,它用什么方式来实现这些常用指令的功能.试举例说明。

第七章

1. 什么叫机器指令?什么叫指令系统?为什么说指令系统与机器的主要功能以及硬件结构之间存在着密切的关系?

答:
机器语言是由一条条语句构成的,每一条语句又能准确表达某种语义。人们习惯把每一条机器语言的语句称为机器指令,而将全部机器指令的集合称为机器的指令系统。计算机就是连续执行每一条机器语句而实现全自动工作的。
计算机设计者主要研究如何确定机器的指令系统,如何用硬件电路、芯片、设备来实现机器指令系统的功能。计算机的使用者则是依据机器提供的指令系统,使用汇编语言来编制各种程序。计算机使用者根据机器指令系统所描述的机器功能,能很清楚地了解计算机内部寄存器-存储器的内部结构,以及计算机能直接支持的各种数据类型,所以说指令系统与机器的主要功能以及硬件结构之间存在着密切的关系。

2. 什么叫寻址方式?为什么要学习寻址方式?

答:
寻址方式:是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构紧密相关,而且直接影响指令格式和指令功能。寻址方式分为指令寻址和数据寻址两大类。指令寻址比较简单,它分为顺序寻址和跳跃寻址两种:顺序寻址可通过程序计数器 PC 加 1,自动形成下一条指令的地址;跳跃寻址则通过转移类指令实现。数据寻址方式种类较多,在指令字中必须设一字段来指明属于哪一种寻址方式。指令的地址码字段通常都不代表操作数的真实地址,把它称为形式地址,记作 A。操作数的真实地址称为有效地址,记作 EA,它是由寻址方式和形式地址共同来确定的。
学习寻址方式目的:从高级语言角度考虑问题,机器指令的寻址方式对用户无关紧要,但一旦采用汇编语言编程,用户只有了解并掌握机器的寻址方式,才能正确编程,否则程序将无法正常运行。如果程序员参与机器的指令系统设计,则了解寻址方式对确定机器指令格式是不可缺少的。从另一角度来看,倘若透彻了解了机器指令的寻址方式,将会使程序员进一步加深对机器内信息流程及整机工作概念的理解。

3. 什么是指令字长、机器字长和存储字长?

答:
机器字长是指CPU一次能处理数据的位数通常与CPU的寄存器位数有关。指令字长是指机器指令中二进制代码的总位数。存储字长是指存储单元中存放二进制代码的总位数。三者可以相等也可以不等视不同机器而定。

4. 零地址指令的操作数来自哪里?在一地址指令中,另一个操作数的地址通常可采取什么寻址方式获得?各举一例说明。

答:
零地址指令在指令字中无地址码,例如:空操作(NOP)、停机(HLT)这类指令只有操作码,而子程序返回(RET)、中断返回(IRET)这类指令没有地址码,其操作数的地址隐含在堆栈指针SP中。
在一地址指令中,它的地址码字段只有一个,其格式如下:

OP A1A_1A1​

它完成(ACC)OP(A1)→ACC(ACC)OP(A_1)\to ACC(ACC)OP(A1​)→ACC的操作,ACC既存放参与运算的操作数,又存放运算的中间结果,这样,完成一条一地址指令只需两次访存。所以在一地址指令中,另一个操作数地址通常可采用ACC隐含寻址方式。

5. 对于二地址而言,操作数的物理地址可安排在什么地方?举例说明。

答:
二地址指令中只含有两个地址字段,其格式如下:

OP A1A_1A1​ A2A_2A2​

它可完成(A1)OP(A2)→A1(A_1)OP(A_2)\to A_1(A1​)OP(A2​)→A1​的操作,即A1A_1A1​字段既代表源操作数的地址,又代表存放本次运算结果的地址。有的机器也可以表示(A1)OP(A2)→A2(A_1)OP(A_2)\to A_2(A1​)OP(A2​)→A2​的操作,此时A2A_2A2​除了代表源操作数的地址外,还代表中间结果的存放地址。这两种情况完成一条指令只需3次访存,它的含义是中间结果暂存于累加器ACC中。
所以,对于二地址指令而言,操作数的物理地址可安排在寄存器(寄存器寻址)内,指令中(直接寻址)或内存单元(间接寻址)内。

6. 某指令系统字长为16位,地址码取4位,试提出一种方案,使指令系统有8条三地址指令、16条二地址指令、100条一地址指令。

答:
三地址码格式如下:

OP(4位) A1(4位)A_1(4位)A1​(4位) A2(4位)A_2(4位)A2​(4位) A3(4位)A_3(4位)A3​(4位)

采用扩展操作码技术进行设计,指令操作码分配方案如下:
0000,......,0111,}A1,A2,A3;8条三地址指令1\left. \begin{array}{c} 0000, \\ ......, \\ 0111,\\ \end{array} \right\} A_1,A_2,A_3;8条三地址指令\\ 1 0000,......,0111,​⎭⎬⎫​A1​,A2​,A3​;8条三地址指令1
1000,0000,......,......,1000,1111,}A2,A3;16条二地址指令\left. \begin{array}{c} 1000,0000, \\ ......,......, \\ 1000,1111,\\ \end{array} \right\} A_2,A_3;16条二地址指令 1000,0000,......,......,1000,1111,​⎭⎬⎫​A2​,A3​;16条二地址指令
1001,0000,0000,......,......,......,1001,0110,0011,}A3;100条一地址指令\left. \begin{array}{c} 1001,0000,0000, \\ ......,......,......, \\ 1001,0110,0011,\\ \end{array} \right\} A_3;100条一地址指令 1001,0000,0000,......,......,......,1001,0110,0011,​⎭⎬⎫​A3​;100条一地址指令
1001,0110,0100,......,......,......,1001,1111,1111,}冗余编码,可用来扩充一、零地址指令\left. \begin{array}{c} 1001,0110,0100, \\ ......,......,......, \\ 1001,1111,1111,\\ \end{array} \right\} 冗余编码,可用来扩充一、零地址指令 1001,0110,0100,......,......,......,1001,1111,1111,​⎭⎬⎫​冗余编码,可用来扩充一、零地址指令
1010,......,1111,}冗余编码,可用来扩充三、二、一、零地址指令\left. \begin{array}{c} 1010, \\ ......, \\ 1111,\\ \end{array} \right\} 冗余编码,可用来扩充三、二、一、零地址指令 1010,......,1111,​⎭⎬⎫​冗余编码,可用来扩充三、二、一、零地址指令

7. 设指令字长为16位,采用扩展操作码技术,每个操作码的地址为6位。如果定义了13条二地址指令,试问还可安排多少条一地址指令?

答:
二地址指令格式如下:

OP(4位) A1(6位)A_1(6位)A1​(6位) A2(6位)A_2(6位)A2​(6位)

设二地址指令格式为该指令系统的基本格式,4位操作码共有16种编码,其中13种用来定义二地址指令,还剩3种可用作扩展标志。如不考虑地址指令,该指令系统最多还能安排:
一地址指令条数=3∗26=192条一地址指令条数=3*2^6=192条一地址指令条数=3∗26=192条

8. 某机指令字长16位,每个操作数的地址码为6位,设操作码长度固定,指令分为零地址、一地址和二地址三种格式,若零地址指令有M种,一地址指令有N种,则二地址指令最多有几种?若操作码位数可变,则二地址指令最多允许几种?

答:
(1)采用定长操作码时,二地址指令格式如下:

OP (4位) A1(6位)A_1(6位)A1​(6位) A2(6位)A_2(6位)A2​(6位)

此时,无论指令中有几个地址,指令格式都不变。
设二地址指令有K种,则:
K=24−M−NK=2^4-M-NK=24−M−N
当M=1(最小值),N=1(最小值)时,二地址指令最多有:
Mmax=16−1−1=14种M_{max}=16-1-1=14种Mmax​=16−1−1=14种
(2)若采用变长操作码时,二地址指令格式仍为如1)所示,但操作码长度可随地址码的个数而变。此时,
K=24−(N/26+M/212);K=2^4-(N/2^6+M/2^{12});K=24−(N/26+M/212);
当(N/26+M/212)≤1时(N/26+M/212向上取整),(N/2^6+M/2^{12})\leq1时(N/2^6+M/2^{12}向上取整),(N/26+M/212)≤1时(N/26+M/212向上取整),K最大,则二地址指令最多有:
Kmax=16−1=15种(只留一种编码扩展标志用。)K_{max}=16-1=15种(只留一种编码扩展标志用。)Kmax​=16−1=15种(只留一种编码扩展标志用。)

讨论:
此时,一地址码条数为:
N=(24−K)∗26−M/26;(N/26向上取整)N=(2^4-K)*2^6-M/2^{6};(N/2^6向上取整)N=(24−K)∗26−M/26;(N/26向上取整)
零地址码条数为:
M=216−212K−26N;M=2^{16}-2^{12}K-2^6N;M=216−212K−26N;
当K最大(K=15),一地址指令最多有:
Nmax=64−1=63种N_{max}=64-1=63种Nmax​=64−1=63种
零地址指令最多有:
Mmax=64种M_{max}=64种Mmax​=64种

9. 试比较间接寻址和寄存器间接寻址。

答:
间接寻址和寄存器间接寻址都可扩大寻址范围,但他们形成有效地址的方式不同。
间接寻址:间接寻址需通过访存(若是多次间址还需多次访存)得到有效地址,同时间接寻址的第二个优点在于它便于编制程序。间接寻址的缺点在于指令的执行阶段需要访存两次(一次间接寻址)或多次(多次间接寻址),致使指令执行时间延长。
寄存器间接寻址:寄存器间接寻址需通过访问寄存器获得有效地址在内存中的地址,再通过访存获得。因有效地址不是存放在存储单元中,而是存放在寄存器中,它比间接寻址少访存一次。故间址指令执行的时间比寄存器间接寻址长。

10. 试比较基址寻址和变址寻址。

答:
1)都可有效地扩大指令寻址范围。
2)基址寻址时,基准地址由基准寄存器给出,地址的改变反映在位移量A的取值上;变址寻址时,基准地址由A给出,地址的改变在变址值的自动修改上,变址值由变址寄存器给出。
3)基址寄存器内容通常由系统程序设定,变址寄存器内容通常由用户设定。
4)基址寻址适用于程序的动态重定位,变址寻址适用于数组或字符串处理,适用场合不同。

11. 画出先变址再间址寻址及先间址再变址的寻址过程示意图。

1)

2)

EA为有效地址

12. 画出“SUB @R1”指令对操作数的寻址及减法过程的流程图。设被减数和结果存于ACC中,@表示间接寻址,R1寄存器的内容为2074H。

13. 画出换行“ADD*-5"指令(*为相对寻址特征)的信息流程图。设另一个操作数和结果存于ACC 中,并假设(PC)=4000H 。

由于本题未指定数据通路结构,因此只能大概地排一下信息流程图,并且流程图中突出寻址过程的实现。

14. 设相对寻址的转移指令占两个字节,第一个字节是操作码,第二个字节是相对位移量,用补码表示。假设当前转移指令第一字节所在的地址为 2000H,且 CPU 每取出一个字节便自动完成(PC)+1→PC( PC)+1\to PC(PC)+1→PC 的操作。试问当执行JMP∗+8”和“JMP∗−9JMP\ *+8 ”和“ JMP\ *-9JMP ∗+8”和“JMP ∗−9 "指令时,转移指令第二字节的内容各为多少?

答:据题意,相对寻址的转移指令格式如下:

当执行JMP指令时,指令第二字节的内容不变,PC的内容变为2002H 。此时转移指令第二字节内容各为:
A1=+8=00001000=08HA2=−9=11110111=F7HA_1=+8=0000 \quad 1000=08H \\ A_2=-9=1111 \quad 0111=F7H A1​=+8=00001000=08HA2​=−9=11110111=F7H
其有效地址各为:
EA1=(PC)+8=2002H+0008H=200AHEA2=(PC)−9=2002H+FFF7H=1FF9HEA_1=(PC)+8=2002H+0008H=200AH\\ EA_2=(PC)-9=2002H+FFF7H=1FF9H EA1​=(PC)+8=2002H+0008H=200AHEA2​=(PC)−9=2002H+FFF7H=1FF9H

15. 一相对寻址的转移指令占3个字节,第一字节是操作码,第二、三字节为相对位移量,而且数据在存储器中采用以高字节地址为字地址的存放方式。假设 PC 当前值是 4000H。试问当结果为 0,执行“JZ * +35”和“ JZ * - 17"指令时,该指令的第二、第三字节的机器代码各为多少?

答:
根据 PC 当前值为 4000H,取出三个字节的转移指令后,PC 值修改为 4003H。对应汇编语言 JMP*+35。该转移指令的相对位移量为 35-3=32 (十进制),因为数据在存储器中以高字节地址为字地址的方式存放,因此该指令的第二字节是 00H,第三字节是 20H。
对应汇编语言指令 JMP*-17 ,该转移指令的相对位移量应为 17-3=-20 (十进制),因为数据在存储器中以高字节地址为字地址的方式存放,因此该指令的第二字节为 FFH,第三字节为 ECH。

16. 某机主存容量为 4M×164\ M\times 164 M×16 位,且存储字长等于指令字长,若该机指令系统可完成108种操作,操作码位数固定,且具有直接、间接、变址、基址、相对、立即等六种寻址方式,试回答以下问题。

(1)画出一地址指令格式并指出各字段的作用。
(2) 该指令直接寻址的最大范围。
(3)一次间接寻址和多次间接寻址的寻址范围。
(4)立即数的范围(十进制表示)。
(5) 相对寻址的位移量(十进制表示)。
(6)上述六种寻址方式的指令中哪一种执行时间最短,哪一种最长,为什么?哪一种便于程序淫动,哪一种最适合处理数组问题?
(7)如何修改指令格式,使指令的寻址范围可扩大到4M?
(8)为使一条转移指令能转移到主存的任一位置,可采取什么措施?简要说明之。
答:
(1)单字长一地址指令格式:

OP为操作码字段,共7位,可反映108种操作;
M为寻址方式字段,共3位,可反映6种寻址操作;
A为地址码字段,共16-7-3=6位。
(2)A为6位,指令直接寻址的最大范围为26=642^6=6426=64字。
(3)由于存储字长为16位,故一次间址的寻址范围为216=64K2^{16}=64K216=64K字;若多次间址,需用存储字的最高位来区别是否继续间接寻址,故寻址范围为215=32K2^{15}=32K215=32K字。
(4)立即数寻址范围:若采用补码表示为1FH~20H;十进制表示为为-32 ~31(有符号数),或0 ~63(无符号数)。
(5)相对寻址的位移量范围采用补码表示时同立即数范围,为-32 ~31。
(6)上述六种寻址方式中,
因立即数由指令直接给出,故立即寻址的指令执行时间最短。
间接寻址在指令的执行阶段需多次访存(一次间接寻址要两次访存,多次间接寻址要多次访存),故执行时间最长。
变址寻址由于变址寄存器的内容由用户给定,而且在程序的执行过程中允许用户修改,而其形式地址始终不变,(变址值可自动修改而不需要修改程序),故变址寻址的指令便于用户编制处理数组问题的程序。
相对寻址操作数位置可随程序存储区的变动而改变,操作数的有效地址只与当前指令地址相差一定的位移量,与直接寻址相比,更有利于程序浮动。
(7)方案一:为使指令寻址范围可扩大到4M,需要有效地址22位,此时可将单字长一地址的格式改为双字长,如下图所示:

图中,指令的第一字保持原来格式不变,形式地址A扩展到第2个字。这样,直接寻址时,EA=A=16+6=22位,正好可访问4M地址空间。由于A的扩展,变址、基址、相对、立即数等寻址方式也扩展到22位。
方案二:如果仍采用单字长指令(16位)格式,为使指令寻址范围可扩大到4M,可通过段寻址方案实现。安排如下:
硬件设段寄存器DS(16位),用来存放段地址。在完成指令寻址方式所规定的寻址操作后,得有效地址EA(6位),再由硬件自动完成段寻址,最后得22位物理地址。即:物理地址=(DS)×26+EA物理地址=(DS)\times2^6+EA物理地址=(DS)×26+EA
注:段寻址方式由硬件隐含实现。在编程指定的寻址过程完成、EA产生之后由硬件自动完成,对用户是透明的。
方案三:在采用单字长指令(16位)格式时,还可通过页面寻址方案使指令寻址范围扩大到4M。安排如下:
硬件设页面寄存器PR(16位),用来存放页面地址。指令寻址方式中增设页面寻址。当需要使指令寻址范围扩大到4M时,编程选择页面寻址方式,则:EA=(PR)∣∣A(有效地址=页面地址“拼接”6位形式地址)EA=(PR)||A(有效地址=页面地址“拼接”6位形式地址)EA=(PR)∣∣A(有效地址=页面地址“拼接”6位形式地址),这样得到22位有效地址。
(8)为使一条转移指令能转移到主存的任一位置,寻址范围达到4M,除了采用(7)方案一中的双字长一地址指令的格式外,还可配置22位的基址寄存器或22位的变址寄存器,使EA=(BR)+A(BR为22位的基址寄存器)或EA=(IX)+A(IX为22位的基址寄存器)EA=(BR)+A(BR为22位的基址寄存器)或EA=(IX)+A(IX为22位的基址寄存器)EA=(BR)+A(BR为22位的基址寄存器)或EA=(IX)+A(IX为22位的基址寄存器),便可访问4M存储空间。还可以通过16位的基址寄存器左移6位再和形式地址A相加,也可达到同样的效果。
总之,不论采取何种形式,最终得到的实际地址应是22位。
补充:
通过基址寻址与段寻址获得实际地址的区别:
(1)基址寻址的基地址一般比较长(≥\geq≥存储器地址位数),位移量比较短(=形式地址位数),相加后得到的有效地址长度=基地址长度。此时主存不分段。
实际地址=有效地址=基地址+位移量实际地址=有效地址=基地址+位移量实际地址=有效地址=基地址+位移量
段寻址是基址寻址的一种变种,当基地址短于存储地址时,基址寻址就变成了段寻址,基地址就叫做段地址,此时主存分段。
实际地址=段地址×偏移量+段内位移量(有效地址)实际地址=段地址\times偏移量+段内位移量(有效地址) 实际地址=段地址×偏移量+段内位移量(有效地址)
(2)基址寻址一般在机器字长≥\geq≥存储地址长度的机器中,可直接通过寻址计算获得实际地址。
在机器字长≤\leq≤存储地址长度的机器中,由于CPU内部数据通路的限制,编程指定的任何一种寻址计算得到的有效地址长度都等于机器字长,为获得更长的地址字,硬件自动通过段寻址计算出存储器实际地址。此时除ALU之外,硬件还要增设专用的地址加法器。

相关问题:

  • 一般:机器字长=存储字长。
  • CPU中所有寄存器(包括基址寄存器)的位数=机器字长
  • 通常:指令字长不一定等于机器字长。早期的小型机由于字长较短,指令常以机器字长为单位变化(几字长指令,如PDP-11机),目前以字节长为单位变化(几字节指令)的较多。习题中指令字长=机器字长的假设只是为简单起见;
  • 当设指令字长=存储字长(=机器字长)时,如用立即寻址,由于立即数由形式地址直接给出,而形式地址的位数肯定不足一个字长,因此立即寻址非常适用于编程给出短常数的场合。

提示:寻址方式的正确选择与编程技巧有关

17. 举例说明哪几种寻址方式在指令的执行阶段不访问存储器,哪几种寻址方式在指令的执行阶段只需访问一次存储器?完成什么样的指令,包括取指令在内共访问存储器4次?

答:举例如下:一地址指令在执行阶段不访存的寻址方式有:寄存器寻址、立即寻址;
一地址指令在执行阶段只访存一次的寻址方式有:寄存器间接寻址、直接寻址、基址寻址、变址寻址、相对寻址、页面寻址。
包括取指在内共访存四次的指令有:二重间址的一地址指令:一重间址的二地址指令,当另一操作数采用直接、基址、变址、相对、页面、寄存器间接寻址时。

18. 某机器共能完成 78 种操作,若指令字长为 16 位,试问一地址格式的指令地址码可取几位?若想使指令寻址范围扩大到 2162^{16}216 ,可采用什么方法?举出三种不同例子加以说明。

答:因为机器共能完成27>78>262^7>78>2^627>78>26种操作,所以一地址指令的操作码至少取7位,指令字长为16位,故指令地址码可取16-7=9种,若想使用指令寻址范围扩大到2162^{16}216,可采用寄存器间接寻址方式、间接寻址方式或变址寻址。
(1)寄存器间接寻址方式示意图如下:

所以它的最大指令寻址范围可以是29−1×216=224>2162^{9-1}\times2^{16}=2^{24}>2^{16}29−1×216=224>216,故寄存器间接寻址方案可行。
(2)间接寻址方式示意图如下:

所以它的最大指令寻址范围可以是29−1×216=224>2162^{9-1}\times2^{16}=2^{24}>2^{16}29−1×216=224>216,故间接寻址方案可行。
(3)变址寻址方式示意图如下:

显然,变址寻址的寻址范围也符合要求。

19. CPU 内有 32 个 32 位的通用寄存器,设计一种能容纳 64 种操作的指令系统。假设指令字长等于机器字长,试回答以下问题。

(1)如果主存可直接或间接寻址,采用寄存器一存储器型指令,能直接寻址的最大存储空间是多少?画出指令格式并说明各字段的含义。
(2)在满足(1)的前提下,如果采用通用寄存器作基址寄存器,则上述寄存器-存储器型指令的指令格式有何特点?画出指令格式并指出这类指令可访问多大的存储空间?
答:
(1)如果使用RS型指令,则指令一定是二地址以上的地址格式,指令格式如下:

直接寻址的最大空间=220=1M字直接寻址的最大空间=2^{20}=1M字直接寻址的最大空间=220=1M字
(2)如采用基址寻址,则指令格式中应给出基址寄存器号,以指定哪一个通用寄存器用作基址寄存器,指令格式变为:

其中,B可省(B为基址寻址方式),BRi为基址寄存器号。基址寻址时:寻址的最大空间=232=4G字B可省(B为基址寻址方式),BR_i为基址寄存器号。基址寻址时:寻址的最大空间=2^{32}=4G字B可省(B为基址寻址方式),BRi​为基址寄存器号。基址寻址时:寻址的最大空间=232=4G字
其寻址范围仅与基址位数有关,与形式地址位数无关。

20. 什么是RISC? 简述它的主要特点。

答:RISC 即精简指令系统计算机(Reduced Instruction Set Computer),与其对应的是 CISC,即复杂指令系统计算机(Complex Instruction Set Computer)。人们从 80-20 规律中得到启示;仅用最常用的 20%的简单指令,重新组合不常用的 80%的指令功能,这便引发出 RISC 技术。所以,RISC 指令系统就是通过简化指令,复杂指令的功能由执行频度高的简单指令组合来实现。
RISC 的主要特点:
(1)选取使用频度较高的一些简单指令以及一些很有用但又不复杂的指令,让复杂指令的功能由频度高的简单指令的组合来实现;
(2)指令长度固定,指令格式种类少,寻址方式种类少;
(3)只有取数/存数 (LOAD\ STORE) 指令访问存储器,其余指令的操作都在寄存器内完成;
(4)CPU 中有多个通用寄存器;
(5)采用流水线技术,大部分指令在一个时钟周期内完成。采用超标量和超流水线技术,可使每条指令的平均执行时间小于一个时钟周期;
(6)控制器采用组合逻辑控制,不用微程序控制。
(7)采用优化的编译程序。

21. 比较 RISC 和 CISC 的异同之处。

答:CISC体系结构的设计策略是使用大量的指令,包括复杂指令,每一项简单或复杂的任务都有一条对应的指令,程序员不需要写一大堆指令去完成一项复杂的任务。复杂的指令被转化为一系列简单操作然后由CPU执行。RISC体系结构的设计策略是使用少量的指令完成最少的简单操作,复杂指令用简单指令子集模拟,在RISC中进行程序设计比在其他设计中更难更费时,因为复杂指令都用简单指令来模拟。

22. RISC 机中指令简单,有些常用的指令未被选用,它用什么方式来实现这些常用指令的功能.试举例说明。

答:
RISC机不仅精简了指令系统,采用超标量和超流水线结构;它们的指令数目只有几十条,却大大增强了并行处理能力。
RISC 机中指令简单,有些常用的指令未被选用,它选取使用频度较高的一些功能简单、能在一个节拍内执行完成的指令来实现这些常用指令的功能,而把较复杂的功能用频度高的简单指令组成一段子程序来实现。
比如RISC II共有39条指令,分为以下4类:
(1)寄存器一寄存器操作:移位、逻辑、算数(整数)运算等12条。
(2)取/存数指令,取存字节、半字、字等16条。
(3)控制转移指令:条件转移、调用/返回等6条。
(4)其他:存取程序状态字PSW和程序计数器等5条。
一些常用指令未被选中,但用这些指令并在硬件系统的辅助下,足以实现其他一些指令的功能。例如:该机约定R0R_0R0​寄存器的内容恒为0,这样加法指令可替代寄存器间的传递指令。即(R1)+(R0)→R4替代了R1→R4(R_1)+(R_0)\to R_4替代了R_1\to R_4(R1​)+(R0​)→R4​替代了R1​→R4​
加法指令还可以替代清楚寄存器指令,即(R1)+(R0)→R4替代了0→R4(R_1)+(R_0)\to R_4替代了0\to R_4(R1​)+(R0​)→R4​替代了0→R4​
减法指令可替代取负数指令,即(R0)−(R1)→R4替代了R4寄存器内容取负(R_0)-(R_1)\to R_4替代了R_4寄存器内容取负(R0​)−(R1​)→R4​替代了R4​寄存器内容取负

计算机组成原理(第三版)唐朔飞-第七章指令系统-课后习题相关推荐

  1. 是指能够被程序员看到的计算机系统的属性,计算机组成原理第2版(唐朔飞)习题答案.doc...

    计算机组成原理第2版(唐朔飞)习题答案.doc 第一章第一章 思考题与习题思考题与习题 1什么是计算机系统.计算机硬件和计算机软件硬件和软件哪个更重要 2如何理解计算机系统的层次结构 3说明高级语言. ...

  2. 计算机组成原理题库(唐朔飞)

    计算机组成原理题库 ~~02|01|1|2|A0400047_010_1|871 ^^通常划分计算机发展时代是以( )为标准的. A.所用电子器件 B.运算速度 C.计算机结构 D.所用语言 ^^A ...

  3. 计算机组成原理 Computer Composition Principle唐朔飞 全书梳理(备忘自用 基本完结)

    计算机组成原理全书梳理(完结撒花

  4. 计算机组成原理知识点汇总(考研用)——第七章:输入/输出系统

    计算机组成原理知识点汇总(考研用)--第七章:输入/输出系统  本文参考于<2021年计算机组成原理考研复习指导>(王道考研),<计算机组成原理> 思维导图: 文章目录 计算机 ...

  5. 唐朔飞计算机组成原理pdf_唐朔飞计算机组成原理第2版配套题库名校考研真题课后答案资料课后习题章节题库模拟试题...

    唐朔飞<计算机组成原理>(第2版)配套题库[名校考研真题+课后习题+章节题库+模拟试题] 第一部分 名校考研真题 2015年全国硕士研究生入学统一考试计算机科学与技术学科联考计算机学科专业 ...

  6. 大学物理学(第5版)下(第14章)课后习题答案

    大学物理学(第5版)下 第9章 静电场 课后习题答案    第10章 稳恒磁场   课后习题答案      第11章 变化的电磁场   课后习题答案  第12章 光的干涉   课后习题答案  第13章 ...

  7. 计算机组成原理(第三版)唐朔飞-第五章输入输出系统-课后习题

    目录 第五章 5.1I/O设备有哪些编址方式,各有何特点? 5.2 简要说明CPU与I/O设备之间传递信息可采用哪几种联络方式,它们分别用于什么场合. 5.3I/O设备与主机交换信息时,共有哪几种控制 ...

  8. 计算机组成原理(第三版)唐朔飞-第六章计算机的运算方法-课后习题(1-16)

    目录 第六章 1.最少用几位二进制数即可表示任一五位长的十进制正整数? 2.已知 X = 0. a 1 a 2 a 3 a 4 a 5 a 6 ( a i 为 0 或 1 ) X=0.a_1a_2a_ ...

  9. 计算机组成原理唐朔飞第六章知识点总结,计算机组成原理(唐朔飞)教材笔记 第六章 计算机的运算方法...

    1. 把符号"数字化"的数成为机器数,而把带"+"或"-"符号的数称为真值: 2. 原码表示法,约定整数的符号位与数值位之间用逗号分隔,小数 ...

最新文章

  1. 数据结构源码笔记(C语言):二叉平衡树的相关操作算法
  2. 猴子吃桃问题 python
  3. python 比较列表相邻元素(找相同或去重)
  4. mysql5.2 软件园_MySQL Server V5.5 官方安装版
  5. Android插件化开发之运行未安装apk的activity
  6. Aligning Plots in a Column作图列对齐
  7. 【linux】kali 创建应用程序桌面图标(以burpsuite为例)
  8. 顶级开发人员最容易轻视的五大重要技能!
  9. Python编程:pycharm开发工具汉化步骤
  10. English Pod 听力学习之路 C69 - C75
  11. 红帽子Linux7安装Oracle,RedHat Enterprise Linux7.0安装Oracle 12C
  12. Spring boot in action pdf+源码
  13. Unity超链接:支持点击事件,下划线以及自定义颜色
  14. 怎么视频提取音频文件?分享这3种简单实用的提取方法
  15. 多线程情况下如何保证线程安全
  16. 微信群机器人自动管理系统源码
  17. 【历史上的今天】3 月 6 日:Unix 版权争夺战;豆瓣网上线;谷歌推出了 Google Play
  18. linux 创建dat文件‘,DAT 文件是什么
  19. 2022秋-北邮计导期末考试(BUPT大一上)
  20. 极战世界杯圆满落幕,中国赛事品牌跻身世界前列

热门文章

  1. Python 字典中的values函数
  2. 解决svg标签在HTML中的渲染问题
  3. 广播信道及CSMA/CD协议
  4. ansys安装及使用错误(个人学习使用参考)
  5. k8s技术预研7--深入掌握Kubernetes Pod
  6. 初级会计学习方法1130
  7. 利用TPOT自动完成机器学习
  8. Pycharm 中选择conda创建的虚拟环境,但是不显示包显示的解决方法
  9. tcp_tw_recycle导致NAT网络TCP连接失败
  10. 增值电信全网呼叫中心95号码申请条件及材料详解