chapitre4 Élémentsdebasedel’assembleur pep/8privat/inf2170/04-assembleur.pdf · chapitre4...

39
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

Upload: doankhanh

Post on 13-Sep-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

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