标志寄存器(EFLAGS)
CF/PF/AF/ZF/SF/OF
CPU在处理减法时,也是进行加法运算
- 进位标志CF(carry flag):运算结果的最高位产生了进位或借位,其值为1(无符号数运算)
- 奇偶标志PF(Parity flag):反应结果中“1”的个数的奇偶性。
- 最低有效字节 (ax看最后八位)
- “1”的个数为偶,PF为1 <—— 二进制
- 辅助进位AF(Auxiliary Carry flag):变1的条件:
- 在字操作时,发生低字节向高字节进位或借位时
- 在字节操作时,发生低4位向高4位进位或借位时
- 零标志位ZF(Zero flag):运算结果为0,则其值为1
- 符号标志位SF(Sign flag):它与运算结果(二进制)的最高位相同 — — 首先确定有符号数还是无符号数(是1 不一定是负数)
- 溢出标志位OF(Overflow flag):(有符号数运算)
- 正 + 正 = 正,如果结果是负数,则说明有溢出
- 负 + 负 = 负,如果结果是正数,则说明有溢出
- 正 + 负 ,永远不会溢出
- 半圆(是否超出) — — 确定符号
- OF = 符号位进位(第一位) XOR 最高有效数值位(第二位)向符号位产生的进位
默认:都是有符号的
- 方向标志位DF(direction flag):控制每次操作后si,di的增减。df=0 每次操作后SI,DI递增
指令:
- ADC:带进位加法 //1. 2.3.两边不能同时为内存 1,2,3,4宽度要一样
- SBB:带借位减法 (运算时后面的要加上CF 然后CF变成0)
- XCHG:交换数据
- MOVS:移动数据 //内存 — — 内存 EBI,ESI
- STOS:将AL/AX/EAX的值存储到[EDI]指定的内存单元 ——》 执行完EDI+4 //STOS WORD PTR ES:[EDI]
- REP:按计数寄存器(ECX)中指定的次数重复执行字符串指令 ——》 执行完ECX-1
- CMP: 对两数进行相减,进行比较