9. Les instructions de manipulation des flags
a) l’instruction CLC (« Clear Carry flag »)
Syntaxe :
CLC
Description :
Met CF à 0.
Indicateurs affectés : CF
b) l’instruction STC (« Set Carry flag »)
Syntaxe :
STC
Description :
Met CF à 1.
Indicateurs affectés : CF
c) l’instruction CLD (« Clear Direction flag »)
Syntaxe :
CLD
Description :
Met DF à 0.
Indicateurs affectés : DF
d) l’instruction STD (« Set Direction flag »)
Syntaxe :
STD
Description :
Met DF à 1.
Indicateurs affectés : DF
e) l’instruction CLI (« Clear Interrupt flag »)
Syntaxe :
CLI
Description :
Met IF à 0.
Indicateurs affectés : IF
f) l’instruction STI (« Set Interrupt flag »)
Syntaxe :
STI
Description :
Met IF à 1.
Indicateurs affectés : IF
g) l’instruction CMC (« Complement Carry flag »)
Syntaxe :
CMC
Description :
Inverse CF.
Indicateurs affectés : CF
h) l’instruction LAHF (« Load AH from Flags »)
Syntaxe :
LAHF
Description :
Charge dans AH l’octet de poids faible du registre des
indicateurs.
i) l’instruction SAHF (« Store AH into Flags »)
Syntaxe :
SAHF
Description :
Stocke les bits de AH dans le registre des indicateurs.
10. Les instructions de gestion de la pile
a) l’instruction PUSH (« Push Word onto Stack »)
Syntaxe :
PUSH Source
Description :
Empile le mot Source. SP est décrémenté
de 2.
Remarques :
Source ne peut être une valeur immédiate. Il est
possible d’abréger votre code source en écrivant
par exemple “PUSH AX BX BP”. Le compilateur écrira
alors trois fois l’instruction PUSH du langage machine. Il est
possible également d’empiler des doubles mots.
b) l’instruction POP (« Pop Word off Stack »)
Syntaxe :
POP Destination
Description :
Dépile le mot qui se trouve au sommet de la pile et le place
dans Destination. SP est incrémenté de 2.
c) l’instruction PUSHF (« Push Flags onto Stack »)
Syntaxe :
PUSHF
Description :
Empile le registre des indicateurs. SP est décrémenté
de 2.
Remarque :
PUSHFD empile le registre des indicateurs codé sur 32 bits.
d) l’instruction POPF (« Pop Flags off Stack »)
Syntaxe :
POPF
Description :
Dépile le mot qui se trouve au sommet de la pile et le place
dans le registre des indicateurs. SP est incrémenté de
2.
Indicateurs affectés :
Tous
Remarque :
POPFD est utilisé pour un registre des indicateurs codé
sur 32 bits.
e) l’instruction PUSHA (« Push All registers onto
Stack »)
Syntaxe :
PUSHA
Description :
Empile AX, BX, CX, DX, BP, SI, DI et SP.
Remarque :
PUSHAD est utilisé pour des registres de 32 bits.
f) l’instruction POPA (« Pop All registers off
Stack »)
Syntaxe :
POPA
Description :
Restaure AX, BX, CX, DX, BP, SI, DI et SP à partir de la pile.
Remarque :
POPAD est utilisé pour des registres de 32 bits.
11. Les instructions de gestion des chaînes d’octets
a) l’instruction MOVSB (« Move String Byte »)
Syntaxe :
MOVSB
Description :
Copie l’octet adressé par DS:SI à l’adresse
ES:DI. Si DF = 0, alors DI et SI sont ensuite incrémentés,
sinon ils sont décrémentés.
Remarque :
Pour copier plusieurs octets, faire REP MOVSB (« Repeat
Move String Byte »). Le nombre d’octets à
copier doit être transmis dans CX de même que pour un
LOOP.
Exemple :
b) l’instruction SCASB (« Scan String Byte »)
Syntaxe :
SCASB
Description :
Compare l’octet adressé par ES:DI avec AL. Les résultats
sont placés dans le registre des indicateurs. Si DF = 0,
alors DI est ensuite incrémenté, sinon il est
décrémenté.
Remarques :
Pour comparer plusieurs octets, faire “REP SCASB” ou
“REPE SCASB” (« Repeat until Egal »),
ou encore “REPZ SCASB” (« Repeat until
Zero »). Ces trois préfixes sont
équivalents.
Le nombre d’octets à comparer
doit être transmis dans CX. La boucle ainsi créée
s’arrête si CX = 0 ou si le caractère pointé
par ES:DI est le même que celui contenu dans AL (i.e. si ZF
= 1). On peut ainsi rechercher un caractère dans une
chaîne.
Pour répéter au contraire la
comparaison jusqu’à ce que ZF = 0,
c’est-à-dire jusqu’à ce que AL et le
caractère adressé par ES:DI diffèrent,
utiliser REPNE ou REPNZ.
Exemple :
c) l’instruction LODSB (« Load String Byte »)
Syntaxe :
LODSB
Description :
Charge dans AL l’octet adressé par DS:SI. Si DF = 0,
alors SI est ensuite incrémenté, sinon il est
décrémenté.
Remarque :
Possibilité d’utiliser les préfixes de
répétition, de même que pour MOVSB.
d) l’instruction STOSB (« Store String Byte »)
Syntaxe :
STOSB
Description :
Stocke le contenu de AL dans l’octet adressé par ES:DI.
Si DF = 0, alors DI est ensuite incrémenté, sinon
il est décrémenté.
Remarque :
Possibilité d’utiliser les préfixes de
répétition, de même que pour LODSB.
e) l’instruction CMPSB (« Compare String Byte »)
Syntaxe :
CMPSB
Description :
Compare l’octet adressé par DS:SI et celui adressé
par ES:DI. Si DF = 0, alors SI et DI sont ensuite incrémentés,
sinon ils sont décrémentés.
Remarque :
Possibilité d’utiliser les préfixes de
répétition, de même que pour SCASB.
Sommaire
Suite
|