Vous êtes sur la page 1sur 15

Registre de flags

8086
FAIRADI Mouhcine
PLAN

Cest quoi FLAG


Registre dtat
Le rle de registre dtat
Le registre FLAGS
Les drapeaux d'tat
Drapeau de contrle
Les drapeaux systme
Instructions affectes par les drapeaux
Oprations sur les flags
Exercice - corrig
Cest quoi FLAG

FLAG(drapeau) ou un indicateur dtat, est un bit reprsente dans


une case mmoire de la registre dtat, ce bit indiquant le
rsultat dune opration ou un statut dun Object.

Il y a trois catgorie des flags:


Les drapeaux d'tat.
Le drapeau de contrle.
Les drapeaux systme.
Registre dtat

Le registre dtat est un ensembles de bits chacun de ces bits est un


indicateur dtat (FLAG).
Il actualise en fonction du rsultat du dernier opration.
Le registre d'tat comporte en gnral un minimum de quatre drapeaux:
Indicateur de nullit.
Indicateur de retenue.
Indicateur de dpassement de capacit.
Indicateur de ngativit.
Les nom des registre dtat chez INTEL pour chacune architecture:
FLAGS pour les processeur 16bit (notre sujet).
EFLAGS pour les processeur 32bit.
RFLAGS pour les processeur 64bit.
Le rle de registre dtat

Les indicateurs dtat sont utiliss par les instructions de saut


conditionnels: en fonction de ltat dun (ou plusieurs) flag(s), le
programme se poursuit de manire diffrente.

Ce registre permet ainsi d'avoir tout instant l'tat rsultant d'une


instruction ayant t excute par le processeur.

Il permet de fixer et de connatre l'tat du processeur tout


moment.
Le registre FLAGS

Le microprocesseur 8086 contient un registre dtat sur 16 bit:

FLAGS
DRAPEAU O D I T S Z A P C
BIT 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Overflow Flag (dbordement) o


Direction Flag (direction) o o Carry Flag (retenue)
Interrupt Flag (interruption) o o Parity Flag (parit)
Trap Flag (trappe) o o Adjust Flag (ajustement)
Les drapeaux d'tat.
Le drapeau de contrle. o Zero Flag (zro)
Sign Flag (singe) o
Les drapeaux systme.
Les drapeaux d'tat

CF (bit 0) Carry Flag (Drapeau de retenue) : Mise 1 si la dernire opration a gnre une
retenue.
PF (bit 2) Parity Flag (Drapeau de parit) : Mise 1 si l'octet de poids faible du rsultat
gnr aprs une opration arithmtique contient un nombre pair de bits 1.
AF (bit 4) Adjust Flag (Drapeau d'ajustement) : Mise 1 si le rsultat d'une opration
arithmtique gnre un rsultat provoquant une retenue sur le troisime bit. Ce drapeau n'est
utile que dans l'utilisation du codage BCD.
ZF (bit 6) Zero Flag (Drapeau zro) : Mise 1 si le rsultat d'une opration arithmtique
vaut zro.
SF (bit 7) Sign Flag (Drapeau de signe) : Mise 1 si la dernire opration a gnre un
rsultat ngatif.
OF (bit 11) Overflow Flag (Drapeau de dbordement) : Mise 1 si le dernier rsultat a
dbord de la taille du registre.
Drapeau de contrle

DF (bit 10) Direction Flag (Drapeau de direction) : Ce drapeau est


utilis conjointement avec les instructions oprant sur les chanes
de caractres. Lorsque le drapeau DF est arm, les adresses des
chanes de caractres sont auto dcrmentes (allant ainsi des
adresses les plus hautes vers les adresses les plus basses). Lorsque
le drapeau est dsarm, les adresses des chanes de caractres
sont auto incrmentes (allant des adresses les plus basses vers
les adresses les plus hautes). Aucun rsultat d'opration ne permet
d'armer ou de dsarmer le drapeau de direction. Seules deux
instructions permettent de spcifier explicitement son tat.
Les drapeaux systme

TF (bit 8) Trap Flag (Drapeau de trappe) : Lorsqu'il est mise 1,


ce drapeau permet le dbogage en mode pas pas, c'est--dire
instruction par instruction. Lorsqu'il est mise 0, le mode pas
pas est inoprant (fonctionnement normal).
IF (bit 9) Interrupt Flag (Drapeau d'interruption) : Ce drapeau
contrle la faon dont le processeur rpond aux requtes
d'interruptions masquables (c'est--dire dsactivables). Lorsqu'il
est arm, le processeur peut rpondre toutes les interruptions,
dans le cas contraire (drapeau IF dsarm), le processeur ne
pourra rpondre qu'aux interruptions non masquables.
Instructions affectes par les drapeaux 1/2

LOOPE ou LOOPZ Bouclage tant que CX = 0 et ZF = 1 (galit)


LOOPNE ou LOOPNZ Bouclage tant que CX = 0 et ZF = 0 (ingalit)
INTO Interruption si OF = 1 (overflow)
JA ou JNBE Saut si suprieur (si CF + ZF = 0)
JAE ou JNB (1) Saut si suprieur ou gal (si CF = 0)
JB ou JNAE (1) Saut si inferieur (si CF = 1)
JBE ou JNA (1) Saut si infrieur ou gal (si CF + ZF = 1)
JC Saut en cas de retenue (si CF = 1)
JE ou JZ Saut si gal ou nul (si ZF = 1)
JG ou JNLE (2) Saut si plus grand (si (SF OF) + ZF = 0)
JGE ou JNL (2) Saut si plus grand ou gal (si SF OF = 0)
Instructions affectes par les drapeaux 2/2

JL ou JNGE (2) Saut si plus petit (si SF OF = 1)


JLE ou JNG (2) Saut si plus petit ou gal (si (SF OF) + ZF = 1)
JNC Saut si pas de retenue (si CF = 0)
JNE ou JNZ Saut si non gal ou non nul (si (ZF = 0)
JNO Saut si pas de dpassement (si OF = 0)
JNP ou JPO Saut si parit impaire (si PF = 0)
JNS Saut si signe positif (si SF = 0)
JO Saut si dpassement (si OF = 1)
JP ou JPE Saut si parit paire (si PF = 1)
JS Saut si signe ngatif (si SF = 1)
Oprations sur les flags

STC STC Met le flag de retenue 1


CLC Efface le flag de retenue
CMC Inverse ltat du flag de retenue
STD Met le flag de direction 1 (dcrmentation)
CLD Met le flag de direction 0 (incrmentation)
STI Autorise les interruptions sur INTR
CLI Interdit les interruptions sur INTR
LAHF Transfert des 5 flags bas dans AH
SAHF Transfert de AH dans les 5 flags bas
PUSHF Sauvegarde des flags sur la pile
POPF Restauration des flags partir de la pile
Exercice - corrig

On suppose que les flags suivant


CF:0 ZF:0 SF:0
Et le registre AX:FFFF
Cest quoi le rsultat des flag si on fait cette instruction add AX,1

Corrig
CF:1 ZF:1 SF:0 OF:0 PF:1
Exercice - corrig

On suppose que les flags suivant


CF:0 ZF:0 SF:0
Et le registre AX:FFFF
Cest quoi le rsultat des flag si on fait cette instruction add AX,1

Corrig
CF:1 ZF:1 SF:0
Rfrences

MICROPROCESSEUR - Dr J.Y. HAGGEGE


https://fr.wikipedia.org/wiki/RFLAGS
https://fr.wikibooks.org/wiki/Programmation_Assembleur_x86/Le
s_flags
https://fr.wikipedia.org/wiki/Registre_d%27tat

Vous aimerez peut-être aussi