15
CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I TP 05 2010-2011 1 | 15  TP n° :4-5 RAPPEL PARTIE 1 : Déclaration des données utilisées au cours d un programme Data SEGMENT ………………………………………. ; Généralement toutes les variab les se trouvent dans ce segment de données Data ENDS Pour chaque variable, il faut spécifier: - son nom - sa taille (pseudo-instruction) - son contenu initial éventuel TITLE ………………………………. ; titre du programme PARTIE 1 : Déclaration des données utilisées au cours du programme Data SEGMENT ………………………………………. ; Généralement toutes les variables se trouvent dans ce segment de données appelé Data. Data ENDS PARTIE 2 : Déclaration de la pile Pile SEGMENT STACK DW 80DUP( ?) ; Le DOS construit automatiquement une pile dans le segment STACK on réserve ici 80 mots PILE ENDS PARTIE 3 : Le programme CODE SEGMENT ASSUME CS :CODE, DS :DATA, ES :nothing ;dit à l’assembleur vers quel segment on désire que le registre segment pointe Main : ; initialiser les registres de segments (sauf CS ) ;ecrire le code du programme MOV AH, 4CH ; fonction standard sert au retour au DOS INT 21h CODE ENDS

Correction TP4!5!2011 New(1)

Embed Size (px)

Citation preview

Page 1: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 1/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

1 | 1 5  

TP n° :4-5

RAPPEL

PARTIE 1 : Déclaration des données utilisées au cours d ’un programme

Data SEGMENT 

………………………………………. ; Généralement toutes les variables se trouvent dans ce segment de données Data

ENDS

Pour chaque variable, il faut spécifier:- son nom- sa taille (pseudo-instruction)

- son contenu initial éventuel

TITLE ………………………………. ; titre du programme

PARTIE 1 : Déclaration des données utilisées au cours du programme

Data SEGMENT 

………………………………………. ; Généralement toutes les variables se trouvent dans ce

segment de données appelé Data.

Data ENDS

PARTIE 2 : Déclaration de la pile

Pile SEGMENT STACK 

DW 80DUP( ?) ; Le DOS construit automatiquement une pile dans le segment STACK on

réserve ici 80 mots

PILE ENDS

PARTIE 3 : Le programme

CODE SEGMENT 

ASSUME CS :CODE, DS :DATA, ES :nothing ;dit à l’assembleur vers quel segment on désire que le

registre segment pointe

Main :

; initialiser les registres de segments (sauf CS )

;ecrire le code du programme

MOV AH, 4CH ; fonction standard sert au retour au DOS

INT 21h

CODE ENDS

Page 2: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 2/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

2 | 1 5  

1°/Le nom

- ne peut contenir que des lettres ou des chiffres (et "_")- doit commencer par une lettre- doit avoir une taille de 8 caractères maximum

2°/La taille : les pseudo-instructions

DB: DECLARE BYTE (1 byte)

DW : DECLARE WORD (2 bytes)

DD : DECLARE DOUBLE (4 bytes)

3°/La valeur initiale éventuel

Éventuel car on n’est pas obligé d'initialiser une valeur. Dans ce cas on met un "?".

 Exemple:

AGE DB ? : Nom(AGE), taille (DB), valeur initiale (?)

Déclaration des variables de type "caractères".

L'instruction DB est aussi utilisée pour définir des chaînes de caractères.Une chaîne de caractères doit se trouver entre apostrophes;si elle est destinée à l'affichage (sur l'écran), elle devra être terminée par le signe '$'.

Si on souhaite définir une variable initialisée avec la lettre 'A', on écrira:

LETTRE DB 65

ou LETTRE DB 041h

ou LETTRE DB 'A'

Remarque :

On peut définir une phrase:

PHRASE DB 'CELA DEFINIT UNE PHRASE'

Qui déclare 23 bytes en mémoire, initialisés par les lettres de la phrase. (Espaces compris)

En mémoire, on trouvera donc

C,E,L,A, ,D,E,F,I,N,I,...

ou 67,69,76,65,32,68,69,70,73,78,73,...

ou 043h,045h,04Ch,041h,020h,044h,045h,046h,049h,04Eh,049h,...

Initialisation de data segment

Assume ds:data

Page 3: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 3/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

3 | 1 5  

mov ax, data

mov ds,ax

Les tableaux.

Il est également possible d'utiliser, conjointement avec les pseudo-instructions de déclarationde variables, la pseudo-instruction DUP. Ce DUP indique à l'assembleur qu'il faut répéter(dupliquer) plusieurs fois l'opération qui le précède.

Exemples:

* Déclaration d'un tableau de 10 octets initialisés à 0 :

tab1 db 10 dup (0)

* Déclaration d'un tableau de 5 doubles mots initialisés respectivement à

0, 1, 2, 3 et 4 :

tab2 dd 5 dup (0, 1, 2, 3, 4)

* Déclaration d'un tableau de 100 mots non initialisés :

tab3 dw 100 dup (?)

* Les deux pseudo-instructions suivantes sont équivalentes :

tab4 dw 512,97,0,3,7tab4 dw 5 dup (512,97,0,3,7)

Initialisation de data segment

Assume ds:data

mov ax, data

mov ds,ax

Déclaration d'une pile

Pour utiliser une pile en assembleur, il faut déclarer un segment de pile, et y réserver unespace suffisant. Ensuite, il est nécessaire d'initialiser les registres SS et SP pour pointer sousle sommet de la pile.

Voici la déclaration d'une pile de 200 octets :

pile SEGMENT stack ; mot clef stack car pile

DW 100 dup (?) ; reserve espacepile ENDS

Pile SEGMENT STACK 

DW 80DUP( ?) ; Le DOS construit automatiquement une pile dans le segment STACK on réserve ici 80 mots

PILE ENDS

Page 4: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 4/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

4 | 1 5  

Noter le mot clef ``stack '' après la directive SEGMENT, qui indique à l'assembleur qu'il s'agitd'un segment de pile.

(voir figure ).

Figure 3.4: Une pile vide. L'étiquette base-pile repère la base de la pile, valeur initiale de SP.

Après les déclarations ci-dessus, on utilisera la séquence d'initialisation :ASSUME SS:PILE

MOV AX, PILE

MOV SS, AX ; init Stack Segment

Noter que le registre SS s'initialise de façon similaire au registre DS; par contre, on peutaccéder directement au registre SP.

Déclaration d'une procédure

Etant donné qu'une procédure est une suite d'instructions, il s'agit de regrouper les instructionscomposant la procédure entre des mots clés. L'ensemble de cette manipulation estappelée déclaration de procédure.Ces mots clés permettant la déclaration de la procédure sont une étiquette (qui représente lenom de la fonction) précédant le mot clé PROC marquant le début de la procédure, suivide near (qui signale que la procédure est située dans le même segment que le programmeappelant) et RET désignant la dernière instruction, et enfin le mot clé ENDP qui annonce lafin de la procédure. Ainsi une déclaration de procédure ressemble à ceci :

étiquette PROC near

instruction1

instruction2

...

RET

étiquette ENDP

Page 5: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 5/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

5 | 1 5  

Appel d’une procédure : C’est l'instruction CALL qui permet l'appel d'une procédure. Elleest suivie soit d'une adresse 16 bits, désignant la position du début de la procédure, ou bien dunom de la procédure (celui de l'étiquette qui précède le mot clé PROC).

Exemple :

Exemple en assembleur Effet Résultats

; Programme

DATA SEGMENT

SOM DW 5 DUP (?)

VAR DB 2 DUP (?)

DATA ENDS

pile SEGMENT stack

DW 100 dup (?)

pile ENDS 

Code segment 

Assume cs :code,

DS :DATA, SS:PILE 

Main :

MOV AX,DATA

MOV DS,AXMOV AX, PILE

MOV SS, AX 

MOV AX,9

MOV BX,4

PUSH AX

PUSH BXCall Somme

POP BX

POP AX

MOV AH,4CH

INT 21H

Somme Proc near

ADD AX,BXMOV SOM,AX

MOV VAR,BL

RET

SOMME ENDP 

CODE ENDS

END Main

Titre du programme

Déclaration des données

Déclaration de la pile

Corps du programme

Déclaration du segment des

données

Initialisation de la pile

AX <- 9

BX <- 4

…………………………………………… …………………………………………… 

…………………………………………… 

…………………………………………… 

…………………………………………… 

…………………………………………… 

…………………………………………… 

…………………………………………… 

…………………………………………… 

…………………………………………… 

L’état du registre flag 

………………………………............ 

AX:…….…., BX:…..….…, SP:……..….. 

AX:…..…..., BX:…………, SP:..……….. 

AX:…….…., BX:…..….…, SP:……..….. 

AX:…..…..., BX:…………, SP:..……….. 

AX:…….…., BX:…..….…, SP:……..…. 

.

AX:…..…..., BX:…………, SP:..……….. 

AX:…….…., BX:…..….…, SP:……..….. 

AX:…..…..., BX:…………, SP:..……….. 

AX:…….…., BX:…..….…, SP:……..….. 

AX:…..…..., BX:…………, SP:..……….. 

AX:…….…., BX:…..….…, SP:……..….. 

L’état du registre flag 

………………………………............ 

Page 6: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 6/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

6 | 1 5  

Exercice n° 1 : Stockage en mémoire d’un message et affichage sur l’écran 

On se propose d’écrire l’organigramme et le programme permettant d’afficher le message suivant

sur l’écran « BONJOUR » selon les deux cas suivants :

a)   Affi chage d’une chaine de caractère : Réserver dans le segment de donnée une chaine de

caractère « Message » initialisée par ‘BONJOUR$’. 

Faire appel à la fonction 09H de l’interruption 21 du DOS (09H en AH, La chaine des caractères à

afficher en DX).

NB :  Affichage d’une chaine de caractère décalée dans le segment de donnée(DS) et se

termine par $.

organigramme Programme en assembleur

Data segment

Message db ‘BONJOUR$’ 

Data ends

Code segment

Assume cs:code, ds:data

Main :

Mov ax, data

Mov DS,ax

Mov DX, offset Message

Mov ah ,09

Int 21h

Mov ah,4ch

Int 21h

Code segment

End main

b)   Affichage d’un seul caractère : Réserver dans le segment de donnée une chaine de caractère

« Message » initialisée par ‘BONJOUR’. 

Faire appel à la fonction 06H de l’interruption 21 du DOS (06H en AH, le code du caractère à afficher

en DL).utiliser CX en compteur des caractères et BX en pointeur d’adresse vers les caractères.

debut

Déclaration Message 

Initialisation DS

DX offset Message 

Affichage Message fonction( 09) 

fin

Page 7: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 7/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

7 | 1 5  

organigramme Programme en assembleur

Data segment

Message db ‘BONJOUR’ 

Data ends

Code segment

Assume cs:code, ds:data

Main :

Mov ax, data

Mov DS,ax

Mov BX,0

Mov CX,7

Boucle: Mov DL, Message[BX]

Mov ah ,02

Int 21h

Inc BX

CMP BX,CX

JNZ boucle 

Mov ah,4ch

Int 21h

Code segment

End main

Exercice n°2 : Acquisition des caractères du clavier en mémoire

Ecrire le programme permettant de lire les caractères d’un clavier et de les mettre dans un

buffer  en mémoire dans le segment de donnée. L’acquisition continue jusqu’à ce que

l’opérateur appuie sur RETURN ou fasse entrer 30 touches. 

Ce programme devra retourner l’adresse de départ du buffer en BX et le nombre de

caractères en CX. Seulement BX et CX seront affectés. Vérifier avec DEBUG.

NB : LE CODE ASCII DE LA TOUCHE ENTREE EST : 13 OU 0Dh

debut

Déclaration Message 

Initialisation DS

DL Message[BX] 

Affichage Message fonction( 02) 

fin

BX 0

CX7

BX BX+1

BX= ?cx

Jnz boucle

Boucle:

Page 8: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 8/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

8 | 1 5  

organigramme Programme en assembleur

Data segment

BUFFER DB 30 DUP (?)

Data ends

Code segment

Assume cs:code, ds:data

Main :

Mov ax,data

Mov ds,ax

Mov bx,offset BUFFER ; initialisation de BX (mov BX, 0)

Mov CX,0

Boucle : Mov AH,01

Int 21h

INC CX

CMP CX ,30

JE FIN 

CMP AL ,13

JNZ boucle

FIN: mov bx,cx

Mov cx,30-cx

Mov ah,4ch

Int 21h

Code ends

End main 

 Exercice 1:

En utilisant la structure générale d’un programme assembleur de type.EXE, définir dans le

segment de donnée une table d’octets  ‘TAB1’ initialisée avec les valeurs : 4, 7, 3 et 6 et

réserver quatre octets pour ‘TAB2 ‘. 

1.  Écrire alors le programme permettant de :

a- Remplir la table TAB2 par les valeurs suivante : 1,5 ,2 ,8 en utilisant la fonction

lecture de clavier 01 de l’interruption 21 puis faire l’affichage en utilisant la fonction

02 de l’interruption 21.

Declaration BUFFER 

BXOFFSET BUFFER

CX 0

CX CX+1

fin

JNZ BOUCLE 

Lecture clavier function (01) 

CX= ?30

Initialisation DS 

BX CX

DEBUT

AL= ?13

CX30- CX

BOUCLE : 

SI NON JZ FIN

FIN :

Page 9: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 9/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

9 | 1 5  

b- Recopier en ordre inverse la table ‘TAB1’ en table ‘TAB2’. 

Vérifier le résultat à l’aide du DEBUG, expliquer votre démarche en donnant

l’organigramme et le programme en assembleur. 

Organigramme Programme en assembleur

a)

sinon

a) Data segment

TAB1 db ’ 4’,’7’,’3’,’6’ 

TAB2 db 4 dup (?)

Data ends

Code segment

Assume cs:code, ds:data

Main :

Mov ax,data

Mov ds,ax

Mov si,0

Mov cx,4

Boucle : Mov AH,01

Int 21h

Mov TAB2[SI], AL

Mov DL, TAB2[SI]

Mov ah,02

Int 21h

Inc si

Cmp cx,si

JNZ boucle 

Mov ah,4ch

Int 21h

Code ends

End main 

Declaration TAB1 

Initialisation DS 

SI 0

Cx4

TAB 2[SI] AL

fin

JNZ boucle 

Boucle: 

Lecture clavier function 01  

Affichage function (02) 

SI= ?cx

Declaration TAB2 

debut

SI SI+1

Page 10: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 10/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

10 | 1 5  

 Exercice 2:En utilisant la structure générale d’un programme assembleur de type.EXE,

définir dans le segment de donnée une table d’octets  ‘TAB1’ initialisée avec les valeurs : 4,7, 3 et 6. 

1.  Écrire alors le programme permettant de :

a- Faire l’affichage de la table TAB1 en utilisant la fonction 02 de l’interruption 21.

b) b)

Data segment

TAB1 db ’ 4’,’7’,’3’,’6’ 

TAB2 db ’ 1’,’5’,’2’,’8’ 

Data ends

Code segment

Assume cs:code, ds:data

Main :

Mov ax,data

Mov ds,ax

Mov si,0

Mov DI,3

Mov cx,4

Boucle : Mov AL,TAB1[SI]

Mov TAB2[DI],AL ; AL registre intermédiaire pour l’affectation 

Mov DL,TAB2[SI]

Mov ah,02

Int 21h

INC SI

DEC DI

Loop boucle

Mov SI,0

BOUCLE1: Mov DL,TAB2[SI]

Mov ah,02

Int 21h

Inc SI

CMP SI,4

Jnz BOUCLE1 

Mov ah,4ch

Int 21h

Code ends

End main 

Declaration TAB1 TAB2 

DI 3

SI 0

Cx4

TAB 2[SI] AL

fin

JNZ

boucle 

Boucle: 

Al TAB1[SI]

Affichage function (02)

CX= ?0

Initialisation DS 

SI SI+1

DI DI-1

DLTAB 2[SI]

debut

SI 0

SI=4

SI SI+1

JNZ BOUCLE1 

BOUCLE1

Page 11: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 11/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

11 | 1 5  

b- Trouver le minimum de ‘TAB1’ et le mettre dans AX.

Vérifier le résultat à l’aide du DEBUG, expliquer votre démarche en donnant

l’organigramme et le programme en assembleur. 

organigramme Programme en assembleur

a) Data segment

TAB1 db ’ 4’,’7’,’3’,’6’ 

Data ends

Code segment

Assume cs:code, ds:data

Main :

Mov ax,data

Mov ds,ax

Mov si,0 ; SI pour parcourir le TAB1

Mov cx,4 ; nbre de cases de TAB1

Boucle : Mov dl,TAB1[si]

Mov ah,02

Int 21h

Inc si

Cmp cx,si

JNE boucle 

Mov ah,4ch

Int 21h

Code ends

End main 

------------------------------------------------------------------------------

------------------------------------------------------------------------------

b)

Data segment

TAB1 dw ‘4’,’7’,’3’,’6’ 

Data ends

Code segment

Assume cs:code, ds:data

Main :

Mov ax,data

Mov ds,ax

Mov si,0

Mov AX, 0; initialiser AX à 0

Mov cx, 4

Mov AX, TAB1[si] ; AX <- TAB1[0]

debut

Declaration TAB1 

Initialisation DS 

SI 0

CX4

DL TAB1 [SI]

Affichage de DL (fonction 02)

SI Si+1

SI=? CX

fin

JZ fin

JNZ boucle 

Boucle: 

Fin:

Page 12: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 12/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

12 | 1 5  

b)

Boucle: Inc si

CMP si,cx

JE fin 

CMP AX, TAB1[si]

JL boucle ; si AX< TAB1[si] reboucler 

Mov AX, TAB1[si] ; le minimum est mis dans AX

JMP boucle

Mov dl,Al ; charger DL par la valeur min trouvée dans Al (m taille)

fin : Mov ah,02

Int 21h

Mov ah,4ch

Int 21h

Code ends

End main 

b)

Data segment

TAB1 db ‘4’,’7’,’3’,’6’ 

Data ends

Code segment

Assume cs:code, ds:data

Main :

Mov ax,data

Mov ds,ax

Mov si,0

Mov AL,0

Mov cx,4

Mov AL, TAB1[si]

Boucle: Inc si

CMP si,cx

JZ fin 

CMP AL,TAB1[si]

JL boucle 

Mov AL, TAB1[si]

JMP boucle

Mov dl,Al

fin : Mov ah,02

Int 21h

Mov ah,4ch

Int 21h

Code ends

End main 

debut

Declaration TAB1 

Initialisation DS 

SI 0

Ax0

AX TAB1 [SI]

AX< TAB1 [SI]

fin

JZ fin

JL boucle 

Boucle: 

Fin:

CX4

AX TAB1 [SI]

SI SI+1

SI=CX

JMP Boucle Affichage de AX par 02

Page 13: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 13/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

13 | 1 5  

 Exercice 3: En utilisant la structure générale d’un programme assembleur de type.EXE,

définir dans le segment de donnée une table d’octets  ‘TAB1’ initialisée avec les valeurs : 4,7, 3 et 6 . 

a- Trouver le maximum de TAB1 et le mettre dans BX.

b- Afficher le maximum sous la forme : ‘LE MAX EST :’ 

Vérifier le résultat à l’aide du DEBUG, expliquer votre démarche en donnant

l’organigramme et le programme en assembleur.

Organigramme Programme en assembleur

a) Data segment

TAB1 dw ‘4’,’7’,’3’,’6’ 

Msg db ‘LE MAX EST :$’ 

Data ends

Code segment

Assume cs:code, ds:data

Main :

Mov ax,data

Mov ds,ax

Mov si,0

Mov BX,0

Mov cx,4

Mov BL, TAB1[si] ; bl <- TAB1[0]

Boucle: Inc si

CMP si,cx

JZ fin 

CMP BL,TAB1[si]

JG boucle ; si bl >  TAB1[si] reboucler et trouver le max

Mov BL, TAB1[si] ; bl <- le max de TAB1[si]

JMP boucle

fin : Mov DX, offset Msg ; charger dx par le msg (lea dx, msg) 

Mov ah ,09

Int 21h

Mov dl,Bl

Mov ah,02

Int 21h

Mov ah,4ch

Int 21h

Code ends

End main 

debut

Declaration TAB1 

Initialisation DS 

SI 0

Bx0

BL TAB1 [SI]

BL> TAB1 [SI]

fin

JZ fin

JG boucle 

Boucle: 

Fin:

CX4

BL TAB1 [SI]

SI SI+1

SI= ?cx

JMP Boucle 

Affichage de Msg par 09 

Affichage de BX par 02 

Declaration Ms  

Page 14: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 14/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

14 | 1 5  

Le code ASCII

Page 15: Correction TP4!5!2011 New(1)

8/3/2019 Correction TP4!5!2011 New(1)

http://slidepdf.com/reader/full/correction-tp452011-new1 15/15

CORRECTION TP04- 05:Architecture des ordinateurs Niveau : 1 E.S.T.I 

TP 05 2010-2011

15 | 1 5  

Interruption 21H

Fonction Parametre

d’entree 

Parametre

de sortie

Syntaxe Fonction

1 AH ALMOV AH,01

INT 21H

Lecture du caractère entre au clavier

avec écho et le range dans AL

2 AH,DLMOV AH,02

INT 21H

Affichage du caractère contenu dans le

registre DL sur l’écran 

3 AH ALMOV AH,03

INT 21H

Lecture d’un caractère sur le port série

auxiliaire RS 232 et le range dans AL 

4 AH,DLMOV AH,04

INT 21H

Ecriture d’un caractère contenue dans DL 

sur le port série auxiliaire RS 232

5 AH,DLMOV AH,05

INT 21H

Ecriture d’un caractère contenue dans DL 

sur le port d’imprimante 

6 AH,DLMOV AH,06

INT 21H

Lecture et écriture combine sur clavier

écran

7 AH ALMOV AH,07

INT 21H

Lecture directe au clavier sans écho. Le

caractère est range dans AL

8 AH ALMOV AH,08

INT 21H

Lecture du caractère entre au clavier sans

écho et le range dans AL

9 AH,DX

LEA DX,MESSAGE

(MOV DX,OFFSET

MESSAGE)MOV AH,09

INT 21H

Envoi d’un message sur l’écran 

0AH AH,DXLEA DX,MESSAGE

MOV AH,0AH

INT 21H

Lecture d’un message entier au clavier