commençons par notre premier programme :
lançons la commande
notepad f1.8
notepad vous demande si vous voulez créer le fichier, vous
répondez oui
tapez le programme :
MOV DL,'.' ; on met dans DL le code ASCII de '.'
MOV AH,02h ; AH est constant à 2
MOV CL,0 ; Cl sert de compteur
boucle:
CMP CL,10 ; si CL vaut 10
JE fin ; on s'arrête
INT 21h ; sinon on affiche DL
INC CL ; on incrémente le compteur
JMP boucle
fin:
MOV AH,4Ch ; on arrête le
INT 21h ; programme
Sauvegardez votre fichier f1.8 sous notepad
Puis assemblez votre fichier f1.8 avec a86
Exercice 1 : En vous inspirant du précédent exemple, écrivez un programme
qui affiche les caractères correspondants aux codes ASCII compris entre 33
et 127 (vous afficherez les caractères dans l’ordre croissant des codes
ASCII)(vous n’êtes pas obligés de gérer les retours à la ligne).
MOV DL,33
MOV AH,02h
boucle:
CMP DL,128
JE fin
INT 21h
INC DL
JMP boucle
fin:
MOV AH,4Ch ; on arrête le
INT 21h ; programme
Exercice 2 : Ecrivez un programme qui affiche les caractères correspondants
codes ASCII compris entre 127 et 33 (vous afficherez les caractères dans
l’ordre décroissant des codes ASCII).
MOV DL,127
MOV AH,02h
boucle:
CMP DL,32
JE fin
INT 21h
DEC DL
JMP boucle
fin:
MOV AH,4Ch ; on arrête le
INT 21h ; programme
Exercice 3 : Supposons que DL contienne une valeur comprise entre 0 et 9.
Si cette valeur est 0 nous voulons afficher le caractère ‘0’, si cette
valeur est 1 nous voulons afficher le caractère ‘1’... Quelle est la
séquence d’assembleur qui réalise cet affichage ?
MOV DL, 8 ; par exemple
ADD DL, '0' ; on ajoute le code ASCII de '0'
MOV AH, 02 ; on imprime le caractère correspondant
INT 21h ; à ce code ASCII
MOV AH,4Ch
INT 21h
Exercice 4 : Supposons que DL contienne une valeur comprise entre 10 et 15.
Si cette valeur est 10 nous voulons afficher le caractère ‘A’, si cette
valeur est 11 nous voulons afficher le caractère ‘B’... Quelle est la
séquence d’assembleur qui réalise cet affichage ?
MOV DL, 13
ADD DL, 'A'-10
MOV AH, 02
INT 21h
MOV AH, 4Ch
INT 21h
Exercice 5 : Supposons que DL contienne une valeur comprise entre 0 et 15.
Nous voulons afficher l’équivalent de cette valeur en hexadécimal sur
l’écran. Quelle est la séquence d’assembleur qui réalise cet affichage ?
MOV DL, 11
CMP DL, 9
JNA etiq
ADD DL, 7
etiq:
INC CH
ADD DL,'0'
MOV AH, 02h
INT 21h
MOV AH,4Ch
INT 21h
exercice 1:
voici le début d'un programme assembleur:
JMP instructions
chaine DB 'bonjour tout le monde',0
instructions:
completez le programme de telle sorte que la chaine
de caractères est affichée jusqu'à ce que l'on rencontre 0.
JMP instructions
chaine DB 'bonjour tout le monde',0
instructions:
MOV SI, offset chaine
MOV AH, 02h
boucle:
MOV DL,[SI]
CMP DL,0 ; sommes nous arrivés à la fin?
JE fin ; si oui on sort
INT 21h
INC SI
JMP boucle
fin:
MOV AH,4Ch
INT 21h
exercice 2:
Considérons le même début de programme que dans la
question 1. Cette fois-ci faites en sorte d'afficher
la chaine de caractères à l'envers.
JMP instructions
chaine DB 'bonjour tout le monde',0
instructions:
MOV SI, offset chaine
boucle1:
MOV DL,[SI]
CMP DL,0 ; sommes nous arrivés à la fin?
JE fin1 ; si oui on sort
INC SI
JMP boucle1
fin1:
DEC SI
MOV DI, offset chaine
DEC DI
MOV AH, 02h
boucle2:
CMP SI, DI
JE fin2
MOV DL, [SI]
INT 21h
DEC SI
JMP boucle2
fin2:
MOV AH,4Ch
INT 21h
exercice 3:
Considérons le même début de programme que dans la
question 1. Cette fois-ci faites en sorte d'afficher
la chaine de caractères un caractère sur deux.
JMP instructions
chaine DB 'bonjour tout le monde',0
instructions:
MOV SI, offset chaine
MOV AH, 02h
boucle:
MOV DL,[SI]
CMP DL,0
JE fin
INT 21h
INC SI
CMP byte ptr [SI],0
JE fin
INC SI
JMP boucle
fin:
MOV AH,4Ch
INT 21h
exercice 4:
Considérons un programme assembleur dont le début est :
1 / 17 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !