寄存器用途和英文全称

天涯浪子 提交于 2019-12-01 18:51:36

寄存器用途和英文全称

32位

寄存器类别和用途

基本程序执行寄存器(basic program execution registers)。8 个通用寄存器,6 个段寄存器,一个处理器状态标志寄存器(EFLAGS),和一 个指令指针寄存器(EIP)。

EAX、AX、AH和AL

一些寄存器的组成部分可以处理 8 位的值。例如,AX 寄存器的高 8 位被称为 AH,而低 8 位被称为 AL。同样的重叠关系也存在于 EAX、EBX、ECX 和 EDX 寄存器中:

32 位 16 位 8 位(高) 8 位(低)
EAX AX AH AL
EBX BX BH BL
ECX CX CH CL
EDX DX DH DL

其他通用寄存器只能用 32 位或 16 位名称来访问,如下表所示:

32 位 16 位 32 位 16 位
ESI SI EBP BP
EDI DI ESP SP

通用寄存器有特殊用法:

  • 乘除指令默认使用EAX。它常常被称为扩展累加器(extended accumulator)寄存器。
  • CPU 默认使用 ECX 为循环计数器。
  • ESP 用于寻址堆栈数据。它极少用于一般算术运算和数据传输,通常被称为扩展堆栈指针(extended stack pointer)寄存器。
  • ESI 和 EDI 用于高速存储器传输指令,有时也被称为扩展源变址(extended source index)寄存器和扩展目的变址(extended destination index)寄存器。
  • 高级语言通过 EBP 来引用堆栈中的函数参数和局部变量。除了高级编程,它不用于一般算术运算和数据传输。它常常被称为扩展帧指针(extended frame pointer)寄存器。

指令指针

指令指针(EIP)寄存器中包含下一条将要执行指令的地址。某些机器指令能控制 EIP,使得程序分支转向到一个新位置。call和ret会改变其值。

状态标志位

状态标志位反映了 CPU 执行的算术和逻辑操作的结果。其中包括:溢出位、符号位、零标志位、辅助进位标志位、奇偶校验位和进位标志位。下述说明中,标志位的缩写紧跟在标志位名称之后:

  • 进位标志位(CF),与目标位置相比,无符号算术运算结果太大时,设置该标志位。
  • 溢出标志位(OF),与目标位置相比,有符号算术运算结果太大或太小时,设置该标志位。
  • 符号标志位(SF),算术或逻辑操作产生负结果时,设置该标志位。
  • 零标志位(ZF),算术或逻辑操作产生的结果为零时,设置该标志位。
  • 辅助进位标志位(AC),算术操作在 8 位操作数中产生了位 3 向位 4 的进位时,设置该标志位。
  • 奇偶校验标志位(PF),结果的最低有效字节包含偶数个 1 时,设置该标志位,否则,清除该标志位。一般情况下,如果数据有可能被修改或损坏时,该标志位用于进行 错误检测。

通用寄存器:

英文 功能 寄存器 编号(二进制) 编号(十进制) 字母 全称 功能
32位 16位 8位 D double
accumulator 累加 EAX AX AL 000 0 L low 低位
count 计数 ECX CX CL 001 1 H high 高位
data 数据 EDX DX DL 010 2 E extend 扩展
base 基址 EBX BX BL 011 3 R register 寄存器
Stack Pointer 堆栈指针 ESP SP AH 100 4 I immediate 立即数
Base Pointer 基址指针 EBP BP CH 101 5 M memory 内存
Source Index 源变址 ESI SI DH 110 6 B byte 字节
Destination Index 目的变址 EDI DI BH 111 7 W word

标志寄存器(FLAG/16位):

英文 功能 全称 标志形式
OF 溢出标志 overflow flag 状态标志
SF 符号标志 sign  flag 状态标志
ZF 零标志 zero  flag 状态标志
CF 进位标志 carry  flag 状态标志
AF 辅助进位标志 auxiliary carry flag 状态标志
PF 奇偶标志 parity flag 状态标志
DF 方向标志 direction flag 控制标志
IF 中断标志 interrupt flag 控制标志
TF 陷进标志 trap     flag 控制标志

段寄存器(16位):

英文 含义 全称 功能
CS 代码段 Code Segment 指明代码段的起始地址
DS 数据段 Data Segment 指明数据段的起始地址
SS 堆栈段 Stack Segment 指明堆栈段的起始地址
ES 附加段 Extra Segment 指明附加段的起始地址

指令指针寄存器(32位)EIP:Extend Instruction Pointer

参考:

https://www.cnblogs.com/forestsky/p/10927470.html

http://c.biancheng.net/view/3458.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!