微处理器寄存器结构(通用寄存器、指针和状态寄存器)

我的梦境 提交于 2019-12-22 15:04:07

 

寄存器可以分为两大类,一类为通用寄存器,一类为指针寄存器和变址寄存器。

 

通用寄存器

通用寄存器主要包括:EAX、EBX、ECX、EDX

EAX

Accumulator 累加器,其中EAX(32位)、AH(16位)、AX,AL(8位)

累加器用作乘除法时由特殊用途,但通常情况下视为通用寄存器

EBX

Base 基址寄存器,其中EBX(32位)、BH(16位)、BX,BL(8位)

基址寄存器用作存放访问存储单元的偏移地址

ECX

Count 计数器,其中ECX(32位)、CH(16位)、CX,CL(8位)

 

CL用于移位和循环移位计数,CX用作重复的串操作指令计数,CX或ECX用作LOOP/LOOPD计数

EDX

Data 数据寄存器,其中EDX(32位)、DH(16位)、DX,DL(8位)

数据寄存器是一个用用寄存器,在乘除法运算时也可用于记录部分积和部分被除数

 

指针寄存器和变址寄存器

指针寄存器和变址寄存器包括:ESP、EBP、ESI、EDI

ESP

Stack Pointer 堆栈指针寄存器,该指针用于存储堆栈存储器数据

EBP

Base Pointer 基址指针寄存器,该指针用于存放堆栈段的数据区的“基地址”

ESI

Source Index 源变址指针寄存器,用于寻址串操作指令的源数据串

EDI

Destination Index 目的变址指针寄存器,该指针用于寻址串操作指令的目的数据串

EPI

Instruction Pointer 指令指针寄存器,一种专用寄存器,用于寻址当前需要取出的指令字节

Tip:需要注意的是,程序员不能对EIP/IP进行存取操作,程序中的转移指令、返回指令和中断处理能够对EIP/IP进行存取

 

标志寄存器

9个标志位中,6个状态标志位(CF、PF、AF、ZF、SF、OF),3个控制标志位(TF、IF、DF)

状态标志位

CF:进位标志(Carry flag)。执行算数运算时,结果的最高位有进位或者借位,则CF=1;否则CF=0。

PF:奇偶标志(ParityFlag)。结果的低8位,有奇数个“1”,则PF=0;有偶数个“1”,则PF=1。

AF:半进位标志(Auxiliary carry Flag,也称为半进位标志)。本次运算第四位有进位,则AF=1;否则AF=0。

ZF:零标志位(Zero Flag)。结果为0,则ZF=1;否则ZF=0。

SF:符号标志(Sign Flag)。结果为正,则SF=0;否则SF=1。

OF:溢出标志(OverFlow Flag)。结果溢出,则OF=1;否则OF=0。

 

溢出不一定有进位,有进位也不一定溢出。

例如:

CF=0  PF=0  AF=0  ZF=0  SF=1  OF=1

溢出判断:两个有符号数,符号位相同,运算结果的符号位与他们不同,则溢出,OF=1

 

方向标志位

方向标志DF(Direction Flag)

DF用于控制串操作指令的执行。

DF=0,则串操作指令地址自动增量修改。传输的传送过程从低地址向高地址的方向进行;

DF=0,则串操作指令地址自动减量修改,传数据的传送过程从高地址向低地址的方向进行。

 

 

 

设置DF的方法:STD(DF置一),CLD(DF置零)

中断标志IF(Interrupt Flag)

IF用来控制对可屏蔽中断的响应。

IF=1,则允许CPU响应可屏蔽中断请求;

IF=0,则禁止CPU响应可屏蔽中断请求。

STI(IF置一),CLI(IF置零)。

IF只能控制CPU是否能够响应可屏蔽中断请求,而对不可屏蔽中断及内部中断无法控制.

陷阱标志TF(Trap Flag)

TF=1,微处理器单步工作;

TF=0,微处理器正常工作。

 

 

 

 

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