选项( )是嵌入式系统必须具备的特性。
软件固件化
低功耗
实时性
具备数据通信能力
Ch1-P78(但是没写)
什么是嵌入式计算机?
硬件主体嵌入到某个装置内。
软件固件化。
是一种专用计算机,只能完成目标任务。
嵌入式计算机的性能要求?
低成本,低功耗,实时性,高可靠性。
当前 8086 CPU 的状态标志位如下:CF=1,OF=0,执行( )指令后,指令队列中的指令会被放弃。
JC NEXT
JNC NEXT
JO NEXT
MOV AX,BX
考察知识点控制跳转语句(Ch2-P110)
JC: C=1
JNC: C=0
JO: O=1
当 NMI 与 RESET 同时到来,8086CPU( )
先响应NMI,再响应RESET
先响应 RESET,再响应NMI
只响应RESET
只响应NMI
考察8086 CPU的引脚及其总线结构内容(Ch2-P25, P131)
RESET 比 NMI 等级更高,先响应 RESET.
在8086CPU中,当NMI(非屏蔽中断)和RESET(复位)信号同时到来时,CPU会优先响应RESET信号。RESET信号是一个比NMI更高级别的信号,因为RESET信号会强制CPU进入复位状态,重新初始化并开始执行从地址0FFFF0H的指令。NMI信号虽然也非常重要,但在复位信号出现时会被忽略。
具体来说,当RESET信号被激活时,8086 CPU会执行以下操作:
复位内部寄存器:所有内部寄存器,包括指令指针(IP)、代码段寄存器(CS)等,都会被设置为初始状态。
初始化状态:CPU内部的控制逻辑和状态机将被重新初始化。
设置指令指针:IP寄存器被设置为0x0000,CS寄存器被设置为0xFFFF,使得CPU从物理地址0xFFFF0开始执行代码。
这个过程是硬件直接控制的,不涉及任何中断向量或中断处理程序。
By ChatGPT.
8086 执行 OUT 10H, AL
命令时,控制信号
根据 Ch2-P24,当 CPU 对I/O接口进行写操作时,
根据 Ch2-P27,处于写状态,
根据 Ch2-P27,
ADD [BX],10H 指令中目标操作数和源操作数分别使用了( )寻址方式
寄存器,立即数;
寄存器间接,立即数
立即数,寄存器
立即数,寄存器间接
根据 Ch2-P92,ADD 格式为 ADD DST(目标操作数), SRC(源操作数)
因此目标操作数使用了寄存器间接寻址方式(Ch2-P62),源操作数使用了立即数寻址。
在多层次的存储器系统中,Cache 的作用是( )
用做数据存储器
用做程序存储器
实现高速CPU 和低速内存的速度匹配
扩展内存空间
8086 系统中,中断类型号 10H 的中断入口地址存放在( )单元中。
00010H ~ 00011H
00010H ~ 00013H
00040H ~ 00041H
00040H ~ 00043H
考察8086 CPU的中断系统,在 Ch2-P132 可知,存放在 00010H
8086CPU 系统的总线周期( )。
总是包括4 个T 状态
总是包括6 个T 状态
包括至少4 个T 状态和若干个插入在 T2 和T4 之间的Tw 状态
包括至少4 个T 状态和若干个插入在 T4 之后的 Tw 状态
读图 Ch2-P50,需要等待读写。
关于UART1 和UART2 间的异步串行通信,正确的是( )。
收发双方使用同一个时钟
一个字符帧最多有 8 位数据位
一个字符帧必须包含一个校验位
UART1 在发送数据的同时不能接收 UART2 发来的数据
Ch5-串口通信的内容,
Ch5-P74 可见数据位最多 8 位,Ch5-P70 可见异步通信和是否为单工、半双工、全双工没关系。
ChatGPT:
这两个属性描述了通信系统的不同方面,可以组合在一起形成不同的通信方式:
单工同步通信:一般不常见,因为单向通信通常不需要复杂的同步机制。
单工异步通信:例如简单的传感器数据传输。
半双工同步通信:例如传统的RS-485通信。
半双工异步通信:例如基于UART的某些无线通信模块。
全双工同步通信:例如以太网通信。
全双工异步通信:例如某些高级串行通信协议。
IEEE754 单精度浮点数的二进制编码包括( )
1 位符号位+8 位移码+23 位尾数
1 位符号位+8 位阶码+23 位尾数
1 位符号位+7 位移码+24 位尾数
1 位符号位+7 位阶码+24 位尾数
在8086CPU 的微机中,如果将一片SRAM 62256(32kB)映射到存储器的 偶存储体,所有高位未用地址不参与译码,则( )
SRAM62256 中的每个单元有一个唯一的地址编码
SRAM62256 中的每个单元有8 个地址编码
SRAM62256 中的每个单元有16 个地址编码
SRAM62256 中的每个单元有32 个地址编码
考虑到 8086 具有 16 位数据总线和 20 位地址总线,32 kB 对应
8086 汇编程序中,用CMP X,Y 指令比较X、Y 两个无符号数后,用条件跳转指令( )可以判断 X、Y 的大小。
JO
JAE
JGE
JZ
Ch2-P110 控制跳转指令。
JAE 为无符号数;
JGE 为有符号数;
JZ 判断相等。
JO 判断溢出。
关于CISC 和RISC,选项( )是正确的。
Intel8086 是一款RISC 型CPU
CISC 更适合低功耗设计
RISC 指令的性能更强
RISC 指令种类更少
Ch2-8086指令系统 P126。
关于8086 的中断向量和中断向量表,选项( )是正确的。
中断向量保存当前的 CS:IP 的值 (错误)
中断向量保存中断服务子程序的入口地址 (Ch2-P139)
根据中断子程序的类型不同,中断向量可能是 2 字节或4 字节(一定是4字节,包含 CS:IP)
PC 机的中断向量表被保存在 BIOS 中 (Ch2-P139,安排在内存的前1KB,即 00000H~003FFH)
8086 汇编程序中分别定义一个并口打印机中断子程序 PRNISR 和一个 NEAR 型的软件延时子程序 Delay10ms,选项( )是正确的。
PRNISR 和Delay10ms 都可以用Call 来调用(P110,PRNISR 需要用 INT 来调用)
Delay10ms 的入口地址保存在中断向量表中
PRNISR 是由打印机BUSY 状态信号引发中断请求而触发执行的
在执行PRNISR 和Delay10ms 内部的代码前,都需要占用堆栈的4 字节来保存断点地址 (Ch2-P120,PRNISR 还要额外保存 FLAG)
在8086的一个汇编语言程序中定义了下列变量:
1ORG 0000H
2VAR1 DW 1000H
3ORG 0003H
4VAR2 DW 1000H
比较执行指令MOV AX,VAR1 和MOV AX,VAR2 所需的时间,选项( )是正确的。
二者需要相同的总线周期
前者比后者需要更多的总线周期
后者比前者需要更多的总线周期
不确定
考察 8086 存储器系统(Ch2-P42),若字单元从奇地址开始,则需要访问两次存储器。
关于8086CPU 的标志寄存器中的控制位,( )是正确的
IF=1 禁止CPU 响应 INTR 中断
IF=1 禁止CPU 响应NMI 中断
TF 标志位=1,则程序单步执行
TF 标志位=1,则CPU 复位
Ch2-P20, INTR 和 NMI 中断都属于不可屏蔽中断。
8086CPU 最多可以使用(32)片SRAM62256(32kB)作为内存。
8086系统中,下列指令正确的是( )。
MOV [1000H],10H(给存储器操作数用立即数赋值时,要指明 WORD PTR 或 BYTE PTR)
IN BL, 80H (不能使用 BL,只能使用AX/AL)
MOV DS,1000H (不能用立即数直接为段寄存器赋值)
OUT 80H, AL
选项(Cache)都是现代计算机多层次存储器系统的一个层级。
下列关于IEEE754 单精度浮点数编码的说法中,正确的有( )
IEEE754 单精度浮点数的取值范围取决于尾数
IEEE754 单精度浮点数的精度取决于尾数
IEEE754 单精度浮点数在实数轴上是均匀分布的
IEEE754 单精度浮点数的精度取决于阶码
Ch1-P65 尾数位数越多,数据表示的精度越高
关于SRAM 与DRAM,选项( )是正确的。
单位容量的SRAM 比DRAM 需要集成更多的晶体管
SRAM 和DRAM 都需要刷新
目前笔记本电脑中的 DDR 内存是SRAM
DRAM 更适合用作 Cache
单位容量的SRAM 比DRAM 需要集成更多的晶体管:
这是正确的。SRAM每个存储单元通常需要6个晶体管(6T),而DRAM每个存储单元仅需要1个晶体管和1个电容(1T1C)。因此,SRAM比DRAM需要更多的晶体管,导致其单位容量成本更高。
SRAM 和DRAM 都需要刷新:
这是不正确的。只有DRAM需要定期刷新来维持数据,因为其存储数据的电容会漏电。SRAM不需要刷新,因为它使用触发器电路来存储数据,只要电源持续供应,数据就能保持不变。
目前笔记本电脑中的 DDR 内存是SRAM:
这是不正确的。笔记本电脑中的DDR内存是DRAM的一种(例如DDR3、DDR4、DDR5)。SRAM通常用于缓存(如CPU缓存)而不是主内存。
DRAM 更适合用作 Cache:
这是不正确的。SRAM更适合用作缓存(Cache),因为SRAM比DRAM速度更快,尽管它的成本更高、密度更低。DRAM适合作为主内存,因为它具有较高的存储密度和较低的成本。
8086 指令集中的指令( )能反映Intel8086 属于CISC。
ADD AX,BX
ADD AL,Byte PTR [BX]
ADD AL,BL
ADD AL,01H
CISC(Complex Instruction Set Computer)和RISC(Reduced Instruction Set Computer)是两种不同的计算机处理器架构,它们在设计理念和指令操作数方面有显著的区别。以下是对CISC和RISC在指令操作数方面的详细解释:
CISC(Complex Instruction Set Computer)
丰富的指令集:CISC处理器具有复杂而丰富的指令集。每条指令可能执行多个低级操作(如加载、存储、算术运算等),甚至包含多个步骤的操作。
多操作数指令:CISC指令可以有多个操作数,且操作数可以是寄存器、内存地址、立即数(常数值)等。例如,一条指令可以直接从内存中读取数据、进行计算,然后将结果写回内存。
指令长度可变:CISC指令长度不固定,可以根据操作数和操作类型变化,这使得编码和解码指令更加复杂。
复杂寻址模式:CISC支持多种复杂的寻址模式,使得在一条指令中可以直接操作内存地址,从而减少了指令数量,但增加了每条指令的复杂性和执行时间。
RISC(Reduced Instruction Set Computer)
简化的指令集:RISC处理器具有简化的指令集,每条指令通常只执行一个简单的操作,设计目的是提高执行效率和简化处理器设计。
固定的操作数:RISC指令通常只有固定数量的操作数,通常是三个:两个源操作数和一个目标操作数。这些操作数通常都是寄存器。
固定指令长度:RISC指令长度固定(如32位),使得指令解码和执行更加高效。
简单寻址模式:RISC通常只有简单的寻址模式,大多数指令只对寄存器操作,内存访问(如加载和存储)是通过专门的加载/存储指令来实现的。这使得指令集更加简单和一致。
操作数的区别总结
操作数类型:
CISC:操作数可以是寄存器、内存地址、立即数等,并且支持复杂的寻址模式。
RISC:操作数大多数情况下是寄存器,内存操作通过专门的加载和存储指令完成,寻址模式较为简单。
指令操作数数量:
CISC:一条指令可以有多个操作数,直接操作复杂数据结构。
RISC:每条指令操作数数量固定,通常是三个(两个源操作数,一个目标操作数)。
指令长度:
CISC:指令长度可变,根据操作数和操作类型不同而不同。
RISC:指令长度固定,通常为32位。
例子
CISC示例(假设一个假想的CISC指令):
xxxxxxxxxx
31MOV AX, [BX+1234] ; 从内存地址BX + 1234处读取数据到AX
2ADD AX, [CX+5678] ; 将内存地址CX + 5678处的数据加到AX
3MOV [DX+9101], AX ; 将AX的数据存到内存地址DX + 9101处
RISC示例(假设一个假想的RISC指令):
xxxxxxxxxx
41LOAD R1, 1234(R2) ; 从内存地址R2 + 1234处读取数据到寄存器R1
2LOAD R3, 5678(R4) ; 从内存地址R4 + 5678处读取数据到寄存器R3
3ADD R5, R1, R3 ; 将寄存器R1和R3的数据相加,结果存到R5
4STORE 9101(R6), R5 ; 将寄存器R5的数据存到内存地址R6 + 9101处
通过这些例子可以看到,CISC指令通常更复杂,操作数类型和数量更多,而RISC指令更简单和规范化。
一段汇编程序中定义了符号X1、X2,指令( )是正确的。
xxxxxxxxxx
21 X1 DW 1000H
2 X2 EQU 1000H
ADD X2, X1
ADD X1, X2
MOV X2,X1
PUSH X2
关于Flash存储器,选项( )是正确的。
Flash 存储器可以读写,所以 Flash 是一种特殊的 RAM
NAND 型 Flash 适合作为嵌入式系统的程序存储器
NOR 型 Flash 适合作为嵌入式系统的程序存储器
NOR 型 Flash 适合制作U 盘
NOR闪存在需要快速读取和高可靠性的应用中具有重要作用,而NAND闪存则在需要大容量和频繁读写的数据存储中更为常见。
汇编程序中伪指令经过汇编器汇编后能直接生成可执行的代码。(还需编译、连接的流程)
8086 系统中,用“L1: LOOP L1”指令实现的软延时时间只取决于CX 寄存器的赋值。(也受处理器时钟频率和指令执行时间等因素的影响)
8086 系统中,用IN 或OUT 指令访问I/O 端口,则控制信号M/nIO=0。(Ch2-P27)
RS-232C 接口电平不同于TTL 电平。(Ch5-P97)
UART 间的异步串行通信是靠起始位来实现同步的。(Ch5-P74)
8086 系统中,采用小端数规则存储一个字,该字的高8 位存放在低地址单元。(Ch2-P34)
中断方式与软件查询相比,前者的CPU 利用率更高
8086 采用2 级指令流水,所以,当8086 执行程序时,EU 中总是有 2 条指令在同时执行。
8086 系统中的偶存储体芯片的数据线是与数据总线中的高8 位相连的。
8086 系统中,数据段和堆栈段不允许有重叠。 (Ch2-P38)
假设 8086 的系统时钟频率 5Mhz,某同学设计了一个延时 1ms 延时子程序如下。
x
1Delay1ms PROC Near
2MOV CX,______ ;忽略本指令的执行时间
3L1: LOOP L1 ; 本指令需 1 个系统时钟周期
4 RET
5Delay1ms ENDP
Delay1ms 子程序中空格(1)中应填入:( )H (精确到0.1ms)
因为时钟频率 5MHz,所以 1ms 执行
该同学还设计了 Delay10ms 的 10ms 延时子程序如下,但调试发现 Delay10ms 的实际延时不是 10ms。
xxxxxxxxxx
61Delay10ms PROC Near
2MOV CX,10 ; 忽略本指令的执行时间
3Again: CALL Delay1ms ; 本指令需1 个系统时钟周期
4 LOOP AGAIN ; 本指令需1 个系统时钟周期
5 RET
6Delay10ms ENDP
试问:Delay10ms
实际延时约为()ms.
注意到 CALL Delay1ms
后,CX 寄存器的值为 0,此时再执行 LOOP,则 CX 变为 65535,反复循环,因此程序死循环。
如果要保证Delay10ms 延时10ms, 需要修改Delay1ms 子程序。请在下面的空白处填写正确的Delay1ms 子程序代码。
只要暂存 CX 的值即可。
xxxxxxxxxx
71Delay1ms PROC Near
2 PUSH CX;或MOV 寄存器,CX;或MOV [内存地址],CX
3MOV CX, (1) ;忽略本指令的执行时间
4L1: LOOP L1 ; 本指令需1 个系统时钟周期
5 POP CX;或MOV CX,寄存器;或MOV CX,[内存地址]
6 RET
7Delay1ms ENDP
请阅读最小模式下8086CPU 与存储器的连线图,其中D0~D15 为总线驱动后的数据总线,A0~A19为锁存后的地址总线,回答下述问题。
图中右下角标示的接线端A 应与8086CPU 引脚(
可以参考课件上的Proteus电路图
图中存储器芯片6264的容量为(8)kB。两片6264的存储器寻址范围为(20000)H~(23FFF)H。芯片U1 的存储器地址均为(偶)(选择:奇、偶、奇偶混合)地址。
容量:
两片 6264 的存储器寻址范围:
A19~16 | A15~12 | A11~8 | A7~4 | A3~0 |
---|---|---|---|---|
0010 | 00XX | XXXX | XXXX | XXXX |
因此寻址范围为 20000~23FFF.
下述程序完成的功能为:芯片U1 中的单元全部写入00H,芯片U2 中的单元全部写入0FFH。试完善程序。
x
1MOV AX, (2000)H ; 段基地址
2MOV DS, AX
3MOV AX, (0FF00)H ; 偶地址:00,奇地址:FF
4MOV CX, (2000)H ; 写入 4000H/2 个
5MOV BX, 0000H
6NEXT: MOV [BX], AX
7ADD BX, 02H ; 一次写入两个
8LOOP NEXT
9HERE: JMP HERE
如图所示为8086CPU、8255A、8253A 等芯片构成的接口电路,试根据电路连线图回答问题。(20分,每空1 分)
设定8255A 的端口均工作于方式0。试根据硬件电路完善下述8255A 初始化程序。
xxxxxxxxxx
81P8255PA EQU 201H ;定义端口A 地址
2P8255PB EQU 203H ;定义端口B 地址
3P8255PC EQU 205H ;定义端口C 地址
4P8255CS EQU 207H ;定义控制端口地址
5P8255CW EQU 10000001B ;定义方式控制字
6MOV DX, P8255CS
7MOV AL, P8255CW
8OUT DX, AL
8255 的控制字:在 Ch5-P37
判断输入输出:A口高4位和低4位都是输出;B口高4位是输出;C口低4位是输入,高4位是输出。C 口用于输入输出数据,因此处在工作方式0.
控制字:
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
---|
现要求完成如下功能:8253A 的三个计数器分别输出100kHz、10Hz、0.1Hz 的方波。试完善硬件连接和软件编程。
硬件电路连线:应将8253A 的CLK1 与8253A 的第(10 或OUT1)号引脚相连,将8253A 的CLK2与8253A 的第(13 或OUT2 )号引脚相连。
功能程序:
xxxxxxxxxx
41P8253T0 EQU (210)H ;定义计数器0 端口地址
2P8253T1 EQU (212)H ;定义计数器1 端口地址
3P8253T2 EQU (214)H ;定义计数器2 端口地址
4P8253CS EQU (216)H ;定义控制端口地址
xxxxxxxxxx
31MOV DX, (P8253CS) ;使能计数器0
2MOV AL, ( )B
3OUT DX, AL
Ch5-P61 8253 的控制字。
SC1 | SC2 | RW1 | RW2 | M2 | M1 | M0 | BCD |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | X | 1 | 1 | 1 |
xxxxxxxxxx
71MOV AL, 00010110B
2MOV DX, P8253CS
3OUT DX, AL
4;控制计数器0,只写低八位,工作方式3,二进制计数
5MOV AL, (10)
6MOV DX, P8253T0
7OUT DX, AL
参考答案:10 或0AH
xxxxxxxxxx
101MOV AL, 01110110B
2;控制计数器1,先写低八位,再写高八位,工作于方式3,二进制计数
3MOV DX, P8253CS
4OUT DX, AL
5MOV AX, (10000)
6
7MOV DX, P8253T1
8OUT DX, AL
9MOV AL, AH
10OUT DX, AL
参考答案:10000 或2710H
xxxxxxxxxx
71MOV AL, 10010110B
2;控制计数器2,写低八位,工作于方式3,二进制计数
3MOV DX, P8253CS
4OUT DX, AL
5MOV AL, 100
6MOV DX, P8253T2
7OUT DX, AL
现要求完成如下功能:向打印机端口(PRINTER PORT)输出字符串'Hi, Have a good day!'供打印机打印。字符串存放于数据段中变量String 开始的单元。打印机接口的握手信号分别为忙信号(BUSY)、选通信号(
1.MODEL SMALL
2.8086
3.stack 100H
4.data
5String DB 'Hi, Have a good day!'
6.code
7.startup
8;初始化8255
9MOV DX, P8255CS
10MOV AL, P8255CW
11OUT DX, AL
12
13MOV AL, (00001101)B ; PC6 端口初始状态置为1
14;P38 C 口位控制字,选通信号置于高位
15OUT DX, AL
16
17MOV CX, 19 ; 19 个字符
18MOV BX, OFFSET (String)
19
20NEXT: MOV DX,P8255PC
21IN AL, DX
22AND AL, 08H ; 读入 BUSY 状态(3口)
23; 08H=00001000,对应 PC3
24JNZ NEXT ; 若 BUSY 状态为1,则跳过
25MOV AL, [BX] ; 取字符
26MOV DX, P8255PA
27OUT DX, AL ; A口输出字符
28MOV DX, P8255PC
29MOV AL, (00001100)B ; STROBE 置 0,选择 PC6
30OUT DX, AL
31NOP
32NOP
33MOV AL, (00001101)B ; 再次使 STROBE 置 1
34OUT DX, AL
35INC (BX)
36LOOP NEXT
37
38HLT
参考 Ch5-P42 打印一批字符的程序段,Ch5-P38 C口的位控制字。