1 / 16

Tp°4

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

adonica
Télécharger la présentation

Tp°4

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 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.

More Related