This is an old revision of the document!


TP 11 - Assambleur

Dans ce laboratoire, nous utiliserons le simulateur de langage d'assemblage https://schweigi.github.io/assembler-simulator/. Il simule un processeur avec les fonctionnalités suivantes:

  • 4 Hz
  • 4 registres à usage général A, B, C si D
  • un registre pour l'instruction IP actuelle
  • un registre pour le sommet de la pile SP
  • 256 B RAM
  • 24 B mémoire vidéo (derniers octets de RAM)

L'ensemble d'instructions

L'ensemble d'instructions représente les commandes qu'un processeur peut exécuter. Ce processeur connaît les instructions suivantes:

  • mov - attribution de données
  • add - addition
  • sub - soustraction
  • inc - incrémentation
  • dec - decrémentation
  • mul - multiplication
  • div - division
  • and - et sur les bits
  • or - ou sur les bits
  • xor - xor
  • not - negation des bits
  • shl - décaler vers la gauche (équivalent a la multiplication par 2)
  • shr 0 siftare la dreapta (équivalent a la division par 2)
  • cmp - comparaison
  • jmp - saut
  • j.. - saut (plusieurs informations)
  • call - appel de fonction
  • ret - retour de la fonction
  • hlt - arrêt du processeur
  • push - ajouter dans la pile
  • pop - supprimer de la pile at ajouter dans un registre

L'ensemble d'instructions avec sa description est disponible sur le site Web du simulateur https://schweigi.github.io/assembler-simulator/instruction-set.html.

Exercises

  1. Exécutez le programme initial et essayez de comprendre comment écrire votre nom sur la sortie (2p)
  2. Écrivez un programme qui place les nombres 1, 3, 5 et 7 dans les registres A, B, C et D.(1p)
  3. Écrivez le code pour calculer le reste de la division de la valeur du registre A par la valeur du registre B (1p)
  4. Écrivez un programme qui affiche 0 en sortie autant de fois que la valeur du registre A. (2p)
  5. Écrivez un programme et une fonction qui calcule le reste de la division de deux variables. Envoyer les paramètres de fonction à l'aide de registres (1p).
  6. Écrivez un programme et une fonction qui calcule le reste de la division de deux variables. Envoyer les paramètres de fonction à l'aide de la pile(1p).
  7. Écrivez un programme et une fonction qui calcule la taille d'une chaîne stockée en tant que variable. Vous pouvez partir de l'exemple du premier programme. La fonction doit être rappelable de l'intérieur. (2p)
  8. Bonus Écrivez un programme et une fonction qui calcule la chaîne a (n) = a (n-1) * a (n-2), a (0) est 1 et a (1) est 2. (2p)
alf/laboratoare/11.1588050006.txt.gz · Last modified: 2020/04/28 08:00 by alexandru.radovici
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0