Nastavenie registra príznakov


<= =>


Register príznakov sa čiastočne nastavuje súčasne s vykonávaním niektorých inštrukcií. Obsahuje ale i registre, ktoré sa automaticky nenastavujú (IF, DF, TF). Preto ASM86 má inštrukcie, ktorými môžeme priamo ovplyvniť hodnoty niektorých bitov registru F.

Ak chceme nastaviť hodnotu v príznaku, pre ktorý inštrukcia neexistuje, použijeme algoritmus:
#include <stdio.h>
unsigned char premenna;
main() {
  asm {
    MOV premenna,0        // nastav premennú do hodnoty 0
    PUSHF                 // ulož register príznakov do zásobníka
    POP AX                // presuň obsah vrcholu zásobníka do registra AX
    OR AX,1               // nastav posledný bit (CF) do logické 1
    PUSH AX               // ulož obsah AX do zásobníka
    POPF                  // presuň naspäť do registra príznakov
    JNC koniec            // otestuj nastavenie CF
    MOV premenna,1        // CF bol v 1, nastav hodnotu premennej do 1
  }
  koniec:
  printf("%d",premenna);  // vypíš obsah premennej
}

Jednotlivé bity časti registra príznakov môžeme tiež ovplyvniť vhodným použitím inštrukcií LAHF a SAHF.


<= =>