TP 3 de programmation en assembleur
Ce dernier TP, plus exploratoire, ne devra être traité que si les exercices en assembleur
des TP précédents sont bien maîtrisés.
Exercice 1
L'interruption système n°128 (=80h) a d'autre usages que la saisie/affichage
de caractères.
1. Créer un programme assembleur qui affiche le répertoire courant.
2. Créer un programme assembleur qui crée un fichier texte et y insère
un texte saisi au clavier.
3. Créer un programme assembleur qui crée un sous-répertoire du répertoire
courant et y place le fichier créé à la question précédente.
→ Cette question pourra faire partie de l'évaluation.
Exercice 2
Les entrées/sorties sont difficiles à gérer en assembleur. Il est heureusement possible
d'intégrer du code assembleur dans un programme C.
1. Déterminer (recherche bibiographique, webographique, etc.) comment on
peut réaliser cet interfaçage entre les deux langages.
Quelles difficultés peut-on rencontrer quand on cherche à réaliser un tel interfaçage ?
2. Réécrire différents programmes de ces TP afin de vérifier le bon
fonctionnement de cet interfaçage.
3. Ecrire un compte-rendu de ce travail qui permettrait à quelqu'un ayant
une connaissance de base de C et d'assembleur de pouvoir réaliser facilement cet interfaçage.
→ Cet exercice pourra faire partie de l'évaluation.
Exercice 3
Dans cette partie, nous allons utiliser le coprocesseur arithmétique, une unité de calcul
indépendante du processeur spécialisée dans les calculs (notamment à virgule flottante).
Pour d'aborder cet exercice, il est recommandé de se documenter sur :
– Les registres du coprocesseur arithmétique : st0, st1, ..., st7,
– Les instructions du coprocesseur~: fild
pour charger une valeur
entière dans un registre du coprocesseur, fist
pour transférer une valeur
entière d'un registre du coprocesseur en mémoire, fadd
pour ajouter,
fsub
pour soustraire, fmul
pour multiplier, fdiv
pour diviser, fsqrt
pour calculer la racine carrée, et frndint
pour arrondir à l'entier le plus proche.
Ecrire un programme qui lit trois entiers a, b et c, et calcule une approximation
entière des racines du polynôme a.x2+b.x+c. a, b et c seront lus comme des entiers,
en utilisant fild
; les racines seront affichées sous la forme de
l'entier le plus proche du résultat exact, en utilisant frndint
et fist
).
© 2011-2016 – A. Guitton & A. Sigayret – 2016-09-21