一个懒人专用文章归档神器,如果你不能成为压路机的一部分,那么你就只能成为道路的一部分 Bala~bala~

寄存器概念整理

汇编 懒人 1184℃ 0评论

一直以来对寄存器的名称、作用比较模糊,今天抽时间整理了下。

 

(一)  通用寄存器

作用:传送和暂存数据,参与算数和逻辑运算。

(1)通用寄存器

16位的有8个:AX(Accumulator),BX(Base),CX(Count),DX(Data),BP(BasePointer),SP(Stack Pointer),SI(Source Index),DI(Destination Index)

对应的32位为:EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI

EAX,EBX,ECX,EDX为通用寄存器,其低16位为AX,BX,CX,DX,再进一步,每一个还能分成两个8位,如AX:AH-AL,BX:BH-BL等。他们除能作为普通数据寄存器使用外,他们还有特殊作用:

AX为累加器,进行乘除运算,字的输入输出,中间结果的缓存

BX基地址寄存器,除了作为通用寄存器,其主要功能是寻址,存放偏移地址,与段寄存器结合使用。

CX为计数器,控制循环次数以及CL存放移位的位数

DX为数据寄存器,在乘除运算时,可以作为默认操作数参与运算。

SI、DI为变址寄存器,存储单元在段内的偏移量,实现不同的寻址方式。SI存储器指针、串指令中的源操作数指针。DI存储器指针、串指令中的目的操作数指针。

BP、SP为指针寄存器,BP是基指针寄存器,当使用[BP]时,且没有显式给出段地址时,则默认使用SS段寄存器中的段地址。(BX、SI、DI默认使用DS段寄存器)SP是栈指针寄存器,存放了指向栈顶的指针。

(二)控制寄存器

(2)指令指针寄存器

IP(Instruction Pointer),32位为EIP,存放下次要执行的指令在代码段中的偏移量

(3)标志位寄存器

Flag,32位为EFlag, Flag寄存器中的数据是按位起作用的,Flag寄存器中存储的信息通常又被称为程序状态字(PSW)

位数 11 10 9 8 7 6 4 2 0
标志 OF DF IF TF SF ZF AF PF CF
全称 Overflow Flag Direction Flag Interrupt

-Enable Flag

Trap Flag Sign Flag Zero Flag Auxiliary Carry Flag Parity Flag Carry Flag
意义 溢出标志 方向标志 中断允许标志 追踪标志 符号标志(结果是否为负数) 零标志位(结果是否为0) 辅助进位标志 奇偶标志(结果中1的个数) 进位标志

(参考内容:http://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html

 

(三)段寄存器

根据内存分段的管理模式而设立段寄存器。16位CPU的段寄存器分别是:

CS:(Code Segment)               代码段寄存器

SS:(Stack Segment)堆栈段寄存器

DS:(DataSegment)数据段寄存器

ES:(Extra Segment)附加段寄存器,存放当前执行程序中一个辅助数据段的段地址

FS:附加段寄存器(标志段寄存器)

GS:附加段寄存器(全局段寄存器)

关于FS寄存器,当系统运行在ring3时,FS 值为指向的段是 GDT 中的 0x38 段,基地址为 当前线程 的线程环境块( TEB ),所以该段也被称为“TEB 段”。当系统运行在ring0时,FS 指向的段是 GDT 中的 0x30 段,该地址指向系统的处理器控制区域( KPCR )。这个区域中保存这处理器相关的一些重要数据值,如 GDT 、 IDT 表的值等等。

(参考博文http://blog.csdn.net/misterliwei/article/details/4391580

http://bbs.pediy.com/showthread.PHP?t=159935)

 

对于访问某个段的程序,必须将段选择符加载到一个段寄存器中,通过段选择符去定位段描述符表中的一个段描述符来指定一个段,段描述符中包含访问一个段的所有信息,包括段基址、段长度、段属性等。

(段选择符、段描述符参考:http://blog.csdn.net/lbo4031/article/details/6990376

http://blog.sina.com.cn/s/blog_9e16dc4d010150t1.html

 

8086CPU中,只有BX,SI,DI,BP可以以[..]的方式使用

 

操作系统的外壳(Shell)程序,将可执行文件加载到内存中以后,就会设置CPU中个的两个寄存器,即CS:IP指向可执行文件的起始地址。

转载请注明:懒人档案室 » 寄存器概念整理

喜欢 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址