--- tags: - 接口与通讯技术 - 小端序 - 存储器 - 物理地址 - 选择题 - 重点复习 create time: 2026-06-28 16:30 --- # 小端序与存储器组织 选择题考点 ## 概述 小端序(Little-Endian)和 8086 存储器组织在 3 套试卷中共出现 5 题,几乎每套必考。核心考点为**字单元内容计算、物理地址计算、堆栈中的小端序应用**。 ## 正文 ### 1. 小端序存储规则 x86 采用**小端序**:**低字节存低地址,高字节存高地址。** ```mermaid graph LR subgraph "内存布局" LO["低地址
存低字节"] --> HI["高地址
存高字节"] 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端口编址方式]]