Tp°4 - Webnode

Download Report

Transcript Tp°4 - Webnode

Tp°4
Les procédures et interruptions en
Assembleur (Tasm)
Les Procédures
Pour déclarer une procédure en assembleur
Syntaxe:
<nom-procédure> proc near
……..
……..
ret
<nom-procédure> endp
Les Procédures
Exemple:
ecrire_message proc near
mov ax, data
mov ds, ax
mov dx, offset message1
mov ah, 09h
int 21h
ret
ecrire_message endp
Les Procédures
Appel d’une procédure:
Syntaxe:
call <nom-procédure>
Exemple:
call ecrire_message
Les Procédures
pile segment stack
pp dw 20 dup (?)
pile ends
data segment
message1 db "bonjour",'$'
data ends
assume cs:code, ds:data, ss:pile
code segment
debut:
mov cx, 3
boucle: call ecrire_message
loop boucle
mov ah,4ch
int 21h
ecrire_message proc near
mov ax, data ; fixer le registre segment de donnée
mov ds, ax ; charger ds par l'adresse de la chaine
mov dx, offset message1 ; reperer le début
mov ah, 09h ; préparer l'interruption d'affichage du texte
int 21h
; appeler l'interruption
ret
ecrire_message endp
code ends
end debut
Les Procédures
1. Écrivez ce programme et observer son
exécution sous TD de tasm
2. Que fait ce programme?
Les Procédures
Pour passer des paramètres, il y a deux
méthodes:
On peut utiliser les registres AX, BX, CX et
DX
 Ou l’empilement et dépilement dans une pile
Interruptions
• Une interruption est un petit programme stocké en
mémoire qui peut être appelé et qui a une tâche
spécifique.
• Les interruptions permettent l'interactivité entre
l'utilisateur et le programme (les entrées/sorties).
• Pour accéder aux périphériques de l’ordinateur, il
faut le demander au MS-DOS via des interruptions.
• A chaque périphérique correspond une fonction
identifiée par un numéro.
Interruptions
Pour lancer une interruption il faut appeler
l’interruption selon la syntaxe suivante:
Syntaxe:
int <n°>
Exemple:
int 21
Mais à une interruption, peut y avoir plusieurs
fonctions définies chacune pour un périphérique.
La valeur de la fonction doit être placée dans le
registre ‘AH’
Interruptions
Exemple:
mov ah, 09h
int 21h
ici, est l’appel de l'interruption n°= 21h et la
fonction n°= 09h.
Interruptions
Exemple1:
Pour arrêter l’exécution un programme :
mov ah, 4ch
int 21h
Interruptions
Exemple 2:
Pour écrire un caractère à l'écran
mov ah, 02h
int 21h
 Mais il faut mettre le caractère à afficher
dans le registre DL
interruptions
Exemple 3:
Écrire une chaîne de caractères à l'écran
mov ah, 09h
int 21h,
Il va falloir écrire une phrase dans un tableau
qui se termine par le caractère ‘$’
Ensuite donner l'adresse de ce tableau dans DX
interruptions
Exemple 4:
Changer la position du curseur
mov ah, 02h
int 10h
interruptions
Exemple 4:
Lecture d'une touche au clavier
l'interruption 16h gère le clavier. Elle possède deux
fonctions intéressantes :
00h: lecture d'une touche. renvoi le code ASCII
de la touche dans le registre AL. Si celui-ci vaut 0, alors la
touche est étendue, et le code est stocké dans AH
01h, vérification de la présence d'une touche dans
le tampon clavier.
Tp à remettre
• Écrire le programme assembleur permettant
de trier un tableau de 10 éléments entiers
non signés.