info:prog:ass6800

Sommaire "Bases d'algorithmique et de programmation"

[Mise à jour le : 9/10/2024]

En cours de rédaction


« La famille de processeurs 6800/6811 a alimenté l'explosion précoce de l'informatique domestique. Ses dérivés ont été les processeurs de choix pour de nombreux ordinateurs personnels, notamment Apple, Commodore64, Nintendo, etc., et de nombreuses consoles de jeux. Ses descendants directs sont encore largement utilisés aujourd'hui. »


  • Ressource : Mise en oeuvre du simulateur

Le langage d’assemblage est un équivalent du langage machine pour lequel les chaînes binaires de l’instruction-machine sont remplacées par des mnémoniques alphanumériques plus aisément mémorisable et manipulable par un être humain. Un traducteur transforme ce langage vers le langage machine équivalent : c’est l’assembleur.

3.1 Organisation d'une ligne de code

Le code source d'un programme écrit en assembleur se décompose en champs de texte :

Exemple

  • Le champ Étiquette ou Label est utilisé pour définir un symbole. Pour ignorer ce champ, on introduit au moins un espace ou une tabulation.
    • Exemple : msg
  • Le champ Opération est occupé par un opcode ou une directive d'assemblage.
    • Exemple d'opcode : ldx signifiant loadX, charge une valeur dans le registre x.
    • Exemple de directives d'assemblage
      • .str signifie string. Cette directive force l'assembleur a identifier ce qui suit entre guillemet comme étant une chaine de caractères.
      • .org adresse signifie origine. Cette directive force l'assembleur à placer ce qui suit à la position adresse (ici le texte Hello World est placé entre les adresses 100016 et 100A16)
  • Le champ Opérande(s) contient une adresse ou des données. Il est ignoré lorsque l’instruction utilise le mode d’adressage implicite.
    • Exemples d'opérandes : #msg, pstring, $1000, “Hello World”
  • Le champ Commentaire est utilisé pour la documentation du logiciel. Un commentaire commence par un point-virgule et peut se situer à la fin ou au début d’une déclaration.
    • Exemple : ;label op. operande comment


3.2 Un premier programme étape par étape

  • Ouvrez le simulateur SDK6800/6811 en cliquant sur

Opération à réaliser

v3 ← v1 + v2 # Les variables v3, v2 et v1 sont des octets, 0 ≤ vx10 ≤ 255
  • Étape 1 - Positionner, déclarer et initialiser les variables dans la mémoire
    Pour effectuer ces opérations, nous allons utiliser des directives d’assemblage et des étiquettes.

Directive d'assemblage

Les directives d’assemblage sont des pseudo-instructions : elles ne correspondent à aucune instruction-machine ; ce sont des ordres destinés à l’assembleur.
  1. Positionnement des variables dans la mémoire avec .org
    Positionnez les variables à partir de l’adresse 002016 dans la mémoire du simulateur comme ci-dessous. Le symbole $ signifie que la valeur qui le suit est en hexadécimal (base 16)
  2. Déclaraion et initialisation des variables
    La position des variables étant fixée, vous allez les identifier à l'aide d'une étiquette, les déclarer à l'aide de la directive .byte et les initialiser en leur affectant une valeur.
    Complétez le code comme ci-dessous dans le simulateur. Ajoutez v2 et v3.

Etiquette ou Label

Une étiquette ou label est une chaîne de caractères permettant de nommer une instruction ou une variable. Une étiquette correspond à une adresse dans le programme.
  • info/prog/ass6800.txt
  • Dernière modification : 2024/10/09 18:52
  • de phil
  • Actuellement bloqué par : phil