寄存器是中央处理器的重要组成部分,工作速度也最快。在CPU中,寄存器可用来暂存指令,数据和地址。
通用寄存器:数据寄存器,指针寄存器,变址寄存器
通用寄存器
通用寄存器
所谓“通用”,就是既能存放数据又能存放地址。
数据寄存器
AX/EAX/RAX:累加器,用于算术运算。
BX/EBX/RBX:基址寄存器,用于地址指定,常用来存放数据的偏移地址。
CX/ECX/RCX:计数寄存器,用于循环计数。
DX/EDX/RDX:数据寄存器,常用来传递数据,在端口操作时存放端口地址。
这四个被称为数据寄存器
变址寄存器
用于字符串操作和数组处理
SI/ESI/RSI:源变址寄存器,用于字符串操作中的源地址指定。
DI/EDI/RDI:目的变址寄存器,用于字符串操作中的目标地址指定。
指针寄存器
用于指向栈和基址
SP/ESP/RSP:堆栈指针寄存器,指向栈顶。
BP/EBP/RBP:基址指针寄存器,用于基于栈的函数调用和局部变量访问。
AH:高位、AL:低位
控制寄存器
指令指针寄存器
IP(Instruction Pointer)为指令指针寄存器, 它用来存放代码段中的偏移地址。IP作为指令的地址指针,其作用类似于其他计算机中的程序计数器PC,当现行指令执行完毕时,由IP提供下一条指令地址。
标志寄存器
FLAGS为标志寄存器,又称PSW(Program Status Word),即程序状态寄存器。存放条件码标志、控制标志和系统标志。可用于OS在管态(系统态)和目态(用户态)之间的转换。
CF标志位:进位标志(Carry Flag)CF标志位处于flag寄存器的第0位,其主要是用来标识无符号计算时运算结果向更高位进位(或借位)的状态。
PF标志位:奇偶标志位,它负责记录相关指令执行后,其结果的所有bit位中1的个数是否为偶数,如果1为偶数则PF=1 反之为0。
AF标志位:辅助进位标志位,运算过程中看最后四位,不论长度为多少,最后四位向前有进位或者借位,AF = 1,否则AF = 0
ZF标志位:是flag寄存器的第六位,我们可以将其理解为零标志位。它主要是用来记录相关指令执行后,其结果是否为0,如果结果为0则 ZF=1 否则为0。
SF标志位:flag寄存器的第七位是符号标志位,它用来标志程序的运行结果是否为负,若为负则SF=1,反之为0。
TF标志位:追踪标志(Trap Flag)当追踪标志TF被置为1时,CPU进入单步执行方式。
IF标志位:中断允许标志,CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下:
当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求
当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求
CPU的指令系统中也有专门的指令来改变标志位IF的值
DF标志位:方向标志DF用来决定在串操作指令执行时有关指针寄存器发生调整的方向。在微机的指令系统中,还提供了专门的指令来改变标志位DF的值。
OF标志位: OF标志位处于flag寄存器的第11位,它的作用是记录有符号运算时的溢出情况。
段寄存器
CS(代码段寄存器)、DS(数据段寄存器)、SS(堆栈段寄存器)、ES(附加段寄存器)
CS:代码段寄存器,存放代码段基地址。可读R,可执行X,不可写W
DS:数据段寄存器,存放数据段段基地址。
ES:附加段寄存器,存放附加段段基地址。
SS:堆栈段寄存器,存放堆栈段段基地址。一行一栈
段寄存器用于存储CPU当前工作的内存地址信息,包括代码段、数据段、栈段和附加段等,这些寄存器与CPU的内存寻址模式紧密相关。