华文慕课计算机组成原理-2 指令系统体系结构课后题
liebian365 2024-10-18 09:34 46 浏览 0 评论
1、下列关于CISC和RISC的描述错误的是?
A、CISC指令长度是不固定的
B、CISC指令的操作数必须预存于寄存器中
C、RISC指令长度是固定的
D、RISC指令的操作数必须预存于寄存器中
E、RISC架构的指令种类通常比CISC架构更少
解析:
RISC:Reduced Instruction Set Computer,精简指令系统计算机
减少指令的类型,降低指令复杂度
CISC:Complex Instruction Set Computer,复杂指令系统计算机
2、下列关于Intel处理器及其推出时间描述错误的是?
A、Intel 8086——1978年
B、Intel 80286——1982年
C、Intel 80386——1988年(1985)
D、Intel Pentium——1993年
E、Intel PentiumPro——1995年
F、Intel Core i7——2008年
G、Intel Core 2——2006年
3、x86体系结构中,寄存器EAX长度为多少位? 32位
4、x86体系结构中,寄存器AX长度为多少位? 16位
解析:
5、IA-32寄存器模型中包括以下哪些寄存器?(多选题)
A、通用寄存器
B、指令指针寄存器
C、页面寄存器
D、标志寄存器
E、段寄存器
6、8086系统中标志位CF的含义是?
A、溢出标志
B、零标志
C、符号标志
D、进位标志 :Carry Flag
8、8086系统中标志位ZF的含义是? 零标志(Zero Flag)
9、8086系统中段寄存器DS的含义是?数据段寄存器(Data Segment)
10、8086系统中段寄存器CS的含义是?代码段寄存器(Code Segment)
解析:
11、设CS=2500H,DS=2400H,SS=2430H,BP=0200H,SI=0010H,DI=0206H,计算下列x86指令源操作数的物理地址:
MOV AX,[2000H] 26000H
解析:
物理地址 = DS:2000H = 2400H * 16(左移4位) + 2000H = 24000H + 2000H = 26000H
CS(CodeSegment):存放当前正在运行的程序代码所在段的段基址*16 + IP存放的偏移量 = 指令的物理地址。
扩展:CPU怎样区分指令和数据?
CPU讲CS:IP所组合出来的地址所指向的内容全部当作指令。
DS(DataSegment):存放数据段的段基址,字符串的也归它。
SS(StackSegment):存放堆栈段的段基址。
ES(ExtraSegment):存放当前程序使用附加数据段的段基址,该段是串操作指令中目的串所在的段。即数值的段基址默认存放在DS
12、设CS=2500H,DS=2400H,SS=2430H,BP=0200H,SI=0010H,DI=0206H,计算下列x86指令源操作数的物理地址:
MOV AX,[BP+SI+4] 24514H
解析:2430H * 16 + + 0200H + 0010H + 4H = 24300H + 0214H = 24514H
13、设CS=2500H,DS=2400H,SS=2430H,BP=0200H,SI=0010H,DI=0206H,计算下列x86指令源操作数的物理地址:MOV AX,[DI+100H] 24306H
解析:2400H * 16 + 0206H + 100H = 24000H + 0306H = 24306H
16、下列x86指令中,哪些属于算术运算指令?
A、ADD
B、DEC
C、MOV
D、IN
E、LEA
解析:
I、CALL:调用子程序
J、JNZ
解析:
K、LOOP
L、MUL:无符号乘法
17、下列关于MIPS指令的主要特点说法错误的是?
A、指令长度固定
B、寻址模式简单
C、只有Load和Store指令可以访问存储器
D、需要优秀的编译器支持
E、指令数量多,且功能复杂(少且简单)
解析:
18、MIPS按照指令的基本格式可以分为三种类型,以下不属于这三种类型的是?
A、R型指令
B、I型指令
C、J型指令
D、O型指令
解析:
20、某MIPS指令的机器码是0x20A5FFFF,对应的汇编指令是什么? addi $a1,$a1,-1
解析:
二进制数均以补码的形式存放在计算机中
正数:补码 = 原码
负数:补码 = 除符号位,原码剩余每位取反,末位+1
FFFF= 1111 1111 1111 1111 为补码形式,化为原码
1111 1111 1111 1110
1000 0000 0000 0001 = -1
0010(2) 0000(0) 1010(A) 0101(5) 1111 1111 1111 1111(FFFF)
?
可知为I型
001000(op = 8 = addi) 00101(rs = 5 = $a1) 00101(rt = 5 = $a1) 1111 1111 1111 1111(immediate = -1)
??
??21、某MIPS指令的机器码是0x0005402A,对应的汇编指令是什么? slt $t0,$0,$a1(注意位置)
解析:
0000 0000 0000 0101(5) 0100(4) 0000 0010(2) 1010(A)
000000(R型指令) 00000(rs = 0 = $0) 00101(rt = 5 = $a1) 01000(rd = 8 = $t0) 00000 101010(可知指令类型为slt )
22、阅读下面的x86汇编程序,回答问题。
设DS=1000H
MOV SI, 1250H
MOV DI, 1370H
MOV CL, 3
MOV AX, DS
MOV ES, AX
MOV BX, 5
STD(DF置为1,从源串的高位开始传送)
REP MOVSB
请问,在这次串传送操作中,完成了第一个元素的传送后,SI寄存器的值是什么? 124FH
解析:
源串地址:DS:SI = 10000H + 1250H = 11250H
因为是从高位开始传送,传送完一个元素后,SI与DI自动减1
11250H = 112 0101 0000 (不够减向前借2)- 0001 = 112 4 F
25、阅读下面的x86汇编程序,回答问题。
设DS=1000H
MOV SI, 1250H
MOV DI, 1370H
MOV CL, 3
MOV AX, DS
MOV ES, AX
MOV BX, 5
CLD
REP MOVSB
请问,这次串传送操作,总共传送了多少个字节的数据? 不确定
解析:
26、如果想用8086 CPU把内存中某个区域的1024个字节的数据传送到另一个区域,可以选用如下三种方法:
(1)只使用传送指令(MOV);
(2)使用传送指令(MOV),并用条件转移指令建立循环语句的结构;
(3)使用串传送指令(MOVSB)以及必要的配合指令,不使用循环语句的结构。
请比较用这三种方法编写的程序,执行时访问存储器次数最少的是:方法三
27、如果想用8086 CPU把内存中某个区域的1024个字节的数据传送到另一个区域,可以选用如下三种方法:
(1)只使用传送指令(MOV);
(2)使用传送指令(MOV),并用条件转移指令建立循环语句的结构;
(3)使用串传送指令(MOVSB)以及必要的配合指令,不使用循环语句的结构。
请比较用这三种方法编写的程序,执行时访问存储器次数最多的是: 方法二
28、如果想用8086 CPU把内存中某个区域的1024个字节的数据传送到另一个区域,可以选用如下三种方法:
(1)只使用传送指令(MOV);
(2)使用传送指令(MOV),并用条件转移指令建立循环语句的结构;
(3)使用串传送指令(MOVSB)以及必要的配合指令,不使用循环语句的结构。
请比较用这三种方法编写的程序,程序代码占用存储器空间最大的是:方法1
29、很多x86指令的功能比较复杂,往往一条x86指令可以完成的功能,需要多条MIPS指令才能实现。请问下列x86指令中,哪些确定能够只用一条MIPS指令完成对应的功能?(注:只需考虑这条指令本身,不用考虑对后续指令的影响)
A、ADD ECX, 15H
B、MOV EAX, 28H
C、ADD EDX, EBX
D、ADD EAX, [13H](访寸需要额外的指令)
E、MOV EDX, [EBX+11H](访寸需要额外的指令)
F、ADD [EBX+ESI*4+200H], EAX(访寸需要额外的指令)
G、REP MOVSB
H、JZ LOOP_1
?
相关推荐
- go语言也可以做gui,go-fltk让你做出c++级别的桌面应用
-
大家都知道go语言生态并没有什么好的gui开发框架,“能用”的一个手就能数的清,好用的就更是少之又少。今天为大家推荐一个go的gui库go-fltk。它是通过cgo调用了c++的fltk库,性能非常高...
- 旧电脑的首选系统:TinyCore!体积小+精简+速度极快,你敢安装吗
-
这几天老毛桃整理了几个微型Linux发行版,准备分享给大家。要知道可供我们日常使用的Linux发行版有很多,但其中的一些发行版经常会被大家忽视。其实这些微型Linux发行版是一种非常强大的创新:在一台...
- codeblocks和VS2019下的fltk使用中文
-
在fltk中用中文有点问题。英文是这样。中文就成这个样子了。我查了查资料,说用UTF-8编码就行了。edit->Fileencoding->UTF-8然后保存文件。看下下边的编码指示确...
- FLTK(Fast Light Toolkit)一个轻量级的跨平台Python GUI库
-
FLTK(FastLightToolkit)是一个轻量级的跨平台GUI库,特别适用于开发需要快速、高效且简单界面的应用程序。本文将介绍Python中的FLTK库,包括其特性、应用场景以及如何通过代...
- 中科院开源 RISC-V 处理器“香山”流片,已成功运行 Linux
-
IT之家1月29日消息,去年6月份,中科院大学教授、中科院计算所研究员包云岗,发布了开源高性能RISC-V处理器核心——香山。近日,包云岗在社交平台晒出图片,香山芯片已流片,回片后...
- Linux 5.13内核有望合并对苹果M1处理器支持的初步代码
-
预计Linux5.13将初步支持苹果SiliconM1处理器,不过完整的支持工作可能还需要几年时间才能完全完成。虽然Linux已经可以在苹果SiliconM1上运行,但这需要通过一系列的补丁才能...
- Ubuntu系统下COM口测试教程(ubuntu port)
-
1、在待测试的板上下载minicom,下载minicom有两种方法:方法一:在Ubuntu软件中心里面搜索下载方法二:按“Ctrl+Alt+T”打开终端,打开终端后输入“sudosu”回车;在下...
- 湖北嵌入式软件工程师培训怎么选,让自己脱颖而出
-
很多年轻人毕业即失业、面试总是不如意、薪酬不满意、在家躺平。“就业难”该如何应对,参加培训是否能改变自己的职业走向,在湖北,有哪些嵌入式软件工程师培训怎么选值得推荐?粤嵌科技在嵌入式培训领域有十几年经...
- 新阁上位机开发---10年工程师的Modbus总结
-
前言我算了一下,今年是我跟Modbus相识的第10年,从最开始的简单应用到协议了解,从协议开发到协议讲解,这个陪伴了10年的协议,它一直没变,变的只是我对它的理解和认识。我一直认为Modbus协议的存...
- 创建你的第一个可运行的嵌入式Linux系统-5
-
@ZHangZMo在MicrochipBuildroot中配置QT5选择Graphic配置文件增加QT5的配置修改根文件系统支持QT5修改output/target/etc/profile配置文件...
- 如何在Linux下给zigbee CC2530实现上位机
-
0、前言网友提问如下:粉丝提问项目框架汇总下这个网友的问题,其实就是实现一个网关程序,内容分为几块:下位机,通过串口与上位机相连;下位机要能够接收上位机下发的命令,并解析这些命令;下位机能够根据这些命...
- Python实现串口助手 - 03串口功能实现
-
串口调试助手是最核心的当然是串口数据收发与显示的功能,pzh-py-com借助的是pySerial库实现串口收发功能,今天痞子衡为大家介绍pySerial是如何在pzh-py-com发挥功能的。一、...
- 为什么选择UART(串口)作为调试接口,而不是I2C、SPI等其他接口
-
UART(通用异步收发传输器)通常被选作调试接口有以下几个原因:简单性:协议简单:UART的协议非常简单,只需设置波特率、数据位、停止位和校验位就可以进行通信。相比之下,I2C和SPI需要处理更多的通...
- 同一个类,不同代码,Qt 串口类QSerialPort 与各种外设通讯处理
-
串口通讯在各种外设通讯中是常见接口,因为各种嵌入式CPU中串口标配,工业控制中如果不够还通过各种串口芯片进行扩展。比如spi接口的W25Q128FV.对于软件而言,因为驱动接口固定,软件也相对好写,因...
- 嵌入式linux为什么可以通过PC上的串口去执行命令?
-
1、uboot(负责初始化基本硬bai件,如串口,网卡,usb口等,然du后引导系统zhi运行)2、linux系统(真正的操作系统)3、你的应用程序(基于操作系统的软件应用)当你开发板上电时,u...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- go语言也可以做gui,go-fltk让你做出c++级别的桌面应用
- 旧电脑的首选系统:TinyCore!体积小+精简+速度极快,你敢安装吗
- codeblocks和VS2019下的fltk使用中文
- FLTK(Fast Light Toolkit)一个轻量级的跨平台Python GUI库
- 中科院开源 RISC-V 处理器“香山”流片,已成功运行 Linux
- Linux 5.13内核有望合并对苹果M1处理器支持的初步代码
- Ubuntu系统下COM口测试教程(ubuntu port)
- 湖北嵌入式软件工程师培训怎么选,让自己脱颖而出
- 新阁上位机开发---10年工程师的Modbus总结
- 创建你的第一个可运行的嵌入式Linux系统-5
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)