Td 3 programmation en assembleur - informatique industrielle

Informatique Industrielle : TD 3 Programmation en Assembleur

Télécharger PDF

TD 3 – Systèmes Informatiques et Assembleur

Exercice 1

On considère le programme en assembleur suivant :

mov AX, 18h
mov BX, 35h
sub AX, BX
div BX
mov CX, 3
inc CX
mul CX

Donner les valeurs des différents registres (AX, BX, CX et DX) après chaque instruction.

Exercice 2

Écrire un programme en assembleur qui calcule la somme du contenu des deux cases mémoire 1000h et 1010h et qui range le résultat à l’adresse 1020h.

Exercice 3

Écrire un programme en assembleur qui fait la somme du contenu des deux cases mémoire 1000h et 1010h, où le contenu est codé sur 1 octet, puis :

  • Si la somme est supérieure à 100, on range le résultat dans la case 1020h.
  • Sinon, on range le résultat dans la case 1030h.

Exercice 4

On veut additionner deux nombres signés N1 et N2 se trouvant respectivement aux offsets [1100h] et [1101h]. Le résultat doit être rangé :

  • À l’adresse 2000h s’il est positif,
  • À l’adresse 3000h s’il est négatif,
  • Dans le registre BX s’il est nul.

Exercice 5

Écrire un programme permettant de calculer le PGCD de deux nombres a et b (entre 0 et 9) introduits par l’utilisateur à partir du clavier en utilisant l’algorithme suivant :

Répéter
    C = a / b
    r = le reste de cette division entière
    Si r ≠ 0
        a = b
        b = r
    fin si
jusqu’à r = 0
pgcd = b

Exercice 6

Écrire un programme permettant de calculer et d’afficher la valeur de 1 + n × x à partir des valeurs de x (entre 0 et 9) et de n (entier ≥ 1) fournies par l’utilisateur via le clavier.

Pour le test, utiliser :

  • x = 3 et n = 41 + 4 × 3 = 13,
  • x = 1 et n = 61 + 6 × 1 = 7.

Exercice 7

Écrire un programme en assembleur qui permet de calculer z = 5 - 3xy, où x et y sont deux données fournies par l’utilisateur via le clavier (avec 0 ≤ x, y ≤ 9).

Le résultat valide de cette fonction doit être tel que 0 ≤ z ≤ 99. Si z est en dehors de cet intervalle, afficher un message indiquant que le résultat est invalide.

Tester avec les valeurs suivantes :

  • x = -6 et y = 3 → Résultat invalide,
  • x = 2 et y = 3z = 9,
  • x = 2 et y = 4 → Résultat non valide,
  • x = -7 et y = 2 → Résultat invalide.

Exercice 8

Écrire un programme en assembleur qui permet de calculer le factoriel d’un nombre n (avec 0 ≤ n ≤ 9) donné par l’utilisateur via le clavier et d’afficher le résultat sur l’écran.

On rappelle que :

  • 0! = 1,
  • n! = n × (n-1) × ... × 1.

En utilisant le programme déjà écrit, calculer m = 30! - n! et afficher la valeur de m.

Si m ≥ 10, afficher un message indiquant que m ≥ 10. Si m ≤ -10, afficher un message indiquant que m ≤ -10. Sinon, afficher un message indiquant que le résultat est BON.

Tester avec les valeurs suivantes : n = 3, n = 4, n = 5.

FAQ

Comment gérer les nombres signés en assembleur ?
Utiliser les instructions CMP, JGE (pour positif), JL (pour négatif) et JE (pour nul).
Quelle est la différence entre MOV et LEA ?
MOV copie la valeur d’une mémoire ou d’un registre, tandis que LEA charge l’adresse d’une mémoire dans un registre.
Comment afficher un message d’erreur en assembleur ?
Utiliser une boucle pour écrire chaque caractère du message via INT 21h avec la fonction 02h (écriture d’un caractère).

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne