第四章:指令系统

1.
首次提交时间:2022-10-28 13:19:53    最后一次提交时间:2022-10-28 13:19:53
【单选题】

下面关于RISC技术的描述中,正确的是 【 正确答案: C
A. 采用RISC技术后,计算机的体系结构又恢复到早期的比较简单的情况
B. 为实现兼容,新设计的RISC是从原来的CISC系统的指令系统中挑选一部分实现的
C. RISC的主要目标是减少指令数
D.RISC设有乘、除法指令和浮点运算指令

得分:2.00
2.
首次提交时间:2022-10-28 13:18:48    最后一次提交时间:2022-10-28 13:18:48

运算型指令的寻址与转移性指令的寻址不同点在于 【 正确答案: A
A. 前者取操作数,后者决定程序转移地址
B. 后者取操作数,前者决定程序转移地址
C. 前者是短指令,后者是长指令
D.前者是长指令,后者是短指令

得分:2.00
3.
首次提交时间:2022-10-28 08:01:58    最后一次提交时间:2022-10-28 08:01:58
【单选题】

对某个寄存器中操作数的寻址方式称为 【 正确答案: C】寻址
A. 直接
B. 间接
C. 寄存器
D.寄存器间接

得分:2.00
寄存器寻址:操作数存放在寄存器中,指令操作码给的是操作数所在的寄存器编号
寄存器间接寻址:指令操作码给的是寄存器编号,操作数的有效地址存放在寄存器中,而操作数存放在主存单元中。(注意区分)
4.
首次提交时间:2022-10-28 08:02:27    最后一次提交时间:2022-10-28 08:02:27
【单选题】

指令系统中采用不同寻址方式的目的主要是 【 正确答案: B
A. 实现存储程序和程序控制
B. 缩短指令长度,扩大寻址空间,提高编程灵活性
C. 可以直接访问外存
D.提供扩展操作码的可能并降低指令译码难度

得分:2.00
5.
首次提交时间:2022-10-28 13:20:53    最后一次提交时间:2022-10-28 13:20:53
【单选题】

以下给出的4种指令类型中,执行时间最长的指令类型是 【 正确答案: C
A.RR型
B.RS型
C.SS型
D.RI型

得分:2.00
 
 

寄存器-寄存器(RR)型指令:从寄存器中取操作数,把操作结果放到另一寄存器中,不需要访问内存存储器,因此速度快;

存储器—存储器(SS)型指令:执行此类指令,既要访问内存单元,又要访问寄存器。

寄存器-存储器(RS)型指令:执行此类指令,既要访问内存单元,又要访问寄存器。

6
首次提交时间:2022-10-28 08:03:15    最后一次提交时间:2022-10-28 08:03:15
【单选题】

假定指令地址码给出的是操作数的存储地址,则该操作数采用的是 【 正确答案: B】寻址
方式 
A.立即
B.直接
C.基址
D.相对

得分:2.00
A:立即寻址:直接给出操作数,不需要寻找地址
B:直接寻址:给出操作数所在的地址,操作数存储在主存中
C:基址寻址:CPU中基址寄存器(BR)的内容+指令格式中的形式地址A=操作数的有效地址,即EA=(BR)+A。

基址寻址的基址寄存器不变(作为基地址),改变的是形式地址A中的值(作为偏移量)

基址寻址面向系统,多用于多道程序,用以实现从程序的动态重定位

 

 

D:相对寻址是基址寻址的变种。操作数的有效地址=(pc)+A,它便于程序浮动,广泛应用于转移指令地址码中的A相当于指令地址的偏移量,可正可负,用补码表示。从而指出了操作数和现在这行指令的相对位置。

ps:变址寻址:有效地址EA=A+(I)[变址寄存器I]

,它面向用户,常用于处理数组问题,变址I由用户指定

7.
首次提交时间:2022-10-28 08:03:33    最后一次提交时间:2022-10-28 08:03:33
【单选题】

下列有关RISC特征的描述中,错误的是 【 正确答案: C
A.指令格式规整,寻址方式少
B.采用硬连线控制和指令流水线
C.配置的通用寄存器数目不多
D.运算类指令的操作数不访存

得分:2.00
8.
首次提交时间:2022-10-28 08:04:14    最后一次提交时间:2022-10-29 18:05:53
【单选题】

通常将在部件之间进行数据传送的指令称为传送指令。以下有关各类传送指令功
能的叙述中,错误的是 【 正确答案: D
A.出/入栈指令(push/pop)完成CPU和栈顶之间的数据传送
B.访存指令(load/store)完成CPU和存储单元之间的数据传送
C.I/O指令(in/out)完成CPU和I/O端口之间的数据传送
D.寄存器传送指令(move)完成CPU和寄存器之间的数据传送

得分:2.00
解:
D:寄存器本身在CPU中
书P02
传送指令通常有寄存器之间的传送,从内存单元读取数据到CPU中,从CPU寄存器写数据到主存单元中,以及在两个存储区域之间的数据块之间传送
9.
首次提交时间:2022-10-28 08:04:37    最后一次提交时间:2022-10-28 08:04:37
【单选题】

输入输出指令的功能是 【 正确答案: C
A.在主存与CPU的通用寄存器之间进行数据传送
B.在主存和I/O端口之间进行数据传送
C.在CPU的通用寄存器和I/O端口之间进行数据传送
D.在I/O端口和I/O端口之间进行数据传送

得分:2.00
10.
首次提交时间:2022-10-28 13:38:38    最后一次提交时间:2022-10-29 18:08:02
【单选题】

某计算机按字节编址,采用小端方式存储信息。其中,某指令的一个操作数为
16位,该操作数采用基址寻址方式,指令中形式地址(用补码表示)为FF00H,当前基址寄
存器的内容为C00O0000H,则该操作数的MSB存放的地址是 【 正确答案: D】
A.C000 FF00H
B.C000 FF03H 
C.BFFF FF00H 
D.BFFF FF01H

得分:2.00
MSB:最高字节地址
LSB:最低字节地址
因为是基址寻址,EA=(B)+A,,形式地址需要进行符号扩展,为FFFF FF00H,因此操作数的首地址BFFF FF00H
又因为是按字节寻址,因此一个存储单元存放8个bit,因此高MSB存放在BFFF FF01H
11.
首次提交时间:2022-10-28 08:07:00    最后一次提交时间:2022-10-28 08:07:00
【单选题】

若指令地址码为D,则相对寻址方式下操作数的有效地址为 【 正确答案: D
A.D
B.M[D]
C.R[D]
D.PC+D

得分:2.00
12.
首次提交时间:2022-10-28 08:07:39    最后一次提交时间:2022-10-28 08:07:56
【单选题】

寄存器间接寻址方式的操作数存放在 【 正确答案: B】中 
A.通用寄存器
B.存储单元
C.程序计数器
D.堆栈

得分:2.00
13.
首次提交时间:2022-10-28 08:07:59    最后一次提交时间:2022-10-29 00:01:03
【单选题】

假定指令地址码给出的是操作数所在的寄存器的编号,则该操作数采用的是 【 正确答案: C
寻址方式 
A.直接
B.间接
C.寄存器直接
D.寄存器间接

得分:2.00
14.
首次提交时间:2022-10-28 08:08:38    最后一次提交时间:2022-10-28 08:08:40
【单选题】

假定指令地址码给出的是操作数本身,则该操作数采用的是 【 正确答案: A】寻址方式 
A.立即
B.直接
C.基址
D.相对

得分:2.00
15.
首次提交时间:2022-10-28 08:13:17    最后一次提交时间:2022-10-28 17:15:36
【单选题】

某计算机为定长指令字结构,采用扩展操作码编码方式,指令长度为16位,每个地
址码占4位,三地址指令15条,二地址指令8条,一地址指令127条,则剩下的零地址指令
最多有 【 正确答案: B】条 
A.15
B.16
C.31
D.32

得分:2.00
 简答题
#题目分值提交/评阅状态
1.请给出C语句“int x=6144;”对应的RISC-V机器级代码。10.00得分:5.00
初次提交时间: 2022-10-28 17:19:50    最后一次修改时间: 2022-10-28 17:35:06

6144的机器数为:

0000 0000 0000 0000 0001 1000 0000 0000

所以其高20位为:0000 0000 0000 0000 0001

低12位为:1000 0000 0000

由于imm12的范围为-2048——2047

所以不能直接进行汇编,可加上一个2048,再减去一个2048

所以指令为

0000 0000 0000 0000 0010 00101 011011 lui X5,2 

#R[X5]<--0000 2000H

1000 0000 0000 00101 000 00101 0010011 addi x5,x5,-2018

#R[x5]<--R[x5]+SEXT[800H]

 

 


参考答案:

6144=8192-2048

0000 0000 0000 0000 0010 00101 0110111  lui x5, 2 #R[x5]← 0000 2000H 

1000 0000 0000 00101 000 00101 0010011  addi x5, x5,-1#R[x5]←R[x5]+SEXT[FFFH]

2.假设某计算机按字节编址,采用小端方式存储信息。其中某指令的操作数为32位10.00得分:10.00
初次提交时间: 2022-10-28 15:52:39    最后一次修改时间: 2022-10-29 18:50:29

对形式地址进行符号扩展:FFFF B000H

基址寻址的物理地址=(BR)+形式地址=8000 4000H+FFFF B000H=7FFF F000H

所以该指令操作数的地址为:7FFF F000H

因为是小端方式,所以数据的低字节保存在内存的低地址中,高字节保存在高地址中

所以:字节78H的存放地址:7FFF F000H

字节78H的存放地址:7FFF F000H

字节56H的存放地址:7FFF F008H

字节34H的存放地址:7FFF  F010H

字节12H的存放地址:7FFF F018H

 


参考答案:

B000H=1011 0000 0000 0000B,形式地址的值为一101 0000 0000 0000B=-5000H,
因此操作数的有效地址为8000 4000H-5000H=7FFF F000H。小端方式下,LSB的地址
为操作数地址,即书写顺序与存储顺序相反,因而12H、34H、56H和78H的存放地址分别
是7FFF F003H、7FFF F002H、7FFF F001H和7FFF F000H。

3.某计算机指令系统采用定长指令字格式,指令字长16位,每个操作数的地址码长10.00得分:10.00
初次提交时间: 2022-10-28 16:21:23    最后一次修改时间: 2022-10-28 16:26:35

解:因为二地址指令的操作码op为4b(=16-6*2),所以二地址剩下的扩展操作码为2^4-K2;

因此单地址的指令条数最多可为(2^4-K2)*(2^6),假设单地址的实际指令条数为x

则剩下的无地址指令条数为[(2^4-K2)*(2^6)-x]*(2^6)=k0

所以单地址指令最多有:x=(2^4-K2)*(2^6)-k0*2^(-6)


参考答案:

设单地址指令有k1条,则((16-k2)×26-k1)×26=k0,k1=(16-k2)×26-k0/26

4.某指令系统的指令字是16位,每个地址码为6位。若二地址指令15条,一地址指令48条,则剩下的零地址指令最多有多少条?10.00得分:10.00
初次提交时间: 2022-10-28 16:28:59    最后一次修改时间: 2022-10-28 16:39:38

指令字长为16b,单个地址码为6b,则二地址指令的操作码op=4b,如果基本操作码全部用于二地址指令,则二地址指令条数最多为2^4=16条,由于实际指令条数为15条,所以其中一个用作扩展操作码。因此一地址指令指令条数最多可为2^6=64条,实际指令条数为48,所以留给零地址的扩展操作码有16条,因此零地址指令最多有16*2^6=1024条


参考答案:

操作码按短到长进行扩展编码。对于二地址指令,两个地址码占12位,剩下的操作码占4位,最多有16种编码,15条指令用掉15种编码0000~1110,还剩一种编码1111;对于一地址指令,高4位操作码一定是1111,最低6位是一个地址码,剩下的中间操作码还有6位,最多可以有64种编码,指令条数是48,因此只需从64种编码中选48 种作为48条指令的操作码。可采用如下的操作码编码方案:11110 00000~1111 011111(共32种编码)、1111 10 0000~1111 1 0 1111(共16种编码);对于零地址指令,其高10位操作码的编码空间为1111110000~1111111111,因此,高10位共有16种编码可用,再加上低6位的64种编码,一共可组合成16×64=1024种编码,可以分别分配给1024种指令。故剩下的零地址指令最多有1024条。

5.已知计算机指令字长为16位,其双操作数指令的格式如下:10.00得分:10.00
初次提交时间: 2022-10-28 16:42:03    最后一次修改时间: 2022-10-28 17:10:37

(1)D为直接操作数则为立即寻址,因此能访问的最大主存区的机器字为:1

(2)D为直接主存地址即为直接寻址,能访问的的最大主存区的机器字为:2^(15-8+1)=2^8=256

(3)D为间接地址(一次间接)则该指令为间接寻址方式,因为操作数的地址在内存中,需要两次访存才能够取到操作数,因此他的访存范围与存储字长有关。存储字长为16b,所以能访问的最大主存区的机器字为:2^16=65536

(4)D为变址的形式地址,因此操作数的实际地址在变址寄存器中,因为变址寄存器的字长为16b,

所以能够访问的最大主存区的机器字为:2^16=65536


参考答案:

(1)该机器字即为指令字,它本身包含操作数D(只有8位),无需访存。
(2)256个机器字,此时为直接寻址,E=D。
(3)64K机器字,此时为间接寻址,E=(D)。
(4)64K机器字,此时为变址寻址,E=R1+D。

6.一次间接寻址指令中给出的地址码为2000H,地址为2000H的内存单元中的内容10.00得分:10.00
初次提交时间: 2022-10-28 14:27:39    最后一次修改时间: 2022-11-02 21:30:48

一次间接寻址指令的操作数实际地址在地址为2000H的存储单元中,所以有效地址:3000H

有效地址中的内容即为操作数的值:4000H


参考答案:

一次间接寻址方式的指令中给出的地址码是一个间接地址,即操作数地址的地址。所
以,操作数的有效地址应该是地址码2000H中的内容,即3000H;有效地址所指出的内存单
元的内容是操作数,即4000H是操作数。

7.

假定编译器将a和b分别分配到t0和t1中

 

 

假定编译器将a和b分别分配到t0和t1中,用一条RV32I指令或最短的RV32I指令序列实现以下C语言语句:b=31&a。如果把31换成65535,即b=65535&a,则用RV32I指令或指令序列如何实现?

 

 

 

当实现b=31&a时由于andi指令中立即数的位数足以表示31所以指令实现为:

  
10.00得分:10.00
初次提交时间: 2022-10-31 16:21:28    最后一次修改时间: 2022-10-31 16:49:17

当实现b=31&a时由于andi指令中立即数的位数足以表示31所以指令实现为:

andi t1,t0,31

如果将31换为65535则指令的位数不足以表示,应该转换在寄存器中进行计算,65535=2^16-1:

lui t1,16

addi t1,t1,-1

and t1,t0,t1

 


参考答案:

【分析解答】

只要用一条指令000000011111 0101 000 0110 0010011“andi t1, t0, 31”就可实现b=31&a,其中12位立即数为0000 0001 1111。但是,如果把31换成65535,则不能用一条指令“andi t1, t0, 65535”来实现,因为65535 =1111 1111 1111 1111B,它不能用12位立即数表示。可用以下3条指令实现b=65535&a。

0000 0000 0000 0001 0000 00110 0110111   lui   t1, 16           #将0001 0000H置于寄存器t1

1111 1111 1111 00110 000 00110 0010011  addi  t1, t1, -1 #将0001 0000H与FFFF FFFFH相加,送t1

0000000 0110 0101 111 0110 0110011and  t1, t0, t1       #将t0和t1的内容进行“与”运算,送t1

 

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半截詩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值