《计算机系统概论》-第5章-习题答案

《计算机系统概论》-第5章-习题答案
/8/29 5:10:31
给定指令ADD、JMP、LEA、NOT,请判断它们分别是操作(或运算)指令,还是数据搬移指令或控制指令?对每一条指令,进一步列出该指令可以采用的寻址模式 。指令类型寻址模式
ADD
【《计算机系统概论》-第5章-习题答案】操作
立即数、寄存器2种寻址模式
JMP
控制
寄存器1种寻址模式
LEA
数据搬移
立即数1种寻址模式
NOT
运算
寄存器1种寻址方式
如果内存可寻址的宽度是64-bit,那么有关MAR和MDR的大小意味着什么?
MDR存放的是数据,至少需要64-bit,MAR存放内存地址,与寻址空间有关,MAR大于等于寻址空间大小 。有两种终止循环(loop)的方法 。一种是采用计数器控制循环次数;另一种是采用一个被称为(xx)的“元素”来控制 。适合于做这种元素的字符有什么特性?
“哨兵法”的元素字符需要与其他元素明显区分开,这样通过判断“哨兵字符”可以中断循环 。假设内存包含256个位置,每个位置的宽度是16位,问:
a. 表达地址的宽度至少是多少位?8-bit
b. 如果采用PC相对寻址模式,并要求控制指令能跳转至20个间隔以内的地址处,那么跳转指令中要留出多少位的字段来标识PC相对偏移(PC- )?表示前后20个间隔之内的位置,所以需要6-bit表示有符号的数
c. 如果控制指令所在的地址是3,那么在LC-3指令中,它与地址10之间的PC偏移值应该是多少?6a. 什么是寻址模式?是定义操作数位置的一种模式 。
b. 列举三种指令操作数可能存在的地方 。指令本身、寄存器、内存
c. 列举LC-3的5种寻址模式,并指明各个模式下操作数存在的位置 。立即数寻址(指令本身)、寄存器寻址(寄存器)、相对寻址(内存)、间接寻址(内存)和基址偏移寻址(内存)
d. 5.1.2节中的ADD指令采用的是什么寻址模式?寄存器寻址模式回顾2.7.1节中的“机器忙”( busy)例子 。假设位矢量内容存放在R2寄存器中,我们可以采用LC-3指令“0101 011 010 1 00001(AND R3,R2,#1)”判断机器0是否忙(busy) 。如果该指令的结果是0,则意味着机器0是busy状态 。
a. 写一条判断机器2是否busy的LC-3指令;0101 011 010 1 00100(AND R3,R2,#4)
b. 写一条判断机器2和机器3是否同时busy的LC-3指令;0101 011 010 1 01100(AND R3,R2,#12)
c. 写一条能够指示没有任何一个机器是busy的LC-3指令;0101 011 010 1 11111
d. 你能写一个判断机器6是否busy的指令吗?有什么问题吗?不可以,超出范围LC-3的ADD指令所能表达的最大的正整数是多少?
15如果我们希望将ADD指令能寻址的寄存器数目增加到32个,有什么问题吗?请解释 。
不可以,因为表示32个寄存器需要5-bit,那么该指令长度=操作码4bit+3*寄存器地址5bit=19-bit,这样超过16bit,所以无法增加到32个寄存器 。我们希望设计一个“什么也不做”的指令 。许多ISA都有一个什么都不做的操作码,通常称之为NOP指令,即“NO ” 。该指令仍然经历取指令、译码、执行等节拍,只是在执行节拍它什么也不做 。下面哪条指令可以扮演NOP的功能,且不影响程序的正常执行?
a. 0001 001 001 1 00000
b. 0000 1
c. 0000 0
其中ADD指令与其他两条指令的区别是什么?
c指令可以扮演NOP功能,其中ADD指令虽然结果没有发生变化,但其实已经进行+0的操作了 。下面的指令A和B之间的区别是什么?他们之间的相似性是什么?差异是什么?
A 10101
B 10101
A:BRnzp -171
B:JSR -171
A和B的PC偏移量都是171,但是两者执行的指令不同,参考第9章,B中的中JSR指令还涉及R7寄存器,而A中不涉及 。我们希望通过一条指令的执行来完成:将寄存器R1的内容减20,并将结果保存在R2中 。能做到吗?如果能,写出来;如果不能,请解释为什么 。