0160-16位寄存器
环境
- Time 2022-11-07
- WSL-Ubuntu 22.04
- QEMU 6.2.0
- NASM 2.15.05
前言
说明
参考:《x86汇编语言:从实模式到保护模式》李忠
参考:https://wiki.osdev.org/CPU_Registers_x86
目标
了解 16 位寄存器,了解寻址方式。
通用目的寄存器
前面讲的八个八位的寄存器,其中 H 代表高位,L代表地位,两位组合成为一个十六位的寄存器。
| 16-bit | 8 high bits | 8 low bits | Description |
|---|---|---|---|
| AX | AH | AL | Accumulator |
| BX | BH | BL | Base |
| CX | CH | CL | Counter |
| DX | DH | DL | Data |
| SI | N/A | SIL | Source |
| DI | N/A | DIL | Destination |
| SP | N/A | SPL | Stack Pointer |
| BP | N/A | BPL | Stack Base Pointer |
先可以只认识 AX, BX, CX 和 DX 四个寄存器,其余的后面来看。
指令指针寄存器
IP(Instruction Pointer)表示指令的指针寄存器,在 8086 上可以查看 PC 寄存器,即程序计数器。
段寄存器
| 16-bit | Description |
|---|---|
| CS | Code Segment |
| DS | Data Segment |
| ES | Extra Segment |
| SS | Stack Segment |
| FS | General Purpose F Segment |
| GS | General Purpose G Segmen |
可以先认识代码段 CS 和数据段 DS。
寻址方式
8086 寻址通过 IP 和 CS 来完成,CS 表示代码段地址,DS 是数据段地址,IP 是偏移地址。
真实的物理地址是段寄存器乘以 16 加上偏移地址,16 位地址最大寻址 64K,加上向左移动 4 位,最大 1M。
大小端
当有十六位寄存器存在的时候,就需要考虑字节的存放情况,intel 架构是将低字节放到低内存地址,高字节放到高内存地址。
这种情况称为小端序,如果是反过来,则称为大端序。
总结
介绍了 CPU 的十六位寄存器,了解了指令执行的时候的寻址方式,了解什么是大小端存储。

浙公网安备 33010602011771号