中央处理器
中央处理器 CPU 的组成
CPU 的任务是执行存放在存储器里的指令序列,CPU主要由三部分组成
- 算术逻辑部件(运算器):对信息进行加工、运算的部件,它的速度决定了计算机的运算速度
- 控制逻辑(控制器):控制计算机各部分按照程序指令的要求协调工作,自动地执行程序
- 工作寄存器:每一个寄存器相当于运算器中的一个存储单元
80×86 寄存器组
【部分内容参考:汇编语言–寄存器(cpu工作原理)】
寄存器是计算机中的一种重要的数据存储单元,用于暂时存储指令、数据和地址等信息。它们位于计算机的中央处理器(CPU)内部,是CPU直接访问的部分。寄存器具有非常快速的访问速度,通常比内存和硬盘等其他存储设备要快得多
8086 CPU 中寄存器总共为 14 个,且均为 16 位 ,这 14 个寄存器按照一定方式又分为了通用寄存器,专用寄存器和段寄存器
通用寄存器
通用寄存器有 8 个,分别是 AX,BX,CX,DX,SP,BP,SI,DI
AX,BX,CX,DX 称作为数据寄存器:
-
AX:累加寄存器;可以分为两个独立的 8 位的 AH 和 AL 寄存器;
可以暂存一般的数据,作为累加器使用,是算术运算的主要寄存器,在乘、除等指令操作中指定用来存放操作数,所有 I/O 指令都使用这一寄存器与外部设备传送信息
-
BX:基地址寄存器;可以分为两个独立的 8 位的 BH 和 BL 寄存器;
可以暂存一般的数据,但主要还是作为基址寻址器,可以用作指令中的内存访问的基址(存放数据或内存地址的偏移量,而段寄存器(如 DS 寄存器)存储了段的起始地址,当 CPU 执行内存访问指令时,会将段寄存器中的内容左移 4 位(相当于乘以 16),然后加上基址寄存器中的内容,以计算出实际的内存地址)
*段寄存器提供了段的起始地址,而基址寄存器提供了地址的偏移量,两者结合起来计算出实际的内存地址
-
CX:计数器寄存器;可以分为两个独立的 8 位的 CH 和 CL 寄存器;
可以暂存一般的数据,还常用于保存计数值,如在移位指令、循环(loop)和串处理指令中用作隐含的计数器
-
DX:数据寄存器;可以分为两个独立的 8 位的 DH 和 DL 寄存器;
注意“独立”二字,这两个字表明 H(高位) 和 L(低位) 寄存器作为 8 位寄存器使用时,可以看做它们是互不相关的,也就是看做两个完全没有联系的寄存器 X 和 Y 即可
除了上面 4 个数据寄存器以外,其他寄存器均不可以分为两个独立的 8 位寄存器
SP 和 BP 又称作为指针寄存器 :
- SP (Stack Pointer):堆栈指针寄存器;
- BP (Base Pointer):基指针寄存器;
SI 和 DI 又称作为变址寄存器:
- SI (Source Index):源变址寄存器;
- DI (Destination Index):目的变址寄存器;
专用寄存器
-
IP (Instruction Pointer):指令指针寄存器;
用于存放代码段中的偏移地址,在程序运行的过程中始终指向下一条指令的首地址
*注意:IP 寄存器和 BX 寄存器虽然都可以存放地址的偏移量,但它们的作用和使用场景不同。IP 寄存器主要用于指示下一条要执行的指令的位置,而 BX 寄存器通常用于计算数据或内存的地址偏移量
-
FLAGS:标志寄存器;
用于存放条件码标志、控制标志和系统标志的寄存器
-
条件码标志
用来记录程序中运行结果的状态信息
-
溢出标志 (overflow flag,OF)
在运算过程中,如操作数超出了机器能表示的范围称为溢出,此时OF位置1,否则置0
-
符号标志 (sign flag,SF)
记录运算结果的符号,结果为负时置1,否则置0
-
零标志 (zero flag,ZF)
运算结果为0时ZF位置1,否则置0
-
进位标志 (carry flag,CF)
记录运算时从最高有效位产生的进位值。例如,执行加法指令时,最高有效位有进位时置1,否则置0
-
辅助进位标志 (auxiliary carry flag,AF)
记录运算时第3位(半个字节)产生的进位例姆,执行加法指令第3位有进位时置1,否则置0
-
奇偶标志 (parity flag,PF)
用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时置1,否则置0
-
-
控制标志
控制标志位为方向标志(direction flag,DF),在串处理指令中控制处理信息的方向用
-
系统标志
用于I/O、可屏蔽中断、程序调试、任务切换和系统工作方式等的控制
-
段寄存器
段寄存器也是一种专用寄存器,它们专用于存储器寻址,用来直接或间接地存放段地址
- CS (Code Segment):代码段寄存器
- DS (Data Segment):数据段寄存器
- SS (Stack Segment):堆栈段寄存器
- ES (Extra Segment):附加段寄存器