寄存器用途和英文全称

寄存器类别和用途

基本程序执行寄存器(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 位(低)
EAXAXAHAL
EBXBXBHBL
ECXCXCHCL
EDXDXDHDL

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

32 位16 位32 位16 位
ESISIEBPBP
EDIDIESPSP

通用寄存器有特殊用法:

  • 乘除指令默认使用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位  Ddouble
accumulator累加EAXAXAL0000Llow低位
count计数ECXCXCL0011Hhigh高位
data数据EDXDXDL0102Eextend扩展
base基址EBXBXBL0113Rregister寄存器
Stack Pointer堆栈指针ESPSPAH1004Iimmediate立即数
Base Pointer基址指针EBPBPCH1015Mmemory内存
Source Index源变址ESISIDH1106Bbyte字节
Destination Index目的变址EDIDIBH1117Wword

标志寄存器(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

检查算术运算结果使用的是 CPU 状态标志位的值,同时,这些值还可以触发条件分支指令,即基本的程序逻辑工具。下面是对状态标志位的简要概述:

  • 进位标志位意味着无符号整数溢出。比如,如果指令目的操作数为 8 位,而指令产生的结果大于二进制的 1111 1111,那么进位标志位置 1。
  • 溢出标志位意味着有符号整数溢出。比如,指令目的操作数为 16 位,但其产生的负数结果小于十进制的 -32 768,那么溢出标志位置 1。
  • 零标志位意味着操作结果为 0。比如,如果两个值相等的操作数相减,则零标志位置 1。
  • 符号标志位意味着操作产生的结果为负数。如果目的操作数的最高有效位(MSE)置 1,则符号标志位置 1。
  • 奇偶标志位是指,在一条算术或布尔运算指令执行后,立即判断目的操作数最低有效字节中 1 的个数是否为偶数。
  • 辅助进位标志位置 1,意味着目的操作数最低有效字节中位 3 有进位。

参考:

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值