这篇复习笔记是针对《微型计算机原理与接口技术》后面几章的
前面的汇编复习内容在 “零、学习笔记总目录” 的 “汇编考前复习” 中
? 这篇笔记中可能存在一些错误,欢迎在留言区提出,笔者会及时更正。
所有内容更正、更新请看 “六、更新内容”
零、学习笔记总目录
上半学期所有文章链接:
【计算机与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
OUT 203H, AL
IN AL, 202H
MOV BL, AL
IN AL, 202H
MOV BH, AL
MOV AX, BX
六、更新内容
① “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???????
|