《计算机组成原理》习题答案 (秦磊华)
其中,OP为操作码,I为寻址方式特征码。D为形式地址,或称偏移量。寻址过程就是把I和D的不同组合变换成有效地址的过程。I与操作数寻址方式相关。
(4) 基址寻址面向系统,主要用于程序的重定位和扩展寻址空间。变址寻址是面向用户的,主要解决程序循环问题。 两者相同点:在形式上以及计算操作数的有效地址的方法上,变址寻址和基址寻址中是相似的,都是把个寄存器的内容加上指令字中的形式地址而形成操作数有有效地址。
不同点:两者有着不同的用途。首先,在采用了基址寻址的计算机系统中,基址是不变的,程序中的所有地址都是相对于基地址来变化的。而对于变址寻址来说则相反,指令中的地址字段的形式地址给出的是一个存储器地址基准,变址寄存器X中存放的是相对于该基准地址的偏移量。不同的变址寄存器给出的不同的单元。第二,在基址寻址中,偏移量位数较短,而在变址寻址中,偏移量位数足以表示整个存储空间。第三,基址寻址主要是解决程序逻辑空间与存储器物理空间的无关性,而变址寻址主要是为了可以编写出高效访问一片存储空间的程序。
(5) RISC具有如下特点:使用等长指令、寻址方式少且简单、只有取数和存数指令访问存储器、指令数量和指令格式少于、指令功能简单、CPU内部设置了大量的寄存器、控制器多采用硬布线方式、大多数指令可在一个时钟周期内完成、支持指令流水并强调指令流水的优化使用。
(6) 定长指令的优点:定长指令具有结构规整,有利于简化硬件,尤其是指令译码部件的设计。
定长指令的缺点:定长指令平均长度长、容易出现冗余码点和指令不易扩展等不足。 变长指令的优点:变字长指令结构灵活,能充分利用指令中的每一位,所以指令码点冗于少,指令的平均长度短,易于扩展。
变长指令的缺点:变长指令的格式不规整,不同指令的取指时间可能不同,导致控制复杂。 (7) 指令的地址码通常指定参与操作的操作数的地址。指令中的地址码字段的作用随指令类型和寻址方式的不同而不同,它可能作为一个操作数、也可能是操作数的地址(包括操作数所在的主存地址、寄存器编号或外部设备端口地址)、也可能是一个用于计算地址的偏移量。
5.3 根据操作数所在的位置,指出其寻址方式(填空) (1) 操作数在指令中为(A)寻址方式。
(2) 操作数地址(主存)在指令中为(B)寻址方式。 (3) 操作数在寄存器中为(C)寻址方式。 (4) 操作数地址在寄存器中为(D)寻址方式。
解:A:立即数寻址 B:直接寻址 C: 寄存器寻址 D: 寄存器间接寻址
5.4 某计算机字长16位,运算器16位,有16个通用寄存器,8种寻址方式,主存64KW,指令中操作数地址码由寻址方式字段和寄存器号字段组成。试问, (1) 单操作数指令最多有多少条? (2) 双操作数指令最多有多少条? (3) 变址寻址的范围多大?
解:由令中操作数地址码由寻址方式字段和寄存器号字段组成可知:16个通用寄存器,需要4位表示,8种寻址方式需3位表示。 (1)单操作数指令操作码位数16-4-3=9位
第 41 页 共 70 页 OP I D 《计算机组成原理》习题答案 (秦磊华)
所以:最多有29=512条。
(2)双操作数的操作码位数:16-2*(4+3)=2位 所以:最多有22=4条
(3)变址寻址,因为寄存器为16位,所以寻址范围为:64K
5.5 假设某计算机的指令长度固定为16位,具有双操作数,单操作数和无操作数三类指令,每个操作数地址规定用6位表示。
(1)现已设计出m条双操作数指令,n条无操作数指令,在此情况下,这台计算机最多可设计出多少条单操作数指令?
(2)当双操作数指令取最大数,且在此基础上,单操作数指令条数也取最大值,试计算这3类指令最多可拥有多少条指令?
解:根据题目提交,该指令格式包含两个操作数字段(各6位)和一个操作码字段(4位),单操作数指令通过将指令的OP字段向不用的一个地址码字段扩展,零操作数指令在单操作数指令的基础上继续向另一个不用的地址码字段扩展。在扩展的过程中要注意留出扩展标志。
(1)可通过扩展的方式将操作码向地址码扩展。 则计算机最多有24=16条指令双操作数指令
这里,双操作数指令为m条,此时,操作码字段还有(16-m )种扩展标志,用于表示操作码向一个地址字段扩展。
本题目中已知道无操作数指令为n条,首先要知道,无操作数指令是在一操作数指令的基础上,通过将操作码向最后一个地址字段扩展得到的,加上扩展的过程中用到了y个扩展标志,则n = y? 64 (每种扩展标志下,最后地址字段的6位全部标志无操作数指令),由此,可以得到y = n / 64
所以:单操作数的指有(16-m)*64- n / 64条。 (2)双操作数指令取最大数:24 -1=15条 单操作数指令取最大数:26 -1=63条 无操作数指令最大有:26=64条
5.6设相对寻址的转移指令占三个字节,第一个字节是操作码,第二个字节是相对位移量(补码表示)的低8位,第三个字节是相对位移量(补码表示)的高8位,每当CPU从存储器取一个字节时,便自动完成(PC)+1?PC:
(1)若PC当前值为256(十进制),要求转移到290(十进制),则转移指令第二、三字节的机器代码是什么(十六进制)?
(2)若PC当前值为128(十进制),要求转移到110(十进制),则转移指令第二、三字节的机器代码又是什么(十六进制)?
解:根据相对寻址有效地址的计算公式 EA=(PC)+ D 可知 D = EA - (PC)
对于相对寻址而言,关键是要求出计算有效地址时PC的当前值。
(1) 根据题意,采用相对寻址指令的地址为256,PC在取指令完成后修改,则取指令完成后PC=256+3=259 (因为指令长度为3个字节) 所以:D = 290-259 =(31)10= 001FH
故:转移转移指令第二字节为:1FH,第三字节为:00H。
(2) 根据题意,采用相对寻址指令的地址为128,PC在取指令完成后修改,则取指令完成后PC=128+3=131
第 42 页 共 70 页
《计算机组成原理》习题答案 (秦磊华)
所以:D = 110-131=(-21)10=FFEDH(补码)
故:转移转移指令第二字节为:EBH,第三字节为:FFH。
5.7 某计算机有变址、间接和相对等三种寻址方式,设指令由操作码、寻址方式特征位和地址码三部分组成,且为单字长指令。设当前指令的地址码部分为001AH,正在执行的指令所在地址为1F05H,变址寄存器中的内容为23A0H,已知存储器的部分地址及相关内容如表5.11所示:
表5.11 存储器内容分配
地址 001AH 1F05H 1F1FH 23A0H 23BAH 内容 23A0H 2400H 2500H 2600H 1748H
根据要求完成下列填空:
⑴ 当执行取数指令时,如为变址寻址方式,则取出来的数为_________。 ⑵ 如为间接寻址,取出的数为_________。 ⑶ 当采用相对寻址时,有效地址为_________。
解:(1)当为变址寻址方式时,变址寄存器为23A0H,当前地址码部分为:001AH EA=23A0H+001AH=23BAH 所以读出的数为:1748H
(2) 当为间接寻址时,当前地址码部分为:001AH,则有效地址为: EA=[001A]=23A0H
所以读出的数为:2600H
(3)当为相对寻址时,当前执行指令的地址为1F05H,则PC=PC+2=1F05H+2=1F07H(指令长度为两个字节)
EA=1F07H+001AH=1F21H
没有该地址对应的内容,说明CPU所访问的内容不在主存中。
5.8某计算机的指令格式包括操作码OP、寻址方式特征位I和形式地址D等三个字段,其中OP字段6位,寻址方式特征位字段I为2位,形式地址字段D为8位。I的取值与寻址方式的对应关系为: I=00:直接寻址
I=01:用变址寄存器X1进行变址; I=10:用变址寄存器X2进行变址; I=11:相对寻址.
设(PC)=1234H,(X1)=0037H , (X2)=1122H,以下四条指令均采用上述格式,请确定这些指令的有效地址:
(1)4420H (2)2244H (3)1322H (4)3521H 解:(1)4420H=(0100010000100000)B OP 010001 I 00 D 00100000 I=00,变址寻址方式,EA= 20H (2)2244H=0010 0010 0100 0100B
第 43 页 共 70 页
《计算机组成原理》习题答案 (秦磊华)
OP 001000 I 10 D 01000100 I=10:用变址寄存器X2进行变址 E=(X2)+D=1166H
(3)1322H=0001 0011 0010 0010B OP 000100 I 11 D 00100010 I=11:相对寻址
E=(PC)+2+D=1258H (双字节长指令) (4)3521H=0011 0101 0010 0001B OP 001101 I 01 D 00100001 I=01:用变址寄存器X1进行变址 E=(X1)+D=0058H
5.9 某计算机A有60条指令 ,指令的操作码字段固定为6位,从000000-111011,该机器的后续机型B中需要增加32条指令,并与A保持兼容, (1)试采用操作码扩展方法为计算机B设计指令操作码. (2)计算计算机B中操作码的平均长度.
解:(1) 因为计算机B要与计算机A兼容所以计算机A中的指令得保留:所以000000-111011为A的操作码部分。操作码字段的11100-111111的取值将作为扩展标识,将操作码扩展到地址字段,只需要占用地址字段3位即可表示新的32条指令。 (2)由(1)可知,有60条指令的操作码为6位,32条指令的操作码为9位 所以平均长度为:(60*6+32*11)/92=7.74位.
5.10 以下MIPS指令代表什么操作?写出它的MIPS汇编指令格式 0000 0000 1010 1111 1000 0000 0010 0000 解:OP=000000 Funct=100000
rs=00101 则对应的寄存器名称 rs=$a1 rt=01111 则对应的寄存器名称 rt=$t7 rd=10000 则对应的寄存器名称 rd=$ S0 所以,汇编格式为 ADD $S0,$a1,$t7
5.11 假定以下C语句中包含的变量f,g,h,i,j分别存放在寄存器$11---$15中,写出完成C语言语句f=(g+h)*i/j功能的MIPS汇编指令序列,并写出每条MIPS指令的十六进制数. 解:设f对应$11($t3)=01011B g对应$12($t4)=01100B h对应$13($t5)=01101B i对应$14($t6)=01010B i对应$15($t7)=01111B 对应的汇编指令 odd $t3,$t4,$t5
0000,0001,1000,1101,0101,1000,0010,0000 018D5820H mult $t3,$t6
0000,0001,0110,1110,0000,0000,0001,1000 016E0018H MFLO $t3
第 44 页 共 70 页