3)CX(Counter)寄存器,又叫计数器。用来控制循环的次数。
4)DX(Data)寄存器,又叫数据寄存器,进行 32 位除法时,用来存放被除数的高 16
位和余数。也用作 I/O 端口地址。
2、指针寄存器和变址存储器:是指 BP、SP、DI 和 SI,用来存储在段中的偏移地址(首
次接触偏移地址,可能不太明白,不要紧,后面会讲的),我们把内存想象成一条街道,这
条街道分成一部分一部分的(段),每部分的每家每户都有一个相对于这个部分开头的地址
(偏移地址),比如你在平安街,平安街分为西平安街和东平安街,你家住在西平安街(段
地址)31 号(偏移地址)。
1)BP(Base)寄存器,又叫基地址指针寄存器。用来存储在段中的偏移地址。
2)SP(Stack)寄存器,又叫堆栈指针寄存器。这个寄存器有些特殊,因为它和堆栈
紧紧相关。什么是堆栈呢,请看后面的段寄存器。
3)DI 和 SI 寄存器,又叫目的地址寄存器和源地址寄存器。用来进行串操作。说一下
串操作,假设把内存中一串连续的数据从这里挪到那里,怎么办?能够想到的是,把这一串
连续的数据中第一个数据在内存中的地址(
源地址
)移到一个寄存器中(比如 SI),然后
把要到的地方在内存中的地址(
目的地址
)移到另一个寄存器中(比如 DI)。然后把 SI 所
指的数据挪到 AX,再把 AX 中的数据挪到 DI 所指的地方。让 SI 和 DI 指向下一个数据。
这种操作叫做串操作,就是把一串连续的数据挪到另一个连续的内存处。
二、控制寄存器,这些寄存器比较特殊,不能够存储数据。
1、IP 寄存器,指向当前运行到的代码的内存偏移地址。
开始的时候,IP 指向内存中的一个指令。然后,CPU 根据 IP 中的内存地址,把这个指
令读取进来,并执行。同时,IP 指向下面的一个指令,就回到了步骤 1,这样不断地执行下
去,就是一步一步的。排除有指令缓存的情况。
2、标志寄存器:
有些指令会影响标志,有些指令不会影响标志,而有些指令受标志影响,有些指令不
受标志影响。这些标志可以分为两组,一组主要受加减乘除运算影响,成为运算结果标志,
另一些成为控制状态标志。
运算结果标志:
1)CF(Carry):进位标志,反应运算是否有进位和借位,有则为 1,没有为 0。有时作
函数的出口参数。
2)ZF(Zero):零标志,运算结果为 0 则置位为 1,运算结果不为零则复位为 0。