Assembleur 80x86 | INS |
---|---|
INTEL 80186+ | INput String |
Syntaxe
INS opérande_cible,DX |
Description
Cette instruction permet de demander un octet, un mot ou un double mot du port d'entrée/sortie et retourne le résultat dans 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. L'adresse du port est contenu obligatoirement dans le registre DX.
Algorithme
MODULE INS(opérande_cible,adresse) SI ((PE = 1) ET ((CPL > IOPL) ET (VM = 1))) ALORS * Mode protégé avec CPL > IOPL ou mode virtuel 8086 SI (n'importe quel permission de bit d'E/S pour un port d'E/S à un accès = 1) ALORS EXCEPTION #GP(0) SINON accumulateur ← Port(adresse) FIN SI SINON accumulateur ← Port(adresse) FIN SI SI (taille de l'opérande_cible = octet) ALORS SI DF = 0 ALORS (E)DI ← (E)DI + 1 SINON (E)DI ← (E)DI - 1 FIN SI SINON SI (taille de l'opérande_cible = mot) ALORS SI DF = 0 ALORS (E)DI ← (E)DI + 2 SINON (E)DI ← (E)DI - 2 FIN SI SINON SI DF = 0 ALORS (E)DI ← (E)DI + 4 SINON (E)DI ← (E)DI - 4 FIN SI FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
INS mem8, DX | 6Ch | Lecture d'un octet dans le port spécifié par le registre DX, et met le résultat dans l'emplacement mémoire spécifié par ES:(R)DI. Enfin, incrémente et décrémente le registre (R)DI. |
INS mem16, DX | 6Dh | Lecture d'un mot dans le port spécifié par le registre DX, et met le résultat dans l'emplacement mémoire spécifié par ES:(R)DI. Enfin, incrémente et décrémente le registre (R)DI. |
INS mem32, DX | 6Dh | Lecture d'un double mot dans le port spécifié par le registre DX, et met le résultat dans l'emplacement mémoire spécifié par ES:(R)DI. Enfin, incrémente et décrémente le registre (R)DI. |
Exceptions
Message | Mode réel | Virtuel 8086 | Mode protégé | Description |
---|---|---|---|---|
#GP(Protection général) | X | X | X | Un ou plusieurs bits de permission d'entrée/sortie sont fixer par le TSS pour un accès au port. |
X | Une ou plusieurs permission bit d'entrée/sortie sont fixer dans le TSS d'un accès de port. | |||
X | Le CPL est plus grand que le IOPL et une ou plusieurs bits de permission sont fixer par le TSS pour un accès au port. | |||
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é |
Voir également
Référence des ports d'entrée/sortie 80x86
Instruction assembleur 80x86 - Instruction OUT
Références
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 813
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 120.
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 573 à 577.