Relax1000 计算机组成原理 · 第4章 指令系统 · 解析¶
第4章 指令系统¶
本章 43 题;解析册印刷页 119–122。
速对答案(原书): ADCCC ADCCC ABBBC BABBD ABCDC CCBBC ACBCC DBADB DAB
Q1¶
速对表原值: A
详细解析标注: A
指令系统是一台计算机能够执行的所有指令的集合,它反映了计算机的基本功能和硬件特性,A 正确;指令系统针对指令,而非硬件功能描述,B 错误;高级语言语句经编译或解释才转化为指令,C 错误;操作系统命令与计算机指令系统概念不同,D 错误。
Q2¶
速对表原值: D
详细解析标注: D
指令系统设计关注操作码、寻址方式、指令格式等硬件相关要素,与操作系统无关,D 错误。
Q3¶
速对表原值: C
详细解析标注: C
指令系统的兼容性指一种计算机的目标程序可以不加修改地在另一种计算机上运行,意味着这些计算机的指令系统在功能和格式上有一定相似性,C 正确;不同计算机指令系统不可能完全一样,A 错误;指令系统运行与硬件相关,并非只和操作系统有关,B 错误;指令系统与支持高级语言数量无直接关联,D 错误。
Q4¶
速对表原值: C
详细解析标注: C
CPU 在执行指令时,会根据指令中的操作码字段和寻址方式字段对寄存器中的内容进行解释,例如,若是基址寻址方式,则基址寄存器中的内容是一个基地址;若是寄存器直接寻址方式,则寄存器中的内容是操作数。答案为选项 C。
Q5¶
速对表原值: C
详细解析标注: C
程序控制类指令用于控制程序的执行顺序,并使程序具有测试、分析与判断的能力,C 正确。
Q6¶
速对表原值: A
详细解析标注: A
操作码是指令的重要组成部分,用于指出指令执行的操作类型,如加法、减法、跳转等,A 正确;指出操作数地址的是地址码,B 错误;指令执行结果存放地址由指令格式中的相关字段或默认规则确定,不是操作码的作用,C 错误;指令在内存中的存放地址由程序计数器(PC)等确定,D 错误。
Q7¶
速对表原值: D
详细解析标注: D
变长指令字格式中,不同指令的长度可以不同,操作码和地址码的长度也都可以根据指令功能灵活变化,D 正确;定长指令字格式才是所有指令长度相同,A 错误;变长指令字格式下操作码和地址码长度都可变,B、C 错误。
Q8¶
速对表原值: C
详细解析标注: C
地址码部分可以表示操作数的直接地址(直接寻址)、间接地址(间接寻址)、操作数地址的偏移量(如基址寻址、变址寻址中的偏移量),A、B、D 正确;指令的执行结果与地址码无关,C 错误。
Q9¶
速对表原值: C
详细解析标注: C
指令格式设计直接影响硬件实现的复杂度,如复杂的地址码格式可能增加硬件电路设计难度,A 正确;良好的指令格式要能满足不同数据类型(如整数、浮点数)和操作(如算术、逻辑、控制操作)的需求,B 正确;合理的指令格式能减少指令执行周期、提高指令译码速度等,从而提高程序执行效率,与指令系统性能密切相关,C 错误,D 正确。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q10¶
速对表原值: C
详细解析标注: C
目的是保持指令长度不变,增加操作码的种类个数,而不是增加寻址空间。
Q11¶
速对表原值: A
详细解析标注: A
二地址指令中,如果有一个操作数是立即寻址,则指令的地址码字段存放的是该操作数;如果有一个操作数是寄存器寻址,则指令的地址码字段存放的是寄存器号:如果有一个操作数是直接寻址,则指令的地址码字段存放的是该操作数地址。所以 B、C、D 都不一定正确,只有 A 是合理的。
Q12¶
速对表原值: B
详细解析标注: B
操作码字段长度为 32-4×6=8,所以操作码可以提供28 = 256 个空闲状态,4 地址指令有 254 条,留给 3 地址的空闲状态数为 256-254=2 个。3 地址指令在 4 地址指令基础上牺牲一个 6位地址码扩展操作码,所以 3 地址指令一共有 2 × 26 = 128 个空闲状态。此时在 3 地址指令基础上再牺牲一个 6 位地址码,扩展操作码到 2 地址指令,2 地址指令有 4095 条,需要 3 地址留出⌈4095/64⌉=64个状态,所以 3 地址还剩下 128-64=64 个状态,即三地址指令至多有 64 条。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q13¶
速对表原值: B
详细解析标注: B
由于存储器按半字编址,即存储字长为 16 位,又由于每取出一条指令后 PC 的值自动 +2,说明指令字长等于两倍的存储字长,即 32 位,B 正确。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q14¶
速对表原值: B
详细解析标注: B
一地址指令有 256 = 28条,那么必须匀一整个 op 字段的状态给一地址指令,操作码 4bit,例如 0000 0000 0000 - 0000 1111 1111 为一地址的操作码空间,而指令系统中存在二地址,那么 op 也必须至少给一个状态给二地址,三地址只剩下 16-1-1=14 个状态,即选 B。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q15¶
速对表原值: C
详细解析标注: C
零地址的运算类指令即堆栈运算指令,参加的两个操作数来自堆栈的栈顶和次栈顶,C 正确。
Q16¶
速对表原值: B
详细解析标注: B
一地址运算类指令包括单操作数指令(如加 1、减 1 指令)和双操作数指令(如加、减指令)两类。对于单操作数指令只需要一个操作数,对于双操作数指令需要两个操作数,其中一个操作数的地址是显地址,另外一个操作数隐含在累加寄存器(ACC)中。
Q17¶
速对表原值: A
详细解析标注: A
由于指令占 4 字节,取指令之后(PC)+4。第 3、第 4 字节的内容为:2001H-(2008H+4)=FFF5H(真值为-11)。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q18¶
速对表原值: B
详细解析标注: B
A 适用,公共子程序的浮动指的是,公共子程序可以在内存任意地方存放,只要给出的数据寻址是基于 PC 的偏移即相对寻址方式,那么无论子程序放在内存哪里,只要给出程序内部数据相对于指令的偏移,都可以做到不修改程序实现正确寻址。 C、D 适用,选择结构语句(if-else)和循环结构语句(for/while)都是通过相对寻址来改变 PC 值实 现转移的典型应用场景。 B 不适用,数组的访问是基于数组首地址+偏移的方式,变址寻址(或结合基址寻址)比较适合,相对寻址是基于 PC,不适合数组的访问,本题正确答案选 B。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q19¶
速对表原值: B
详细解析标注: B
变该数组元素为 32 位(4 字节)。变址寻址的有效地址 EA= 形式地址(首地址)+变址寄存器的值;当前指令操作数的首地址 EA= 0800 1000H + 0000 000CH = 0800 100CH。这表示此次取出的 32 位数据物理上占据 100CH、100DH、100EH、100FH 这四个连续字节空间。计算机采用大端方式存放数据,即最高有效字节(MSB)存放在最低地址,最低有效字节(LSB)存放在最高地址。 因此,该数据的 LSB 应该存储在该连续空间的最高地址处,即 0800 100CH + 3 =0800 100FH。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q20¶
速对表原值: D
详细解析标注: D
选项 D 混淆了基址寄存器在不同场景下的控制权限。当使用通用寄存器作为基址寄存器来“扩展寻址空间”时,该寄存器本质上充当了高级语言中大段内存的首地址指针。为了能够访问超出指令寻址范围的不同存储区间,用户(或编译器)不仅可以,而且必须在程序中通过指令去主动修改它的内容(如更换数据块首地址)。只有在“程序重定位”场景下使用的专用基址寄存器,才由操作系统控制且用户绝对不可修改。
Q21¶
速对表原值: A
详细解析标注: A
A 错误,需要访存 4 次:取指、取数 1、取数 2、存结果。
B 正确,数 1 数 2 都是堆栈寻址,所以在栈顶和次栈顶。
C 正确,隐含寻址指的是,在指令中不明显给出操作数地址或寄存器编号,而是由操作码隐含指出,栈指令属于隐含寻址。
D 正确,硬堆栈至少需要取指令 1 次访存。
Q22¶
速对表原值: B
详细解析标注: B
间接寻址通过地址指针(存储在内存或寄存器中的地址)间接获取操作数地址,相比直接寻址,它可以利用地址指针指向更大的内存空间,从而扩大寻址范围,B 正确。
Q23¶
速对表原值: C
详细解析标注: C
堆栈寻址中,操作数存放在堆栈中,遵循先进后出(FILO)原则进行存取操作,C 正确;寄存器寻址操作数在寄存器中,直接寻址需访问内存,寄存器寻址执行速度更快,A 错误;变址寻址可以使用多个变址寄存器组合,比如在求二维数组偏移量的时候,B 错误;隐含寻址是操作数地址隐含在操作码或默认位置,不是不需要操作数,D 错误。
Q24¶
速对表原值: D
详细解析标注: D
相对寻址中,有效地址 EA=(PC)+A,执行本条指令时,PC 已完成加 1 操作,PC 中保存的是下一条指令的地址,因此以下一条指令的地址为基准位置的偏移量,D 正确。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q25¶
速对表原值: C
详细解析标注: C
指令中不同操作数都包含自己的寻址方式,其中间接寻址需要在间址周期找到操作数有效地址(即逻辑地址),隐含寻址需要特殊硬件支持,寄存器间接寻址将有效地址放在寄存器中,因此同时被寄存器位数和存储单元个数限制。
Q26¶
速对表原值: C
详细解析标注: C
四个选项对应的访存次数分别为 1、1、2、0。访存次数最多的是间接寻址。
Q27¶
速对表原值: C
详细解析标注: C
基址寻址的有效地址的计算式为:EA=(BR)+A,其中 BR 中的值是 2022H,形式地址 A 是 2023H,因此相加得 4045H,C 正确。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q28¶
速对表原值: B
详细解析标注: B
变址寻址的有效地址的计算式为:EA =(IX)+A,其中 IX 中的值 1000H,形式地址 A 是 2022H,因此相加得 3022H,B 正确。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q29¶
速对表原值: B
详细解析标注: B
设第 2 字节的内容为 x,则 2008H + 2 + x=2001H,所以 x=2001H-200AH=-9,其补码为 F7H,B 正确。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q30¶
速对表原值: C
详细解析标注: C
变址寻址是面向用户的,用于访问字符串、向量和数组等成批数据,变址寄存器的内容在程序执行过程中可以修改。
C 正确。
Q31¶
速对表原值: A
详细解析标注: A
I 错误,有效地址为 1200H+000CH=120CH,注意转化为 16 进制。II 错误,操作数的地址为 38B8H,操作数为 88F9H。III 错误,有效地址为 1200H。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q32¶
速对表原值: C
详细解析标注: C
CISC 指令系统指令数目多、指令格式种类多,常采用微程序控制技术实现复杂指令功能;但由于指令复杂,执行步骤多,导致指令执行速度慢,C 错误。
Q33¶
速对表原值: B
详细解析标注: B
RISC 的设计原则是通过简化指令功能,使指令格式规整,减少指令的平均执行周期数,提高执行效率,B 正确;RISC 减少指令功能复杂度,多采用定长指令字格式,减少寻址方式种类,A、C、D 错误。
Q34¶
速对表原值: C
详细解析标注: C
CISC 指令功能复杂,能直接实现复杂操作,编程灵活性好,C 正确;注意,这里的灵活性针对的是单条指令的功能,虽然 RISC 和 CISC 都可以用不同指令序列来实现同一个功能,但是 CISC 可以更直接、更方便的用更少的指令来实现,所以更灵活。RISC 指令执行速度快,更适合实时系统,A 错误;CISC 因指令复杂,硬件实现复杂度更高,B错误;RISC 指令系统指令数目少,D 错误。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q35¶
速对表原值: C
详细解析标注: C
RISC 架构通常大量使用寄存器,以减少访存次数;采用流水线技术提高执行效率;指令格式规整便于硬件实现;而微程序控制常用于 CISC,RISC 多采用硬布线控制,C 错误,A、B、D 都是 RISC 可能的特点。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q36¶
速对表原值: D
详细解析标注: D
选择结构语句在机器级代码中,通过控制转移指令(如条件跳转指令等)根据条件判断结果决定程序执行流程,跳转到不同的代码段执行,D 正确。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q37¶
速对表原值: B
详细解析标注: B
jle(有符号数 ≤ 跳转)条件为 〔公式/符号见原页版面片段〕 ⊕ 〔公式/符号见原页版面片段〕 + 〔公式/符号见原页版面片段〕 = 1,即 SF、OF、ZF 的组合,B 正确。解释:ZF=1 表示等于,小于的条件是不溢出为负,溢出为正。即 SF 和 OF 异号。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

PDF 字形回源提示(非原文)
原 PDF 的部分数学字体没有 Unicode 映射;可搜索文本保留了明确占位,公式和符号以本题的原页片段为准。
Q38¶
速对表原值: A
详细解析标注: A
D9H 先符号拓展为 FFFFFFD9H,再和 PC 做和。00401037H + FFFFFFD9H =00401010H,A 正确。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q39¶
速对表原值: D
详细解析标注: D
循环结构语句转换为机器级代码后,一般包含循环条件判断(决定是否继续循环)、循环变量更新(改变循环状态)以及无条件跳转至循环体开头(实现循环执行);函数调用不是循环结构机器级代码的必然组成部分,D 错误。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q40¶
速对表原值: B
详细解析标注: B
在函数调用的机器级实现中,首先传递参数,然后保存现场(保存调用函数的寄存器等状态),接着执行函数体,执行完毕后恢复现场,最后返回(回到调用函数继续执行),B 正确。
Q41¶
速对表原值: D
详细解析标注: D
当子程序调用 CALL 指令时,首先需要将程序断点(PC 的值)保存在栈中,然后将 CALL 指令的地址码送入 PC。因为指令为双字长,所以取出 CALL 指后,PC 的值需要加 2,即 2002H。当 CALL 指令执行后,先将 SP 的值减 1,此时(SP=00FFH),然后程序断点 2002H进栈,栈顶内容为 2002H,D 正确。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)

Q42¶
速对表原值: A
详细解析标注: A
调用指令也必须能够确定子程序入口地址,通常由指令显式或隐式给出。
Q43¶
速对表原值: B
详细解析标注: B
在 x86 函数调用约定中,EBP(基址指针)用于固定指向当前函数栈帧的底部,以方便通过偏移量访问局部变量和参数。当函数准备返回时(执行 leave 指令或函数结尾处的清理代码),会执行 POP EBP,将栈中保存的上一层函数的 EBP 值弹出并恢复,从而将栈帧上下文交还给调用者。
原页版面片段(公式/表图/电路/代码/数据通路以此为准)
