win32汇编-寄存器

 

寄存器是CPU内部的高速存储单元,由于是固化在CPU内部的组件,其访问速度快于内存,在当下的处理器中寄存器分为几种类型:

 

 

通用寄存器

8个通用寄存器(EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI)

8个通用寄存器主要用于算数运算和数据的传送,这8个寄存器都可以作为一个32位的值或两个16位的值来寻址使用,还可以按照8位寄存器来使用,比如通用寄存器都可以被拆分为高低寄存器来存储数据,例如:EAX寄存器,可被拆分为(AX)16位寄存器来使用,而(AX)16位寄存器还可拆分为AH/AL(高低8位).

 

 

 

 

 

 

变址寄存器:

通用寄存器ESI和EDI称为变址寄存器,它们主要用于存放存储单元在段内的偏移量,用它可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便.变址寄存器不可分割成8位寄存器,在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能,该寄存器默认和DS数据段寄存器相关联

堆栈指针寄存器:

通用寄存器EBP和ESP,称为指针寄存器

主要用于存放堆栈内存储单元的偏移量,它们主要用于访问堆栈内的存储单元

并且规定,EBP为基址指针寄存器,ESP为堆栈指针寄存器

指针寄存器不可分割成8位寄存器,该寄存器默认和SS堆栈段寄存器相关联

 

 

段寄存器:

6个段寄存器(CS,SS,DS,ES,FS,GS)

段寄存器是根据内存分段的管理模式而设置的,内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址,常规段寄存器包括CS:代码段寄存器,DS:数据段寄存器,SS:堆栈段寄存器,ES:附加数据段寄存器这些寄存器通常是由编译器或这是操作系统来维护的.

 

标志寄存器:

标志寄存器(EFLAGS),该寄存器用来控制CPU的操作流程,或者反应CPU某些运算的结果的独立二进制位构成,常用的标志位包括CF(进位标志),ZF(零标志),PF(奇偶标志)

对于一个标志,当它等于1时,称为置位(或置1);当它等于0时,称为清零(或复位)。

 

指令指针寄存器

指令指针寄存器EIP,该寄存器存放下一条要执行的指令的地址,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况,所以在理解它们的功能时,不考虑存在指令队列的情况,默认情况下EIP不可手动修改,一般都是由特殊的指令CALL,RET,PUSH等间接性的修改 

 

 

 

 

 

 

posted @   天子骄龙  阅读(117)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2021-10-13 opencv-SparseMat稀疏矩阵
点击右上角即可分享
微信分享提示

目录导航