0% ont trouvé ce document utile (0 vote)
116 vues3 pages

TD2 Microprocesseur

Transféré par

Chouchene Chadha1
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
116 vues3 pages

TD2 Microprocesseur

Transféré par

Chouchene Chadha1
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Institut Supérieur d’Informatique et Département de télécommunication

Technologies de Communications 1ème Année Ingénieurs


H. Sousse Enseignant : Badreddine Rejeb

TD2 de Microprocesseurs et Interfaces

EXERCICE 1 : Initiation à l'utilisation d'une table


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 " SOURCE" initialisée avec les valeurs : 10, 20, 30 et
40; réserver quatre octets pour la table "DEST" et un octet pour le résultat "SOMME".
Ecrire alors la procédure permettant de :
 Remplir la table "DEST" par des zéros
 Recopier en ordre inverse la table "SOURCE" en table "DEST"
 Faire la somme des éléments de la table "SOURCE" et mettre le résultat dans
"SOMME". Utiliser pour cet effet le registre CX.

EXERCICE 2 :
Ecrire un programme qui permet d’afficher en binaire la valeur contenue dans le registre BL.

EXERCICE 3 : Acquisition des caractères du clavier en mémoire


Ecrire la procédure 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.
Cette procédure 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.

EXERCICE 4 :
Ecrire un programme permettant de convertir la chaîne de caractères "Chaine A CONvertIR"
en minuscules. La conversion est arrêtée lorsqu’on rencontre un 0 dans la chaîne de
caractères.

EXERCICE 5 :
La méthode de Newton obtient la racine carrée d'un nombre n par approximations
successives comme suit :
x' = (x + n / x) / 2
On répète jusqu’à ce que la différence entre x et x' soit négligeable. Comme la méthode
converge très rapidement, on peut aussi utiliser un nombre fixe d'itérations, par exemple 10.
On prend la valeur de départ de x égal à 10.

EXERCICE 6 :
1. Ecrire un programme qui permet de calculer la somme des entiers de 1 jusqu'à 10. Utiliser
pour cet effet le registre CX en compteur et le registre AX en accumulateur.
2. Ecrire un programme qui permet de trouver tout d’abord le minimum puis le maximum
d’une table non ordonnée d’octets et les retourner respectivement dans AL et AH.
L’adresse de départ de la liste et la longueur de celle-ci, en double- mots, se trouvent sur
la pile.

1
EXERCICE 7 : Conversion d'un nombre binaire en chaîne ASCII
Ecrire la procédure permettant de convertir un nombre binaire en une chaîne de
caractères à 6 octets dans le segment de donnée. On suppose que le nombre à convertir
se trouve dans AX et l'adresse de départ du buffer dans BX. Après la conversion BX
contient l'adresse de la chaîne ASCII et CX contient la longueur de cette chaîne. Le
reste des registres est préservé. On pourra alors afficher à l'écran le nombre décimal
signé correspondant à la valeur binaire dans AX.

Indications
 On commence par remplir le buffer, adressé par BX, avec des caractères
espaces.
 On fait la conversion en divisant le contenu de AX par 10 puis on ajoute au
reste de la division le code Ascii de zéro (30h) ; la valeur obtenue est le code
ASCII du chiffre des unités. On refait la même opération pour le chiffre des
dizaines etc.
 On charge les codes trouvés dans le buffer pointé par BX.
 L'affichage pourra être fait avec la fonction 40h de l'interruption 21h du DOS.

EXERCICE 8 Conversion Hexadécimal/ASCII


Disposant d’un caractère de deux digits en hexadécimal dans AL (FE par exemple),
écrire un programme permettant de convertir ce caractère en ASCII et d’afficher le
résultat à l’écran.
EXERCICE 9
On fait entrer à partir du clavier un mot de passe d’une longueur maximale d’une
dizaine de caractères, on le fait mémoriser dans une table « code », puis on le fait
comparer au mot de passe correcte « code_correcte » se trouvant déjà en mémoire tout
en le faisant imprimer en sens inverse sur l’écran.
Ecrire la routine correspondante.

EXERCICE 10
Ecrire une procédure qui effectuera la moyenne de tous les éléments d’un tableau de
type 16 bits. Les paramètres sont passés sur la pile par un le programme principal dans
l’ordre suivant : le segment, l’offset et la longueur du tableau ; la procédure devra
récupérer ces paramètres. Le résultat sera retourné dans le registre AX.

2
Les Interruptions
 FONCTION 40h Ecriture sur un fichier ou sur un périphérique
Définition :
Cette fonction écrit des données vers un périphérique ou un fichier.
Paramètres d'entrée:
AH = 40h
BX = Handle
CX = Nombre d'octets à écrire
DS:DX = Segment : Offset du buffer contenant les octets à écrire
Paramètres de sortie :
Si l'indicateur "Carry" est à 1, il y a eu erreur et :
AX = 05h l'accès a été refusé (le mode d'ouverture n'autorise pas l'écriture)
06h le numéro (handle) spécifié est incorrect
Si l'indicateur "carry" est à 0, l'opération s'est bien déroulée :
AX = Nombre d'octets écrits sur le fichier
DS:DX = Segment : Offset du buffer contenant les informations lues
 Exemple :
Buffer DB Texte à afficher
Lg EQU $- Buffer ; longueur de buffer
Ecriture de caractères sur l'écran
Mov Ah , 40h
Mov BX,1 ; BX  handle de l'écran
Mov DX, offset Buffer
Mov CX, Lg ; nombre de caractères
INT 21h ; appel MS-DOS
AX contient le nombre de caractères écrits.

 Interruption logicielle du clavier


L’INT 16H de gestion du clavier possède en entrée les fonctions suivantes :
AH=0 : lit le prochain caractère appuyé à partir du clavier, fait retourner le code
Ascii dans AL
AH=1 : positionne le flag Z pour indiquer si un caractère Ascii est disponible
pour la lecture.
ZF=1 :Pas de code disponible
ZF=0 : Code disponible dans AX mais reste dans le buffer
AH=2 : fait retourner le status du clavier en cours dans AL

 Interruption 21h
Fonction 02h
Cette fonction permet d'envoyer un caractère vers la sortie standard. La sortie peut
être redirigée. Toutefois, si la sortie est redirigée, il n'y a aucun moyen de détecter si
le disque est plein.

AH 02h

DL Ce registre permet d'indiquer le code du caractère à sorti

Vous aimerez peut-être aussi