常用寄存器及其说明

来源:互联网 发布:淘宝售后要做些什么 编辑:程序博客网 时间:2024/04/29 03:17
通用寄存器EAX累加(Accumulator)寄存器AX(AH、AL)常用于乘、除法和函数返回值EBX基址(Base)寄存器BX(BH、BL)常做内存数据的指针, 或者说常以它为基址来访问内存.ECX计数器(Counter)寄存器CX(CH、CL)常做字符串和循环操作中的计数器EDX数据(Data)寄存器DX(DH、DL)常用于乘、除法和 I/O 指针ESI来源索引(Source Index)寄存器SI常做内存数据指针和源字符串指针EDI目的索引(Destination Index)寄存器DI常做内存数据指针和目的字符串指针ESP堆栈指针(Stack Point)寄存器SP只做堆栈的栈顶指针; 不能用于算术运算与数据传送EBP基址指针(Base Point)寄存器BP只做堆栈指针, 可以访问堆栈内任意地址, 经常用于中转 ESP 中的数据, 也常以它为基址来访问堆栈; 不能用于算术运算与数据传送指令指针寄存器EIP指令指针(Instruction Pointer)寄存器总是指向下一条指令的地址; 所有已执行的指令都被它指向过.标志寄存器EFLAGS

标志(Flag)寄存器:
EFLAGS 中的 32 位被分成 0-31 个二进制位分别使用;
第 0、2、4、6、7、11 位是状态标志位;
第 10 位是字符串操作控制标志位;
其他标志位一般不用或无权使用

0CF进位(Carry)标志目标无法容纳无符号算术运算的结果, 需要进位或借位时被设置; 可用 STC 指令设置, CLC 指令取消.12PF奇偶(Parity)标志低 8 位中有偶数个 1 时被设置34AF辅助(Auxiliary)标志使用 BCD 码运算导致 3 位到 4 位产生进位时被设置56ZF零(Zero)标志运算结果为 0 时被设置7SF符号(Sign)标志运算结果为负数时被设置8910DF方向(Direction)标志字符串操作是从高位到低位时被设置; 可用 STD 指令设置, CLD 指令取消.11OF溢出(Overflow)标志因有符号运算的结果太宽而导致数据丢失时被设置...

31

0 0
原创粉丝点击