2010年指令大题

(1)该指令系统最多可以有多少条指令?

【解析】因为OP有4位,2^4=16种操作码,即16条指令(注意这里说的多少条是指多少种)。

该计算机最多有多少个通用寄存器?

【解析】从指令的最右边6位和表中的Ms/Md是3位可知寻址特征和寄存器编号都是3位,即有2^3=8个通用寄存器。

存储器地址寄存器MAR和存储器数据寄存器MDR至少各需要多少位?

【解析】一共有128KB/2B=2^16个存储单元,即MAR为16位(这16位相当于对每个地址进行“编号”,方便寻址【基础知识】

由字长为16位(单指令字长即指令字长=机器字长)可知MDR为16位。

(2)转移指令的目标地址范围是多少?

【解析】记住PC装的是下一条指令的地址,而主存地址为16位,即(PC)为16位的无符号数(存储单元的编号),表示范围为0~2^16 -1;

因为是相对寻址,所以还要考虑偏移量OFFSET(题目说了:补码),加上“计算机字长即机器字长为16位,一般机器字长=通用寄存器的字长(位数)”所以Rn寄存器内为16位的补码,可表示范围为-2^15~2^15 -1;

综合以上两点考虑——>取交集(注意地址没有负数),所以目标地址范围为0000H~FFFFH.

(3)若操作码0010B表示加法操作(助记符为add),寄存器R4和R5的编号分别为100B和101B,R4的内容为1234H,R5的内容为5678H,地址1234H的内容为5678H,5678H中的内容为1234H,则汇编语言“add (R4),(R5)+”(逗号前的为源操作数,逗号后的为目的操作数)对应的机器码是多少(用十六进制表示)?该指令执行后,哪些寄存器和存储单元的内容会发生改变?改变后的内容是什么?

【解析】OP=0010B,R4=100B,R5=101B。(R4)=1234H而(1234)=5678H;(R5)=5678H,而(5678)=1234H。

  对着题目指令格式写:0010  001  100  010  101 即0010  0011  0001  0101 即2315H。

接着,脑子别傻了:源操作数和目的操作数都是【原材料】,现在指令是要将((R4))+((R5)),然后送到(R5)中【说人话:将R4的内容所指的存储单元的数据与R5的内容所指的存储单元的数据相加,然后将结果送到R5的内容所指的存储单元中】。

寄存器间接寻址(一定要记住!寄存器存是真的操作数的地址,而寄存器寻址是寄存器存的是真的操作数)

理解上面后就简单了:5678H+1234H=68ACH,别漏了(R5)+1=5678+1=5679H;

该指令执行后,R5的内容从5678H编程5679H,存储单元5678H中的内容变为该指令的计算结果68ACH.

猜你喜欢

转载自blog.csdn.net/qq_35812205/article/details/107541574