Assembleur 80x86 | SCAS |
---|---|
INTEL 8088+ | Scan String |
Syntaxe
SCAS chainecible |
Description
Cette instruction permet de comparer un octet, un mot ou un double mot avec la cellule mémoire à l'adresse ES:[DI] et incrémente/décrémente le registre DI en fonction de la taille de l'opérande cible et de l'état du drapeau de direction.
Algorithme
SI chainecible est un octet ALORS temp ← AL - chainecible SetStatusFlags(temp) SI DF = 0 ALORS (E)DI ← (E)DI + 1 SINON (E)DI ← (E)DI - 1 FIN SI SINON SI chainecible est un mot ALORS temp ← AX - chainecible SetStatusFlags(temp) SI DF = 0 ALORS (E)DI ← (E)DI + 2 SINON (E)DI ← (E)DI - 2 FIN SI SINON SI chainecible est un double mot ALORS temp ← EAX - chainecible SetStatusFlags(temp) SI DF = 0 ALORS (E)DI ← (E)DI + 4 SINON (E)DI ← (E)DI - 4 FIN SI SINON temp ← EAX - chainecible SetStatusFlags(temp) SI DF = 0 ALORS (E)DI ← (E)DI + 8 SINON (E)DI ← (E)DI - 8 FIN SI FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
SCAS mem8 | AEh | Compare le contenu d'un registre AL avec l'octet ES:(R)DI et incrémente ou décrémente R(DI). |
SCAS mem16 | AFh | Compare le contenu d'un registre AX avec le mot ES:(R)DI et incrémente ou décrémente R(DI). |
SCAS mem32 | AFh | Compare le contenu d'un registre EAX avec le double mot ES:(R)DI et incrémente ou décrémente R(DI). |
SCAS mem64 | AFh | Compare le contenu d'un registre RAX avec le double mot ES:(R)DI et incrémente ou décrémente R(DI). |
Exceptions
Message | Mode réel | Virtuel 8086 | Mode protégé | Description |
---|---|---|---|---|
#GP(Protection général) | X | X | X | Une adresse mémoire dépasse la limite du segment ES ou n'est pas canonique |
X | Un segment ES nulle est utilisé comme référence mémoire | |||
#PF(Faute de page) | X | X | Une faute de page résultat de l'exécution de l'instruction | |
#AC(Vérifie l'alignement) | X | X | Un désalignement de la référence mémoire est effectué quand une vérification d'alignement est activé |
Voir également
Instruction assembleur 80x86 - Instruction CMP
Instruction assembleur 80x86 - Instruction CMPS
Références
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 832
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 223.
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 413 à 417.