Chapitre 4 Éléments de base de l`assembleur Pep/8

publicité
Chapitre 4
Éléments de base de l’assembleur
Pep/8
Jean Privat
Université du Québec à Montréal
INF2170 — Organisation des ordinateurs et assembleur
Automne 2013
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
1 / 38
Plan
1
Éléments d’assembleur
2
Directives
3
Symboles, adresses, données
4
Instructions
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
2 / 38
Plan
1
Éléments d’assembleur
2
Directives
3
Symboles, adresses, données
4
Instructions
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
3 / 38
Valeurs
Constantes numériques
Décimaux : 42
Hexadécimaux : 0x2A
Caractères : ’*’
Identificateurs (symboles)
Alphanumérique
8 caractères maximum
Portée globale
Associé à une valeur numérique
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
4 / 38
Instructions et directives
Instructions
Correspond à une instruction machine
Exemple LDA 5,i
Directives
Destinée à l’assembleur
Commencent par un point
Exemple .WORD 5
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
5 / 38
Un source assembleur
Formatage fixe en colonne
Étiquette éventuelle
Instruction
Opérande éventuelle
Commentaire éventuel
Objectif
Lisibilité pour l’humain
Prédominance des commentaires
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
6 / 38
Liste d’assemblage
Traduction annotée
L’assembleur montre le travail effectué
Information suplémentaires
Le code machine associé aux instructions et directives
Adresse (relative) du code machine
La liste et la valeur des symboles
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
7 / 38
Exercice
Calculer
a = 7 + (b+5) - (c-4)
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
8 / 38
Types d’instructions et de directives
Instruction
Taille différente (1 ou 3 octet en Pep/8)
Adressage différent
Registres utilisés différents
Rôles différents
Directives
Syntaxe particulière
Génération ou non de code machine
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
9 / 38
Plan
1
Éléments d’assembleur
2
Directives
3
Symboles, adresses, données
4
Instructions
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
10 / 38
Directive .BLOCK
Syntaxe
.BLOCK nombre
Signification
Réserve « nombre » octets initialisés à 0
Utilisation
Initialisation de mémoire à zéro
Allocation statique de place
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
11 / 38
Directive .WORD
Syntaxe
.WORD valeur
Signification
Réserve 1 mot (2 octets) initialisé à « valeur »
Utilisation
Variable globale sur 16 bits avec valeur initiale
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
12 / 38
Directive .BYTE
Syntaxe
.BYTE valeur
Signification
Réserve 1 octet initialisé à « valeur »
Utilisation
Variable globale sur 8 bits avec valeur initiale
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
13 / 38
Directive .ASCII
Syntaxe
.ASCII chaîne
Signification
Réserve un octet par caractère de « chaine » initialisé
avec ce caractère
Exemples
.ASCII "Je vais moins vite qu’en motoneige."
.ASCII "Ici\nlà\x00"
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
14 / 38
Directive .EQUATE
Syntaxe
symbole : .EQUATE valeur
Signification
Associe la « valeur » au « symbole ».
Aucun octet n’est réservé.
La position de cette directive n’a pas d’importance.
Utilisation
Constantes non modifiables
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
15 / 38
Directive .ADDRSS
Syntaxe
.ADDRSS symbole
Signification
Réserve un mot mémoire initialisé avec la valeur du
symbole
Utilisation
Par ce que « .WORD symbole » ne fonctionne pas
Piège : mal nommé
Il manque une lettre (la disparition ?)
Il n’y a pas d’adresse en jeu (abus de langage)
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
16 / 38
Directive .BURN
Syntaxe
.BURN adresse
Signification
Permet d’écrire dans la partie haute de la mémoire
Indique la limite RAM/ROM
Utilisation
Sert à charger un nouveau système d’exploitation
Hors du cadre du cours
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
17 / 38
Directive .END
Syntaxe
.END
Signification
Indique la fin du programme assembleur
Aucun octet n’est réservé.
Utilisation
.END est obligatoire dans tout programme
Ce qui suit le .END est ignoré par l’assembleur
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
18 / 38
Plan
1
Éléments d’assembleur
2
Directives
3
Symboles, adresses, données
4
Instructions
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
19 / 38
Utilisation des symboles
Symbole : remplace une valeur
Compliquée à calculer à la main (adresse)
Compliquée à mettre à jour (constante)
Définition
Par l’étiquette d’une instruction ou directive
(la valeur du symbole est l’adresse de l’instruction)
Par la directive .EQUATE
Visibilité
Les symboles sont globaux
Définition et utilisations sont indépendantes
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
20 / 38
Adressages, adresses et symboles
Piège
La définition d’un symbole, l’utilisation d’un symbole
et le mode d’adressage sont indépendants
C’est au programmeur d’écrire des programmes qui
ont du sens
Exemples
LDA 5 , d ; l e mot à l ’ a d r e s s e 5 ( ? !)
LDA x , i ; l a v a l e u r de x ( une a d r e s s e ?)
LDA y , d ; l e mot à l ’ a d r e s s e y ( ? !)
STOP
x : .WORD 5
y : . EQUATE 5
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
21 / 38
Représentation des données
Représentation données
Le format d’une donnée n’est dans dans la donnée
Une donnée n’est qu’un tas de bit
Un tas de bit peut être déclaré de façons diverses
Utilisation des données
Une instruction s’attend à un certain type de donné
mais n’importe quel tas de bits lui conviendra
En fonction des instructions, une même opérande
pourra avoir plusieurs sens différents
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
22 / 38
Plan
1
Éléments d’assembleur
2
Directives
3
Symboles, adresses, données
4
Instructions
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
23 / 38
Instructions
Déjà vus
LDr, STr, ADDr, SUBr, NEGr, STOP
Points à considérer
Un octet/trois octets
Modes d’adressages valides
Registres impactés
Type (arithmétique, logique, transfert, contrôle)
Bits d’états (NZVC)
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
24 / 38
Chargement et stockage
Instruction LDr
Source : un mot en mémoire ou une valeur immédiate
Destination : le mot du registre A ou X
Instruction STr
Source : le mot du registre A ou X
Destination : un mot en mémoire
Exemple
LDA 5 , i
STA x , d
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
25 / 38
Chargement et stockage
Instruction LDBYTEr
Source : un octet mémoire ou une valeur immédiate
Destination : l’octet de poids faible de A où X
Instruction STBYTEr
Source : l’octet de poids faible de A où X
Destination : un octet en mémoire
Exemple
LDBYTEA 5 , i
STBYTEA x , d
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
26 / 38
Entrées-sorties de caractères
Instruction CHARI
Opérande : l’adresse d’un octet en mémoire
Lit un caractère et stocke son code ASCII en
mémoire.
Instruction CHARO
Opérande : un octet en mémoire ou en valeur
immédiate
Affiche le caractère dont le code ASCII est l’opérande
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
27 / 38
Entrées-sorties de caractères
Exemple
CHARI
CHARI
CHARO
CHARO
a,d
b,d
b,d
a,d
Exercice
Écrire un programme qui attend les initiales de
l’utilisateur (deux lettres) et affiche :
bonjour <initiales>.
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
28 / 38
Entrées-sorties de décimaux
Instruction DECI
Lit un nombre décimal et stocke sa valeur dans un
mot en mémoire.
Instruction DECO
Affiche la valeur décimale du mot (16 bits signé)
passé en paramètre (en mémoire ou une valeur
immédiate).
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
29 / 38
Entrées-sorties de décimaux
Exemple
DECI
DECI
DECO
CHARO
DECO
a,d
b,d
b,d
’ ’,i
a,d
Exercice
Écrire un programme qui affiche la somme de 2
nombres saisis par l’utilisateur
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
30 / 38
Sorties de chaînes de caractères
Instruction STRO
Affiche chaque caractère jusqu’au premier octet dont
la valeur est 0 (caractère NUL)
Exemple
STRO x , d
STOP
x : . ASCII " J ’ aime l e s k i \ x00 "
Exercice
Le même que pour CHARI/CHARO
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
31 / 38
Branchements
Instruction BR
La prochaine instruction est située à l’adresse indiqué
Par défaut, le mode d’adressage est immédiat
Exemple
BR
l a : DECO
STOP
i c i : DECO
BR
. END
ici
2, i
1, i
la
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
32 / 38
Branchements conditionnels
BRV et BRC
BRV branche si le bit de statut V est à 1
BRC branche si le bit de statut C est à 1
Exemple
LDA x , d
ADDA y , d
BRV e r r e u r
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
33 / 38
Branchements conditionnels
Instructions BRcond
BRLE : N=1 ou Z=1
BRLT : N=1
BREQ : Z=1
BRNE : Z=0
BRGE : N=0
BRGT : N=0 et Z=0
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
34 / 38
Branchements conditionnels
Instructions BRcond
BRLE : N=1 ou Z=1 (c.a.d. ≤ 0)
BRLT : N=1 (c.a.d. < 0)
BREQ : Z=1 (c.a.d. = 0)
BRNE : Z=0 (c.a.d. 6= 0)
BRGE : N=0 (c.a.d. ≥ 0)
BRGT : N=0 et Z=0 (c.a.d. > 0)
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
34 / 38
Branchements conditionnels
Exemple
DECI x , d
; L i t un nombre
BRLE e r r e u r ; E r r e u r s i n é g a t i f ou n u l
Exercice
Demander à l’utilisateur deux nombres et afficher le
plus grand
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
35 / 38
Comparaison de nombres
Instruction CPx
Opérande 1 = le mot dans le registre (A ou X)
Opérande 2 = un mot en mémoire ou une valeur
immédiate
Fait une soustraction (16 bits signés) et ignore le
résultat
Seuls les bits de statut sont conservés
Exemple
LDA x , d
CPA 1 0 , i
BRGT l a
Jean Privat (UQAM)
; Range x dan s A
; Compare A a v e c 10
; Branche l a s i A > 10
04 — Assembleur
INF2170 — Automne 2013
36 / 38
Comparaison de nombres
Exercice
Écrire un programme qui compte de 1 à 100
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
37 / 38
Comparaison de nombres
Piège
CPr travaille seulement en 16 bits signés
Comparer des octets (des caractères par exemple)
demande plus de travail
Exercices
Écrire un programme qui lit un caractère et indique
s’il s’agit d’un ’a’
Écrire un programme qui compte le nombre de ’a’
d’une ligne saisie par l’utilisateur
Jean Privat (UQAM)
04 — Assembleur
INF2170 — Automne 2013
38 / 38
Téléchargement