对汇编中寄存器的认识

基于IA-32处理器和32位汇编语言

在IA-32处理器中的寄存器分为透明寄存器和可编程寄存器,其中可编程寄存器又可以分为通用寄存器和专用寄存器。

一:

IA-32有8个32位通用寄存器,分别为:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP.

把E前缀去掉后就变成了8个16位通用寄存器,前四个有可以分为8个8位通用寄存器,为:AH,AL,BH,BL,CH,CL,DH,DL.

EAX:accumulator,累加器。

EBX:base address,基址寄存器。

ECX:counter,计数器。

EDX:data,数据寄存器。

ESI:source index,源变址寄存器。

EDI:destination index,目的变址寄存器。

EBP:base pointer,基址指针寄存器。

ESP:stack pointer,堆栈指针寄存器。

二:

EFLAGS标志寄存器,32位。

标志寄存器有一组状态标志,一个控制标志,一组系统标志,其中它的1,3,5,15,22—31位不能用。

状态标志:常用的有5个,共有6个。

进位标志:carry flag,CF,为无符号数设计的,当最高位有进位或者借位时,CF=1,否则CF=0。

溢出标志:overflow  flag,OF,为有符号数设计的,有溢出时OF=1,否则OF=0。

零标志:zero  flag,ZF,用来判断运算结果是否是0,如果是0,ZF=1,如果不是0,ZF=0。

符号标志:sign  flag,SF,用来判断运算 是正数还是负数,如果结果最高位是1,则SF=1,如果是0,则SF=0。

奇偶标志:parity  flag,PF,用来判断运算结果最后8位中1的个数是奇数还是偶数,如果是偶数,则PF=1,如果是奇数,则PF=0。

调整标志:ajust  flag,AF,用来判断最后4位有没有进位或者借位,如果有,则AF=1,如果没有,则AF=0。(用户不常用,系统常用)。

三:

指令指针寄存器,EIP,extended  instruction pointer。用来表示下一条将要执行的指令的地址。

四:

段寄存器,有CS代码段,DS数据段,SS堆栈段,ES附加段,还有FS,GS。

其中ES,FS,GS也起数据段的作用。

五:

其他专用寄存器,这里不再一一做介绍了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值