《微型计算机原理与接口技术》期末总复习 —— 一篇匆匆忙忙的复习笔记

这篇复习笔记是针对《微型计算机原理与接口技术》后面几章的

前面的汇编复习内容在 “零、学习笔记总目录” 的 “汇编考前复习” 中

这篇笔记中可能存在一些错误,欢迎在留言区提出,笔者会及时更正。

所有内容更正、更新请看 六、更新内容




零、学习笔记总目录

上半学期所有文章链接:

【计算机与UNIX汇编原理①】——计算机基础【原码 补码 反码 移码 BCD码 计算机系统的基本组成等】.

【计算机与UNIX汇编原理②】——存储器系统【RAM ROM 高速缓冲存储器Cache】.

【计算机与UNIX汇编原理③】——80X86微处理器【 通用寄存器、实模式、逻辑地址与物理地址】.

【计算机和UNIX汇编原理④】——指令系统(上)【标志寄存器 立即寻址 寄存器寻址 直接/寄存器/基址/变址寻址 万字总结】.

【计算机与UNIX汇编原理⑤】——指令系统(下)【 2万5千字总结 】.

【计算机和UNIX汇编原理⑥】——UNIX的编程基础【SEGMENT、ASSUME、PROC、ORG、END】.

【计算机与UNIX汇编原理⑦】——DOS/BIOS功能调用【实现两数相加 + Hello World】.

【计算机与UNIX汇编原理⑧】——UNIX编程进阶【分支程序、循环程序、子程序、宏指令】.

【计算机与UNIX汇编原理⑨】——实验报告一【题目:排除语法错误、统计数字】.

【计算机与UNIX汇编原理⑩】——汇编语言程序设计举例【三种进制转换】.

【计算机与UNIX汇编原理⑪】——实验报告二【用户登录验证程序的实现+支持回退功能】.

【计算机与UNIX汇编原理⑫】——汇编考前复习【重要知识点 + 基础题 + 易错题 + 难题解析】.


下半学期所有文章链接:

【计算机原理与接口技术(UNIX)⑬】——总线概述【总线与总线标准、总线结构、ISA、PCI、IDE】.

【计算机原理与接口技术(UNIX)⑭】——再讲存储器系统【位、字扩展法 + 详细例题】.

【计算机原理与接口技术(UNIX)⑮】——输入/输出系统【查询方式、中断控制方式、DMA 、8237A】.

【计算机原理与接口技术(UNIX)⑯】——中断系统 [ 2万5千字总结、8259A ].

【计算机原理与接口技术(UNIX)⑰】——微型计算机系统的串行通信 [ 8250 + 具体样例 + 上机实验 ].

【计算机原理与接口技术(UNIX)⑱】——并行 I/O 接口 [ 芯片8255A ].

【计算机原理与接口技术(UNIX)⑲ 完结篇】——可编程计数器 8254 [ 流光发生器、8254工作方式检测程序的设计].



一、输入输出系统

1.1 接口电路的作用

接口电路的作用是什么?I/O接口应具备哪些功能?
① 接口电路的作用:是使 CPU 与外设的信息交互能够达到最佳匹配,实现高效、可靠的信息交换。(信息中转站)
② 接口电路的功能:[1]数据缓冲功能。[2]联络功能。[3]寻址功能。[4]数据转换功能。[5]中断管理功能。


1.2 端口的概念、分类

端口的概念?端口有几类?
① 能与 CPU 交换信息的寄存器成为 I/O 端口寄存器,简称 “端口”。
② 端口有 3 类:数据端口、状态端口、控制端口



1.3 I/O 端口的编址方式

I/O 端口有哪两种编址方式?PC 系列机中采用哪种编址方式?
① 端口和存储单元统一编址、I/O端口独立编址。
② 在 PC 系列机中,I/O 端口采用独立编址。



1.4 最常用的 I/O 指令

1.直接寻址 I/O 指令(8位端口地址)
   IN 	AL, n       
   OUT 	n, AL
2. DX 间接寻址 I/O 指令(当端口地址 > 8位)
   IN 	AL, DX       
   OUT 	DX, AL


1.5 微机系统与 I/O 端口的信息交换

微型计算机系统和输入输出设备交换信息的方式有几种?各有什么特点?
答一:有 4 种:无条件传送方式、查询方式、中断控制方式、直接存储器存取方式(也称为 DMA 方式)。

无条件传送方式的特点:假设外设已准备好,即输入数据已准备好,且输出设备空闲,此时 CPU 可以直接用 IN 或 OUT 指令完成与接口之间的数据传送。

查询方式的特点:只有确认外设已具备输入或输出条件后,才能用 IN 或 OUT 指令完成数据传送。

中断控制方式的特点:如果外设未做好数据传送准备,CPU 可执行与传送数据无关的其他指令;当外设做好传送准备后,可向 CPU 发出中断请求,请求为之服务。

直接存储器存取方式的特点:在外设与内存之间用硬件实现的直接进行的数据交换,不需要通过 CPU 间接交换(即不需要 CPU 的参与)。



1.6 直接存储器存取(DMA)方式

DMA (Direct Memory Access) : 利用硬件完成高速外设与系统RAM之间的信息交换。

DMAC: DMA 控制器是实现DMA传送的核心芯片。优点: 传送速度快 缺点:硬件电路比较复杂。

DMA 传送方式和中断方式相比,各有什么特点? ⭐️⭐️
PPT给的答案:①响应时间:CPU接到 “中断请求” 后要等到当前指令执行完毕才响应,而 CPU 接到 DMAC 的 “总线请求” 后,只要当前指令的当前总线周期执行完毕就响应。②数据传送速度:DMAC 传送比中断传送要快。

笔者给的答案:采用中断方式进行数据传送,可以提高 CPU 的利用率。但是,中断传送是由 CPU 通过程序来实现的,每次执行中断服务子程序需要保护断点,在中断服务子程序中,需要保护现场,为中断源服务,中断服务结束还需要恢复现场,CPU 需要执行若干指令来完成上述工作。而 DMA 传送方式就不需要 CPU 的干预,因此省去了 CPU 取指令、指令译码、存取数据等操作,提高了数据的传送速率,但缺点是硬件电路比较复杂



1.7 补充简答题

1、外设为什么要通过接口电路和主机系统相连?
答:由于输入输出设备的多样性和接口电路的复杂性, CPU 必须通过接口电路与外设进行信息交换。

2、DMA 系统完成的功能是什么?
答:实现存储器和存储器之间或存储器和 I/O 设备之间直接进行的高速数据传送,(不需要 CPU 的干涉)。

3、8237A 的主要功能是什么?
答:代替 CPU 控制总线,实现 I/O 接口与存储器之间的数据传送。(DMAC: DMA 控制器是实现 DMA 传送的核心芯片。8237A 芯片就是书上的 DMAC,即 “DMA控制器” )

4、8237A 内部寄存器各有什么作用?【PPT没有,老师没讲】
① 控制寄存器:确定其工作时序、优先级方式、DREQ 和 DACK 的有效电平以及是否允许工作。
② 方式寄存器:确定某一通道的传送方式、数据传送类型。
③ 地址寄存器:存储需要传输数据的地址。
④ 字节寄存器:存储需要传输数据的字节数。
⑤ 状态寄存器:高 4 位表示当前 4 个通道是否有 DMA 请求,低 4 位表示 4 个通道的 DMA 是否传送完。
⑥ 请求寄存器:使某一通道的请求触发器置0/1。
⑦ 屏蔽寄存器:使某一通道的屏蔽触发器置0/1。
⑧ 多通道屏蔽寄存器:一次性能完成对 4 个通道的屏蔽设置。
⑨ 清屏蔽寄存器:用来清除 4 个通道的屏蔽触发器。
⑩ 暂存寄存器:用来暂存中间数据。
…好像还有

5、80286 系统一个存储单元是 24 位物理地址,而 8237A 在寻址内存空间时,只能给出 16 位地址码,这一矛盾如何解决?有哪些硬件和软件措施?【PPT没有,老师没讲】
答:通过程序设置,把 DMA 传送所涉及的存储单元的高 8 位物理地址写入(8237A 里的)相关通道的页面寄存器;把存储单元的低 16 位地址写入(8237A 里的)相关通道的基本地址寄存器;把 DMA 传送的实际字节数减1,写入(8237A 里的)相关通道的基本字节寄存器。从而做好初始化准备。【软件】
另外,页面寄存器采用专用的三态输出存储映像器 74LS612 来实现。【硬件】

6、8237A 提供哪几种传送方式?在微型计算机系统中,不允许使用哪一种传送方式?【PPT没有,老师没讲】
8237A 提供 4 种传送方式:单字节传送方式、数据块传送方式、请求传送方式、级联传送方式。不允许使用级联传送方式吧【这个笔者不太确定】

7、8237A 初始化编程的步骤是什么?【PPT没有,老师没讲】
① 命令字写入控制寄存器。
② 屏蔽字写入屏蔽寄存器。
③ 方式字写入方式寄存器。
④ 先/后触发器置0。
⑤ 写入基地址和基本字节寄存器。
⑥ 解除屏蔽。
⑦ 写入请求寄存器。

8、简述 PC 系列机用 DMA 方式进行单字节读写传送的全过程。【PPT没有,老师没讲】
答:…和上题流程差不多,只不过是针对单字节数据读写传送的。

9、8237A 芯片采用数据块传送方式和单字节传送方式进行 DMA 传输时,其主要区别在哪里?【PPT没有,老师没讲】
答:数据块传送方式:在进入 DMA 操作后,连续传送数据,直到整个数据块全部传送完毕。
单字节传送方式:每次 DMA 操作只传送一字节的数据,然后自动把总线控制权交给 CPU,让 CPU 占用至少一个总线周期。若有新的 DMA 请求,8237A 将向 CPU 发出总线请求,等到获得总线控制权后,再进行下一字节数据的传送。

10、什么是 DMA控制器 的正常时序和压缩时序?【PPT没有,老师没讲】
答:压缩时序就是在正常时序的基础上,少了 S3(读操作) 的过程。




二、中断系统

2.1 中断概念

什么是中断?
答:中断是指 CPU 在执行程序的过程中,由于某种外部或内部事件的作用,使 CPU 停止当前正在执行的过程转而去为该事件服务,待事件服务结束后,又能自动返回到被中止了的程序中继续执行的过程。



2.2 中断指令

中断指令要求掌握STICLIINT nIRET,并知道中断程序设计中何时使用。CPU 执行中断指令后,完成哪些操作?

例:CPU 执行 IRET 指令后,从栈顶弹出_____字节数据,分别赋给________、________和 ________。
答案:6、IP、CS、F

STI功能 :使 F 寄存器中I标志置1,CPU 处于开中断状态。
CTI功能 :使 F 寄存器中I标志置0,CPU 处于关中断状态。
注意STICLI只对可屏蔽中断请求有效。

软件中断指令格式INT n
说明n为中断类型码,是0~255之间有定义的无符号整数。
功能:无条件转向n型中断服务子程序。

● 中断返回指令 IRET:
功能:依次从栈顶弹出6个元素 → IP、CS、F。
说明:如果栈顶是INT n的断口地址,则执行IRET后,才能返回断点,否则不能。


执行INT n指令和执行IRET指令的堆栈操作示意图
在这里插入图片描述

简述 CPU 响应软件中断的过程?(或 INT n 指令执行的详细过程?)
答:CPU 获得了中断类型码n后,CPU 响应软件中断,即中断的处理过程如下:
  ① F寄存器(状态寄存器) → 堆栈(目的:保存INT n之前的各个标志位状态)
  ② 使 F 中的使 I 标志置0、 T 标志置0 (目的:清除 I 标志和 T 标志,屏蔽新的可屏蔽硬件中断和单步中断)
  ③ 将主程序断口地址 → 堆栈(目的:保护主程序的断点。细节:先压入断口的段基址 CS,再压入断口的偏移量 IP)
  ④ CPU 从4×n~4×n+3单元取出n型服务程序入口地址 → CS:IP(目的:转入n型中断服务程序。细节:4×n~4×n+1 单元的内容 → IP,4×n+2 ~ 4×n+3单元的内容 → CS)
  ⑤ CPU 根据新的 CS:IP 的值转向相应的n型中断服务子程序。
  ⑥ 当服务子程序执行完毕,执行中断返回指令。中断返回指令的功能是按顺序恢复断点处的 IP 值、CS 值和之前保护的相应中断前的标志寄存器内容 → 标志寄存器。
  ⑦ CPU 根据恢复后的 CS:IP 的值返回到断点,继续执行主程序。



2.3 微机系统中断分类

中断可以分为哪几类?
答:根据中断源的不同,中断被分为:外部中断和内部中断。(补充:外部中断也称为硬件中断,内部中断可以进一步被分为软件中断和异常)
在这里插入图片描述



2.4 中断向量

什么是中断向量和中断向量表?中断类型码和中断向量的关系是什么?⭐️⭐️⭐️
答:① 中断向量是实模式下,中断服务子程序的
入口地址
。每个中断号所对应的中断向量占 4 字节,前两字节为中断服务子程序入口的偏移地址,后两字节为中断服务子程序所在的代码段段基址
② 微机系统中,为了区别不同类型的中断,给每一个中断都分配了一个中断号,又称中断类型码。而对于每一个中断,都有一个中断向量。即一个中断类型码对应一个中断向量。(一一对应关系

补充内容:在实模式下,CPU 把 256 种中断向量组成一张表设置在系统的 RAM 最低端1K 单元(0 ~ 3FFH)。n 型中断向量存放在内存单元地址 4×n~4×n+3 这四个单元
在这里插入图片描述

例题:实模式下,从内存地址 0000H:0048H 开始的连续 4 个单元中存放的内容为00H,38H,30H,50H,则该地址所对应的中断类型码为_______,该中断所对应的中断服务子程序的入口地址为______。⭐️⭐️

答案:12H,53B00H
解析一:0000H 是段基址,0048H 是偏移地址。
(方法一:右移两位) 48H ÷ 4 = 0100 1000B ÷ 0100B = 0001 0010B = 12H
(方法二:16进制 → 10进制除4 → 16进制) 48H ÷ 4 = 72 ÷ 4 = 18 = 12H
解析二:5030H × 16 + 3800H = 50300H + 3800H = 53B00H(这里易错为 “54100H”,注意是 16 进制)



2.5 中断向量的写入

例题:设n型中断服务程序的名字是SERVICE,如何将SERVICE的入口地址写入对应的中断向量表呢?【只用掌握方法一即可】⭐️⭐️

方法一: DOS自身内部设计有 2 个子程序,专门用于中断向量的读出、写入,如下两段代码所示:

[ INT 21H 的35H子功能 ]
功能: 读出 n 型中断向量
入口: AL = 中断类型码
出口: ES:BX = n型中断向量

[ INT 21H 的25H子功能 ]   <----这道例题只会用到这个
功能: 写入 n 型中断向量
入口: DS = 中断服务程序所在代码段的段基址
	 DX = 中断服务程序入口的偏移地址
	 AL = 中断类型码
出口: 无 

采用方法一, 对应的程序段如下:
CLI
PUSH 	DS
PUSHA				; 用于“保护现场”
MOV		AX,SEG SERVICE
MOV		DS,AX
MOV		DX,OFFSET SERVICE	; 获取 中断服务程序入口的偏移地址 到 DX
MOV		AH,25H		; INT 21H 的25H子功能
MOV		AL,n		; 写入 n 型中断向量
INT 	21H			; 执行该 n 型中断
POPA				; 用于“恢复现场”
POP 	DS
STI

;-----------------------------------------------------

方法二: 用户自己编写程序填写中断向量
CLI		; I标志清零
PUSH	DS	; 压入段基址(保护)
MOV		AX, 0000H	
MOV		DS, AX	; 基地址是 0000H, 可自行设定
MOV		BX, 4*n	; 偏移地址是 4*n
MOV		AX, OFFSET SERVICE
MOV		[BX], AX	; 将服务程序入口偏移地址写入 4*n ~ 4*n+1 单元
MOV		AX, SEG SERVICE 
MOV		[BX+2], AX	; 将服务程序段基址写入 4*n+2 ~ 4*n+3 单元
POP 	DS	; 弹出段基址(恢复)
STI		

补充:老师发的复习PPT给的 “中断向量的写入” 的模板如下。

MOV		AX,SEG SERVICE
MOV		DS,AX
MOV		DX,OFFSET SERVICE
MOV		AH,25H
MOV		AL,n
INT 	21H


2.6 对于微机系统可屏蔽硬件中断要求掌握:

在这里插入图片描述

系统默认分配给主 8259A 和从 8259A 的口地址有哪些?【需要记住,编程要会写】
在这里插入图片描述

简答题一:CPU 响应可屏蔽中断的条件是什么?⭐️⭐️⭐️
答:① INTR 引脚有中断请求,NMI 引脚没有中断请求,系统没有 DMA 请求。
  ② CPU 当前指令执行完毕。
  ③ CPU 处于开中断状态,即标志寄存器的中断允许标志置1
补充知识点一:INTR 的全称为 Interrupt,即打扰、中断。NMI 的全称为 Non Maskable Interrupt,即不可屏蔽的中断。
补充知识点一:在中断级别上,DMA 请求 > 非屏蔽中断 > 可屏蔽中断

简答题二:CPU响应非屏蔽中断的条件是什么?⭐️⭐️⭐️
答:① NMI 引脚有中断请求,且系统没有 DMA 请求。
② CPU 当前指令执行完毕。



2.7 对于要求掌握的可屏蔽中断,有以下3种:

用户中断的中断源是什么?中断向量是什么?用户可置换的中断向量是什么?
答:(系统)用户中断的中断源是系统的 ISA 总线 B4 端子(IRQ9)引入的中断请求信号。中断向量是 71H、0AH。用户可置换的中断向量也是 71H、0AH。

日时钟中断的中断源是什么?中断向量是什么?用户可置换的中断向量是什么?
答:(系统)日时钟中断的中断源是系统 8254 0# 计数器,每 55ms 有一次中断请求。中断向量是 08H、1CH。用户可置换的中断向量也是 08H、1CH。 【注:重点掌握1CH

键盘中断的中断源是什么?中断向量是什么?怎么使用?(只要掌握原理)
答:键盘中断的中断源是主板键盘接口电路发来的系统键盘中断请求。中断向量是 09H。

补充:由 9 型服务程序写入键代码,用户用 INT 16H 访问键盘缓冲区,所以键盘缓冲区是 9 型硬件中断和INT 16H软中断之间交换信息的缓冲区。



2.8 硬件中断和软件中断的区别

硬件中断和软件中断的相同点? ⭐️
① 都会引起程序中止。
② CPU 获得中断类型码n后,自动从4×n ~ 4×n+3单元取出该中断源的中断向量 → IP、CS,从而执行该中断源的中断服务程序。

硬件中断和软件中断的不同点? ⭐️⭐️⭐️
(1) 中断的引发方式不同
硬件中断是由 CPU 以外的设备发出的接到引脚 INTR 和 NMI 上的中断请求信号而引发的。而软件中断是由于 CPU 执行 INT n 指令而引发的。

(2) CPU 获取中断类型码的方式不同
可屏蔽硬件中断,中断类型码是由中断控制器 8259A 提供;非屏蔽硬件中断类型码自动产生;软件中断,中断类型码是由软件中断指令 INT n本身提供的。

(3) CPU响应的条件不同
可屏蔽硬件中断是可以被屏蔽的,只有在 CPU 开中断时,才能响应;非屏蔽硬件中断和软件中断不能被屏蔽。

(4) 中断处理程序的结束方式不同
在硬件可屏蔽中断服务程序中,中断处理结束后,首先需要向 8259A 发出中断结束命令,然后执行 IRET 指令,中断返回。而在软件中断服务程序中,中断处理结束后只需执行IRET指令。



2.9 8259A中断大题

题目描述:假设微机系统外扩了如下的一个‘单脉冲发生器’,该‘单脉冲发生器’电路受一个自复开关K的控制,每按一次K,该电路输出一个正脉冲,输入到系统机从8259的IR1作为外部中断请求。要求:每按一次K,屏幕上显示一行字符串“Welcome!”。主机键盘按任意键,程序结束,返回DOS。(要求给出完整的源程序)
在这里插入图片描述
(由题意可知,使用的是从8259的IR1中断,即用户中断,中断类型为71H或者0AH)
题目分析
用户定义的中断服务程序有两个设计方法:
① 定义用户中断服务程序为“71H型”
② 定义用户中断服务程序为“0AH型”

用户中断服务程序结束时需注意:
① 若用户中断定义为0AH型,服务程序结束前,只向主8259送结束命令
② 若用户中断定义为71H型,服务程序结束前,需向主、从8259各送一中断结束命令
注意:①用户中断在开中断前写中断屏蔽字 ②结束中断服务之前要写中断结束命令字 ③避免DOS重入,即服务程序和主程序中不能同时用INT 21H)

以下是参考代码:注释掉的代码可有可无
.486
DATA SEGMENT USE16
OLD0A	DD		?					; 用于保存原来的中断向量, 所以叫作 OLD
MESG	DB		'Welcome!', '$'		; 显示的字符串
DATA	ENDS
CODE SEGMENT USE16
ASSUME CS:CODE, DS:DATA
BEG:	
	MOV		AX, DATA
	MOV		DS, AX
	CLI								; 关中断
	CALL	I8259					; 8259初始化
	CALL	READ0A					; 保存原来的 0AH 中断向量
	CALL	WRITE0A					; 写入 0AH 中断向量
	STI								; 开中断
SCAN:	
	MOV		AH, 01H					; 设置功能号(BOIS 的 1 号功能, 有输入 → z=0; 无输入 → z=1)
	INT		16H						; 有键入?
	JZ		SCAN					; 没有输入就继续循环(z = 1转移)
	CALL	RESET					; 恢复现场
	MOV		AH, 4CH
	INT		21H
;--------------------------------------
SERVICE	PROC
	PUSHA
	PUSH	DS						; 保护现场
	MOV		AX, DATA
	MOV		DS, AX
	MOV		AH, 09H					; 设置功能号
	MOV		DX, OFFSET MESG			; 设置参数
	INT		21H						; 显示字符串
	MOV		AL, 20H
	OUT		20H, AL					; 向 主8259 送中断结束命令字
	OUT		0A0H, AL				; 向 从8259 送中断结束命令字
	POP		DS
	POPA							;恢复现场
	IRET
SERVICE	ENDP
;--------------------------------------
I8259	PROC
		IN		AL, 0A1H
		AND		AL, 11111101B
		OUT		0A1H, AL				;开 从8259IR1 中断(用户中断)
		IN		AL, 21H
		AND		AL, 11111011B
		OUT		21H, AL					;开 主8259IR2 中断
		RET
I8259	ENDP
;--------------------------------------
READ0A	PROC
		MOV		AX, 350AH
		INT		21H
		MOV		WORD PTR OLD0A, BX
		MOV		WORD PTR OLD0A+2, ES	; 保存中断向量
		RET
READ0A	ENDP
;--------------------------------------
WRITE0A	PROC
		PUSH	DS
		MOV		AX, CODE
		MOV		DS, AX
		MOV		DX, OFFSET SERVICE
		MOV		AX, 250AH
		INT		21H						; 写入新的 0AH 中断向量
		POP		DS
		RET
WRITE0A	ENDP
;--------------------------------------
RESET	PROC
		"注释掉的部分可写可不写"
		; IN	AL, 0A1H
		; OR	AL, 00000010B
		; OUT	0A1H, AL			; 关 从8259IR1 中断(用户中断)
		; IN	AL, 21H
		; OR	AL, 00000100B
		; OUT	21H, AL				; 关 主8259IR2 中断
		MOV		DX, WORD PTR OLD0A
		MOV		DS, WORD PTR OLD0A+2
		MOV		AX, 250AH				; 把原来的 0AH 中断向量写回去
		INT		21H
		RET
RESET ENDP
CODE ENDS
END	BEG


2.10 补充简答题

1、系统可屏蔽硬件中断的中断源是哪些?
答:可屏蔽硬件中断的中断类型码包括:08H ~ 0FH。其对应的中断源分别是:日时钟(08H)、键盘(09H)、用户(0AH)、辅串口(0BH)、主串口(0CH)、并行口2(0DH)、软盘(0EH)、并行口1(0FH)。

2、简述 CPU 响应可屏蔽硬件中断的过程。✅
答:CPU 在每一条指令的最后一个时钟周期,检测 INTR 引脚,当检测到有可屏蔽中断请求时,在满足 “CPU响应非屏蔽中断的条件” 的前提下,通过总线控制器向系统 8259A 发出中断响应信号(两个负脉冲)。在获得 8259A 送回来的中断类型码后,在实模式下查询中断向量表,从而转向相应中断源的中断服务子程序。

3、8259A 的中断屏蔽寄存器(IMR)和 80x86 的中断允许标志 IF 有什么区别? ✅【简单了解】
答:IF 是 80x86 微处理器内部标志寄存器的一位,若 IF = 0,80x86 就不响应外部可屏蔽中断请求 INTR 引线上的所有请求信号。8259A 有 8 个中断请求输入线,IMR 中的某位为1,就只把对应这位的中断请求 IR 禁止掉,使其无法被 8259A 处理,也无法向 80x86 处理器产生 INTR 请求。

4、在微型计算机系统上开发用户中断程序时应采取哪些措施?
① 把外扩中断源的中断请求(由低电平到高电平的跃变)接入 ISA 总线 B4 端子。
② 开放用户中断。
③ 置换中断向量。
④ 用户中断服务子程序结束时,向 8259A 写结束(命令)字。

5、在微型计算机系统上开发日时钟中断程序时应采取哪些措施?
① 开中断,保护现场,40H → DS。
② 对 “日时钟计数器” 进行一次加1计数。
③ 测算软驱电动机的关闭时间。
④ 执行 INT 1CH 指令。
⑤ 向主 8259A 发出常规中断结束命令字。
⑥ 恢复现场,执行 IRET 指令。

6、APIC 中断系统的组成有哪几部分?【PPT没有,老师没讲】
答:APIC 的全称为 Advanced Programmable Interrupt Controller,即高级可编程中断控制器。只做了解…




三、串行通信

3.1 基本概念

串行通信方式:串行异步通信、串行同步通信

异步串行通信的数据传输方式:单工通信、半双工通信、全双工通信 。

● **单工、半双工、全双工通信方式的特点是什么?**⭐️⭐️⭐️
①单工方式只允许数据按照一个固定的方向传送。
②半双工方式要求收发双方均具备接收和发送数据的能力,由于只有一条信道,数据不能在两个方向上同时传送。
③在全双工方式中,收发双发可以同时进行数据传送。

异步串行通信一帧数据的格式及通信速率的计算。⭐️⭐️⭐️
在这里插入图片描述
: 异步通信一帧数据格式中,按照发送的次序,先传送____________,紧接着是数据_______位,数据位后依次为____________,____________。

答案:起始位、低、奇偶校验位、停止位。

补充一:为实现通信,收发双方一帧数据的格式和通信速率要保持一致。

补充二:RS232信号采用负逻辑。“1”= -3V ~ -15V,“0”= +3V ~ +15V



3.2 8250芯片和8250内部寄存器的功能

在这里插入图片描述
说明

8250 —— 数据总线缓冲器:接收来自 CPU 的各种控制信息,从而确定操作方式。

8250 —— 选择和控制逻辑:他是 8250 和 CPU 之间的数据通道。

8250 —— 发送器:由 “发送保持寄存器”、“发送移位寄存器” 和 “发送同步控制” 这3部分构成。
[1] 发送保持寄存器:装载待发送的数据。
[2] 发送移位寄存器:数据发送时,“发送保持寄存器” 内的内容会自动转到这里面。
[3] 发送同步控制:能将 “发送移位寄存器” 里的内容添加起始位、校验位和停止位,并将数据转换为串行数据,经SOUT引脚发送出去。

8250 —— 接收器:由 “接收移位寄存器”、“接收缓冲寄存器” 和 “接收同步控制” 这3部分构成。
[1] 接收同步控制:能将来自引脚SIN的串行数据逐位存入接收移位寄存器,并在存入的过程中进行自动校验,并去掉起始位、停止位和校验位。
[2] 接收移位寄存器:会自动将其内部的数据内容转到 “接收缓冲寄存器”。
[3] 接收缓冲寄存器:装载接收的数据,等待 CPU 读取。

8250 —— 调制解调控制电路:使 8250 可直接与调制解制器相连的控制电路,以完成远程通信任务。

8250 —— 通信线控制寄存器:指定串行通信的数据格式。

8250 —— 通信线状态寄存器:提供串行数据发送和接收时的状态,供 CPU 读取和处理。

8250 —— 波特率发生控制电路:由波特率发送器、存放分频系数低位和高位字节的除数寄存器构成。
● 对 ⑧ 的补充说明:8250 使用的是频率为1.8432MHz的基准时钟输入信号,通过内部分频产生发送器时钟和接收器时钟。发送器时钟和接收器时钟的频率是 “数据传输波特率” 的16倍。

中断控制逻辑:由中断允许寄存器、中断识别寄存器和中断控制逻辑3部分组成。它主要对中断优先权、中断申请等进行管理。



3.3 8250的初始化编程和应用编程

串行通信程序设计包括:硬件连接和软件编程。

采用微型计算机系统进行串行通信时,对串口初始化编程有哪些方法?具体的初始化编程步骤是什么? ⭐️⭐️
(如果采用直接对端口操作的方式),8250 的初始化编程步骤如下:
  [1] 设置寻址位:80H → 通信线控制寄存器,使寻址位为1(即使除数寄存器访问位=1)。
  [2] 确定通信速率:根据波特率计算出除数高8位/低8位 → 除数寄存器高8位/低8位。
  [3] 规定一帧的数据格式:将 D7 = 0 的控制字写入通信线控制寄存器(目的:<1>定义一帧数据格式。<2>使除数寄存器访问位=0,从而使后继的对合用端口的访问只读写非除数寄存器)。
  [4] 设置中断允许寄存器:若采用查询方式,则置0;若采用中断方式,则置1
  [5] 设置 MODEM 控制寄存器:若采用查询方式,则 D30;若采用中断方式,则 D31;若采用内环自验:则 D41;若为正常通信,则 D40;使用联络线时:D1、D0 位置1

8250 查询方式下如何接收和发送程序的编程? ⭐️⭐️
在发送数据前,读通信线状态寄存器(状态口)获取发送保持或移位寄存器(数据口)是否空闲;
在接收数据前,读通信线状态寄存器(状态口)获取接收缓冲寄存器(数据口)是否已经收到1帧数据。

● 利用微型计算机串行口采用中断方式完成字符发送和接收,编程时应采取哪些措施?
① 置 8250 中断允许寄存器的 D1 位为1,D0 位为1,允许 8250 产生发送和接收中断请求。
② 置 8250 MODEM 控制寄存器的 D3 位为1,允许 8250 将中断请求信号送至 8259A。(见教材P309图10-8)
③ 将主 8259A IMR(中断屏蔽字) 的 D4 位或 D3 位置0(取决于主串口还是辅串口),即开放主 8259A IR4 或主 8259A IR3中断。
④ 写入 0CH 型中断向量(主串口)或 0BH 型中断向量(辅串口)。
⑤ 使用 STI 指令,允许 CPU 响应中断。

对于上一题,复习 PPT 给的内容

在这里插入图片描述

掌握串行通信基本的外部环境

在这里插入图片描述



3.4 8250 大题样例

题目描述:A、B两台PC机利用主串口进行点-点单工通信(不用联络线),发送采用查询方式,接收采用中断方式。一帧字符包含7个数据位,1个停止位,1个校验位,通信速率为4800波特(分频系数为0018H)。
(1)下图是 A、B 两机的 RS—232C 接口示意图,根据题意完成连线(不可有多余连线)。【红色线即为答案】
在这里插入图片描述

(2)下图是从PC机的RS-232C接口引脚观察到的波形,所传送字符的16进制ASCII码是_______;该帧数据采用的奇偶校验方式是_______校验;传送该帧数据需要的时间是_________。
在这里插入图片描述

答案:46H、奇、 1 480 s \frac{1}{480}s 4801s
解析:
① RS-232C 电平转成TTL电平就可以明显看出一帧数据为 0011000101。按题目要求可知:7个数据位为 0110001,1个校验位为 0。因为数据位从最低位开始传送,所以传送的数据为 1000110B,即46H,为 “ F F F”。
② 数据以及校验位中 1 的个数为 3 个,为奇数,所以是奇校验。
③ 一帧位数 = 1位起始位 + 7位数据位 + 1位校验位 + 1位停止位 = 10位。所以 T = 10    b i t 4800    b i t / s = 1 480 s T=\frac{10\,\, bit}{4800\,\, bit/s}=\frac{1}{480}s T=4800bit/s10bit=4801s

(3)用对端口直接编程的方法为接收方编写 8250 初始化程序段。

"注意:题目要求接收采用中断方式"
I8250 PROC
	MOV		DX, 3FBH
	MOV		AL, 80H			; 或写成1(访问除数寄存器)0000000(设置为0), 设置寻址位, 使寻址位为1
	OUT		DX, AL
	
	MOV		DX, 3F9H
	MOV		AL, 00H
	OUT		DX, AL			; 除数高8位 → 除数寄存器高8(先写分频系数0018H的高8)
	
	MOV		DX, 3F8H
	MOV		AL, 18H
	OUT		DX, AL			; 除数低8位 → 除数寄存器低8(再写分频系数0018H的低8)
	
	MOV		DX, 3FBH
	MOV		AL, 00001010B	;0AH, 0(非除数寄存器)0(正常通信)001(奇校验)0(停止位1)10(数据位7)
	OUT		DX, AL			; 将控制字写入通信控制寄存器
	
	MOV		DX, 3F9H
	MOV		AL, 00000001B	;01H,0000(恒为0)0001(允许"接受中断请求")
	OUT		DX, AL
	
	MOV		DX, 3FCH
	MOV		AL, 00001000B	;08H,000(恒为0)0(正常通信)1(允许8250送出中断请求信号)000
	OUT     DX,AL
	RET
I8250 ENDP


3.4 补充简答题

1、异步通信的特点是什么?
答:在每个字符前后需要分别附加起始位、停止位,有约 20% 的附加信号位,传输效率不高。但能有效降低传输错误。

2、同步通信的特点是什么?
答:采用同步字符来完成收发双方同步的,并要求严格的时钟同步。

3、异步通信一个字符的格式是什么?
答:⑴起始位 ⑵数据位 ⑶奇偶校验位 ⑷停止位
考点:①起始位为一位逻辑0,题目一般不给出。②数据位从最低位开始传送。
③奇偶校验看逻辑1的个数是奇是偶。④停止位一定是逻辑1信号。

5、设异步通信一个字符有 8 个数据位,无校验,一个停位,如果波特率为 9600 波特,则每秒能传输多少个字符?
答:一帧字符数 = 1位起始位 + 8位数据位 + 1位停止位 = 10
则一秒传输的字符数 N = 9600    b i t / s 10    b i t = 960 / s N=\frac{9600\,\, bit/s}{10 \,\, bit}=960 /s N=10bit9600bit/s=960/s,(通信速率又称波特率,表示每秒钟传送01代码的位数)

6、在 RS-232C 接口标准中,引脚 T X D 、 R X D 、 R T S ‾ 、 C T S ‾ 、 D S R ‾ 、 D T R ‾ TXD、RXD、\overline{RTS}、\overline{CTS}、\overline{DSR}、\overline{DTR} TXDRXDRTSCTSDSRDTR 的功能是什么?
答:
① TXD —— ⭐️输出方向⭐️,发送数据。(Transmit Data,X 是 extended specification 的缩写,意思为扩展规范)
② RXD —— 输入方向,接受数据。(Receive Data)
R T S ‾ \overline{RTS} RTS —— 输出方向,请求发送。(Request to Send)
C T S ‾ \overline{CTS} CTS —— 输入方向,允许发送。(Clear to Send)
D S R ‾ \overline{DSR} DSR —— 输入方向,数据设备准备好。(Data Set Ready)
D T R ‾ \overline{DTR} DTR —— 输出方向,数据中断准备好。(Data Terminal Ready)

7、分别叙述 TTL 和 RS-232C 的电平标准,通常采用什么器件完成两者之间的电平转换?
答:① TTL 采用正逻辑,规定逻辑 “0” 为 0V 左右,规定逻辑 “1” 为+3V ~ +5V。RS-232C 采用负逻辑,规定逻辑 “1” 为 -3V ~ -15V,规定逻辑 “0” 为 +3V ~ +15V
② 通常采用 MC1488 和 MC1489 电平转换器。MC1488 可接收 TTL 电平,输出 RS-232C 电平。MC1489 可输入 RS-232C 电平,输出 TTL 电平。

8、8250 芯片通信线控制寄存器中的寻址位有什么作用?在初始化编程时,应如何设置?
① 当该寻址位为1时,访问合用端口地址的除数寄存器。当该寻址位为0时,访问合用端口地址的非除数寄存器。
② 一开始将 80H → 通信线控制寄存器,使寻址位为1。在设置号通信速率后在将 D7 = 0 的控制字写入通信线控制寄存器,规定一帧数据格式。

9、采用 8250 查询方式发送字符时,在什么情况下可以查询发送保持寄存器是否空闲?在什么情况下必须查询发送移位寄存器是否空闲?【这道题笔者不太确定】
① 在 置中断允许控制字为0,且MODEM 控制寄存器的 D3 = 0 的情况下可以。② 在通信线状态寄存器的 D6 = 1 的情况下必须。

10、利用微型计算机系统串行口进行短距离全双工点—点通信时,应具备什么样的外部环境?【这道题笔者不太确定】
第一台微型计算机的 TXD 和 RXD 分别和第二台微型计算机的 RXD 和 TXD 相连接,7号引脚相连接。

在这里插入图片描述




四、并行 I/O 接口

4.1 8255A 基础知识

8255A的内部结构、端口地址以及与系统总线的连接
8255A 的内部结构如下图所示:【简单看看就行,有兴趣的话,可以数数里面刚好38个引脚,还有两个是电源和接地线】
在这里插入图片描述

对上图的说明
  ① 24根端口数据线 —— 接外设
    [1] PA7 ~ PA0 为 A (端)口数据线
    [2] PB7 ~ PB0 为 B (端)口数据线
    [3] PC7 ~ PC0 为 C (端)口数据线

  ② 8根系统数据线 —— 接 CPU 的 D7 ~ D0

  ③ 6根输入控制线
    [1] RESET:复位信号,RESET = 1 时,8255 内部复位,所有内部寄存器清零,A、B、C 三个端口自动为输入端口
    [2] C S ‾ \overline{CS} CS:片选信号,CS = 0 时,该芯片被选中
    [3] R D ‾ \overline{RD} RD:来自 CPU 的 I/O 读命令
    [4] W R ‾ \overline{WR} WR:来自 CPU 的 I/O 写命令
    [5] A1、A0:通常接 CPU 的地址线 A1、A0

  ④ 电源线:+5V,地线

  ⑤ 端口:8255A 有4个端口寄存器 —— 接口电路中能和 CPU 直接交换信息的寄存器。【即上图中的最右边 4 个方框】

补充说明
  ① A 数据口地址 = 60H
  ② B 数据口地址 = 61H
  ③ C 数据口地址 = 62H
  ④ 控制口地址 = 63H

8255A 三种工作方式(方式0 ~ 方式2 )的工作特点和 I/O 过程?

在这里插入图片描述

读/写操作:【A1、A0 是端口选择信号,当 C S ‾ \overline{CS} CS 有效时,即可根据 A1、A0 的组合来选择 8255A 的端口数据寄存器和控制寄存器。其操作表如下】
在这里插入图片描述
注意:对控制寄存器不能进行读操作

在方式 1 中 C 口哪几个引脚作为信号联络线,各信号联络线的含义。
例一:8255的数据口中,______ 口可工作在双向方式。
例二:8255A 的 B 口初始化定义为选通型(方式1)输入,对 8255A 采用查询方式,必须先查询__________;若采用中断方式,必须先置PC___为 “1”,并且利用__________作为中断请求信号线。

答案:A、IBF、2、INTR
解析例二第一个空,因为是 B 口,且为方式 1 输入, I B F A IBF_A IBFA:输入缓冲器满,高电平有效,由 8255A 发往外设。(工作原理:当 S T B A ‾ \overline{STB_A} STBA 变低位时,触发使得 IBF = 1,这时会通知输入设备,8255A 已经收到数据,暂时不要输入下一个数据进来。CPU 在采用查询方式从 8255A 读取数据之前,会查询 IBF,只有当 IBF = 1时,CPU 才能从 A 口或 B 口读取输入数据。当 CPU 读操作完成时,恢复使得 IBF = 0,表示输入缓冲器为空)

例二第二个空:其中 INTEB:B 口的中断允许触发器,受 C 口置0/置1命令字控制,当 PC2 = 1 时,表示 B 口允许中断。INTR:中断请求信号,高电平有效。在中断允许的前提下(INTEB = 1),8255A 将会在接收到一个端口数据(IBF = 1),向 CPU 发出中断请求。看附录那张表也可以找到对于 B 口方式 1 的输入而言的答案(如下图所示)。

在这里插入图片描述



4.2 8255初始化编程

● 工作在方式 0 时,只需要:方式选择命令字→控制口

● 工作在方式1、2时,需要走两步:
① 方式选择命令字→控制口
② 允许中断(或禁止中断)的命令字→控制口

● 如果数据口(A、B或C)工作在方式 0,直接采用 IN/OUT 指令对其进行读写。

如果数据口(A或B)工作在方式1,分输入和输出两种情况
① 如果采用查询方式,且 A 或 B 口定义为输入口,先用IN指令读入 C 口的内容,查询其中的 I B F = 1 IBF=1 IBF=1 时,表示 CPU 可以继续用 IN 指令从 A 或 B 口读入外设送来的数据。
② 如果采用查询方式,且 A 或 B 口定义为输出口,先用IN指令读入 C 口的内容,查询其中的 O B F = 1 OBF=1 OBF=1时,表示 CPU 可以用 OUT 指令向 A 或 B 口写数据以送给外设。



4.3 8255A 大题样例

题目描述:系统机外扩一片 8255A 及相应电路如下图所示,外扩 8255A 的端口地址为 200H~203H,现利用系统机的日时钟外扩 1CH 型中断,实现每隔 1s 使八个发光二极管同时闪烁一次,主机键盘有按键按下时结束,返回 DOS 操作系统。根据要求完成相关内容。
在这里插入图片描述

(1)从图可以分析出,A 口工作在方式______的输______(入/出)

答:0、出。

(2)假设 8255A 的 A 口工作在方式 1 的查询输出方式,编写 8255A 的初始化子程序 I 8255 I8255 I8255

I8255 PROC
	MOV		DX, 203H
	MOV		AL, 10100000B	;0A0H,1(方式选择)01(方式1)0(输出)0000
	OUT		DX, AL
	MOV		AL, 00001100B	;0CH,0(C口置0/1)000(3位未用)110(选择PC6置)0(查询方式)
	OUT		DX, AL
	RET
I8255 ENDP

(3)编写子程序 W R I T E WRITE WRITE 完成中断向量的置换。

WRITE PROC			; 写入用户1CH型中断向量
	PUSH	DS
    MOV     AX, CODE 		
	MOV		DS, AX
	MOV		DX, OFFSET SERVICE		; 获取偏移地址
	MOV		AX, 251CH
	INT		21H						; 写入新的 1CH 中断向量
	POP		DS
	RET
WRITE ENDP


4.3 补充简答题

1、并行接口芯片有什么特点?一般应用于什么场合?
并行通信是同时将数据的所有位进行传输,传输速度比串行通信快。但是,因其硬件开销大,系统费用高,不适用于远距离数据传输,适合用于计算机内部,或计算机与近距离外设传输信息的场合。

2、8255A 的 3 个端口在使用时有何区别?
A端口可以工作在方式0、方式1、方式2;
B端口可以工作在方式0和方式1,不能工作在方式2;
C端口可以工作在方式0,不能工作在方式1和方式2。

3、8255A 工作在方式 1 和方式 2 时,哪些引脚是联络线?这些联络信号有效时代表什么物理意义?
① 8255A 工作在方式 1 时,引脚 S T B ‾ \overline{STB} STB(PC4) 和 引脚 I B F IBF IBF(PC5) 为输入联络线,引脚 A C K ‾ \overline{ACK} ACK(PC6) 和 引脚 O B F ‾ \overline{OBF} OBF(PC7) 为输出联络线。
S T B ‾ \overline{STB} STB 有效时,外设数据写入相应端口的输入缓冲器中。
I B F IBF IBF 有效时(会触发 IBF = 1,)通知输入设备,8255A 已经收到数据,暂缓下一个数据。
A C K ‾ \overline{ACK} ACK 有效时表示外设已接收到数据。
O B F ‾ \overline{OBF} OBF 有效时表示 CPU 已将输出数据写入指定的端口数据寄存器中。

4、当 CPU 用查询方式和 8255A 交换信息时,应查询哪些信号?当 CPU 用中断方式和 8255A 交换信息时,利用哪些端子提中断请求?
① 输入方式查询 I B F IBF IBF 信号,只有 I B F = 1 IBF=1 IBF=1 时,CPU 才可从 8255A 输入数据;输出方式查询 O B F ‾ \overline{OBF} OBF 信号,只有 O B F ‾ = 0 \overline{OBF}=0 OBF=0 时,CPU 才可输出数据。
② 中断方式下利用 PC 口的 PC3 和 PC0 提出中断请求,具体为:A 端口使用 PC3,B 端口使用 PC0

5、8255A 的方式选择控制字和 C 口按位置0/置1 控制字都是写入控制端口的,8255A 是怎样识别的?
答:通过命令字的 D7 位识别,D7 = 1,代表方式选择命令字;D7 = 0,代表 C 端口置0/置1 命令字。

6、8255A 工作在方式 1 输入时,如果 CPU 用查询方式和 8255A 交换信息,为什么不查询 STB 信号?
因为 STB 脉冲是外设送来,它最小可小到500ns,而在500ns的时间内正好运行 CPU 的查询指令是不可能的。

7、8255A 工作在方式 1 或者方式 2 时,设置中断允许,应采取什么措施?
首先把方式控制字写入控制口,确定所用端口的工作方式为方式 1 或方式 2。然后进一步明确 CPU 和 8255A 之间用中断方式来交换信息,并以此来组织 C 口置 0/置1 控制字,写入 8255A 控制口,使相应的中断允许标志(INTE)置 1。

8、说明打印机 Centronics 并行接口时序【PPT没有,老师没讲】

9、简述采用查询方式对打印机接口编程的工作过程【PPT没有,老师没讲】




五、8254可编程定时器/计时器

5.1 8254的基础知识

● 掌握 8254 定时器/计数器的基本结构(三个16位计数器、控制寄存器)和计数器的外部引脚功能(GATE,CLK,OUT)。
例:8254 计数器电路中, G A T E = 1 GATE=1 GATE=1表示 允许计数
例:8254 计数器电路中, G A T E = 0 GATE=0 GATE=0表示 停止计数
例:8254 计数器电路中, G A T E 的 上 升 沿 GATE的上升沿 GATE沿表示 启动计数

● 8254有6种工作方式(方式0 ~方式5 )
重点:方式2、方式3(包括计数过程、波形、周期和启动方式)。方式 2、3 具有 “初值自动重装” 功能,其余四种方式没有初值自动重装功能。

在这里插入图片描述

在这里插入图片描述
C S ‾ \overline{CS} CS R D ‾ \overline{RD} RD W R ‾ \overline{WR} WR、A1、A0的配合使用表

在这里插入图片描述

样例:设 8254 计数器 1 工作于方式 3,输入时钟为 1000Hz,计数初值为 10H,且采用二进制计数方式,则一个周期内计数器 1 输出信号的高电平和低电平分别为 _____ 和 _____ ms 。
答案:8、8
解析:根据 N = f C L K / f O U T N = f_{CLK} / f_{OUT} N=fCLK/fOUT 可知, f O U T = f C L K / N f_{OUT} = f_{CLK} / N fOUT=fCLK/N,故 T O U T = N / f C L K = 16 ÷ 1000 = 0.0016 s = 16 m s T_{OUT} = N/ f_{CLK} = 16 ÷1000=0.0016s=16ms TOUT=N/fCLK=16÷1000=0.0016s=16ms。又工作在方式 3 ,且初值为 10H → 16(偶数),那么输出 1:1 的方波,即 8、8。

掌握8254在微型计算机系统中的应用。(外扩8254和PC机系统中8254)
例:8254 的三个计数器在 PC 系列中是如何应用的?
答案见 “5.4 补充题 3”



5.2 8254的初始化编程

8254的初始化编程的步骤分两步
① 向控制寄存器写入方式选择命令字。目的:选择一个计数器, 并确定其工作方式和计数值(或 计数初值)的读 / 写顺序。
② 向选择的计数器写入计数初值 (计数初值 N = f C L K / f O U T N = f_{CLK} / f_{OUT} N=fCLK/fOUT,或KaTeX parse error: Expected 'EOF', got '}' at position 22: …{OUT} / T_{CLK}}̲)

补充:锁存命令 —— D5D4 = 00 时,表示该命令为 “锁存命令”,此时后四位无效,如下图所示:

在这里插入图片描述



5.3 8254大题样例

题目描述:设 PC 系统机外扩了一片8254 及相应的实验电路。
在这里插入图片描述
(1) 根据由门电路构成的译码电路,分析出该片 8254 的四个端口地址。其中控制口的地址是_______。

答案:213H
解析:片选信号 C S ‾ = 0 \overline{CS} =0 CS=0 时表示芯片工作。因为 A 9 ∼ A 0 = 10000100 x x B A_9 \sim A_0 = 10000100xxB A9A0=10000100xxB,那么即端口号为 210H ~ 213H,所以控口地址为 213H。(注:图中未画 A 1 和 A 0 A_1和A_0 A1A0,1000010000B ~ 1000010011B → 512+16 ~ 512+16+2+1 → 528 ~ 531 → 201H ~ 213H。或者 1000010000B ~ 1000010011B → 10 0001 0000B ~ 10 0001 0011B → 201H ~ 213H)

补充 C S ‾ 和 A 1 、 A 0 \overline{CS}和A_1、A_0 CSA1A0 会配合起来使用。 A 1 、 A 0 A_1、A_0 A1A0 用来选中哪一个计数器, C S ‾ \overline{CS} CS 用来选通 201H ~ 213H 的地址(即使得:从该地址的传来的选通信号能成功 → 该8254)。

(2) 设 CLK0 已接至 8MHz 时钟,为了能从 OUT0 输出 4KHz 的方波,编写了 8254 初始化程序,其中假设 0 号定时计数器工作在二进制方式。

解:
初值 N = 8 MHz / 4KHz = 2000
I8254 PROC
	MOV  AL, 00110110B	; 00(0#计数器)11(高低位写入)011(方式3方波)0(二进制)
	MOV  DX, 213H		; 控口
	OUT  DX, AL			; 写控制字
	MOV  AX, 2000		; 初值
	MOV  DX, 210H		; 0号计数器
	OUT  DX, AL			; 写初值低位
	MOV  AL, AH			; 高位给AL 
	OUT  DX, AL			; 写初值高位
RET
I8254 ENDP


5.3 补充简答题

1、定时器/计数器 8254 的定时与计数方式有什么区别?
① 8254作为计数器使用时,对 CLK 端的输入脉冲进行单纯的减法计数,这时 CLK 端输入的脉冲不作为计时基准。此外,用作计数器时,计数完成后必须重新初始化,只能使用一次。
② 8254 作为定时器使用时,要求 CLK 端输入的脉冲必须作为时钟基准,通过对该基准时钟脉冲的计数来实现精确定时。用作定时器时,计数的过程周而往复,重复进行。

2、定时器/计数器各通道的 CLK,GATE 信号各有什么作用?
CLK端输入计数用的脉冲信号;GATE信号为高电平时,对CLK端输入的脉冲进行计数;GATE信号为低电平时,暂停计数; GATE信号重新为高电平后,恢复原先的计数。

3、定时器/计数器的 3 个通道在 PC 系列机中是如何应用的?
① 计时器 0 用于定时(约55ms)中断;
② 计时器 1 用于动态存储器刷新定时(每个15μs提出一次请求);
③ 计数器 2 用于产生900Hz的方波送至扬声器;

4、计数初值 N 与计数脉冲输入信号频率 f C L K f_{CLK} fCLK ,输出信号频率 f O U T f_{OUT} fOUT 之间的关系是什么? 设 8254 时钟输入信号频率为 1.91MHz,为产生 25kHz 的方波输出信号,应向计数器装入的计数初值为多少?
N = f C L K / f O U T N=f_{CLK}/f_{OUT} N=fCLK/fOUT N = ( 1.91 × 1 0 6 ) / ( 25 × 1 0 3 ) = 76.4 ≈ 76 N=(1.91×10^6) / (25 × 10^3)=76.4≈76 N=(1.91×106)/(25×103)=76.476

5、说明定时器/计数器 8254 的 GATE 信号在 6 种工作方式下的作用以及与时钟信号 CLK 的关系。
注:考试只要求掌握方式 2 和 3 ,只要知道计数过程中 GATE 信号必须是高电平即可。

6、微型计算机系统定时器/计数器的一个通道定时周期最长是多少?要实现长时间定时,应采取什么措施? 如果采用外扩 8254 定时器/计数器实现长时间定时,应采取哪些措施?
T M A X = 65536 × T C L K = 65536 × 1 1193182 H z = 54.39 ≈ 55 m s T_{MAX}=65536\times T_{CLK} = 65536 \times \frac{1}{1193182Hz}=54.39≈55ms TMAX=65536×TCLK=65536×1193182Hz1=54.3955ms
② 软件计数 ③ (1)减小输入信号的频率 (2)级联

7、对定时器/计数器 8254 进行初始化编程分哪几步进行?
第一步:向控制字寄存器写入方式控制字,对使用的计数器规定其工作方式。第二步:向使用的寄存器写入初值。

◆ 补充内容,计数方式有:有二进制计数和BCD(十进制)计数。计数范围:二进制计数范围是 “0000 ~ FFFFH”,BCD 计数范围:0000H ~ 9999H。

8、设定时器/计数器 8254 的端口地址为 200H~203H,试编写程序段,读出 2 号计数器的内容,并把读出的数据装入寄存器AX。

"如果题目没说,默认控制器端口地址为最高的那个(书上是这么写的)"
MOV 	AL, 80H		// 计数器 2 号的锁存命令(1000xxxx), 10 → 2号, 00 → 锁存, xxxx → 任意.
OUT 	203H, AL 	// 写入控制寄存器

IN 		AL, 202H 	// 读低 8 位 → AL
MOV 	BL, AL 		// AL → BL

IN 		AL, 202H 	// 读高 8 位 → AL
MOV 	BH, AL 		// AL → BH
MOV 	AX, BX		// BX → AX



六、更新内容

① “2.7 对于要求掌握的可屏蔽中断,有以下3种:” 中的 “(IRQ3)” 已经更正为 “(IRQ9)”。 ——2022/1/8 8:30

② “3.1 基本概念” 中例题的第二个空 “5~8” 已更正为 “低”。 ——2022/1/8 8:31

③ “3.4 8250 大题样例” 的代码段已完善。 ——2022/1/8 8:33

④ “2.4 中断向量” 的例题第二个空,把 “54100B” 改为 “53B00H”。 ——2022/1/8 10:32




七、参考附录

[1]《微型计算机原理与接口技术(慕课板)》
清华大学出版社

[2]《微型计算机原理与接口技术实验指导(第2版)》
清华大学出版社


⭐️ ⭐️

距离微机(接口)考试约有20小时    
   2022/01/07 22:01       

猜你喜欢

转载自blog.csdn.net/Wang_Dou_Dou_/article/details/122343722