Ugrás a tartalomhoz

carry flag

A Wikiszótárból, a nyitott szótárból


Főnév

carry flag (tsz. carry flags)

  1. (informatika) A Carry Flag egy processzorállapot-jelző bit, amely azt mutatja meg, hogy egy művelet során az utolsó legjelentősebb bitből (legmagasabb helyiértékű bitből) “átvitel” vagy “hordozás” történt-e. Ez elsősorban az unsigned (előjelnélküli) műveletek esetén fontos.



Mire használjuk?

  • Összeadásnál: Ha a két szám összege meghaladja az adott regiszter bitméretét, azaz túlcsordul, akkor a Carry Flag beáll (1 lesz).
  • Kivonásnál: Ha a kisebbik számot vonjuk ki egy nagyobbból, akkor kölcsönt kell venni, és ezt is a Carry Flag jelzi (szintén beáll).
  • Többbájtos (multi-byte) vagy több szavas (multi-word) számok összeadásánál és kivonásánál segít, hogy az átvitel megfelelően továbbítódjon a következő byte vagy szó felé.



Hogyan működik?

  • CF = 1, ha:
    • Összeadáskor az eredmény nagyobb, mint amit a regiszterbe be lehet tárolni (pl. 8 bites regiszternél az eredmény 256 vagy nagyobb).
    • Kivonáskor kölcsönt kellett venni (a kisebb számot kivontuk a nagyobból, ami nem megengedett unsigned műveletként).
  • CF = 0, ha:
    • Összeadás vagy kivonás után nincs túlcsordulás vagy kölcsönvétel.



Példa (8 bites összeadás)

Legyen az AL regiszter értéke: 0xFF (255 decimal), és hozzáadunk 0x01-et:

0xFF + 0x01 = 0x100 (dec: 256)

De az AL csak 8 bitet tud tárolni, azaz csak a 0x00-t tudja tárolni, a 9. bit pedig túlcsordulás (átvitel) lesz, amit a Carry Flag jelöl.

Tehát az összeadás után:

  • AL = 0x00
  • CF = 1 (túlcsordulás történt)



Assembly példa (x86)

mov al, 0xFF  ; AL = 255
add al, 0x01  ; AL = 0x00, CF = 1 (átvitel)

Ha például két 16 bites számot akarunk összeadni byte-onként, akkor az ADC (Add with Carry) utasítást használjuk, ami figyelembe veszi ezt a Carry Flag-et, és átviszi a hordozást.