TP 10 - Assambleur

Vous devez accepter l'assignment d'ici est travailler avec ce repository: Lab 10

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)

La description de simulateur este disponible ici.

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. Changez le nom de la variable et essayez de comprendre comment écrire votre nom sur la sortie (2p)
  2. Écrivez un programme qui place les nombres 0, 2, 4, 6 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. Retournez la valeur de l'oppération 17%3. Expliquez qu'est-ce qui se passe. (1p)
  4. Écrivez un programme qui affiche 0 en sortie autant de fois que la valeur du registre C. Affichez dans la sortie 4 chiffres de 0. (2p)
  5. Écrivez un programme qui comprend une fonction qui fait le swap entre deux variables. Envoyer les paramètres de fonction à l'aide des registres. Retournez le swap entre les registres A et B. (2p).
  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. Verifiez pour 7%3. (1.5p).
  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 et vous devez retourner la dimension de la chaîne dans le registre B. (2p)
alf/laboratoare/10_fr_java.txt · Last modified: 2023/05/16 02:59 by alexandra.negoita02
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