深入理解x86 CPU的内存寻址与编程模型
1. 内存地址与寄存器基础
MyByte可能拥有三种地址:
| 段地址 | 偏移地址 |
| ---- | ---- |
| 0000 : 0029 | |
| 0001 : 0019 | |
| 0002 : 0009 | |
在实模式分段模型汇编语言中,段地址就像是实模式64K视野的起始位置。通常,我们将这个“视野”移动到想要操作的位置,然后在其64K的范围内进行操作。
x86 CPU有专门用于存储段地址的段寄存器,8088、8086和80286有4个段寄存器,386及以后的CPU在实模式下还多了2个。所有段寄存器都是16位的,无论CPU是多少位。以下是各段寄存器的含义:
- CS(代码段寄存器) :存储当前执行指令所在代码段的段地址。
- DS(数据段寄存器) :存储当前使用的数据段的段地址,CPU一次只能使用一个数据段。
- SS(堆栈段寄存器) :存储堆栈段的段地址,堆栈用于临时存储数据和地址。
- ES(附加段寄存器) :备用段,可用于指定内存中的位置。
- FS和GS :仅存在于386及以后的x86 CPU中,是ES的克隆,没有特定任务。
2. 通用寄存器
段寄存器主要用于存储段地址,而x86 CPU还有通用寄存器来完成汇编语言计算的其他工作。通用寄存器可用于存储偏移地址、进行算术运算、位操作等
超级会员免费看
订阅专栏 解锁全文
1082

被折叠的 条评论
为什么被折叠?



