通常应用程序和系统程序要用到的16个寄存器可以分为下面几类:
通用寄存器:General-purpose register, 这些寄存器用来存放操作数和指针
段寄存器: Segment register. 用来存放段选择子(segment selectors)
标志寄存器 : EFLAGS (program status and control) register.
指令寄存器( instruction pointer) register: 这个寄存器存放了一个32位的指针,这个指针指向 下一条将要执行的指令。
1. 通用寄存器 General-Purpose Registers
通用寄存器包括EAX, EBX, ECX,EDX, ESI, EBP, ESP. 它们用来放如下内容:
- 操作数( 包括逻辑运算和算术运算)
- 操作数 (用于地址计算的)
- 内存指针
尽管所有这些寄存器可以用来作为操作数,结果, 指针的 的存储位置,但是,请注意 ESP 只能用来存放stack 指针, 不能用作其他用途。
很多指令指定特殊的寄存器来存放操作数,比如 string 相关的指令需要用到ECX, ESI, EDI。当使用段式内存管理时,有一些指令是要假定寄存器与段是明确相关联的。举个例子 :当使用用段式管理时,EBX的内容指向的是DS的数据。