1) Flag register
Flag register는 CPU 내부 기구중 하나로 산술 연산 결과의 상태를 보여주는 flag bit들이 모인 레지스터이다.
산술 연산시 CPU에 의해 자동적으로 세팅되며 , 프로세서의 현재 상태를 결정한다.
상태레지스터라고 불리고 기종에 따라 condition register라고 불리기도한다.
상태 플래그 (Status flag)
Carry Flag (CF) |
Unsigned overflow가 발생할 때 1로 세팅된다. |
Parity Flag (PF) |
연산결과에 1인 bit의 개수가 짝수개이면 1 , 홀수개이면 0으로 세팅된다. |
Auxiliary Flag (AF) |
연산결과 하위 4bit에 Unsigned overflow가 발생했을때 1로 세팅된다. |
Zero Flag (ZF) |
연산결과가 0일 때 1로 세팅된다. |
Sign Flag (SF) |
부호를 나타내는 flag로 연산결과의 MSB(Most Significant Bit)와 같다. 연산결과가 양수이면 0 , 음수이면 1로 세팅된다. |
Overflow Flag (OF) |
Signed overflow가 발생할 때 1로 세팅된다. |
컨트롤 플래그 (Control flag) : CPU의 동작상태를 제어하는 flag
Trap Flag (TF) |
Trap flag가 1로 세팅되면 명령어를 한개 수행하고 , 0x01 inturrupt (the debug interrupt)를 발생시키게 되는데 0x01 inturrupt가 발생하면 디버거가 해당 프로세스를 attach 할 수 있는 상태가 된다. |
Interrupt enable Flag (IF) |
Interrupt enable Flag가 1로 세팅되면 외부 인터럽트 요구는 무시되고 , 0으로 세팅되면 외부 인터럽트요구를 받아들인다. |
Direction Flag (DF) |
데이터를 다른 메모리에 복사할때 방향을 결정하는 flag이다. Direction flag가 0으로 세팅되있을동안 데이터 주소를 가르키는 레지스터가 증가하고 , 1로 세팅되있을동안 데이터 주소를 가르키는 레지스터가 감소한다. |
2) 연산에 따른 flag bit
Signed
CF | ZF | SF | OF | ||
ADD | X>0 , Y>0 , X+Y<RANGE | 0 | 0 | 0 | 0 |
ADD | X>0 , Y>0 , X+Y>RANGE | 0 | 0 | 1 | 1 |
SUB | X>0 , Y>0 , X>Y | 0 | 0 | 0 | 0 |
SUB | X>0 , Y>0 , X<Y | 1 | 0 | 1 | 0 |
SUB | X>0 , Y>0 , X=Y | 0 | 1 | 0 | 0 |
Unsigned
CF | ZF | SF | OF | ||
ADD | X>0 , Y>0 , X+Y<RANGE | 0 | 0 | 0 | 0 |
ADD | X>0 , Y>0 , X+Y>RANGE | 1 | 0 | 1 | 0 |
SUB | X>0 , Y>0 , X>Y | 0 | 0 | 0 | 0 |
SUB | X>0 , Y>0 , X<Y | 1 | 0 | 1 | 0 |
SUB | X>0 , Y>0 , X=Y | 0 | 1 | 0 | 0 |
'C.E > Assembly' 카테고리의 다른 글
SP ; Stack Pointer (0) | 2014.04.22 |
---|---|
어셈블리 명령어 모음 (0) | 2014.04.15 |