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