标志寄存器


必须背会

记住这几个寄存器位置和名称

1.进位标志CF(Cary Flag):如果运算结果的最高位产生一个进位或借位,那么其值位1,否则位0

MOV AL, 0xFF  ADD AL,1

2.奇偶标志(Parity Flag):奇偶标志PF用于反映运算结果“1”的个数的奇偶性。如果"1"的个数位偶数,则PF的值为1,否则值位0

MOV AL,3
ADD AL,3
ADD AL,2

3.辅助仅为标志AF(Auxiliary Carry Flag)在发生下列情况时,辅助进位标志AF的值位1.否则其值位0

  • 1,在字操作时,发生低字节向高字节进位或借位
  • 2,在字操作时,发生低4位字节向高4节进位或借位时
MOV EAX,0x55EEFFFF
ADD EAX, 2

MOV AX ,5FEF
ADD AX, 2

MOV AL,4E
ADD AL,2

4. 零标志ZF(Zero Flag):零标志ZF用来反映计算结果是否位0 ,如果运算结果位0,在判断结果是否为0时,可使用此标志位。

XOR EAX,EAX

MOV EAX,2
SUB EAX,2

5. 符号标志位(Sign Flag):符号标志位SF用来反映运算结构的符号位,他与运算结果的最高位相同。

MOV AL,7F
ADD AL,2

6.溢出标志位OF(Overflow Flag):溢出标志用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位所能表示的范围,则成为溢出,OF的值被置为1,否则OF的值被清为0

有无符号

看球:
8位取值范围球

1.无符号,有符号都不溢出

MOV AL, 8
ADD AL, 8

2.无符号溢出,有符号不溢出

MOV AL ,0FF
ADD AL , 2

3.无符号不溢出。有符号溢出

mov al,7F
add al,2

4.无符号.有符号有溢出

MOV AL,0FE
ADD AL,80

剩余指令

ADC指令:带进位加法

格式:ADC R/M,R/M/IMM  两边不能同时为内存
ADC AL,CL
ADC BYTE PTR DS:[12ffc4],2
ADC BYTE PTR DS:[12ffc4],AL

SBB指令:带进位减法

格式 :SBB R/M,R/M /IMM 两边不能同时为内存 宽度要一样

SBB AL,CL
SBB BYTE PTR DS:[12ffc4],2
SBB BYTE PTR DS:[12ffc4],AL

XCHG指令:交换数据

格式: XCHG R/M,R/M  两边不 能同时为内存,宽度要一样 

MOVS指令:移动数据 内存-内存

BYTE/WORD/DWORD
MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]  简写:MOVSB
MOVS WORD PTR ES:[EDI],WORD PTR DS:[ESI]  简写:MOVSW
MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]  简写:MOVSD

STOS指令 将AL/AX/EAX的值存储到[EDI] 指定的内存单元

STOS BYTE PTR ES:[EDI]     简写:STOSB
STOS WORD PTR ES:[EDI]     简写:STOSW
STOS D WORD PTR ES:[EDI]     简写:STOSD

REP指令: 按计数寄存器(ECX) 中指定的次数重复执行字符串指令

MOV ECX, 10
REP MOVSD
REP STOSD

你可能感兴趣的:(标志寄存器)