1 / 25

The FLAGS Register

The FLAGS Register. An x bit means an unidentified value. Status Flags.

jodie
Télécharger la présentation

The FLAGS Register

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The FLAGS Register An x bit means an unidentified value CAP 221

  2. Status Flags • The Carry Flag (C): This flag is set when the result of an unsigned arithmetic operation is too large to fit in the destination register. CF=1 if a carry from most significant bit (msb) on addition, or a borrow into msb on subtraction; otherwise CF=0. CAP 221

  3. Status Flags • The Overflow Flag (O): This flag is set when the result of a signed arithmetic operation is too large to fit in the destination register (i.e. when an overflow occurs). Overflow can occur when adding two numbers with the same sign (i.e. both positive or both negative). A value of 1 = overflow and 0 = no overflow. CAP 221

  4. Status Flags • The Sign Flag (S): This flag is set when the result of an arithmetic or logic operation is negative. This flag is a copy of the MSB of the result (i.e. the sign bit). A value of 1 means negative and 0 = positive. CAP 221

  5. Status Flags • The Zero Flag (Z): This flag is set when the result of an arithmetic or logic operation is equal to zero. A value of 1 means the result is zero and a value of 0 means the result is not zero. CAP 221

  6. Status Flags • The Auxiliary Carry Flag (A): This flag is set when an operation causes a carry from bit 3 to bit 4 (or a borrow from bit 4 to bit 3) of an operand. A value of 1 = carry and 0 = no carry. CAP 221

  7. Status Flags • The Parity Flag (P): This flags reflects the number of 1s in the low byte of a result of an operation. If the number of 1s is even its value = 1 and if the number of 1s is odd then its value = 0. CAP 221

  8. Overflow Flag and Carry Flag • Both are indicators of out-of-range condition. • Overflow flag is used to evaluate an out-of-range condition of signed number operations . • Carry flag is used in unsigned number operations. CAP 221

  9. Overflow Flag and Carry Flag • Since a binary number can represent an unsigned number or signed number, the processor computes both flags and the user checks the appropriate flag to check if the result is out of range or not. CAP 221

  10. Unsigned Overflow CF • Carry FlagCF is set to 1 if there is an endcarry in an addition operation or there an end borrow in a subtraction operation. A value of 1 = carry and 0 = no carry. CAP 221

  11. Signed Overflow OF • Overflow Flag is set to 1 when adding two numbersthe same sign and the result has a different sign. Otherwise, OF is reset to 0. • Subtraction operation A - B can be performed as operation A + (-B). OF=1 if the result has a different sign than expected • OF=1 if the carries into and out of the msb don’t match CAP 221

  12. Overflow Flag and Carry Flag • There are four possible conditions happen due to arithmetic operations. • OF=0, CF=0 • OF=0, CF=1 • OF=1, CF=0 • OF=1, CF=1 CAP 221

  13. Example ADD AL,BL AL = 0Fh 00001111 BL = 08h 00001000 AL=AL+BL=17h 00010111 CF=0, OF=0,Both operands and the result are positive. PF=1, ZF=0, SF=0, AF=1 CAP 221

  14. Example ADD AL,BL AL = 0Fh 00001111 BL = F8h 11111000 AL=AL+BL= 07h 100000111 CF=1, OF=0,Operands have different sign bits. PF=0, ZF=0, SF=0, AF=1 As a signed operation, 15 + (-8) = 7 (ok). As an unsigned operation, 15 + 248 = 263 > 255 (out-of-range). CAP 221

  15. Example Sub AL,BL AL = 4Fh 01001111 BL = 40h 01000000 AL=AL-BL=0Fh 00001111 CF=0, OF=???, PF=1, ZF=0, SF=0, AF=0 As a signed operation, ???? As an unsigned operation, 15 < 255 (ok). CAP 221

  16. Example ADD AL,BL AL = F8h 11111000 BL = 81h 10000001 AL=AL+BL=79h 101111001 CF=1, OF=1, Operands are negatives, the result is positive. PF=0, ZF=0, SF=0, AF=0 As a signed operation, -8 + -127 = -135 < -128 (out-of-range). As an unsigned operation, 248 + 129 = 377 > 255 (out-of-range). CAP 221

  17. How the processor indicates Overflow • The processor sets: OF=1 for signed overflow CF =1 for unsigned overflow • The processor does not interpret the result as signed or unsigned • It is the programmer who interprets the results and take the appropriate action: If signed interpretation OF is of interest If unsigned interpretation CF is important CAP 221

  18. How the processor determines that Overflow occurred Unsigned overflow: • For Addition: CF=1 if there is a carry out of msb • For subtraction: CF=1 if there is a borrow into msb Signed overflow: • OF=1 if the carries into and out of the msb don’t match CAP 221

  19. Signed overflow • On addition of numbers with the same sign, or subtraction of numbers with different signs overflow can occur • Two conditions under which overflow can occur are: (i) positive add positive gives negative (ii) negative add negative gives positive CAP 221

  20. How instructions affect the flag Instruction Affects flags MOV/XCHG none ADD/SUB all INC/DEC all except CF NEG all (CF=1 unless result is 0, OF=1 if word operand is 8000h, or byte operand is 80h) CAP 221

  21. Example ADD AX,BX AX = FFFFh BX = + FFFFh 1 FFFEh= 1111 1111 1111 1110 CF=1, OF=0, PF=0, ZF=0, SF=1 CAP 221

  22. Example ADD AL,BL AL = 80h BL = + 80h 1 00h CF=1, OF=1, PF=1, ZF=1, SF=0 CAP 221

  23. Example SUB AX,BX AX = 8000h BX = - 0001h 7FFFh = 0111 1111 1111 1111 CF=0, OF=1, PF=1, ZF=0, SF=0 CAP 221

  24. Example • INC AL, AL=FFh FFh + 1h 100h OF=0, PF=1, ZF=1, SF=0 CF unaffected CAP 221

  25. Example • MOV AX, -5 AX= -5= FFFBh, none of the flags are affected • NEG AX, AX=8000h 8000h = 1000 0000 0000 0000 2’s complement = 1000 0000 0000 0000 = 8000h CF=1, OF=1, PF=1, ZF=0, SF=1 CAP 221

More Related