Télécharger la présentation
Publié parNathalie Vaillant Modifié depuis plus de 11 années
1
Les procédures et interruptions en Assembleur (Tasm)
Tp°4 Les procédures et interruptions en Assembleur (Tasm)
2
Les Procédures Pour déclarer une procédure en assembleur Syntaxe:
<nom-procédure> proc near …….. ret <nom-procédure> endp
3
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
4
Les Procédures Appel d’une procédure: Syntaxe:
call <nom-procédure> Exemple: call ecrire_message
5
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
6
Les Procédures Écrivez ce programme et observer son exécution sous TD de tasm Que fait ce programme?
7
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
8
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.
9
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’
10
Interruptions Exemple: mov ah, 09h int 21h
ici, est l’appel de l'interruption n°= 21h et la fonction n°= 09h.
11
Interruptions Exemple1: Pour arrêter l’exécution un programme :
mov ah, 4ch int 21h
12
Interruptions int 21h 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
13
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
14
interruptions Exemple 4: Changer la position du curseur mov ah, 02h
int 10h
15
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.
16
Tp à remettre Écrire le programme assembleur permettant de trier un tableau de 10 éléments entiers non signés.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.