diff --git a/接口与通讯技术/试题册/index.md b/接口与通讯技术/试题册/index.md
new file mode 100644
index 0000000..59a33ab
--- /dev/null
+++ b/接口与通讯技术/试题册/index.md
@@ -0,0 +1,54 @@
+---
+tags:
+ - 接口与通讯技术
+ - 试题册
+ - 索引
+create time: 2026-06-26 22:20
+---
+
+# 接口与通讯技术试题册索引
+
+## 概述
+
+本文档为武昌首义学院及武汉科技大学「接口与通讯技术」课程历年试题合集索引。每份试题包含完整题目及参考答案,涵盖填空、选择、判断、简答、应用分析、程序设计等题型。
+
+> [!tip] 使用建议
+> 建议先通读题目尝试作答,再对照答案检查。重点关注 **8255A 控制字计算** 和 **8253/8254 初始化编程** 两类高频综合题。
+
+## 试题目录
+
+| 序号 | 试卷 | 学校 | 题型概要 |
+|:----:|------|------|----------|
+| 1 | [[试题A]] | 武昌首义学院 | 填空 + 单选 + 简答 + 综合应用设计 |
+| 2 | [[试题B]] | 武汉科技大学 | 填空 + 单选 + 简答 + 应用分析 + 程序设计 |
+| 3 | [[试题C]] | 武汉科技大学 | 填空 + 单选 + 判断 + 程序设计 + 应用题 |
+| 4 | [[试题D]] | 武汉科技大学 | 填空 + 单选 + 判断 + 简答 + 编程题 |
+
+## 知识点分布
+
+```mermaid
+quadrantChart
+ title "试题知识点覆盖"
+ x-axis "低频" --> "高频"
+ y-axis "简单" --> "困难"
+ quadrant-1 "高难度高频"
+ quadrant-2 "高难度低频"
+ quadrant-3 "低难度低频"
+ quadrant-4 "低难度高频"
+ "8255A 并行接口": [0.90, 0.65]
+ "8253/8254 定时器": [0.85, 0.70]
+ "8259A 中断控制": [0.80, 0.75]
+ "8251A 串行通信": [0.65, 0.60]
+ "ADC0809/DAC0832": [0.55, 0.50]
+ "ISA/EISA 总线": [0.40, 0.30]
+ "DMA 8237A": [0.35, 0.65]
+ "8086 CPU 基础": [0.70, 0.40]
+ "RS-232C 标准": [0.45, 0.35]
+ "初始化编程综合": [0.75, 0.85]
+```
+
+## 关联笔记
+- [[接口与通讯技术/8255A可编程并行接口]]
+- [[接口与通讯技术/8254定时计数器]]
+- [[接口与通讯技术/8259A中断控制器]]
+- [[接口与通讯技术/8251A串行通信接口]]
diff --git a/接口与通讯技术/试题册/试题A.md b/接口与通讯技术/试题册/试题A.md
index 5a01a4a..04954a0 100644
--- a/接口与通讯技术/试题册/试题A.md
+++ b/接口与通讯技术/试题册/试题A.md
@@ -3,10 +3,17 @@ tags: [试题, 接口与通讯技术]
create time: 2026-06-26 22:20
---
-# 试题A
+# 试题 A — 武汉科技大学《接口与通讯技术》
## 概述
-武昌首义学院 "接口与通讯技术" 期末考试试卷 A。本试卷包含填空题、单项选择题、简答题和综合应用设计题四大题型,涵盖 8255、8253/8254、8259A、8251 等可编程接口芯片以及 ADC0809、DAC0832 等 A/D 与 D/A 转换器的相关知识。
+
+- **课程**:接口与通讯技术(A 卷)
+- **学校**:武汉科技大学
+- **题型**:填空题、单项选择题、简答题、综合应用设计题
+- **知识点**:8255A、8253/8254、8259A、8251A、ADC0809、DAC0832、RS-232C
+
+> [!tip] 学习建议
+> 本卷综合应用题侧重 8254 定时编程与 ADC0809 查询采样流程设计,建议重点练习可编程芯片的初始化程序编写及控制字计算。
## 正文
@@ -178,7 +185,7 @@ create time: 2026-06-26 22:20
(2)若要在 OUT 端输出频率为 2000Hz 的信号,试编写 8254 初始化程序片段。 (4 分)
-```
+```asm
; 假设 8254 端口地址为 300H ~ 303H
; CLK 输入频率为 2MHz,要求 OUT 输出 2000Hz
; 计数初值 = 2MHz / 2000Hz = 1000
@@ -213,7 +220,7 @@ $$
(2)写出初始化 8254 的程序片段。 (4 分)
-```
+```asm
; 8254 端口地址 300H ~ 303H,CLK0 = 2MHz
; 要求 OUT0 = 640KHz,计数初值 = 3
@@ -235,3 +242,9 @@ OUT DX, AL
> [!note] 备注
> 以上为试题卷部分(第 1 ~ 4 页)。第 5 ~ 7 页为参考答案,已单独收录于试卷文件的参考答案部分。
+
+## 关联笔记
+- [[接口与通讯技术/8255A可编程并行接口]]
+- [[接口与通讯技术/8254定时计数器]]
+- [[接口与通讯技术/8259A中断控制器]]
+- [[接口与通讯技术/8251A串行通信接口]]
diff --git a/接口与通讯技术/试题册/试题B.md b/接口与通讯技术/试题册/试题B.md
index 3224a4a..48ca2eb 100644
--- a/接口与通讯技术/试题册/试题B.md
+++ b/接口与通讯技术/试题册/试题B.md
@@ -3,10 +3,17 @@ tags: [试题, 接口与通讯技术]
create time: 2026-06-26 22:20
---
-# 试题B
+# 试题 B — 武汉科技大学《接口与通讯技术》
## 概述
-武汉科技大学期末考试试卷,考试科目:接口与通讯技术,试卷类型:B卷。本试卷包含填空题、单项选择题、简答题、应用分析题和程序设计题五大题型,满分100分,考试时间120分钟(含附加题)。
+
+- **课程**:接口与通讯技术(B 卷)
+- **学校**:武汉科技大学
+- **题型**:填空题、单项选择题、简答题、应用分析题、程序设计题
+- **知识点**:8255A、8254、8259A、8237A DMA、8251A、RS-232C
+
+> [!tip] 学习建议
+> 本卷侧重 DMA 传输方式与 8237A 控制器分析,以及 8254 方波产生程序设计。建议重点掌握 8255A 方式 1 联络信号时序和 BCD/二进制计数初值的换算。
## 正文
@@ -125,6 +132,9 @@ create time: 2026-06-26 22:20
### 四、应用分析题(共25分)
+> [!question] 解题思路
+> 应用分析题需要理解芯片的工作原理和时序,建议先分析控制字各位的含义,再逐步推导初始化程序。
+
1. **(本题10分)** 在微型计算机系统中,8237A的地址线A3~A0与CPU的地址总线A3~A0连接,地址允许信号AEN由译码器输出控制。当前CPU的地址线A9A8A7A6A5=11011,译码器输出为低电平。试回答:
- (1) 8237A各通道DMA请求优先权排列顺序如何?
- (2) 若要禁止所有通道的DMA请求,应如何写入命令字?
diff --git a/接口与通讯技术/试题册/试题C.md b/接口与通讯技术/试题册/试题C.md
index 096d760..e5ea0c2 100644
--- a/接口与通讯技术/试题册/试题C.md
+++ b/接口与通讯技术/试题册/试题C.md
@@ -3,10 +3,17 @@ tags: [试题, 接口与通讯技术]
create time: 2026-06-26 22:20
---
-# 试题C
+# 试题 C — 武汉科技大学《接口与通讯技术》
## 概述
-武汉科技大学 "接口与通讯技术" 期末考试试卷(试卷类型 A)。本试卷包含填空题、单项选择题、判断题、程序设计题和应用题五大题型,涵盖 8253/8254、8255、8259A 等可编程接口芯片、8086 CPU 基础知识以及 A/D 转换(ADC0809)等内容。
+
+- **课程**:接口与通讯技术(A 卷)
+- **学校**:武汉科技大学
+- **题型**:填空题、单项选择题、判断题、程序设计题、应用题
+- **知识点**:8253/8254、8255A、8259A、ISA/EISA 总线、ADC0809、8086 中断系统
+
+> [!tip] 学习建议
+> 本卷判断题涉及 ISA/EISA 总线细节,程序设计题覆盖 8253 方波与 255A 端口输出。建议重点理解 8086 中断向量表布局和 8259A 初始化流程。
## 正文
@@ -130,12 +137,116 @@ create time: 2026-06-26 22:20
1. 在一个数据段中定义了如下字符串,请编程序在字符串中查找第一个 'A' 字符并统计 'A' 的个数。已知字符串首地址为 STRING,字符串长度为 100。
+ **答:**
+
+ ```asm
+ DATA SEGMENT
+ STRING DB 'Hello, Assembly language programming...', 0 ; 示例字符串
+ LEN EQU 100 ; 字符串长度
+ COUNT DB 0 ; 统计 'A' 的个数
+ DATA ENDS
+
+ CODE SEGMENT
+ ASSUME CS:CODE, DS:DATA
+
+ START:
+ MOV AX, DATA
+ MOV DS, AX
+
+ LEA SI, STRING ; SI 指向字符串首地址
+ MOV CX, LEN ; 计数器 = 字符串长度
+ MOV BL, 0 ; BL 存储 'A' 的出现次数
+ MOV DL, 'A' ; DL 存储要查找的字符
+
+ SCAN:
+ MOV AL, [SI] ; 取当前字符
+ CMP AL, DL ; 与 'A' 比较
+ JNE NEXT ; 不相等则跳过
+ INC BL ; 相等则计数加 1
+
+ NEXT:
+ INC SI ; 指向下一个字符
+ LOOP SCAN ; CX 减 1,未到 0 则继续
+
+ MOV COUNT, BL ; 保存统计结果
+
+ MOV AH, 4CH
+ INT 21H ; 返回 DOS
+ CODE ENDS
+ END START
+ ```
+
2. 用 8253 产生方波,方波频率为 1kHz,已知输入时钟频率为 1.19318MHz,写出初始化程序。端口地址为 40H~43H。
+ **答:**
+
+ 计数初值 = 1193180 / 1000 ≈ 1193 = 04A9H
+
+ 控制字:计数器 0、先低后高、方式 3(方波)、二进制计数 → 36H
+
+ ```asm
+ MOV AL, 36H ; 控制字:计数器0,方式3,二进制计数
+ OUT 43H, AL ; 写入控制寄存器
+
+ MOV AX, 04A9H ; 计数初值 = 1193
+ OUT 40H, AL ; 先写低字节
+ MOV AL, AH
+ OUT 40H, AL ; 再写高字节
+ ```
+
3. 用 8255 的端口 A 输出方波信号(A₀ = 0),要求方波频率为 1kHz,写出初始化程序。已知 8255 端口地址为 60H~63H。
+ **答:**
+
+ 8255 控制字:A 口方式 0 输出 → 80H
+
+ 方波周期 = 1/1kHz = 1ms,高/低电平各 0.5ms。通过软件延时实现。
+
+ ```asm
+ ; 8255 初始化
+ MOV AL, 80H ; 控制字:A口方式0输出
+ OUT 63H, AL ; 写入控制寄存器
+
+ ; 产生方波
+ WAVE:
+ MOV AL, 01H ; PA0 = 1(高电平)
+ OUT 60H, AL
+
+ MOV CX, 250 ; 延时 0.5ms(根据时钟频率调整)
+ DELAY1:
+ LOOP DELAY1
+
+ MOV AL, 00H ; PA0 = 0(低电平)
+ OUT 60H, AL
+
+ MOV CX, 250 ; 延时 0.5ms
+ DELAY2:
+ LOOP DELAY2
+
+ JMP WAVE ; 循环产生方波
+ ```
+
4. 用 8253 的计数器 0 输出频率为 1kHz 的方波,已知输入时钟频率为 1.19318MHz,写出初始化程序。端口地址为 40H~43H。
+ **答:**
+
+ > [!note] 说明
+ > 本题与第 2 题参数相同,考查 8253 方式 3 方波产生的初始化编程。
+
+ 计数初值 = 1193180 / 1000 ≈ 1193 = 04A9H
+
+ 控制字 = 36H(计数器 0、先低后高、方式 3、二进制)
+
+ ```asm
+ MOV AL, 36H ; 控制字:计数器0,方式3,二进制计数
+ OUT 43H, AL ; 写入控制寄存器
+
+ MOV AX, 04A9H ; 计数初值 = 1193
+ OUT 40H, AL ; 先写低字节
+ MOV AL, AH
+ OUT 40H, AL ; 再写高字节
+ ```
+
### 五、应用题(共 20 分)
1. **(5 分)** 某 CPU 通过锁存器与 LED 显示器(共阴极接法)相连,已知锁存器端口地址为 200H,现要求显示数字 '5'(即 7 段码为 6DH),请编写完整的汇编程序。
@@ -175,3 +286,8 @@ create time: 2026-06-26 22:20
> [!note] 备注
> 以上为试题卷部分(第 1 ~ 3 页)。第 4 ~ 6 页为参考答案("接口与通讯技术"期末考试 A 卷参考答案),已单独收录于本试题册的参考答案文件中。
+
+## 关联笔记
+- [[接口与通讯技术/8255A可编程并行接口]]
+- [[接口与通讯技术/8254定时计数器]]
+- [[接口与通讯技术/8259A中断控制器]]
diff --git a/接口与通讯技术/试题册/试题D.md b/接口与通讯技术/试题册/试题D.md
index 397fcec..df07f2e 100644
--- a/接口与通讯技术/试题册/试题D.md
+++ b/接口与通讯技术/试题册/试题D.md
@@ -3,120 +3,250 @@ tags: [试题, 接口与通讯技术]
create time: 2026-06-26 22:20
---
-# 试题D
+# 试题 D — 武汉科技大学《接口与通讯技术》
## 概述
-"接口与通讯技术"期末考试试卷(B卷),适用于计算机及相关专业,考试形式为闭卷笔试。
+
+- **课程**:接口与通讯技术(B 卷)
+- **学校**:武汉科技大学
+- **题型**:填空题、单项选择题、判断题、简答题、编程题
+- **知识点**:8255A、8253、8259A、8251A、ADC0809、DAC、串行通信
+
+> [!tip] 学习建议
+> 本卷填空和判断题覆盖面广,编程题涉及 8251A 异步通信初始化和 8253 方波产生。建议重点练习 8255A 控制字计算与 8251A 工作方式字编写。
## 正文
-课程名称:接口与通讯技术 专业年级:
-学号: 姓名:
-试卷类型:A 卷( )B 卷(√)C 卷( )考试时间:120 分钟
-
### 一、填空题(每空1分,共26分)
-1. 已知 8255A 的 A 口地址为 20H,则命令口地址为( )。
+1. 已知 8255A 的 A 口地址为 20H,则命令口地址为( **23H** )。
-2. ADC0809 由模/数转换部分和( )两部分组成。启动转换的信号为( )。
+2. ADC0809 由模/数转换部分和( **多路模拟开关(地址锁存与译码)** )两部分组成。启动转换的信号为( **START 上升沿** )。
-3. 8253 有( )个独立的计数器,每个计数器有( )种工作方式。
+3. 8253 有( **3** )个独立的计数器,每个计数器有( **6** )种工作方式。
-4. 异步通信中一帧数据格式由起始位、数据位、( )和停止位组成。
+4. 异步通信中一帧数据格式由起始位、数据位、( **奇偶校验位** )和停止位组成。
-5. 8255A 的端口 A 可工作在( )方式,端口 B 可工作在( )方式,端口 C 分为两个( )位口。
+5. 8255A 的端口 A 可工作在( **方式 0、方式 1、方式 2** )方式,端口 B 可工作在( **方式 0、方式 1** )方式,端口 C 分为两个( **4** )位口。
-6. 8251A 的工作方式控制字的 D7D6 = 01 表示波特率因子为( ),D1D0 = 11 表示数据位为( )位。
+6. 8251A 的工作方式控制字的 D7D6 = 01 表示波特率因子为( **1** ),D1D0 = 11 表示数据位为( **8** )位。
-7. 已知 8255A 的命令口地址为 21H,则 A 口地址为( ),B 口地址为( ),C 口地址为( )。
+7. 已知 8255A 的命令口地址为 21H,则 A 口地址为( **20H** ),B 口地址为( **22H** ),C 口地址为( **23H** )。
-8. 8251A 有两个控制字,分别是( )和( )。当 8251A 硬件复位后,CPU 需要先写入( ),再写入( )。
+8. 8251A 有两个控制字,分别是( **工作方式控制字** )和( **命令控制字** )。当 8251A 硬件复位后,CPU 需要先写入( **工作方式控制字** ),再写入( **命令控制字** )。
-9. 当 8255A 的 A 口工作在方式 1 输入时,C 口的( )线作为联络信号。
+9. 当 8255A 的 A 口工作在方式 1 输入时,C 口的( **PC₃~PC₅** )线作为联络信号。
-10. 8253 的计数器 0 工作在方式 3(方波发生器),若 CLK0 = 1MHz,要求输出频率为 1kHz 的方波,则计数初值为( )。
+10. 8253 的计数器 0 工作在方式 3(方波发生器),若 CLK0 = 1MHz,要求输出频率为 1kHz 的方波,则计数初值为( **1000** )。
### 二、单项选择题(每小题2分,共26分)
-1. 执行 8086 指令 MOV AL, [BX+SI+100H] 后,AL 的内容是( )。
+1. 执行 8086 指令 MOV AL, [BX+SI+100H] 后,AL 的内容是( **C** )。
A. 100H B. 200H C. 300H D. 400H
-2. 将累加器 AL 的内容乘以 2 的汇编语言指令是( )。
+2. 将累加器 AL 的内容乘以 2 的汇编语言指令是( **C** )。
A. AND AL, 10H B. MUL 2 C. SHL AL, 1 D. ROR AL, 1
-3. 8259A 是一种( )芯片。
+3. 8259A 是一种( **A** )芯片。
A. 中断控制 B. DMA 控制 C. 定时/计数 D. 并行通信
-4. 8253 某计数器的输入 CLK 频率为 1MHz,输出 OUT 频率为 100Hz,则计数初值为( )。
+4. 8253 某计数器的输入 CLK 频率为 1MHz,输出 OUT 频率为 100Hz,则计数初值为( **B** )。
A. 1000 B. 10000 C. 100 D. 10
-5. 某串行异步通信的数据帧格式为 1 位起始位、8 位数据位、1 位校验位、2 位停止位,波特率为 2400bps,则每秒最多可传输( )个字符。
+5. 某串行异步通信的数据帧格式为 1 位起始位、8 位数据位、1 位校验位、2 位停止位,波特率为 2400bps,则每秒最多可传输( **A** )个字符。
A. 120 B. 200 C. 240 D. 300
-6. 在 8253 的方式控制字中,若 B1B0 = 10,表示选择( )号计数器。
+6. 在 8253 的方式控制字中,若 B1B0 = 10,表示选择( **C** )号计数器。
A. 0 B. 1 C. 2 D. 3
-7. 8253 有 3 种计数脉冲信号输入方式,其中,( )不是其工作方式。
+7. 8253 有 3 种计数脉冲信号输入方式,其中,( **D** )不是其工作方式。
A. 硬件启动 B. 软件启动 C. 脉冲启动 D. 级联启动
-8. 执行 MOV AL, [2000H] 后,其操作数的寻址方式为( )。
+8. 执行 MOV AL, [2000H] 后,其操作数的寻址方式为( **B** )。
A. 立即寻址 B. 直接寻址 C. 寄存器间接寻址 D. 基址变址寻址
-9. DAC 可以将( )变为模拟量送至外部设备。
+9. DAC 可以将( **C** )变为模拟量送至外部设备。
A. 程序 B. 指令 C. 数据 D. 声音
-10. 8255A 的端口 A 工作在方式 1 输入时,中断允许触发器 INTE 是通过( )来控制的。
+10. 8255A 的端口 A 工作在方式 1 输入时,中断允许触发器 INTE 是通过( **A** )来控制的。
A. PC4 B. PC2 C. PC6 D. PC0
-11. 按照串行数据的同步方式,串行通信可分为( )和同步通信两类。
+11. 按照串行数据的同步方式,串行通信可分为( **D** )和同步通信两类。
A. 单工通信 B. 双工通信 C. 半双工通信 D. 异步通信
-12. 8086 CPU 响应中断后,自动将( )压入堆栈。
+12. 8086 CPU 响应中断后,自动将( **A** )压入堆栈。
A. 标志寄存器和 CS、IP B. CS C. IP D. 标志寄存器
+> [!tip]- 单选题参考答案
+> 1. **C**(300H,基址变址寻址 + 偏移量,具体取决于存储器内容)
+> 2. **C**(SHL AL, 1 左移一位相当于乘以 2)
+> 3. **A**(8259A 是可编程中断控制器)
+> 4. **B**(计数初值 = 1MHz / 100Hz = 10000)
+> 5. **A**(每帧 12 位,2400 / 12 = 200 字符/秒)
+> 6. **C**(B₁B₀ = 10 选择 2 号计数器)
+> 7. **D**(8253 支持软件启动和硬件启动,级联启动不是其工作方式)
+> 8. **B**(直接寻址,地址以立即数形式出现在指令中)
+> 9. **C**(DAC 将数字量变为模拟量)
+> 10. **A**(INTE_A 由 PC₄ 置位/复位控制)
+> 11. **D**(串行通信分为异步通信和同步通信)
+> 12. **A**(8086 响应中断后自动压入标志寄存器、CS 和 IP)
+
### 三、判断题(每小题2分,共26分)(正确打√,错误打x)
-1. 8255A 的三个端口都可以通过指令改变其工作方式。( )
-2. 8251A 通过引脚 RTS 输出低电平,请求外设准备发送数据。( )
-3. 在 8253 的方式控制字中,若 B1B0 = 11,表示选择 3 号计数器。( )
-4. 在串行通信中,每个字符的传送都需要起始位和停止位。( )
-5. 8086 CPU 响应中断后,不需要保存标志寄存器内容。( )
-6. 8253 的计数器采用递减方式计数。( )
-7. DMA 方式的数据传送不需要 CPU 介入。( )
-8. 异步通信中,波特率只取决于发送端,与接收端无关。( )
-9. 8251A 收到 Break 信号后,向 CPU 发送 Break 中断。( )
-10. 8259A 在全嵌套方式中,优先级最低的中断源为 IRQ7。( )
-11. ADC0809 是一种数/模转换芯片。( )
-12. 8259A 的中断类型号由外设中断源通过数据总线送入。( )
-13. 8255A 工作在方式 0 时,基本输入/输出需要用联络信号。( )
-14. DMA 方式的数据传送需要 CPU 执行中断服务程序。( )
+1. 8255A 的三个端口都可以通过指令改变其工作方式。( **×** )
+2. 8251A 通过引脚 RTS 输出低电平,请求外设准备发送数据。( **×** )
+3. 在 8253 的方式控制字中,若 B1B0 = 11,表示选择 3 号计数器。( **×** )
+4. 在串行通信中,每个字符的传送都需要起始位和停止位。( **×** )
+5. 8086 CPU 响应中断后,不需要保存标志寄存器内容。( **√** )
+6. 8253 的计数器采用递减方式计数。( **√** )
+7. DMA 方式的数据传送不需要 CPU 介入。( **×** )
+8. 异步通信中,波特率只取决于发送端,与接收端无关。( **×** )
+9. 8251A 收到 Break 信号后,向 CPU 发送 Break 中断。( **√** )
+10. 8259A 在全嵌套方式中,优先级最低的中断源为 IRQ7。( **√** )
+11. ADC0809 是一种数/模转换芯片。( **×** )
+12. 8259A 的中断类型号由外设中断源通过数据总线送入。( **×** )
+13. 8255A 工作在方式 0 时,基本输入/输出需要用联络信号。( **×** )
+14. DMA 方式的数据传送需要 CPU 执行中断服务程序。( **×** )
+
+> [!tip]- 判断题参考答案
+> 1. **×**(只有通过写方式控制字才能改变,且 A 组和 B 组分别控制)
+> 2. **×**(RTS 是请求发送,用于请求对方准备接收数据)
+> 3. **×**(8253 只有 3 个计数器(0、1、2),B₁B₀ = 11 用于读回命令,不是选择 3 号计数器)
+> 4. **×**(同步通信中不需要起始位和停止位)
+> 5. **√**(8086 响应中断后自动将标志寄存器、CS、IP 压入堆栈,不需要程序保存)
+> 6. **√**(8253 的计数器采用递减方式计数)
+> 7. **×**(DMA 方式的数据传送不需要 CPU 逐字节介入,但初始化和结束处理仍需 CPU)
+> 8. **×**(发送端和接收端必须使用相同的波特率)
+> 9. **√**(8251A 收到 Break 信号后会产生中断请求)
+> 10. **√**(8259A 全嵌套方式中 IR0 优先级最高,IRQ7 优先级最低)
+> 11. **×**(ADC0809 是模/数转换芯片,不是数/模转换芯片)
+> 12. **×**(8259A 的中断类型号由 ICW2 初始化时设定)
+> 13. **×**(方式 0 是基本输入/输出,无需联络信号)
+> 14. **×**(DMA 方式由 DMA 控制器直接控制数据传送,不需要 CPU 执行中断服务程序)
### 四、简答题(每小题5分,共20分)
1. 简述 8251A 芯片的主要功能及其在串行通信中的作用。
+ **答:** 8251A 是 Intel 公司生产的可编程串行通信接口芯片,主要功能包括:
+ - 支持异步和同步两种通信方式
+ - 实现数据的串/并转换和并/串转换
+ - 可编程选择波特率因子(1、16、64)、数据位长度(5~8 位)、停止位数和校验方式
+ - 具有独立的发送器和接收器,支持全双工通信
+ - 提供 TXRDY(发送准备好)、RXRDY(接收准备好)等状态信号供 CPU 查询或中断使用
+
+ 在串行通信中,8251A 作为 CPU 与串行外设之间的桥梁,负责将 CPU 输出的并行数据转换为串行格式发送出去,同时将接收到的串行数据转换为并行格式送入 CPU。
+
2. 什么是中断向量表?8086 的中断向量表有什么特点?
+ **答:** 中断向量表是存放中断服务程序入口地址的一段连续内存区域。
+
+ 8086 中断向量表的特点:
+ - 位于内存最低地址 00000H~003FFH,共 1KB 空间
+ - 可容纳 256 个中断类型(类型号 0~255),每个类型占 4 个字节
+ - 每个表项中低 2 字节存放中断服务程序的偏移地址(IP),高 2 字节存放段地址(CS)
+ - 中断类型号 × 4 = 该中断向量在表中的起始地址
+ - 8086 响应中断时,根据中断类型号自动从向量表中取出入口地址装入 CS:IP
+
3. 比较 8253 的 6 种工作方式,说明方式 2 和方式 5 的主要区别。
+ **答:**
+
+ | 特性 | 方式 2(频率发生器) | 方式 5(硬件触发选通) |
+ |------|----------------------|------------------------|
+ | 触发方式 | 软件触发(写入初值后自动开始) | 硬件触发(GATE 上升沿启动) |
+ | 输出波形 | 每隔 N 个 CLK 输出 1 个 CLK 宽度的负脉冲 | 触发后输出 1 个 CLK 宽度的负脉冲 |
+ | 自动重装 | 是,计数到 0 后自动重装初值并继续 | 否,单次触发,需再次触发才重新输出 |
+ | 典型应用 | 产生固定频率的连续脉冲(分频器) | 产生单次延迟脉冲(单稳态触发器) |
+ | GATE 作用 | 低电平暂停计数,上升沿重新触发 | 上升沿触发计数 |
+
+ 主要区别:方式 2 是连续工作的频率发生器,自动重复输出脉冲;方式 5 是硬件触发的单次脉冲发生器,每次需要 GATE 上升沿触发。
+
4. 在 8259A 中,什么是优先级判别?常用的优先级判别方法有哪几种?
+ **答:** 优先级判别是指当 8259A 同时收到多个中断请求时,通过内部的优先级判别器(PR)判断哪个中断请求的优先级最高,决定是否向 CPU 发出中断信号。
+
+ 常用的优先级判别方法:
+ - **完全嵌套方式(固定优先级)**:IR0 优先级最高,IR7 优先级最低,优先级固定不变
+ - **轮换优先级方式**:又分为自动轮换和指定轮换两种,当前被服务的中断源在服务结束后其优先级自动降为最低,实现各中断源轮流获得服务
+ - **特殊全嵌套方式**:用于 8259A 级联的主片,允许同级中断请求再次中断当前服务程序
+
### 五、编程题(共22分)
1. (10 分)8086 系统中,将 8251A 初始化为异步通信方式,波特率因子为 16,每个字符 8 位数据位、1 位停止位、偶校验,波特率为 2400bps。已知 8251A 的端口地址为 04F0H~04F3H,写出完整的初始化程序。
+ **答:**
+
+ 工作方式控制字分析:
+ - D7D6 = 01:波特率因子 ×16
+ - D5D4 = 00:不使用同步字符
+ - D3D2 = 11:偶校验
+ - D1D0 = 11:8 位数据位,1 位停止位
+
+ 工作方式控制字 = 0100 1111B = 4FH
+
+ 命令控制字分析:允许发送和接收,清除出错标志
+
+ 命令控制字 = 0001 0101B = 15H
+
+ ```asm
+ ; 8251A 初始化程序
+ ; 端口地址:04F0H(数据口),04F2H(控制口/状态口)
+
+ MOV DX, 04F2H ; 控制口地址
+ MOV AL, 00H ; 先写入 00
+ OUT DX, AL
+ OUT DX, AL ; 连续写 3 次任意值,确保 8251A 复位
+ OUT DX, AL
+ MOV AL, 40H ; 内部复位命令
+ OUT DX, AL
+
+ MOV AL, 4FH ; 工作方式控制字:波特率×16,偶校验,8位数据,1位停止
+ OUT DX, AL
+
+ MOV AL, 15H ; 命令控制字:允许收发,清除错误标志
+ OUT DX, AL
+ ```
+
2. (12 分)已知 8253 的时钟频率为 1MHz,要产生频率为 1kHz 的方波输出。8253 的端口地址为 20H~23H。
(1) 计算计数初值。
(2) 写出 8253 的初始化程序(计数器 0 工作在方式 3)。
+
+ **答:**
+
+ **(1)** 计数初值 = CLK 频率 / 输出频率 = 1MHz / 1kHz = 1000 = 03E8H
+
+ **(2)** 控制字分析:计数器 0、先读写低字节再读写高字节、方式 3、二进制计数
+
+ 控制字 = 0011 0110B = 36H
+
+ ```asm
+ ; 8253 初始化程序
+ ; 端口地址:20H(计数器 0)、23H(控制口)
+
+ MOV AL, 36H ; 控制字:计数器0,方式3,二进制计数
+ OUT 23H, AL ; 写入控制寄存器
+
+ MOV AX, 03E8H ; 计数初值 = 1000
+ OUT 20H, AL ; 先写低字节
+ MOV AL, AH
+ OUT 20H, AL ; 再写高字节
+ ```
+
+## 关联笔记
+- [[接口与通讯技术/8255A可编程并行接口]]
+- [[接口与通讯技术/8254定时计数器]]
+- [[接口与通讯技术/8259A中断控制器]]
+- [[接口与通讯技术/8251A串行通信接口]]