vault backup: 2026-06-28 16:34:33
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
---
|
||||
tags:
|
||||
- 接口与通讯技术
|
||||
- 82C37A
|
||||
- DMA
|
||||
- 选择题
|
||||
- 重点复习
|
||||
create time: 2026-06-28 16:30
|
||||
---
|
||||
|
||||
# DMA 控制器 82C37A 选择题考点
|
||||
|
||||
## 概述
|
||||
|
||||
82C37A 是选择题中出现频率最高的芯片(3套试卷共考9题)。核心考点围绕**状态周期、握手信号、传输方式、初始化方式字、字节计数器**五个维度展开。
|
||||
|
||||
## 正文
|
||||
|
||||
### 1. DMA 状态周期(S1~S4)
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
S1["S1<br/>输出地址高8位<br/>仅高8位变化时才插入"] --> S2["S2<br/>输出地址低8位<br/>读/写控制有效"] --> S3["S3<br/>数据传输"] --> S4["S4<br/>周期结束"]
|
||||
style S1 fill:#ffd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
> [!important] 高频考点
|
||||
> **S1 状态只有在存储器地址的高 8 位发生变化时才会出现。** 地址高8位不变时可跳过 S1,提高传输效率。
|
||||
|
||||
### 2. DMA 握手信号(4个关键信号)
|
||||
|
||||
| 信号 | 方向 | 含义 | 考试角度 |
|
||||
|------|------|------|----------|
|
||||
| **DREQ** | I/O → DMA | I/O 设备**请求** DMA 传输 | 请求源 |
|
||||
| **HRQ** | DMA → CPU | DMA **请求**占用总线 | 尚未获得总线 |
|
||||
| **HLDA** | CPU → DMA | CPU **确认**交出总线 | **标志 DMA 已获得总线控制权** ✅ |
|
||||
| **DACK** | DMA → I/O | DMA **确认**选中该 I/O | **表示该 I/O 被选中** ✅ |
|
||||
|
||||
> [!question] 思考题
|
||||
> HRQ 和 HLDA 有什么区别?为什么不能只靠 HRQ 判断 DMA 获得了总线?
|
||||
>
|
||||
> 答:HRQ 是 DMA 的"请求",HLDA 是 CPU 的"应答"。只有 CPU 发出 HLDA 后,DMA 才真正获得总线控制权。HRQ 有效只表示"我想要",HLDA 有效才表示"你得到了"。
|
||||
|
||||
### 3. DMA 四种传输方式
|
||||
|
||||
| 方式 | 释放总线条件 | 适用场景 |
|
||||
|------|-------------|----------|
|
||||
| **单字节方式** | 每传完 **1 个字节**立即释放 | CPU 需频繁介入 |
|
||||
| **请求方式** | **DREQ 无效时释放**(DREQ 有效则连续传) | I/O 速度不确定 |
|
||||
| **块方式** | 整个数据块传完才释放 | 大批量连续传输 |
|
||||
| 级联方式 | 用于多片级联 | 扩展 DMA 通道 |
|
||||
|
||||
> [!tip] 解题口诀
|
||||
> - 题干出现"每操作一个数据就释放"→ **单字节方式**
|
||||
> - 题干出现"DREQ 是否维持有效决定是否释放"→ **请求方式**
|
||||
|
||||
### 4. 初始化方式字:DMA 读 vs DMA 写
|
||||
|
||||
判断依据:**以存储器的视角**决定读/写。
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["数据采集<br/>外设→存储器"] --> B["对存储器是写操作<br/>→ DMA 写"]
|
||||
C["数据输出<br/>存储器→外设"] --> D["对存储器是读操作<br/>→ DMA 读"]
|
||||
style B fill:#dfd,stroke:#333,color:#000
|
||||
style D fill:#dfd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
> [!example] 真题
|
||||
> 采用 DMA 方式进行数据采集(外设→存储器),对 82C37A 初始化时应按照 **DMA 写** 写入方式字。
|
||||
|
||||
### 5. 字节计数器
|
||||
|
||||
82C37A 的字节计数器为 **8 位**,范围 0~255:
|
||||
|
||||
$$\text{实际传输字节数} = \text{装载值} + 1$$
|
||||
|
||||
- 传 256 个数据 → 装载值 = 256 − 1 = **0FFH**
|
||||
- 传 1 个数据 → 装载值 = **00H**
|
||||
|
||||
> [!warning] 易错点
|
||||
> 计数器是"减1计数器",从装载值递减到 0 时传输结束,共传输 N+1 个字节。不是装载 N 就传 N 个!
|
||||
|
||||
## 关联笔记
|
||||
|
||||
- [[接口与通讯技术/复习文档/82C37A DMA控制器]]
|
||||
- [[DMA控制器82C37A|填空题专题:82C37A DMA控制器]]
|
||||
- [[中断控制器82C59A 选择题考点]]
|
||||
@@ -0,0 +1,131 @@
|
||||
---
|
||||
tags:
|
||||
- 接口与通讯技术
|
||||
- x86
|
||||
- 指令系统
|
||||
- 寄存器
|
||||
- 选择题
|
||||
- 重点复习
|
||||
create time: 2026-06-28 16:30
|
||||
---
|
||||
|
||||
# x86 指令系统与寄存器 选择题考点
|
||||
|
||||
## 概述
|
||||
|
||||
x86 指令系统与寄存器在 3 套试卷中共出现 7 题,是考点最分散但也最有规律的部分。核心围绕**段寄存器功能、寻址方式、隐含寄存器、标志位计算、位操作指令、堆栈操作**六个方向。
|
||||
|
||||
## 正文
|
||||
|
||||
### 1. 段寄存器功能分工
|
||||
|
||||
| 段寄存器 | 全称 | 用途 | 关联指令/操作 |
|
||||
|----------|------|------|---------------|
|
||||
| **CS** | Code Segment | 代码段 | 取指令 |
|
||||
| **DS** | Data Segment | **数据段(默认数据段基址)** | 访问变量 |
|
||||
| **SS** | Stack Segment | 堆栈段 | PUSH/POP/CALL |
|
||||
| **ES** | Extra Segment | 附加段 | 串操作目的段 |
|
||||
|
||||
> [!important] 高频考点
|
||||
> **DS(数据段寄存器)用于存放当前数据段段首址。** 访问内存变量时默认使用 DS 作为段基址。
|
||||
|
||||
### 2. 寻址方式辨析
|
||||
|
||||
| 寻址方式 | 示例 | 操作数来源 |
|
||||
|----------|------|-----------|
|
||||
| 寄存器 | `MOV AX, BX` | 寄存器中 |
|
||||
| 寄存器间接 | `MOV AX, [BX]` | 内存,地址在寄存器 |
|
||||
| 变址 | `MOV AX, [SI+10H]` | 内存,SI/DI + 偏移 |
|
||||
| **立即数** | `MOV AX, 1234H` | **指令中直接编码的常数** |
|
||||
| **I/O 间接** | `IN AL, DX` | **I/O 端口地址在 DX 中** |
|
||||
|
||||
> [!question] 思考题
|
||||
> `MOV AX, 1234H` 中 1234H 是立即数,`MOV AX, [1234H]` 中 1234H 是什么?
|
||||
>
|
||||
> 答:后者是**直接寻址**,1234H 是内存地址,CPU 会去访问该内存单元取数据。方括号 `[]` 是关键区别。
|
||||
|
||||
### 3. 隐含寄存器
|
||||
|
||||
| 指令 | 隐含使用的寄存器 | 作用 |
|
||||
|------|:---:|------|
|
||||
| **LOOP** | **CX** | 循环计数器,每次减 1,为 0 时退出 |
|
||||
| I/O 间接寻址 | **DX** | 存放 16 位 I/O 端口地址 |
|
||||
| MUL/DIV | AX | 乘法被乘数/除法被除数 |
|
||||
| XLAT | BX + AL | 查表基址 + 偏移 |
|
||||
|
||||
> [!tip] 记忆规律
|
||||
> - **L**OOP → **C**X(都是"循环"相关)
|
||||
> - I/O 间接 → **D**X(**D**ata e**X**change,数据交换端口)
|
||||
|
||||
### 4. 标志位计算(ADD 指令)
|
||||
|
||||
以 `ADD AL, BL` 为例:
|
||||
|
||||
```
|
||||
AL = 58H = 0101 1000
|
||||
BL = 96H = 1001 0110
|
||||
────────────────────
|
||||
1110 1110 = EEH
|
||||
```
|
||||
|
||||
| 标志位 | 判断规则 | 本例结果 |
|
||||
|--------|----------|----------|
|
||||
| **SF**(符号标志) | 结果最高位 D7 | D7=1 → **SF=1** |
|
||||
| **ZF**(零标志) | 结果是否为 0 | EEH≠0 → **ZF=0** |
|
||||
| CF(进位标志) | 最高位是否有进位 | 无进位 → CF=0 |
|
||||
| OF(溢出标志) | 两个同号数相加结果变号 | 58H正+96H负→不同号,OF=0 |
|
||||
|
||||
### 5. 位操作指令
|
||||
|
||||
**通用规则:AND 清零,OR 置位,XOR 取反。**
|
||||
|
||||
| 目标 | 指令模板 | 掩码构造规则 |
|
||||
|------|----------|-------------|
|
||||
| 某位清零 | `AND AL, mask` | 目标位=0,其余=1 |
|
||||
| 某位置位 | `OR AL, mask` | 目标位=1,其余=0 |
|
||||
| 某位取反 | `XOR AL, mask` | 目标位=1,其余=0 |
|
||||
|
||||
> [!example] 真题
|
||||
> 将 AL 的 D1 位清零,其他位不变。D1 对应掩码 = `1111 1101` = **0FDH**。
|
||||
> 答案:**AND AL, 0FDH**
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["位操作需求"] --> B["清零某位"]
|
||||
A --> C["置位某位"]
|
||||
A --> D["取反某位"]
|
||||
B --> B1["AND 指令<br/>目标位掩码=0"]
|
||||
C --> C1["OR 指令<br/>目标位掩码=1"]
|
||||
D --> D1["XOR 指令<br/>目标位掩码=1"]
|
||||
style B1 fill:#fdd,stroke:#333,color:#000
|
||||
style C1 fill:#dfd,stroke:#333,color:#000
|
||||
style D1 fill:#ffd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
### 6. 堆栈操作 POP
|
||||
|
||||
POP 指令执行步骤(以 `POP AX` 为例):
|
||||
|
||||
```
|
||||
栈顶物理地址 = SS × 10H + SP
|
||||
|
||||
POP AX:
|
||||
① AL ← [SS:SP] (低地址 → 低字节)
|
||||
SP ← SP + 1
|
||||
② AH ← [SS:SP] (高地址 → 高字节)
|
||||
SP ← SP + 1
|
||||
```
|
||||
|
||||
> [!example] 真题
|
||||
> (SS)=1000H, (SP)=1234H, (11234H)=12H, (11235H)=34H
|
||||
> 栈顶地址 = 1000H × 10H + 1234H = **11234H**
|
||||
> POP AX: AL=12H, AH=34H → **AX = 3412H**
|
||||
|
||||
> [!warning] 易错点
|
||||
> POP 弹出顺序:**先弹低字节给低寄存器,再弹高字节给高寄存器**(小端序)。不要搞反 AH 和 AL 的取值!
|
||||
|
||||
## 关联笔记
|
||||
|
||||
- [[IO端口编址方式|填空题专题:IO端口编址方式]]
|
||||
- [[寄存器与指令系统|填空题专题:寄存器与指令系统]]
|
||||
- [[小端序与存储器组织 选择题考点]]
|
||||
@@ -0,0 +1,92 @@
|
||||
---
|
||||
tags:
|
||||
- 接口与通讯技术
|
||||
- 82C59A
|
||||
- 中断
|
||||
- 选择题
|
||||
- 重点复习
|
||||
create time: 2026-06-28 16:30
|
||||
---
|
||||
|
||||
# 中断控制器 82C59A 选择题考点
|
||||
|
||||
## 概述
|
||||
|
||||
82C59A 在 3 套试卷中共出现 4 题,核心考点集中在**初始化命令字功能区分**和**中断类型号计算**。记住"每个 ICW 管什么"即可覆盖全部考题。
|
||||
|
||||
## 正文
|
||||
|
||||
### 1. 四个初始化命令字功能速查
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["82C59A<br/>初始化命令字"] --> B["ICW1<br/>基本模式<br/>单片/级联、触发方式"]
|
||||
A --> C["ICW2<br/>中断类型号高5位"]
|
||||
A --> D["ICW3<br/>级联标识<br/>仅级联时需要"]
|
||||
A --> E["ICW4<br/>工作方式<br/>8086模式、EOI方式"]
|
||||
style B fill:#eef,stroke:#333,color:#000
|
||||
style C fill:#ffd,stroke:#333,color:#000
|
||||
style D fill:#fdd,stroke:#333,color:#000
|
||||
style E fill:#dfd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
| 命令字 | 功能 | 是否级联必需 | 高频考法 |
|
||||
|--------|------|:---:|----------|
|
||||
| **ICW1** | 基本模式(单片/级联、边沿/电平触发) | 否 | 较少考 |
|
||||
| **ICW2** | **中断类型号的高 5 位**(T7~T3) | 否 | ⭐⭐⭐ |
|
||||
| **ICW3** | **级联标识**(主片/从片连接关系) | **是** | ⭐⭐ |
|
||||
| **ICW4** | 工作方式(8086 模式、自动 EOI) | 视情况 | 较少考 |
|
||||
|
||||
> [!important] 两条必背结论
|
||||
> 1. **ICW2 确定中断类型号的高五位**,低 3 位由 IR 编号(000~111)硬件自动填充。
|
||||
> 2. **ICW3 只有在级联系统中才需要写入**,单片系统中不需要。
|
||||
|
||||
### 2. ICW2 与中断类型号的关系
|
||||
|
||||
ICW2 的 8 位格式:
|
||||
|
||||
```
|
||||
D7 D6 D5 D4 D3 │ D2 D1 D0
|
||||
──────────────────┬────────────
|
||||
高 5 位(程序员设定) 低 3 位(IR 编号自动填入)
|
||||
```
|
||||
|
||||
> [!example] 真题计算
|
||||
> 某中断系统中,82C59A 的 IR3 对应中断类型号为 63H,求 IR6 对应的类型号。
|
||||
>
|
||||
> **解题步骤:**
|
||||
> 1. IR3 → 63H,则基址 = 63H − 3 = **60H**(即 ICW2 高5位 = 01100)
|
||||
> 2. IR6 → 60H + 6 = **66H**
|
||||
>
|
||||
> 公式:$\text{类型号} = \text{ICW2基址} + \text{IR编号}$
|
||||
|
||||
### 3. 中断允许标志 IF(关联考点)
|
||||
|
||||
虽然 IF 不属于 82C59A 本身,但常与中断系统一起考:
|
||||
|
||||
| IF 值 | 对可屏蔽中断的影响 | 对 NMI/软中断的影响 |
|
||||
|-------|-------------------|---------------------|
|
||||
| IF = 0 | CPU **不响应** | **不受影响**,仍可响应 |
|
||||
| IF = 1 | CPU 可以响应 | **不受影响**,仍可响应 |
|
||||
|
||||
> [!question] 思考题
|
||||
> 为什么 IF 只控制可屏蔽中断,不控制 NMI 和软中断?
|
||||
>
|
||||
> 答:NMI 用于处理紧急硬件事件(如掉电、内存校验错),必须保证 CPU 始终能响应;软中断(INT n)是程序主动调用的,不受外部标志控制。IF 只作为"总开关"控制外部可屏蔽中断(INTR)。
|
||||
|
||||
### 4. 真题回顾
|
||||
|
||||
> [!example] 【真题1】在对 82C59A 进行初始化时,命令字( )只有在级联系统中才需要写入。
|
||||
> **答案:C. ICW3**
|
||||
|
||||
> [!example] 【真题2】在 82C59A 初始化序列中,哪个命令字用来确定中断类型号高五位?
|
||||
> **答案:B. ICW2**
|
||||
|
||||
> [!example] 【真题3】当中断允许标志 IF=0 时,CPU 对( )不予响应。
|
||||
> **答案:C. 可屏蔽中断**
|
||||
|
||||
## 关联笔记
|
||||
|
||||
- [[接口与通讯技术/复习文档/8259A中断控制器]]
|
||||
- [[82C59A中断管理基础|填空题专题:8259A中断管理基础]]
|
||||
- [[DMA控制器82C37A 选择题考点]]
|
||||
@@ -0,0 +1,142 @@
|
||||
---
|
||||
tags:
|
||||
- 接口与通讯技术
|
||||
- 串行通信
|
||||
- RS-232C
|
||||
- 8251A
|
||||
- 波特率
|
||||
- 选择题
|
||||
- 重点复习
|
||||
create time: 2026-06-28 16:30
|
||||
---
|
||||
|
||||
# 串行通信基础 选择题考点
|
||||
|
||||
## 概述
|
||||
|
||||
串行通信在 3 套试卷中共出现 4 题,涵盖 **RS-232C 电平标准、波特率因子计算、差错检测位置、8251A 初始化顺序、多总线接口层次**。知识点分散但每个都独立且易记。
|
||||
|
||||
## 正文
|
||||
|
||||
### 1. RS-232C 逻辑电平定义
|
||||
|
||||
RS-232C 采用**负逻辑**,驱动器输出端与接收端的有效范围略有不同:
|
||||
|
||||
| 逻辑值 | 名称 | 驱动器输出端 | 接收端有效范围 |
|
||||
|--------|------|:---:|:---:|
|
||||
| **0** | 传号(Mark) | **+5V ~ +15V** | +3V ~ +15V |
|
||||
| **1** | 空号(Space) | **-5V ~ -15V** | -3V ~ -15V |
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph "驱动器输出端"
|
||||
P["逻辑0: +5V~+15V<br/>正电压"]
|
||||
N["逻辑1: -5V~-15V<br/>负电压"]
|
||||
end
|
||||
subgraph "接收端"
|
||||
P2["逻辑0: +3V~+15V"]
|
||||
N2["逻辑1: -3V~-15V"]
|
||||
end
|
||||
P --> P2
|
||||
N --> N2
|
||||
style P fill:#fdd,stroke:#333,color:#000
|
||||
style N fill:#dfd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
> [!important] 高频考点
|
||||
> RS-232C 的**逻辑 0 是正电压(+5V~+15V)**,逻辑 1 是负电压(-5V~-15V)。这与 TTL 电平(0=低,1=高)完全相反!
|
||||
|
||||
> [!question] 思考题
|
||||
> 为什么 RS-232C 要采用负逻辑(正电压=0,负电压=1)?
|
||||
>
|
||||
> 答:RS-232C 设计于早期通信时代,使用较高的电压幅值(±5V~±15V)是为了在长距离传输中抵抗噪声干扰。负逻辑的设计使"空闲状态"(逻辑1)对应负电压,有助于检测线路断开等故障。
|
||||
|
||||
### 2. 波特率因子计算
|
||||
|
||||
$$\text{波特率因子} = \frac{\text{收/发时钟频率}}{\text{波特率}} = \frac{f_{\text{clock}}}{\text{Baud Rate}}$$
|
||||
|
||||
> [!example] 真题
|
||||
> 收/发时钟频率 TxC=RxC=19200Hz,传输波特率为 1200,波特率因子 = ?
|
||||
>
|
||||
> $$\frac{19200}{1200} = \boxed{16}$$
|
||||
|
||||
> [!tip] 常见波特率因子
|
||||
> 实际系统中最常用的波特率因子是 **16**(16 倍过采样),每个数据位用 16 个时钟周期采样,提高接收精度和抗干扰能力。其他常见值有 1、64。
|
||||
|
||||
### 3. 串行通信差错检测
|
||||
|
||||
差错检测发生在**接收端**:
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A["发送端<br/>计算校验位<br/>附加到数据"] --> B["传输信道"] --> C["接收端<br/>重新计算校验<br/>与收到的校验位比较"]
|
||||
C --> D{"一致?"}
|
||||
D -->|是| E["数据正确"]
|
||||
D -->|否| F["传输出错"]
|
||||
style C fill:#ffd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
> [!important] 高频考点
|
||||
> 差错检测发生在**接收端**。发送端只负责计算并附加校验位,不做"检测";接收端收到数据后重新计算校验值,与收到的校验位对比来判断是否出错。
|
||||
|
||||
### 4. 8251A 初始化顺序
|
||||
|
||||
8251A 复位后必须按严格顺序写入命令字:
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["RESET 复位完成"] --> B["① 方式字 Mode Word<br/>设置通信格式参数"]
|
||||
B --> C["② 命令字 Command Word<br/>设置收发使能等"]
|
||||
C --> D["③ 正常通信工作"]
|
||||
style B fill:#ffd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
| 步骤 | 写入内容 | 作用 |
|
||||
|------|----------|------|
|
||||
| **第1个** | **方式字** | 波特率因子、字符长度、停止位、奇偶校验 |
|
||||
| 第2个 | 命令字 | 发送/接收使能、DTR/RTS、内部复位 |
|
||||
|
||||
> [!important] 高频考点
|
||||
> 8251A 复位完成后,收到的**第一个命令字是方式字**。方式字定义通信的基本格式,必须在命令字之前写入。
|
||||
|
||||
### 5. 多总线系统接口层次
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["多总线微机系统<br/>接口分两个层次"] --> B["设备接口<br/>Device Interface<br/>外设↔I/O总线适配"]
|
||||
A --> C["总线桥<br/>Bus Bridge<br/>不同总线间协议转换"]
|
||||
style B fill:#dfd,stroke:#333,color:#000
|
||||
style C fill:#dfd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
| 层次 | 名称 | 作用 |
|
||||
|------|------|------|
|
||||
| 第一层 | **设备接口** | 将外设的信号电平、时序、数据格式适配到 I/O 总线 |
|
||||
| 第二层 | **总线桥** | 连接两条不同特性的总线(如 PCI↔ISA),实现协议转换和速度匹配 |
|
||||
|
||||
> [!question] 思考题
|
||||
> 总线桥和设备接口的区别是什么?
|
||||
>
|
||||
> 答:设备接口解决"外设怎么连到总线上"的问题(信号适配);总线桥解决"两条不同总线怎么互通"的问题(协议转换)。前者面向外设,后者面向总线。
|
||||
|
||||
### 6. 真题回顾
|
||||
|
||||
> [!example] 【真题1】RS-232C 接口标准对逻辑信号"0"在驱动器输出端的定义为?
|
||||
> **答案:D. +5V~+15V**
|
||||
|
||||
> [!example] 【真题2】波特率因子为?(时钟19200,波特率1200)
|
||||
> **答案:A. 16**
|
||||
|
||||
> [!example] 【真题3】串行通信的差错检测发生在?
|
||||
> **答案:B. 接收端**
|
||||
|
||||
> [!example] 【真题4】8251A 复位后收到的第一个命令字是?
|
||||
> **答案:B. 方式字**
|
||||
|
||||
> [!example] 【真题5】多总线系统中接口分为设备接口和?
|
||||
> **答案:B. 总线桥**
|
||||
|
||||
## 关联笔记
|
||||
|
||||
- [[接口与通讯技术/复习文档/8251A串行通信接口]]
|
||||
- [[串行通信基础|填空题专题:串行通信基础]]
|
||||
@@ -0,0 +1,115 @@
|
||||
---
|
||||
tags:
|
||||
- 接口与通讯技术
|
||||
- 小端序
|
||||
- 存储器
|
||||
- 物理地址
|
||||
- 选择题
|
||||
- 重点复习
|
||||
create time: 2026-06-28 16:30
|
||||
---
|
||||
|
||||
# 小端序与存储器组织 选择题考点
|
||||
|
||||
## 概述
|
||||
|
||||
小端序(Little-Endian)和 8086 存储器组织在 3 套试卷中共出现 5 题,几乎每套必考。核心考点为**字单元内容计算、物理地址计算、堆栈中的小端序应用**。
|
||||
|
||||
## 正文
|
||||
|
||||
### 1. 小端序存储规则
|
||||
|
||||
x86 采用**小端序**:**低字节存低地址,高字节存高地址。**
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph "内存布局"
|
||||
LO["低地址<br/>存低字节"] --> HI["高地址<br/>存高字节"]
|
||||
end
|
||||
subgraph "逻辑含义"
|
||||
VAL["一个字 = 高字节×256 + 低字节"]
|
||||
end
|
||||
style LO fill:#dfd,stroke:#333,color:#000
|
||||
style HI fill:#fdd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
### 2. 字单元内容计算(通用方法)
|
||||
|
||||
**三步法:**
|
||||
1. 找到起始地址和下一个地址的内容
|
||||
2. 起始地址(低地址)→ **低字节**;下一个地址(高地址)→ **高字节**
|
||||
3. 字内容 = 高字节 × 256 + 低字节 = 高字节拼接低字节
|
||||
|
||||
> [!example] 真题1
|
||||
> (22000H)=33H, (22001H)=44H,以 22000H 为地址的字单元内容 = ?
|
||||
> - 低字节(22000H)= 33H,高字节(22001H)= 44H
|
||||
> - 字内容 = **4433H**
|
||||
|
||||
> [!example] 真题2
|
||||
> (12341H)=11H, (12342H)=22H, (12343H)=33H,以 12342H 为地址的字单元内容 = ?
|
||||
> - 低字节(12342H)= 22H,高字节(12343H)= 33H
|
||||
> - 字内容 = **3322H**
|
||||
|
||||
> [!example] 真题3
|
||||
> (20000H)=12H, (20001H)=34H, (20002H)=56H,地址 20001H 的字单元内容 = ?
|
||||
> - 低字节(20001H)= 34H,高字节(20002H)= 56H
|
||||
> - 字内容 = **5634H**
|
||||
|
||||
> [!tip] 速算技巧
|
||||
> 直接**高地址内容拼低地址内容**:看到 (addr)=34H, (addr+1)=56H → 答案就是 5634H。
|
||||
|
||||
### 3. 8086 物理地址计算
|
||||
|
||||
$$\text{物理地址} = \text{段基址} \times 10\text{H} + \text{偏移地址}$$
|
||||
|
||||
> [!example] 真题
|
||||
> (CS)=2000H, (IP)=3456H,下一条指令的物理地址 = ?
|
||||
>
|
||||
> $2000\text{H} \times 10\text{H} + 3456\text{H} = 20000\text{H} + 3456\text{H} = \textbf{23456H}$
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["段基址: 2000H"] --> B["左移4位: 20000H"]
|
||||
C["偏移地址: 3456H"] --> D["相加"]
|
||||
B --> D
|
||||
D --> E["物理地址: 23456H"]
|
||||
style E fill:#ffd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
> [!question] 思考题
|
||||
> 为什么 8086 要采用"段基址×16+偏移"的方式,而不是直接用 32 位地址?
|
||||
>
|
||||
> 答:8086 内部寄存器是 16 位的,最大寻址 64KB。通过段基址左移 4 位(×16)再加上 16 位偏移,可以用两个 16 位值组合出 20 位物理地址,寻址 1MB 空间。这是 16 位架构下的巧妙设计。
|
||||
|
||||
### 4. 堆栈中的小端序(POP 操作)
|
||||
|
||||
堆栈操作同样遵循小端序规则:
|
||||
|
||||
```
|
||||
POP AX 时:
|
||||
低地址内容 → AL(低字节)
|
||||
高地址内容 → AH(高字节)
|
||||
```
|
||||
|
||||
> [!example] 真题
|
||||
> (SS)=1000H, (SP)=1234H, (11234H)=12H, (11235H)=34H
|
||||
> - 栈顶 = 1000H × 10H + 1234H = 11234H
|
||||
> - AL ← [11234H] = 12H(先弹,低地址)
|
||||
> - AH ← [11235H] = 34H(后弹,高地址)
|
||||
> - **AX = 3412H**
|
||||
|
||||
> [!warning] 易错点
|
||||
> POP 弹出的是**字(2字节)**,不是字节!答案不会是 12H 或 34H 单个字节,而是组合后的 3412H。
|
||||
|
||||
### 5. 三类题型速查
|
||||
|
||||
| 题型 | 关键公式/规则 | 常见陷阱 |
|
||||
|------|---------------|----------|
|
||||
| 字单元内容 | 高地址内容拼接低地址内容 | 搞反高低字节顺序 |
|
||||
| 物理地址 | 段基址×10H + 偏移 | 忘记×10H(左移4位) |
|
||||
| POP 堆栈 | 先弹低地址给低寄存器 | 把 AH/AL 取反 |
|
||||
|
||||
## 关联笔记
|
||||
|
||||
- [[x86指令系统与寄存器 选择题考点]]
|
||||
- [[IO端口编址方式|填空题专题:IO端口编址方式]]
|
||||
@@ -0,0 +1,104 @@
|
||||
---
|
||||
tags:
|
||||
- 接口与通讯技术
|
||||
- 82C55A
|
||||
- 82C54A
|
||||
- 定时器
|
||||
- 选择题
|
||||
- 重点复习
|
||||
create time: 2026-06-28 16:30
|
||||
---
|
||||
|
||||
# 并行接口 82C55A 与定时器 82C54A 选择题考点
|
||||
|
||||
## 概述
|
||||
|
||||
82C55A(并行接口)和 82C54A(定时/计数器)在 3 套试卷中共出现 4 题。82C55A 考**工作方式与端口能力**,82C54A 考**计数初值与自动重装**。
|
||||
|
||||
## 正文
|
||||
|
||||
### 1. 82C55A 三种工作方式与端口能力
|
||||
|
||||
| 方式 | 名称 | 端口 A | 端口 B | 端口 C | 联络信号 |
|
||||
|------|------|--------|--------|--------|----------|
|
||||
| 方式 0 | 基本 I/O | 可用 | 可用 | 可用 | 无 |
|
||||
| 方式 1 | 选通 I/O | 可用(单向+握手) | 可用(单向+握手) | 部分作联络 | 有 |
|
||||
| **方式 2** | **双向总线 I/O** | **可用(双向)** | **不可用此方式** | 5根作联络 | 有 |
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["82C55A<br/>三种工作方式"] --> B["方式 0<br/>基本 I/O<br/>三端口均可用"]
|
||||
A --> C["方式 1<br/>选通 I/O<br/>PA、PB 可用<br/>单向+握手"]
|
||||
A --> D["方式 2<br/>双向 I/O<br/>仅 PA 可用<br/>双向传输"]
|
||||
style D fill:#ffd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
> [!important] 高频考点
|
||||
> **方式 2(双向选通输入/输出方式)只有端口 A(PA)可以使用。** PB 和 PC 不支持方式 2。
|
||||
|
||||
> [!question] 思考题
|
||||
> 为什么方式 2 只有端口 A 能用?
|
||||
>
|
||||
> 答:方式 2 需要占用端口 C 的 5 根引脚(PC3~PC7)作为双向联络信号,端口资源有限。芯片设计时将方式 2 专属于 PA,PB 在 PA 为方式 2 时只能工作在方式 0 或方式 1。
|
||||
|
||||
### 2. 82C54A 计数初值计算
|
||||
|
||||
82C54A 是**减法计数器**,从初值 N 递减到 0 时产生输出。
|
||||
|
||||
**计数 N 个脉冲的初值 = N**
|
||||
|
||||
#### BCD 码计数模式
|
||||
|
||||
BCD 模式下,每个数位用 4 位 BCD 表示,计数范围 0000~9999(十进制)。
|
||||
|
||||
> [!example] 真题
|
||||
> 采用 82C54A 对外部输入脉冲计数,BCD 码计数方式,需计 100 个脉冲,初值为?
|
||||
>
|
||||
> **答案:B. 256**
|
||||
>
|
||||
> 在 BCD 计数模式中,计数器的行为与二进制模式有所不同。计 100 个脉冲时,初值应为 **256**。
|
||||
|
||||
### 3. 82C54A 六种工作方式对比
|
||||
|
||||
| 方式 | 名称 | 自动重装初值 | 输出波形 | 触发方式 |
|
||||
|------|------|:---:|----------|----------|
|
||||
| 方式 0 | 计数结束中断 | ✗ | 单次低→高 | 软件 |
|
||||
| 方式 1 | 可编程单稳态 | ✗ | 单次负脉冲 | 硬件 |
|
||||
| 方式 2 | 速率发生器 | ✓ | 周期负脉冲 | 软件/硬件 |
|
||||
| **方式 3** | **方波发生器** | **✓** | **连续方波** | 软件/硬件 |
|
||||
| 方式 4 | 软件触发选通 | ✗ | 单次正脉冲 | 软件 |
|
||||
| 方式 5 | 硬件触发选通 | ✗ | 单次正脉冲 | 硬件 |
|
||||
|
||||
> [!important] 高频考点
|
||||
> **方式 2 和方式 3** 具有**自动重新装载计数初值**的功能。方式 3 在计数到 0 后自动重装初值,持续输出对称方波。
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph "自动重装初值"
|
||||
M2["方式 2<br/>速率发生器"]
|
||||
M3["方式 3<br/>方波发生器"]
|
||||
end
|
||||
subgraph "不自动重装"
|
||||
M0["方式 0"]
|
||||
M1["方式 1"]
|
||||
M4["方式 4"]
|
||||
M5["方式 5"]
|
||||
end
|
||||
style M2 fill:#dfd,stroke:#333,color:#000
|
||||
style M3 fill:#dfd,stroke:#333,color:#000
|
||||
```
|
||||
|
||||
### 4. 真题回顾
|
||||
|
||||
> [!example] 【真题1】并行接口 82C55A 的 3 种工作方式中,( )可以实现双向传输。
|
||||
> **答案:C. 方式 2**
|
||||
|
||||
> [!example] 【真题2】82C54A 的工作方式中,哪种具有自动重新装载计数初值的功能?
|
||||
> **答案:C. 方式 3**
|
||||
|
||||
## 关联笔记
|
||||
|
||||
- [[接口与通讯技术/复习文档/8255A可编程并行接口]]
|
||||
- [[接口与通讯技术/复习文档/8254定时计数器]]
|
||||
- [[82C55A工作方式|填空题专题:82C55A工作方式]]
|
||||
- [[82C54A定时器工作方式|填空题专题:82C54A定时器工作方式]]
|
||||
Reference in New Issue
Block a user