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


不能,因为立即数只有5位最多能表示-16,无法表示-20在执行完指令ADD R2,R0,R1之后,我们发现R0[15]和R1[15]相同,但与R2[15]不同 。已知R0和R1包含的都是无符号()整数(即0~65535),那么在什么情况下,我们可以相信R2中的内容?
R0[15]和R1[15]为0,R2[15]为1,结果可信 。a. 怎样只使用一条指令就能将R2的内容转移到R3之中? ADD R3 R2 #0
b. LC-3没有提供减法指令 。怎样只使用3条指令完成下面的运算:R1←R2-R3?
NOT R3,R3,
ADD R3,R3,#1
ADD R1,R2,R3
c. 能否只使用一条LC-3指令,且不影响任何寄存器的内容,基于R1的内容设置条件码?ADD R1,R1,#0
d. 是否能通过一组指令序列的执行,使得最后3个条件码分别为N=1、Z=1、P=0?请解释 。
e. 写一条能否清除R2内容的指令 。AND R2,R2,#0LC-3没有提供对应于逻辑OR的操作码 。换句话说,不存在能够执行OR操作的LC-3指令 。但我们可以通过一组指令来完成等价的OR功能 。以下4条指令的任务是将R1和R2的内容相或(OR),并将结果保存在R3中 。试填写下面空缺的指令:
(1)1001 100 001
(2)1001 101 010
(3)0101 110 100 000 101
(4)1001 011 110
通过第2章中的摩根定律实现以上步骤 。阅读程序,请写出下面起始于x3100的程序结束后(HALT),寄存器R1、R2、R3、R4的内容 。
R1 =
R2 = 0 0110 =
R3 = 1 1101 =
R4 = 1 1101 = 在以下情况中,LC-3的哪一种寻址模式是最合适的(可能有多个正确答案,所以请为你的答案做出解释)?
a. 读取从间距不超过±28的地址的内容;LDI间接寻址,可以访问内存中任意位置
b. 读取从间距超过28的地址的内容;LDI间接寻址,可以访问内存中任意位置
c. 读取一个连续存放的数组内容 。立即数寻址在LD指令的执行过程中,共有多少次读写内存的操作?LDI指令有多少次?LEA指令呢?我们说的操作包括指令周期的所有节拍 。
LD 2次
LDI 3次
LEA 1次假设当前PC指向一个LDR指令所在的地址 。如果让LC-3处理该指令,则需要多少次内存访问?STI和TRAP呢?
2次内存访问
SRI:3次内存访问
TRAP:2次内存访问LC-3的指令寄存器(IR)由16-bit组成,其中bit[8:0]表示LD指令的PC偏移值 。如果我们对ISA做出修改,让bit[6:0]表示PC偏移值,则LD指令读取数据的可寻址范围是多大?
PC -64~+63如果我们设计LC-3的ISA,让LD指令只能从距离增量PC不超过±32的地址读取数据,则LD指令中的PC偏移字段需要多少个bit?
7--3的ISA最多支持多少个TRAP服务?请解释 。
28=256个PC内容为x3010 。以下内存单元的内容如下所示:
下面三条指令的执行导致R6装入一个数值,问该数值是多少?

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

文章插图
(对比英文原版,x3010:1 1111)
R6 = x123B
能否用一条指令就完成上面三条指令所完成的任务?
1010 1 采用间接寻址,访问内存空间的任意地方假设下面指令被装入x30FF:
请问程序执行完之后,R2的内容是什么?
R2 = 0 0010 = x1482位于x3200的一条LDR指令,采用R4做它的基址寄存器 。R4当前的内容是x4011 。问该指令读取数据的最大可寻址地址是多少?再假设我们重新定义LDR的偏移值是0扩展的(而不是符号扩展),则该指令最大可寻址地址是多少?最小地址呢?
R4+25-1 = R4 + 31 = x4030
如果是0扩展的,则最大可寻址地址是x4050,最小地址是x4011写一个LC-3程序,比较R2和R3的内容,并将最大值放入R1寄存器 。如果两个数相同,则R1等于0 。
NOT R3,R3
ADD R3,R3,#1