答: (1)该指令系统最多可有多少条指令?该计算机最多有多少个通用寄存器? 指令系统的指令总条数由操作码位数决定,操作码位数为 15 - 12 + 1 = 4位,所以指令系统最多可有
2
4
=
16
2^{4}=16
24=16 条指令。 根据表5.20可得寻址方式占3位,所以通用寄存器有
2
3
=
8
2^{3}=8
23=8 个。 (2)存储器地址寄存器 MAR 和存储器数据寄存器 MDR 至少各需要多少位? 计算机字长为 16 位,转化为 2B,主存地址空间大小为 128KB,那么 128KB / 2B = 64B =
2
16
2^{16}
216B,所以存储器地址寄存器 MAR 和存储器数据寄存器 MDR 至少各需要 16 位。 (3)转移指令的目标地址范围是多少? 由于主存地址空间大小为128KB,计算机按字编址,那么地址位数为16位(
2
17
/
2
=
2
16
2^{17} / 2 = 2^{16}
217/2=216),同时计算机字长为 16 位,所以PC和通用寄存器的位数均为16位,相对寻址中其目标地址最小为(PC(0000H))+(R(0000H)) = 0000H,目标地址最大为(PC(FFFFH))+(R(FFFFH)) = 1EFFFH,理论上转移指令的目标地址范围为 0000H ~ 1EFFFH,但由于主存地址空间为128KB,也为16位,1EFFFH中的1会被舍去,所以目标地址最大必须是16位的最大值,即FFFFH,那么其真正的目标地址范围为 0000H~FFFFH。 (4)若操作码 0010B 表示加法操作(助记符为 add),寄存器 R4 和 R5 的编号分别为 100B 和101B,R4 的内容为 1234H,R5 的内容为 5678H,地址 1234H 中的内容为 5678H,地址 5678H 中的内容为1234H,则汇编语言为“add (R4),(R5)+”(逗号前为源操作数,逗号后为目的操作数)对应的机器码是什么(用十六进制表示)?该指令执行后,哪些寄存器和存储单元中的内容会改变?改变后的内容是什么? 根据图 5.34指令各字段定义、表5.20和该小题题目,可得下表:
OP(4位)
M
s
M_{s}
Ms(3位)
R
s
R_{s}
Rs(3位)
M
d
M_{d}
Md(3位)
R
d
R_{d}
Rd(3位)0010001100010101
0010 0011 0001 0101 转换为十六进制为 2315H,所以汇编语言为“add (R4),(R5)+”对应的机器码是2315H; 根据表5.20
(
R
n
)
+
1
→
(
R
n
)
(R_{n})+1→(R_{n})
(Rn)+1→(Rn),可得该指令执行后,寄存器R5和存储单元5678H的内容会改变,改变后R5当中的内容5678H变成5679H,存储器5678H中的内容变成该加法指令计算的结果:5678H + 1234H = 68ACH。
|