0


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

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

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

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

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


文章目录



零、学习笔记总目录

上半学期所有文章链接:

【计算机与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 中断指令

● **中断指令要求掌握

STI

CLI

INT n

IRET

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

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

▶ **

STI

功能** :使 F 寄存器中

I

标志置

1

,CPU 处于开中断状态。
▶ **

CTI

功能** :使 F 寄存器中

I

标志置

0

,CPU 处于关中断状态。
注意

STI

CLI

只对可屏蔽中断请求有效。

软件中断指令格式

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 控制寄存器:若采用查询方式,则 D3 置

0

;若采用中断方式,则 D3 置

1

;若采用内环自验:则 D4 置

1

;若为正常通信,则 D4 置

0

;使用联络线时: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
  
 
4801​s

解析:
① 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​=4801​s

(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,(通信速率又称波特率,表示每秒钟传送
0

1

代码的位数)

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}
   
  
 TXD、RXD、RTS、CTS、DSR、DTR 的功能是什么?**

答:
① 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
  
 
A9​∼A0​=10000100xxB,那么即端口号为 210H ~ 213H,所以控口地址为 213H。(注:图中未画 

 
  
   
    
     A
    
    
     1
    
   
   
    和
   
   
    
     A
    
    
     0
    
   
  
  
   A_1和A_0
  
 
A1​和A0​,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
  
 
CS和A1​、A0​ 会配合起来使用。

 
  
   
    
     A
    
    
     1
    
   
   
    、
   
   
    
     A
    
    
     0
    
   
  
  
   A_1、A_0
  
 
A1​、A0​ 用来选中哪一个计数器,

 
  
   
    
     
      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.4≈76

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.39≈55ms

② 软件计数 ③ (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       


本文转载自: https://blog.csdn.net/Wang_Dou_Dou_/article/details/122343722
版权归原作者 一支王同学 所有, 如有侵权,请联系我们删除。

“《微型计算机原理与接口技术》期末总复习 &mdash;&mdash; 一篇匆匆忙忙的复习笔记”的评论:

还没有评论