复习笔记|《计算机组成原理》第三章作业分析
1、某机器字长16 位,主存按字节编址,转移指令采用相对寻址,由两个字节组成,第一字节为操作码字段,第二字节为相对位移量字段。假定取指令时,每取一个字节PC自动加1。若某转移指令所在主存地址为2000H,相对位移量字段的内容为06H,则该转移指令成功转以后的目标地址是(C)
A.2006H
B.2007H
C.2008H
D.2009H
答案解析:
C,本题目主要考查了指令寻址方式中的相对寻址。转移指令由两字节组成,所在主存地址为2000H,并每取一个字节PC加1,所以寻址时PC的值等于2000H+2=2002H,又相对位移量内容是06H,所以转移后的目标地址是2002H+06H=2008H。
2、偏移寻址通过将某个寄存器内容与一个形式地址相加而生成有效地址。下列寻址方式中,不属于偏移寻址方式的是(A)
A.间接寻址
B.基址寻址
C.相对寻址
D.变址寻址
3、执行一条一地址的加法指令共需要(2)次访问主存(包含取指令)。
答案解析:
第一次取指令,第二次取操作数,另一个操作数和结果均在Acc累加器中。
4、一个计算机系统采用32位单字长指令,地址码为12位,如果定义250条二地址指令,那么一地址指令有(D)条。
A.4K
B.8K
C.16K
D.24K
答案解析:
D,250条二地址指令,最少op字段为8位,8+12+12=32位。扩展窗口有6个,一次扩展一个地址码长度,故一地址指令=6x4K=24K。
一个计算机系统采用32位单字长指令,地址码为12位 “ 可知:系统指令可能有三种组合(分别为 二地址 、 一址址 、 零地址 ) 操作码(8位)+ 2地址码码(12位) 或 操作码(8位+12位) + 地址码(12)或 操作码(32位) 又” 如果定义了250条第二地址指令" 可知:250<2^8=256 即,还有256-250=6位可以用于扩展一地址,及由上一步可知, 如果无零址时 ,共可能有 62^12=24K 条一地址指令。
5、某计算机存储器按照字(16位)编址,每取出一条指令后PC值自动加1,说明其指令长度是(B)。
A.1字节
B.2字节
C.3字节
D.4字节
6、一条指令有128位,按字节编址,则读取这条指令后,PC的内容自动加(D)。
A.1
B.2
C.4
D.16
答案解析:
16个字节
7.在寄存器间接寻址方式中,操作数应该在(D)。
A.累加器
B堆栈
C.寄存器
D.主存单元
8.直接寻址、间接寻址、立即寻址3种方式的指令执行速度由快至慢的排序(C)。
A.直接寻址、立即寻址、间接寻址
B.直接寻址、间接寻址、立即寻址
C立即寻址、直接寻址、间接寻址
D.立即寻址、间接寻址、直接寻址
9.为了缩短指令中某个地址码的位数,同时使指令的执行时间相对短的有效寻址方式为(B)。
A.立即寻址
B.寄存器寻址
C.直接寻址
D.寄存器间接寻址
10.在变址寄存器寻址方式中,若变址寄存器的内容是4E3CH,指令中的形式地址是63H,则它对应的有效地址是(D)。
A.63H
B.4D9FH
C.4E3CH
D.4E9FH
11.采用变址寻址可以扩大寻址范围,且(C)。
A.变址寄存器的内容由用户确定,在程序执行过程中不能改变。
B.变址寄存器的内容由操作系统确定,在程序执行过程中不能改变
C.变址寄存器的内容由用户确定,在程序执行过程中可以改变
D.变址寄存器的内容由操作系统确定,在程序执行过程中可以改变。
12.变址寻址和基址寻址的有效地址形成方式类似,但(D)。
A.变址寄存器的内容在程序执行过程中是不能改变的
B.基址寄存器的内容在程序执行过程中是可以改变的
C.在程序执行过程中,变址寄存器的内容不能改变,而基址寄存器的内容可变
D.在程序执行过程中,基址寄存器的内容不能改变,而变址寄存器的内容可变
13支持浮动程序设计的寻址方式是(A)
A相对寻址
B.变址寻址
C.寄存器间接寻址
D.基址寻址
14.设相对寻址的转移指令占两字节,第一个字节是操作码,第二个字节是相对位移量(补码表示)。每当CPU从主存取出第一个字节时,即自动完成(PC)+1→PC。设当前PC的内容为2003H,要求转移到地址200AH,则该转移指令第二字节的内容应为(A)。
A.05H
B.06H
C.07H
D.F7H
15.设相对寻址的转移指令占两字节,第一个字节是操作码,第二个字节是相对位移量(补码表示)。每当CPU从主存取出第一个字节时,即自动完成(PC)+1→PC。若PC的内容为2008H,要求转移到地址2001H,则该转移指令第二字节的内容应该为(A)。
A F7H
B.F8H
C.F9H
D.FAH
答案解析:
溢出后不会到十六进制的第三位
16.在存储器堆栈中,保持不变的是(C)
A.栈顶
B.栈指针
C.栈底
D.栈中的数据
17.在堆栈寻址方式中,设Acc为累加器,SP为堆指示器,M为SP指示的栈顶单元,如果进栈操作的动作顺序是(Acc)→M,(SP)-1→SP,那么出栈操作的动作顺序应该是(B)。
A.(M)→>Acc,(SP)+1→SP
B.(SP)+1→SP,(M)→Acc
C.(SP)-1→>SP,(MP)→Acc
D.以上都不对
18.要想使8位寄存器A中的高4位变为1,低4位不变,可使用(D)。
A.A V 0FH→A
B.A ∧ 0FH→A
C.A ∧ F0H→A
D.A V F0H→A
注:∧表示“与”指令,V表示“或”指令
19.程序控制类指令的功能是(C)。
A.进行主存和CPU之间的数据传送
B.进行CPU和外设之间的数据传送
C.改变程序执行的顺序
D.控制进栈、出栈操作
20.下列不属于程序控制指令的是(C) 。
A.无条件转移指令
B.条件转移指令
C.中断隐指令
D.循环控制指令
21.将子程序返回地址放在(B)时,子程序允许嵌套和递归。
A.寄存器中
B.堆栈中
C.子程序的结束位置
D.子程序的起始位置
22.I/O编址方式通常可分统一编址和独立编址,(B)。
A.统一编址是将I/O地址看作存储器地址的一部分,可用专门的I/O指令对设备进行访问。
B.独立编址是指I/O地址和存储器地址分开,必须有专门的I/O指令对I/O地址进行访问。
C.统一编址是指I/O地址和存储器地址分开,可用访存指令实现CPU对设备的访问。
D.独立编址是将I/O地址看作存储地址的一部分,必须有专门的I/O指令对I/O地址进行访问。
23.某机为定长指令字结构,指令长度16位;每个操作数的地址码长6位,指令分为无操作数、单操作数和双操作数三类。若双操作数指令已有K种,无操作数指令已有L种,问双操作数指令最多可能有15条;无操作数指令允许的最大指令条数是61376条。请用十进制表示。
解析:
对于双操作数,操作码长度为16-2*6=4位;
已知双操作数已有K种,所以留有(2^4-K)个编码给单操作数。
对于单操作数,操作码长度为16-6=10位,可扩展位为6位;
已知无操作数已有L种,设单操作数有Y种,那么有:
L=((24-K)*26-Y)*2^6
化简得:Y=((24-K)*26-L/2^6)
所以单操作数指令最多可能有((24-K)*26-L/2^6)种
对于双操作数,最大指令数为2^4-1=15个;
对于单操作数,最大指令数为15*2^6-1=4529个;
对于无操作数,最大指令数为216-212-2^6=61376个
24.
以下为一种指令编码方案,试补充完整。
000 XXX YYY ZZZ~011 XXX YYY ZZZ
100 000 XXX YYY~100 111 XXX YYY
101 000 000 XXX~111 110 011 XXX
备注:编码请按二进制给出,每三位之间用空格隔开。
25.计算下列四条指令的有效地址(指令长度为16位)。
a.000000Q b.100000Q
c.170710Q d.012305Q
假定:上述四条指令均用八进制书写;指令的最左边是一位间址指示位@。(@=0,直接寻址;@=1,间接寻址),且具有多重间访功能;指令的最右边两位为形式地址;主存容量215单元,下表为有关主存单元的内容(八进制):
a.000000Q的有效地址为00000Q;
b.100000Q的有效地址为54304Q;
c.170710Q的有效地址为46710Q;
d.012305Q的有效地址为00005Q。
26.假定某机的指令格式如下:
其中:
Bit8=1:变址寄存器I1寻址;
Bit7=1:变址寄存器I2寻址;
Bit6(零页/现行页寻址):
Z/C=0,表示0页面;
Z/C=1,表示现行页面,即指令所在页面
若主存容量为212个存储单元,分为26个页面,每个页面有26个字。
设有关寄存器的内容为:
(PC)=0340Q (I1)=1111Q (I2)=0256Q
试计算下列指令的有效地址。
a.1046Q的有效地址是0046Q;
b.2433Q的有效地址是1144Q;
c.3215Q的有效地址是0273Q;
d.1111Q的有效地址是0311Q。
解析:
(4)1111Q一001 001 001 001
因为Bit6(z / C)=1,故为当前页寻址,EA=(PC)H//A=03 //11=0311Q。
27.假定一台32位字长的机器中带符号整数用补码表示,浮点数用IEEE 754标准表示,寄存器R1和R2的内容分别为R1:0000 108BH,R2:8080 108BH。不同指令对寄存器进行不同的操作,因而,不同指令执行时寄存器内容对应的真值不同。假定执行下列运算指令时,操作数为寄存器R1和R2的内容,则R1和R2中操作数的真值分别为多少?
(1) 无符号数加法指令 R1=108BH; R2=8080108BH。
(2) 带符号整数乘法指令R1=+108BH;R2=-7F7FEF75H。
(3) 单精度浮点数减法指令R1=+0.002116 x10-126;R2=**-1.002116H**x10-126。
答案解析:
R1 =0000108BH = 0000 00000000 0000 0001 0000 1000 1011b
R2 = 8080108BH = 1000 0000 1000 0000 0001 0000 1000 1011b
(1)对于无符号数加法指令,R1和R2中是操作数的无符号数表示,因此,其真值分别为R1:108BH,R2: 8080108BH。
(2)对于带符号整数乘法指令,R1和R2中是操作数的带符号整数补码表示,由最高位可知,R1为正数,R2为负数。R1的真值为+108BH,R2的真值为-(0111 1111 0111 1111 1110 1111 0111 0100b + 1b)=-7F7FEF75H。
(3)对于单精度浮点数减法指令,R1和R2中是操作数的IEEE754单精度浮点数表示。在IEEE 754标准中,单精度浮点数的位数为32位,其中包含1位符号位,8位阶码,23位尾数。IEEE754的一些特殊规定:
阶码E全为1且尾数各位非全0时,为无效浮点数。
阶码全为1尾数全为0时,浮点数表示正负无穷。
阶码E各位为0且尾数M各位为0,浮点数为真值=+或者-0;
阶码E各位为0尾数各位非全0,F按非正规浮点数解码:阶码E真值被解析为-126,此时隐含最高位变为0.由R1中的内容可知,其符号位为0,表示其为正数,阶码为0000 0000,尾数部分为0000000 0001 0000 1000 1011,故其为非规格化浮点数,指数为-126, 尾数中没有隐藏的1,用十六进制表示尾数为+0.002116H,故R1表示的真值为+0.002116Hx10^-126。由R2中的内容可知,其符号位为1,表示其为负数,阶码为0000 0001, 尾数部分为000 00000001 0000 1000 1011,故其为规格化浮点数,指数为1-127=-126,尾数中有隐藏的1,用十六进制表示尾数为-1.002116H,故R2表示的真值为-1.002116H x 10^-126