TP 3
TP 3
TP 3
Le microprocesseur ne peut exécuter qu'une seule instruction à la fois. Pour connaître son adresse, il
utilise le couple de registres CS:IP dont la valeur est incrémentée automatiquement. Par conséquent,
le code du programme courant est exécuté de manière linéaire.
Imaginons cependant qu'un événement extérieur demande l'attention de l'ordinateur, par exemple la
pression d'une touche du clavier. La machine doit pouvoir réagir immédiatement, sans attendre que
le programme en cours d'exécution se termine. Pour cela, elle interrompt ce dernier pendant un bref
instant, le temps de traiter l'événement survenu puis rend le contrôle au programme interrompu.
Une interruption n'est rien d'autre que l'appel d'une routine spéciale présente en mémoire appelée
ISR (« Interrupt Service Routine »).
Une interruption peut être déclenchée par votre matériel. C'est ce qui arrive lorsque vous appuyez
sur une touche du clavier. Aucun logiciel n'intervient et le contrôle est passé directement à la
routine qui gère le clavier : ce sont les interruptions matérielles.
Les interruptions logicielles sont quant à elles appelées par des instructions en langage machine au
sein d'un programme. Leur importance est capitale. Rappelez-vous que contrairement au PASCAL
1
Institut Supérieur d’Informatique L1IRS 2021-2022
Mais alors, comment fait-on pour écrire une chaîne de caractères à l'écran ? Ou bien pour lire un
caractère entré au clavier ?
Eh bien on le fait de la même façon que le DOS lui-même ! On déclenche les interruptions
appropriées à l'aide de l'instruction « INT » du langage machine. C'est donc une routine du DOS (ou
parfois du BIOS) qui fera tout le travail. Les paramètres (ou leurs adresses) sont passés dans les
registres.
Les interruptions peuvent être vues comme un certain nombre de fonctions. Ces fonctions rendent la
programmation beaucoup plus facile, au lieu d'écrire du code pour imprimer un caractère vous
pouvez simplement appeler l'interruption qui le fera pour vous. Il y a également des fonctions
d'interruption pour les disques et tout autre matériel. Nous appelons ces fonctions, des interruptions
logicielles. Des interruptions sont également déclenchées par différents matériels qui s'appellent des
interruptions matérielles. Pour le moment, nous nous occuperons que des interruptions logicielles.
Pour appeler une interruption logicielle, une instruction INT est utilisée, dont la syntaxe est la
suivante :
INT valeur
La valeur peut être un nombre de 0 à 255D (ou de 0 à 0FFH), de façon générale, nous utiliserons les
nombres hexadécimaux.
Pour spécifier une sous-fonction, il faut placer dans le registre AH le numéro de la sous-fonction
avant d'appeler l'interruption.
2
Institut Supérieur d’Informatique L1IRS 2021-2022
4. Interruption 21h
Cette interruption offre un regroupement de tous les services offerts par le système d’exploitation
DOS ou compatible. Pour réaliser les opérations standards (affichage, saisie), le système
d’exploitation (ici DOS) fournit les fonctions pré-écrites (fonctions de l’interruption 21H) :
INT 21H ;
Fonction 7 : permet la saisie d’un caractère au clavier et le met (code ASCII) dans le registre AL.
INT 21H ;
INT 21H
MOV AX,4c00h
Int 21h
3
Institut Supérieur d’Informatique L1IRS 2021-2022
4
Institut Supérieur d’Informatique L1IRS 2021-2022
Manipulation
Exemple 1:
Voici un petit exemple en assembleur qui écrit la lettre ‘A’ à l’écran :
mov dl,41h
mov ah,02 ;
int 21h;
- L’instruction « MOV DL, 41h » demande au processeur de mettre dans le registre DL le code
ASCII de la lettre ‘A', c'est-à-dire 65, ou 41h ;
- « MOV AH, 02 » : mettre le nombre 2 dans AH ;
- Enfin, la dernière instruction appelle l'interruption numéro 21h. La fonction n°2 de l’interruption
21H permet d’afficher un caractère à l’écran.
Exemple 2 :
Exemple 2.1
Voici un petit exemple en assembleur qui écrit la lettre 'A' puis ligne suivante puis début de ligne
puis 'B' (AB en vertical) :
MOV dl, 41h
MOV Ah, 02h ;
INT 21h
MOV dl,0ah ;
MOV ah,02h ;
INT 21h ;6
MOV dl,0dh ;
MOV ah,02h ;
INT 21h ;9
MOV dl, 42h ;
MOV Ah, 02h ;
INT 21h ;
Exemple 2.2
Voici un petit exemple en assembleur qui ecrit la lettre 'A' pui ligne suivante puis 'B' :
(AB en diagonal)
MOV dl, 41h ;code ASCII lettre A
MOV Ah, 02h ;
5
Institut Supérieur d’Informatique L1IRS 2021-2022
INT 21h
MOV dl,0ah ;code ASCII Nouvelle Ligne
MOV ah,02h ;
INT 21h ;
MOV dl, 42h ;code ASCII lettre B
MOV Ah, 02h ;
INT 21h ;
Exemple 3 :
Voici un petit exemple en assembleur qui écrit une chaine de caractères à l’écran :
mov ah,09h ; Fonction 09h
mov dx,offset message ; Paramètre: dx reçoit l'adresse de message
int 21h ; Appeler la fonction 21h
int 20h ; Appeler la fonction 20h (Fin du programme)
message db "Hello world !$" ; message à afficher entre guillemets, $ : fin de la chaine de caractères.
6
Institut Supérieur d’Informatique L1IRS 2021-2022
Travail Demandé :
Exécuter ce programme.
7
Institut Supérieur d’Informatique L1IRS 2021-2022
Instruction Commentaire
MOV DL,3Fh …………………………………………………………………………………….
l1: MOV AH,2 …………………………………………………………………………………….
INT 21h …………………………………………………………………………………….
INC DL …………………………………………………………………………………….
CMP DL,5Bh …………………………………………………………………………………….
…………………………………………………………………………………….
…………………………………………………………………………………….
JNE l1 …………………………………………………………………………………….
INT 20h …………………………………………………………………………………….