标志寄存器(EFLAGS)

标志寄存器(EFLAGS)

CF/PF/AF/ZF/SF/OF

CPU在处理减法时,也是进行加法运算

  • 进位标志CF(carry flag):运算结果的最高位产生了进位或借位,其值为1(无符号数运算)
  • 奇偶标志PF(Parity flag):反应结果中“1”的个数的奇偶性。
  1. 最低有效字节    (ax看最后八位)
  2. “1”的个数为偶,PF为1         <——  二进制
  • 辅助进位AF(Auxiliary Carry flag):变1的条件:
  1. 在字操作时,发生低字节向高字节进位或借位时
  2. 在字节操作时,发生低4位向高4位进位或借位时

  • 零标志位ZF(Zero flag):运算结果为0,则其值为1
  • 符号标志位SF(Sign flag):它与运算结果(二进制)的最高位相同       —  —  首先确定有符号数还是无符号数(是1 不一定是负数)
  • 溢出标志位OF(Overflow flag):(有符号数运算)
  1. 正 + 正 = 正,如果结果是负数,则说明有溢出
  2. 负 + 负 = 负,如果结果是正数,则说明有溢出
  3. 正 + 负 ,永远不会溢出
  4. 半圆(是否超出) — — 确定符号
  5.    OF    =   符号位进位(第一位)   XOR    最高有效数值位(第二位)向符号位产生的进位

默认:都是有符号的

  • 方向标志位DF(direction flag):控制每次操作后si,di的增减。df=0 每次操作后SI,DI递增

指令:

  1. ADC:带进位加法              //1. 2.3.两边不能同时为内存         1,2,3,4宽度要一样
  2. SBB:带借位减法            (运算时后面的要加上CF    然后CF变成0)
  3. XCHG:交换数据
  4. MOVS:移动数据              //内存 — — 内存         EBI,ESI
  5. STOS:将AL/AX/EAX的值存储到[EDI]指定的内存单元  ——》 执行完EDI+4   //STOS  WORD PTR ES:[EDI]
  6. REP:按计数寄存器(ECX)中指定的次数重复执行字符串指令   ——》 执行完ECX-1
  7. CMP:  对两数进行相减,进行比较

猜你喜欢

转载自blog.csdn.net/z1592570975/article/details/80297355