TP N°1 – PROGRAMMATION 80x86

publicité
PROGRAMMATION ASSEMBLEUR 80X86
TP N°1 – PROGRAMMATION 80x86
Objectifs :
• Comprendre les modes d'adressage du 8086
• Comprendre la manipulation des caractères et des nombres en assembleur
• Écrire des programmes assembleur simples en utilisant quelques appels de fonctions systèmes du DOS
I.
TEST D'UN PETIT PROGRAMME:
Assume CS:Code, DS:Data
Data SEGMENT
N1
dw 25h
N2
dw 4
Prod
dw ?
Data ENDS
Code SEGMENT
main : Mov
Mov
Mov
Mov
Mov
boucle : Add
Loop
Mov
Mov
Int
Code ENDS
AX, Data
DS,AX
AX, N1
CX, N2
DX, 0
DX, AX
boucle
Prod, DX
AH, 4Ch
21h
Q 1. Commentez les instructions de ce programme;
Q 2. Testez - le avec Turbo-debugger;
Précisez :
- les adresses des différents segments ;
- les adresses des variables sous la forme
DS:OFFSET et l'adresse physique ;
Q 3. Que fait ce programme ?
Q 4. Modifiez ce programme pour qu'il tienne que dans
un seul segment;
END main
II.
FONCTIONS D'AFFICHAGE:
Q 5. Écrire les programmes qui :
- affiche un caractère ;
- affiche un caractère saisi au clavier par l'utilisateur ;
- affiche une chaîne de caractères ;
- affiche une chaîne de caractère saisie au clavier par l'utilisateur ;
P.J.P. Lycée Dorian : 13/10/2004 @ 00:36
TP n°1 : Programmation 80x86
page 1 / 2
PROGRAMMATION ASSEMBLEUR 80X86
III.
PROGRAMMES "SIMPLES" :
Pour chaque programme, vous écrirez d'abord un algorithme.
Q 6. Écrire un programme qui affiche l'alphabet en majuscule ;
Q 7. Écrire un programme qui affiche le caractère saisi au clavier tant que le caractère
est différent de ^d (code ascii 4) ;
Q 8. Écrire un programme qui affiche un octet, contenu dans un registre, en binaire ;
IV.
SAISIE AU CLAVIER D'UN NOMBRE DÉCIMAL :
Le but de l'exercice est d'écrire un programme qui lit un entier décimal au clavier et le
sauvegarde en mémoire dans une variable de type octet N1.
Pour cela, commencer par écrire les algorithmes puis les programmes suivants :
Q 9. Lire un caractère au clavier et tester si son code ASCII est celui d'un chiffre. Si
c'est le cas, ranger ce chiffre (et non son code ASCII) dans N1, sinon afficher
"N". (oneread.asm)
Q 10. A partir du programme précédent, écrire un programme (dixfois.asm) qui multiplie
le nombre par 10 avant de le ranger dans N1
Q 11. Écrire maintenant un programme (numread.asm) qui lit un nombre décimal au clavier
et le sauvegarde dans N1. La lecture s'arrête quand le caractère lu n'est pas un
chiffre (plus besoin d'afficher "N"). On ne contrôlera pas le débordement de
capacité.
P.J.P. Lycée Dorian : 13/10/2004 @ 00:36
TP n°1 : Programmation 80x86
page 2 / 2
Téléchargement