vault backup: 2026-06-28 16:34:33

This commit is contained in:
2026-06-28 16:34:33 +08:00
parent 9813fd4f6c
commit e57e5a9bdb
6 changed files with 672 additions and 0 deletions
@@ -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端口编址方式]]