Table des matières

Sommaire "Bases d'algorithmique et de programmation"

Programmer en assembleur 6800 - 6811

[Mise à jour le : 14/11/2024]

Mots-clés

Adresse, donnée, instruction machine, mnémonique, opcode, opérande, directive d’assemblage, mode d’adressage, assembleur, variable, constante, opération symbolique.


1. Généralités

MC6800 (1975) « Le 6800 est un microprocesseur 8 bits produit par Motorola et sorti peu de temps après l'Intel 8080 en 1975. La famille de processeurs 6800 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 tels que le 68HC11 sont encore utilisés aujourd'hui.» Wikipédia


2. Le simulateur SDK6800/6811

3. Langage d'assemblage et code machine

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 langage d'assemblage se décompose en champs de texte dans le simulateur :

Exemple


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 entiers, 0 ≤ vx16 ≤ FF

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. Fixer la position des variables dans la mémoire avec la directive .org
    Fixez la position de la zone des variables à partir de l’adresse 2016 comme ci-dessous. Le symbole $ signifie que la valeur qui suit est en hexadécimal (base 16).
  2. Déclarer et initialiser 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 source comme ci-dessous. Placez v2 avec la valeur 80 puis v3 avec la valeur 0 sous v1. Sauvegarder le code source sous le nom add.asm sur le serveur dans home/TP/TP0_SDK68xx.

Etiquette(Label)

Une étiquette est une chaîne de caractères permettant de nommer une instruction ou une variable. Une étiquette correspond à une adresse dans le programme.

Adressage étendu

Dans le mode d’adressage étendu, l'adresse contenue dans le deuxième octet de l'instruction est utilisée comme octet supérieur de l'adresse de l'opérande. Le troisième octet de l'instruction est utilisé comme octet inférieur de l'adresse de l'opérande. Il s'agit d'une adresse absolue dans la mémoire. ldaa v1, adda v2 et staa v3 sont codées sur 3 octets.

Exemple : ldaa $1000 charge le contenu de la mémoire située à l’adresse 100016 dans l'accumulateur A.


Travail demandé

Comlpétez le document réponse du TP. (voir prof)