Skip to content

寄存器 ​


处理器内部包含的存储器,叫做寄存器。
访问快,数量少

寄存器分类 ​

  • 通用数据寄存器
  • 段寄存器
  • 指令寄存器
  • 浮点数寄存器
  • 控制寄存器
  • 调试寄存器

16位寄存器示意图 ​

8086
当寄存器扩充到32bit时,部分寄存器名字前会加e,例如:eax,ebx,
当寄存器扩充到64bit时,部分寄存器名字前会加r,例如:rax,rbx

通用寄存器 ​

主要用来零时保存操作数和运算结果等信息

寄存器全名作用
AX累加(Accumulator)寄存器累加器可用于乘、除、输入/输出等操作
BX基地址寄存器(Base Register)也可作为存储器指针来使用
CX计数寄存器(Count Register)在循环和字符串操作时,要用它来控制循环次数
在位操作中,当移多位时,要用CL来指明移位的位数
DX数据寄存器(Data Register)在进行乘、除运算时,它可作为默认的操作数参与运算
也可用于存放I/O的端口地址
SIsource Index Register字符串操作的源指针
DIdestination Index Register字符串操作的目的指针
BP基址寄存器(Base Pointer Register)堆栈数据指针
SP栈指针(Stack Pointer Register)指向堆栈的栈顶

段寄存器 ​

段寄存器是根据内存分段的管理模式而设置的。
内存单元的逻辑地址由段寄存器和一个偏移量组合而成的

缩写全名作用
CS代码段寄存器(Code Segment Register)其值为代码段的段值
DS数据段寄存器(Data Segment Register)其值为数据段的段值
SS堆栈段寄存器(Stack Segment Register)其值为堆栈段的段值
ES/FS/GS附加段寄存器(Extra Segment Register)其值为附加数据段的段值

系统地址段寄存器 ​

缩写全名描述
GDTR全局描述符表寄存器GDTR(Global Descriptor Table Register )是48位寄存器,用来保存全局描述符表(GDT)的32位基地址和16为GDT的界限
IDTR中断描述符表寄存器IDTR(Interrupt Descriptor Table Register)是48位寄存器,用来保存中断描述符表(IDT)的32位基地址和16为IDT的界限
LDTR局部描述符表寄存器LDTR(Local Descriptor Table Register )是16位寄存器,保存局部描述符表LDT段的选择符。
TR任务状态寄存器TR(Task State Register)是16位寄存器,用于保存任务状态段TSS段的16位选择符。

gdtr
详细放到寻址里介绍。

指令指针寄存器 ​

名字作用
IP(Instruction Pointer)存放下次将要执行的指令在代码段的偏移量

控制寄存器 ​

确定处理器操作模式
cr

控制寄存器描述
cr0控制操作模式和处理器状态的系统标志
cr1当前未使用
cr2内存页面错误信息
cr3内存页面目录信息
cr4支持处理器特性和说明处理器特定能力的标志

可以用过通用通用数据寄存器查看或修改控制寄存器的值。

标志 ​

16位标志寄存器示意图:
flag

状态标志 ​

标志名称第几位说明
CF进位标志0数学运算进位或借位
PF奇偶校验标志2运算结果寄存器中1的个数,偶数个置1,奇数个置0
AF加法进位标志4运算进位或借位
ZF零值标志6运算结果的值是否为0
SF符号标志7运算结果是否为负数
OF溢出标志11运算结果是否溢出

控制标志 ​

标志名称第几位说明
TF陷阱标志8设置为1启动单步模式
IF中断使能标志9是否处理外部收到的终端信号
IOPLIO特权级别标志12,13表明当前运行任务的IO特权等级
NT嵌套任务标志14当前任务是否链接到前一个任务
RF恢复标志16调试模式如何响应异常
VM虚拟8086模式标志17表明处理器在虚拟8086模式
AC对准检测标志18启用内存引用的对准检查
VIF虚拟中断标志19虚拟模式中同IF
VIP虚拟终端挂起标志20虚拟模式中表示一个中断被挂起
ID识别标志21是否支持CPUID指令

浮点数寄存器 ​

FPU ​

floating-point unit
暂时不关注,略...

多媒体扩展 ​

MMX ​

multimedia extension
暂时不关注,略...