版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1119278087/article/details/60808854
- 进位标志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被改了,只是结果没有变而已。 - 奇偶标志PF(Parity Flag):奇偶标志PF用于反映运算结果中1的个数的奇偶性,偶数置1,奇数置0。
PF位只看结果(这里指二进制),parity flag,EFLAG中的第二位。 - 辅助进位标志AF(Auxiliary Carry Flag):在发生下列情况时,辅助进位标志AF的值被置为1,否则为0 (1)在字操作时,发生低字节向高字节进位或借位时 (2)在字节操作时,发生低4位进位或借位时
- 零标志ZF(Zero Flag):零标志位ZF迎来反映结果是否为0
结果为0则置为1,否则置为0 - 符号标志SF(Sign Flag):符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同
- 溢出标志OF(Over Flag)
无符号数关注CF
有符号数关注OF
汇编新指令:
- ADC指令:带进位加法
- SBB指令:带借位减法
- XCHG指令:交换数据
- MOVS指令:移动数据 内存-内存
- STOS指令:将al/ax/eax的值存储到[EDI]指定的内存单元
STOSB STOSW STOSD
REP指令:按计数寄存器(ECX)中指定的次数重复执行字符串指令