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