Assembleur 80x86 | INC |
---|---|
INTEL 8088+, x86-64 | Increment |
Syntaxe
INC registre |
INC mémoire |
Description
Cette instruction permet d'incrémenter un registre ou un emplacement mémoire. Ainsi, l'instruction INC est un quelque sorte un raccourci de l'instruction ADD, en effet celle-ci incrément de 1 le registre ou l'adresse mémoire spécifié, le résultat obtenu est donc identique à celui d'un ADD avec 1 comme 2ième opérande.
Remarques
- Les drapeaux OF, SF, ZF, AF, PF et CF sont définis en fonction du résultat de l'instruction SUB.
- L'instruction INC peut être utilisée avec un préfixe LOCK pour permettre l'exécution de l'instruction de manière atomique.
- Mode Long : En mode 64 bits, INC r16 et INC r32 ne sont pas codables (car les opcodes 40h à 47h sont des préfixes REX). Sinon, la taille de fonctionnement par défaut du mode 64 bits de l'instruction est de 32 bits. L'utilisation du préfixe REX.R permet d'accéder à des registres supplémentaires (R8 à R15). L'utilisation du préfixe REX.W favorise le fonctionnement à 64 bits.
Algorithme
MODULE INC(operande) operande ← operande + 1 |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
INC reg/mem8 | FEh /0 | Incrémente le contenu d'un emplacement registre ou mémoire de 8 bits de 1. |
INC reg/mem16 | FFh /0 | Incrémente le contenu d'un emplacement registre ou mémoire de 16 bits de 1. |
INC reg/mem32 | FFh /0 | Incrémente le contenu d'un emplacement registre ou mémoire de 32 bits de 1. |
INC reg/mem64 | FFh /0 | Incrémente le contenu d'un emplacement registre ou mémoire de 64 bits de 1. |
INC reg16 | 40h +rw | Incrémente le contenu d'un registre 16 bits de 1. |
INC reg32 | 40h +rd | Incrémente le contenu d'un registre 32 bits de 1. |
Cycles d'horloge
Opérande | Cycle d'horloge | Taille en octets | |||
---|---|---|---|---|---|
8086 | 80286 | 80386 | 80486 | ||
reg8 | 3 | 2 | 2 | 1 | 2 |
reg16 | 3 | 2 | 2 | 2 | 1 |
reg32 | - | - | 2 | 2 | 2 |
mem | 15+EA | 7 | 6 | 3 | 2 à 4 |
Exceptions
Message | Mode réel | Virtuel 8086 | Mode protégé | Description |
---|---|---|---|---|
#SS(Pile non-canonique) | X | X | X | Une adresse mémoire dépasse la limite du segment de pile ou n'est pas canonique |
#GP(Protection général) | X | X | X | Une adresse mémoire dépasse la limite du segment de données ou n'est pas canonique |
X | L'opérande de destination n'est pas dans un segment non écrivable | |||
X | Un segment de donné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é |
Exemples
L'exemple suivant permet d'incrémenter de 1 la valeur du registre AX :
- INC AX
L'exemple suivant permet d'effectuer l'opération «BL = BL + 1» :
- INC BL
L'exemple suivant permet d'ajouter 1 au contenu en octets de l'emplacement de mémoire du segment de données spécifié par le registre BX :
- INC BYTE PTR[BX]
Voir également
Instruction assembleur 80x86 - Instruction ADD
Instruction assembleur 80x86 - Instruction DEC
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 812
Assembleur Facile, Philippe Mercier, 1990, ISBN: 2-501-01176-7, page 405
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 118.
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 570 à 572.