EFLAGS寄存器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1119278087/article/details/60808854

在这里插入图片描述

  1. 进位标志CF(Carry Flag):如果运算结果的最高位产生了一个进位或借位(运算前就就已经确定好了数据的宽度,比如 add al,2 该操作运算时候就已经确定了数据宽度为al的宽度,即8位),那么,其值为1
    两个数相加,如果最高位向高位进位,结果忽略这个位,那么这个位要放到CF里面。Carry Flag,进位标志。
    减法运算,如果最高位向高位借位,则CF位为1。
    实质:CF表示加满了之后,向高位进位,但是计算机限制宽度,没法表示,所以把进的这个位暂时放在标志寄存器里面的一个位CF,以后有待查证,减法同理。
    CF在eflag里面第0位。运算的宽度可以自定义:可以是8位,16位也可以是32位的运算。
    CF如果本身是零,运算后无进位,则CF还是零,其实CF被改了,只是结果没有变而已。
  2. 奇偶标志PF(Parity Flag):奇偶标志PF用于反映运算结果中1的个数的奇偶性,偶数置1,奇数置0。
    PF位只看结果(这里指二进制),parity flag,EFLAG中的第二位。
  3. 辅助进位标志AF(Auxiliary Carry Flag):在发生下列情况时,辅助进位标志AF的值被置为1,否则为0 (1)在字操作时,发生低字节向高字节进位或借位时 (2)在字节操作时,发生低4位进位或借位时
  4. 零标志ZF(Zero Flag):零标志位ZF迎来反映结果是否为0
    结果为0则置为1,否则置为0
  5. 符号标志SF(Sign Flag):符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同
  6. 溢出标志OF(Over Flag)

无符号数关注CF
有符号数关注OF

汇编新指令:

  • ADC指令:带进位加法
  • SBB指令:带借位减法
  • XCHG指令:交换数据
  • MOVS指令:移动数据 内存-内存
  • STOS指令:将al/ax/eax的值存储到[EDI]指定的内存单元
    STOSB STOSW STOSD
    REP指令:按计数寄存器(ECX)中指定的次数重复执行字符串指令

猜你喜欢

转载自blog.csdn.net/qq1119278087/article/details/60808854