Intel x86 FLAGS Register |
Bit # |
Abbreviation |
Description |
Category* |
FLAGS |
0 |
CF |
Carry flag |
S |
1 |
1 |
Reserved |
|
2 |
PF |
Parity flag |
S |
3 |
0 |
Reserved |
|
4 |
AF |
Adjust flag |
S |
5 |
0 |
Reserved |
|
6 |
ZF |
Zero flag |
S |
7 |
SF |
Sign flag |
S |
8 |
TP |
Trap flag (single step) |
X |
9 |
IF |
Interrupt enable flag |
X |
10 |
DF |
Direction flag |
C |
11 |
OF |
Overflow flag |
S |
12, 13 |
IOPL |
I/O privilege level (286+ only) |
X |
14 |
NT |
Nested task flag (286+ only) |
X |
15 |
0 |
Reserved |
|
EFLAGS |
16 |
RF |
Resume flag (386+ only) |
X |
17 |
VM |
Virtual 8086 mode flag (386+ only) |
X |
18 |
AC |
Alignment check (486SX+ only) |
X |
19 |
VIF |
Virtual interrupt flag (Pentium+) |
X |
20 |
VIP |
Virtual interrupt pending (Pentium+) |
X |
21 |
ID |
Identification (Pentium+) |
X |
22 |
0 |
Reserved |
|
23 |
0 |
Reserved |
|
24 |
0 |
Reserved |
|
25 |
0 |
Reserved |
|
26 |
0 |
Reserved |
|
27 |
0 |
Reserved |
|
28 |
0 |
Reserved |
|
29 |
0 |
Reserved |
|
30 |
0 |
Reserved |
|
31 |
0 |
Reserved |
|
RFLAGS |
32-63 |
0 |
Reserved |
|
S: Status flag
C: Control flag
X: System flag
캐리(CF:Carry)
덧셈을 할 때 MSB(most significant bit)로부터 자리올림이 있거나, 뺄셈을 할 때 msb로 자리 빌림이 있으면 CF=1이고, 그렇지 않으면 0이다. CF의 값은 또한 시프트(shift)와 로테이트(rotate)명령에 의해 영향을 받기도 한다
패리티(PF:Parity)플래그
어떤 결과의 하위 ㅂ이트에 있는 1의 비트 수가 짝수(even parity)이면, PF=!이다. 만약 하위 비트가 홀수(oad parity)를 가지고 있으면, 그 값은 0이다. 예를 들어, 워드 덧셈의 결과가 FFFEh라면, 하위 바이트는 7개의 1비트를 가지고 있다. 따라서 PF=0이다
보조 캐리(AF:Auxiliary Carry)플래그
덧셈할 때 3번 비트로 부터 캐리가 발생하거나 뺄셈할 때 비트로 빌림이 있으면 AF=1이다. AF는 BCD(binary code decimal) 연산에 사용한다.
제로(ZF:Zero)플래그
어떤 결과의 값이 0이면 ZF=1이고, 그렇지 않는 결과에 대해서 ZF=0이다.
부호(SF:Sign)플래그
어떤 결과의msb가 1이면 SF=1이다 이것은 부호가 있는 계산을 할 때 그 결과가 음수라는 것을 의미한다. msb가 0이면 SF=0이다.
오버플로우(OF:Overflow)플래그
오버플로우가 발생하면 OF=1이고, 그렇지 않으면 0이다.
플래그 영향
명령 |
플래그의 영향
|
MOV/XCHG |
없음 |
ADD/SUB |
모두 |
INC/DEC |
CF를 제외한 모두
|
NEG |
모두(결과가0이 아닌 이상 CF=1, 또는 워드 오퍼랜드가 8000h 또는 바이트 워드가 80h 이면 OF=1)
|