[PDF] [PDF] Travaux dirigés : programmation en mini-assembleur

L'objectif de ce TD est de vous familiariser avec le cycle d'exécution d'un processeur et avec la notion de flux d'instructions Pour cela, il vous est demandé d' 



Previous PDF Next PDF





[PDF] Premier examen – Corrigé

c 4004 d 80186 e 8080 f 8086 g 8088 h Pentium 4 i Pentium j Pentium II k Pour chacune des lignes de la routine assembleur, identifiez les modes d' 



[PDF] TD 4 : Programmation en assembleur 8086 - jouili

Exercice 1 : Ecrire un programme, en langage assembleur 8086, qui permet de compter les nombres nuls dans un tableau d'octets mémoire de longueur 100h 



[PDF] Assembleur - Ecole Mohammadia dingénieurs

Assembleur : Exercices avec Solutions EMI Page 3/34 Introduction à la programmation en assembleur (TASM) Le langage assembleur est classé dans la 



[PDF] EXERCICE A : Programmation en assembleur (5 points) Corrigé - SoC

assembleur ? Soit le programme C suivant : int fonca(int a) { int la1,la2; la1= 



[PDF] Initiation à lassembleur - Zenk - Security

Corrigé des exercices externe qui est de 16 bits dans le 8086 et de 8 bits dans le 8088 Toutefois, même si le bus Assembleur Exercices 1 Supposons qu'on écrive en mémoire le contenu de ebx dans l'illustration de la Figure



[PDF] EXAMEN FINAL

Dans cet exercice, on s'intéresse à un microprocesseur qui a les mêmes rotation à droite ; écrire une portion de programme assembleur 8086 qui réalise cela



[PDF] Travaux dirigés : programmation en mini-assembleur

L'objectif de ce TD est de vous familiariser avec le cycle d'exécution d'un processeur et avec la notion de flux d'instructions Pour cela, il vous est demandé d' 



[PDF] Travaux pratique en programmation assembleur - ResearchGate

d'un processeur 8086 Avec rappels de cours, corrigés et programmes types embarqué à base d'un CPU Intel 8086, Micro Assembleur MASM comme assembleur et Titres du Travail Pratique, Exercice N°-- ; Matière [9] MDA- WIN8086 Manual, An Integrated Development Environment kit, User's Manual, Midas 



[PDF] ´Eléments darchitecture des ordinateurs : travaux pratiques d

assembleur sur des ordinateurs personnels d'architecture intel 32 bits gérés par le syst`eme 1979 le 8088 est la version 8 bits du 8086 il a les mêmes caractéristiques, mais un Recommencez l'exercice précédent avec les dispositions suivantes : * ***** Intel Architecture Software Developer's Manual : Instruction Set



[PDF] TD 9 - Assembleur x86 - - IGM

TD 9 - Assembleur x86 - Exercice 1 État de la mémoire Tracer l'état de la mémoire lorsque les instructions suivantes sont exécutées instruction eax ebx edx



pdf LE MICROPROCESSEUR 8086 ) 8088

int A[1024] B[1024] C[1024]; int main () { register int i =0 j=0 k=0; while ((i < 1024) && (j

[PDF] exercice avec corrigé sur les ensembles pdf

[PDF] exercice avec corrigé sur les ensembles seconde

[PDF] exercice avec corrigé traitement de salaire

[PDF] exercice budget de trésorerie corrigé

[PDF] exercice budget des ventes pdf

[PDF] exercice cm1 vocabulaire langage familier courant soutenu

[PDF] exercice corrigé acide base faible

[PDF] exercice corrigé administration linux pdf

[PDF] exercice corrige amplificateur de puissance classe a

[PDF] exercice corrigé amplificateur de puissance pdf

[PDF] exercice corrigé amplificateur operationnel

[PDF] exercice corrigé architecture de l'ordinateur

[PDF] exercice corrigé champ electrostatique 1ere s

[PDF] exercice corrigé champ et potentiel electrostatique pdf

[PDF] exercice corrigé champ gravitationnel

[PDF] Travaux dirigés : programmation en mini-assembleur

Université Paris-NordL1

Institut GaliléeAnnée 2009-2010

Licence 1 - 1er semestre

Travaux dirigés : programmation en mini-assembleur. L"objectif de ce TD est de vous familiariser avec le cycle d"exécution d"un processeur et avec la notion de flux d"instructions. Pour cela, il vous est demandé d"écrire de petits programmes

dans le langage assembleur présenté en cours et de simuler leur exécution par le processeur.

Correction.

Note aux chargés de TD.

- Dans le texte des corrections se trouvent également quelques explications de correction. Bien entendu, vous n"avez pas à en parler aux étudiants (boucle for,gcc -S, etc.). - Amil est très rudimentaire dans ses possibilités d"écriredes commentaires. Dans cette feuille, il y a des commentaires ligne à ligne, mais aussi unetentative d"indiquer où sont les différents blocs de code dans un style balise xml/html : une ligne avec en commentaire signale la première ligne du blocbloc1, une ligne avec en commentaire signale la dernière ligne du bloc, et une ligne avec en commentairesignale l"unique ligne du blocbloc1. - les traces contiennent une colonneinstructions: cette colonne n"a pas lieu d"être dans les corrections (elle aide juste à relire la trace, qui est générée automatiquement). 1

CyclesCPinstructionr01011

INIT1?5?

12lecture 10 r05

23ecriture r0 115

34stop

Figure1 - Simulation de la copie de valeur

Jeu d"instructions (simplifié)

stopArrête l"exécution du programme. noopN"effectue aucune opération. saut iMet le compteur ordinal à la valeuri. sautpos ri jSi la valeur contenue dans le registreiest positive ou nulle, met le comp- teur de programme à la valeurj. valeur x riInitialise le registreiavec la valeurx. lecture i rjCharge, dans le registrej, le contenu de la mémoire d"adressei. ecriture ri jÉcrit le contenu du registreidans la mémoire d"adressej. inverse riInverse le signe du contenu du registrei. add ri rjAjoute la valeur du registreià celle du registrej(la somme obtenue est placé dans le registrej). soustr ri rjSoustrait la valeur du registreià celle du registrej(la différence obtenue est placé dans le registrej). mult ri rjMultiplie par la valeur du registreicelle du registrej(le produit obtenue est placé dans le registrej). div ri rjDivise par la valeur du registreicelle du registrej(le quotient obtenue, arrondi à la valeur entière inférieure, est placé dans le registrej).

Instructions plus avancées

et ri rjEffectue le et bit à bit de la valeur du registreiet de celle du registrej.

Le résultat est placé dans le registrej.

lecture *ri rjCharge, dans le registrej, le contenu de la mémoire dont l"adresse est la valeur du registrei ecriture ri *rjÉcrit le contenu du registreidans la mémoire dont l"adresse est la valeur du registrej.

1 Initialisation de la mémoire

Écrire les programmes répondant aux problèmes suivants :

1. Soit la valeur 8 contenue dans la case mémoire d"adresse 10. Recopier cette valeur à

l"adresse 11.

Correction.

1lecture 10 r0

2ecriture r0 11

3stop 4 2

2. Sans connaître la valeur contenue à l"adresse 10, écrire 7à l"adresse 10.

Correction.

1valeur 7 r0

2ecriture r0 10

3stop 4

3. Sans connaître la valeur contenue à l"adresse 10, incrémenter cette valeur de 1.

Correction.

1lecture 10 r0

2valeur 1 r1

3add r1 r0

4ecriture r0 10

5stop 6

4. Soit une valeur quelconque,a, contenue à l"adresse 10. Initialiser la case d"adresse 11 à

a×2 + 1.

Correction.

1lecture 10 r0

2valeur 2 r1

3mult r1 r0

4valeur 1 r1

5add r1 r0

6ecriture r0 11

7stop 8

5. Soit une valeur quelconque,a, contenue à l"adresse 10. Initialiser la case d"adresse 11 à

a×(2 + 1).

Correction.

1lecture 10 r0

2valeur 2 r1

3valeur 1 r2

4add r1 r2

5mult r2 r0

6ecriture r0 11

7stop 8 3

2 Trace de programme assembleur

Nous allons désormais produire une représentation de l"exécution pas à pas de nos pro- grammes. Unetraced"un programme assembleur sera un tableau dont chaque lignecorrespond

à l"exécution d"une instruction par le processeur. Une colonne contiendra le cycle d"horloge du

processeur et une autre colonne le compteur de programme. Ily aura également une colonne

par registre utilisé dans le programme et par case mémoire oùdes données sont lues ou écrites

par les instructions du programme. Une première ligne, d"initialisation, montrera l"état de ces

registres et cases mémoires avant le début du programme. Ensuite, chaque exécution d"instruc-

tion sera représentée par une nouvelle ligne du tableau, jusqu"à exécution de l"instructionstop.

Dans cette ligne nous représenterons le cycle d"horloge du processeur (en commençant à 0 pour

la ligne d"initialisation), la valeur du compteur de programme après exécution de l"instruction,

et, s"il y a lieu, la valeur du registre ou de la case mémoire modifiée par le programme.

2.1 Exemple de trace

Soit le programme ci-dessous :

1lecture 10 r0

2valeur 5 r2

3soustr r2 r0

4sautpos r0 8

5valeur 0 r0

6ecriture r0 11

7saut 9

8ecriture r0 11

9stop 1014

11?On représentera alors sa trace comme ceci :

InstructionsCyclesCPr0r21011

Initialisation01??14?

lecture 10 r01214 valeur 5 r2235 soustr r2 r0349 sautpos r0 848 ecriture r0 11599 stop610 La colonneInstructionsn"est pas nécessaire, elle sert juste ici à la compréhension, sans

cette colonne le mot-cléinitialisationpourra être placé dans la colonneCycles. Remarquez par

exemple qu"il n"y a pas de colonne pour le registre 1, puisquecelui-ci n"est pas utilisé.

2.2 Première trace

Faire la trace du même programme où la valeur 14 est remplacéepar la valeur 2, à l"adresse

mémoire 10. Quelles sont les valeurs contenues dans les registres 0, 1 et2 après arrêt sur l"instruction stop?

Correction.

InstructionsCyclesCPr0r21011

Initialisation01??14?

lecture 10 r01214 valeur 5 r2235 soustr r2 r0349 sautpos r0 848 ecriture r0 11599 stop610 4

La valeur contenue dans le registre 0 est 0, celle contenue dans le registre 1 est indéterminée,

celle contenue dans le registre 2 est 5.

3 Exécution conditionnelle d"instructions

À l"aide de l"instructionsautpos, écrire les programmes correspondant aux algorithmes1 suivants et les exécuter sur un exemple (en faisant une trace) afin de tester leur correction :

1. Soient la valeuraà l"adresse 15,bà l"adresse 16. Sia >=balors écrireaà l"adresse 17

sinon écrirebà l"adresse 17.

Correction.

1lecture 15 r0 # a

2lecture 16 r1 # b

3soustr r1 r0 # r0 vaut a - b

4sautpos r0 8 # si a - b >= 0 (cad a >= b) on saute sur le alors

5lecture 16 r0 # sinon ecrire b a l"adresse 17

6ecriture r0 17

7saut 10

8lecture 15 r0 # alors ecrire a a l"adresse 17

9ecriture r0 17

10stop

11? 12? 13? 14?

1523 # a

1645 # b

17? # <-- valeur de sortie

2. Soit l"âge d"une personne à l"adresse 15. Si cette personne est majeure alors écrire1à

l"adresse 16 sinon écrire0à l"adresse 16.

Correction.

1lecture 15 r0 # si age >= 18

2valeur -18 r1

3add r0 r1 # r1 vaut age - 18

4sautpos r1 8

5valeur 0 r0 # sinon ecrire 0 a l"adresse 16

6ecriture r0 16

7saut 10

8valeur 1 r0 # alors ecrire 1 a l"adresse 16

1. Wikipédia : "Un algorithme est un processus systématique de résolution, par le calcul, d"un problème

quotesdbs_dbs2.pdfusesText_3