数据寄存器:(4个16位):
AX:也成累加器,一般保存目的操作数;
BX:基址寄存器,除了可以存放数据以外,还可以存放首地址;
CX:一般用于计数,如循环中的loop就用CX来控制循环次数;
DX:有时可以用来存放端口地址;
地址寄存器:(4个16位):
SP:堆栈指针,存放栈顶的偏移地址
BP:基址指针,存放堆栈数据的偏移地址
SI:源变址寄存器:源数据的偏移地址
DI:目的变址寄存器:
段寄存器:(4个16位):
CS:代码段的基址;
SS:堆栈段的基址;
DS:数据段的基址;
ES:目的数的基址,同DS;
专用寄存器:(2个16位)
IP:指令指针,存放即将执行的指令的便宜地址
FLAGS:标志寄存器,存放CPU的状态标志和控制标志
FLAGS:状态标志:
OF:溢出标志,对于有符号数可以判断结果是否正确,无符号数不用关心
CF:进/借位标志,无符号数的加减法是否产生进/借位
SF:符号标志,运算结果的最高位
ZF:零标志
AF:辅助进位标志:
PF:奇偶标志,可以根据这个进行数据校验
FLAGS:控制标志:
IF:中断允许标志
TF:单步标志
DF:方向标志
注:
BP和SP的区别:
BP虽主要用于指向堆栈段,但它是一个通用寄存器,需要程序中设置需要的值。SP虽可以象通用寄存器一样设置数值,但实质上是一个专用寄存器,其数值的含义就是堆栈的顶部;进行堆栈操作时,处理器自动修改SP数值。所以BP和SP根本就是两种不同类型的寄存器