Chapitre4 Élémentsdebasedel’assembleur Pep/8privat/INF2170/04-assembleur.pdf · Chapitre4...
Transcript of Chapitre4 Élémentsdebasedel’assembleur Pep/8privat/INF2170/04-assembleur.pdf · Chapitre4...
Chapitre 4Éléments de base de l’assembleur
Pep/8
Jean PrivatUniversité du Québec à Montréal
INF2170 — Organisation des ordinateurs et assembleurAutomne 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
ValeursConstantes numériques
Décimaux : 42Hexadécimaux : 0x2ACaractères : ’*’
Identificateurs (symboles)Alphanumérique8 caractères maximumPortée globaleAssocié à une valeur numérique
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 4 / 38
Instructions et directives
InstructionsCorrespond à une instruction machineExemple LDA 5,i
DirectivesDestinée à l’assembleurCommencent par un pointExemple .WORD 5
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 5 / 38
Un source assembleur
Formatage fixe en colonneÉtiquette éventuelleInstructionOpérande éventuelleCommentaire éventuel
ObjectifLisibilité pour l’humainPrédominance des commentaires
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 6 / 38
Liste d’assemblage
Traduction annotéeL’assembleur montre le travail effectué
Information suplémentairesLe code machine associé aux instructions et directivesAdresse (relative) du code machineLa liste et la valeur des symboles
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 7 / 38
Exercice
Calculera = 7 + (b+5) - (c-4)
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 8 / 38
Types d’instructions et de directives
InstructionTaille différente (1 ou 3 octet en Pep/8)Adressage différentRegistres utilisés différentsRôles différents
DirectivesSyntaxe particulièreGé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
SignificationRéserve « nombre » octets initialisés à 0
UtilisationInitialisation de mémoire à zéroAllocation statique de place
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 11 / 38
Directive .WORD
Syntaxe.WORD valeur
SignificationRéserve 1 mot (2 octets) initialisé à « valeur »
UtilisationVariable globale sur 16 bits avec valeur initiale
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 12 / 38
Directive .BYTE
Syntaxe.BYTE valeur
SignificationRéserve 1 octet initialisé à « valeur »
UtilisationVariable globale sur 8 bits avec valeur initiale
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 13 / 38
Directive .ASCII
Syntaxe.ASCII chaîne
SignificationRé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
Syntaxesymbole : .EQUATE valeur
SignificationAssocie la « valeur » au « symbole ».Aucun octet n’est réservé.La position de cette directive n’a pas d’importance.
UtilisationConstantes non modifiables
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 15 / 38
Directive .ADDRSSSyntaxe
.ADDRSS symbole
SignificationRéserve un mot mémoire initialisé avec la valeur dusymbole
UtilisationPar 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
SignificationPermet d’écrire dans la partie haute de la mémoireIndique la limite RAM/ROM
UtilisationSert à charger un nouveau système d’exploitationHors du cadre du cours
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 17 / 38
Directive .END
Syntaxe.END
SignificationIndique la fin du programme assembleurAucun octet n’est réservé.
Utilisation.END est obligatoire dans tout programmeCe 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 symbolesSymbole : remplace une valeur
Compliquée à calculer à la main (adresse)Compliquée à mettre à jour (constante)
DéfinitionPar 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 globauxDéfinition et utilisations sont indépendantes
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 20 / 38
Adressages, adresses et symbolesPiège
La définition d’un symbole, l’utilisation d’un symboleet le mode d’adressage sont indépendantsC’est au programmeur d’écrire des programmes quiont 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 5y : .EQUATE 5
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 21 / 38
Représentation des données
Représentation donnéesLe format d’une donnée n’est dans dans la donnéeUne donnée n’est qu’un tas de bitUn tas de bit peut être déclaré de façons diverses
Utilisation des donnéesUne instruction s’attend à un certain type de donnémais n’importe quel tas de bits lui conviendraEn fonction des instructions, une même opérandepourra 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à vusLDr, STr, ADDr, SUBr, NEGr, STOP
Points à considérerUn octet/trois octetsModes d’adressages validesRegistres impactésType (arithmétique, logique, transfert, contrôle)Bits d’états (NZVC)
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 24 / 38
Chargement et stockageInstruction LDr
Source : un mot en mémoire ou une valeur immédiateDestination : le mot du registre A ou X
Instruction STrSource : le mot du registre A ou XDestination : un mot en mémoire
Exemple
LDA 5 , iSTA x , d
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 25 / 38
Chargement et stockageInstruction LDBYTEr
Source : un octet mémoire ou une valeur immédiateDestination : l’octet de poids faible de A où X
Instruction STBYTErSource : l’octet de poids faible de A où XDestination : un octet en mémoire
Exemple
LDBYTEA 5 , iSTBYTEA x , d
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 26 / 38
Entrées-sorties de caractères
Instruction CHARIOpérande : l’adresse d’un octet en mémoireLit un caractère et stocke son code ASCII enmémoire.
Instruction CHAROOpérande : un octet en mémoire ou en valeurimmédiateAffiche 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èresExemple
CHARI a , dCHARI b , dCHARO b , dCHARO a , d
ExerciceÉcrire un programme qui attend les initiales del’utilisateur (deux lettres) et affiche :
bonjour <initiales>.
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 28 / 38
Entrées-sorties de décimaux
Instruction DECILit un nombre décimal et stocke sa valeur dans unmot en mémoire.
Instruction DECOAffiche la valeur décimale du mot (16 bits signé)passé en paramètre (en mémoire ou une valeurimmédiate).
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 29 / 38
Entrées-sorties de décimaux
Exemple
DECI a , dDECI b , dDECO b , dCHARO ’ ’ , iDECO a , d
ExerciceÉcrire un programme qui affiche la somme de 2nombres saisis par l’utilisateur
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 30 / 38
Sorties de chaînes de caractèresInstruction STRO
Affiche chaque caractère jusqu’au premier octet dontla valeur est 0 (caractère NUL)
Exemple
STRO x , dSTOP
x : . ASCII "J ’ aime l e s k i \x00 "
ExerciceLe même que pour CHARI/CHARO
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 31 / 38
BranchementsInstruction BR
La prochaine instruction est située à l’adresse indiquéPar défaut, le mode d’adressage est immédiat
Exemple
BR i c il a : DECO 2 , i
STOPi c i : DECO 1 , i
BR l a.END
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 32 / 38
Branchements conditionnels
BRV et BRCBRV branche si le bit de statut V est à 1BRC branche si le bit de statut C est à 1
Exemple
LDA x , dADDA y , dBRV e r r e u r
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 33 / 38
Branchements conditionnels
Instructions BRcondBRLE : N=1 ou Z=1BRLT : N=1BREQ : Z=1BRNE : Z=0BRGE : N=0BRGT : N=0 et Z=0
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 34 / 38
Branchements conditionnels
Instructions BRcondBRLE : 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 nombreBRLE e r r e u r ; E r r e u r s i né g a t i f ou nu l
ExerciceDemander à l’utilisateur deux nombres et afficher leplus grand
Jean Privat (UQAM) 04 — Assembleur INF2170 — Automne 2013 35 / 38
Comparaison de nombresInstruction CPx
Opérande 1 = le mot dans le registre (A ou X)Opérande 2 = un mot en mémoire ou une valeurimmédiateFait une soustraction (16 bits signés) et ignore lerésultatSeuls les bits de statut sont conservés
Exemple
LDA x , d ; Range x dans ACPA 10 , i ; Compare A avec 10BRGT l a ; Branche l a s i A > 10
Jean Privat (UQAM) 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ègeCPr travaille seulement en 16 bits signésComparer des octets (des caractères par exemple)demande plus de travail
ExercicesÉcrire un programme qui lit un caractère et indiques’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