基于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也起数据段的作用。
五:
其他专用寄存器,这里不再一一做介绍了。