Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006 Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006 TD N°0 – Système de numération Objectif : Les exercices de ce TD doivent être faits par l’étudiant avant de commencer les autres TD de ce document. En effet il leur permettra de réviser toutes les notions nécessaires à la compréhension et à l’utilisation des valeurs numériques utilisées lors de la programmation en assembleur. Architectures des Microprocesseurs INGE 3 et Prépa-Master Généralités Cahier de TD et de TP Quel est le plus grand nombre que l’on peut exprimer avec 8 chiffres ? On l’exprimera dans sa base 1. dans le système décimal. 2. dans le système binaire. 3. dans le système hexadécimal. Mini-Projet Quel est le nombre de chiffres nécessaires pour exprimer (1152)10 en base : 1. binaire 2. octale 3. hexadécimale Auteurs : J. FRANCOMME J.-M. HENRI Sujets de TD: Conversion Convertir les nombres décimaux suivants en binaire et en hexadécimal : 1. 18 2. 243 3. 356 Convertir les nombres binaires suivants en décimal et en hexadécimal : 1. %10010 2. %1010001 3. %111100100 Convertir les nombres hexadécimaux suivants en binaire et en décimal : 1. $10 2. $FA 3. $48D 4. $1C5 TD N°0 – Système de numération.............................................................................................. 2 TD N°1 – Premiers pas en assembleur....................................................................................... 4 TD N°2 – Assembleur Avancé I ................................................................................................ 7 TD N°3 – Assembleur Avancé II ............................................................................................... 8 Consignes générales et barème ................................................................................................ 12 Séquence de TPs : – Prise en main du logiciel BSVC (simulateur 68000) …………………………… .10 – Validation des sujets de TD N°2 et N°3. Consignes générales et barème/ Bibliographie :………………………………………….......12 Annexe : Jeu d’instructions du microprocesseur 68000 …………………………………… 27 Complément à 2 Les nombres négatifs sont représentés dans le 68000 à l’aide de leur complément à 2. Le complément à 2 est obtenu en calculant le complément à 1 et en rajoutant 1 au résultat. Le bit de poids fort indique le signe du nombre. Sachant que l’on dispose de 8 bits pour écrire les nombres avec leur signe, donner les expressions en binaire et en hexadécimal des nombres suivants : -35, -43, -56, -14, 0 J. FRANCOMME [email protected] - [email protected] – [email protected] Website : http://francomme.fr.fm/ (courses and codes) 1 / 14 J. FRANCOMME [email protected] - [email protected] – [email protected] Website : http://francomme.fr.fm/ (courses and codes) 2 / 14 Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006 Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006 TD N°1 – Premiers pas en assembleur Addition Effectuer les opérations suivantes : 1. %00101011 + % 01001110 2. $4B3 + $F7F Objectif : Comprendre le fonctionnement du microprocesseur 68000, les instructions assembleur, les modes d’adressages. Calculer les expressions suivantes par addition du complément à 2 : 1. %11011011 - %01101011 2. %1011 - %0011 3. %01101011 - %11011011 4. $A30F - $1234 9 Commentez le déroulement des instructions suivantes en complétant les champs libres correspondant au contenu des registres de données ou d’adresse, au contenu de l’espace mémoire et à l’état des indicateurs N, Z, V, C du registre d’état. 1. Première partie. * Annexe Dans chaque microprocesseur existe un registre d’indication appelé Registre de code condition. Il sert à informer le programmeur que le résultat d’une opération est nul, négatif, s’il y a un dépassement ou si une retenue a été générée. Le registre de code condition du 68000 se présente ainsi : 15 T 13 S 10 I2 I1 8 I0 7 4 X 3 N 2 Z 1 V 0 C Code Condition Register Status Register Avec : C: Carry V: Overflow Z: Zero N: Negative E: Extended J. FRANCOMME [email protected] - [email protected] – [email protected] Website : http://francomme.fr.fm/ (courses and codes) 3 / 14 START Instructions ORG DC.L DC.L $0 $8000 START ORG nop $5000 movea movea.L #$9000,a1 #$9000,a2 a1= a2= move.L add.w move #$87654321,d1 #$F111,d1 d1,$01B000 d1= d1= move.L move move add #$87654321,d1 #$F111,d2 d2,$01B000 d1,$01B000 d1= d2= move.L neg.B #$5AB23FE4,d1 d1 d1= d1= move.L neg.W #$5AB23FE4,d1 d1 d1= d1= move.L neg.L move.L move.L neg.B #$5AB23FE4,d1 d1 #$5AB23FE4,d1 d1,$01B000 $01B000 d1= d1= d1= move.L move.L neg.W #$5AB23FE4,d1 d1,$01B000 $01B000 d1= move.L move.L neg.W #$5AB23FE4,d1 d1,$01B000 $01B000 d1= * Stack pointer value after a reset * Program counter value after a reset Registre Espace mémoire indicateurs d’état N Z V C ($01B000)= ($01B000)= ($01B000)= ($01B000)= ($01B000)= ($01B000)= ($01B000)= ($01B000)= ($01B000)= J. FRANCOMME [email protected] - [email protected] – [email protected] Website : http://francomme.fr.fm/ (courses and codes) 4 / 14 Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006 9 Indiquez le contenu des registres ou de la mémoire de façon à expliquer l'exécution des instructions ci-dessous. Registre de données d1= move.L move.L #$34B10002,d1 d1,$01B000 move.L move.L #$FFFFFFFF,d1 d1,$01B004 d1= move.W muls move.L $01B002,d0 $01B000,d0 d0,$01B004 d0= d0= Ecole centrale d’Electronique INGE3 / PREPA-MASTER Année 2006 9 Indiquez la validité de l’instruction et l'adresse effective de la donnée sachant que a0=$01B000 et d2=$00000010. Contenu mémoire ($01B000)= neg.L neg $8000 $7001 ($01B004)= neg.W neg.W neg.B neg.W $4(a0) $f60(a0) 10(a0,d2) $2D0(a0,d2) Instruction valide OUI Adresse effective $8000 $01B000 + $4 => $01B004 ($01B004)= 9 Pour chacune des instructions suivantes du 68000, donnez : 2. Deuxième partie. ¾ ¾ ¾ ¾ 9 Indiquez la validité des instructions ci-dessous, le contenu de l’espace mémoire et l’état des registres associés à ces instructions. Conditions initiales : a0=$01B004 et ($01B0000)=$2C34, ($01B0002)=$FE36, ($01B004)=$59DC ORG DC.L DC.L ORG START nop $0 $7FFF START le type d'adressage (source, destination) le résultat l'état des drapeaux après l'exécution les anomalies éventuelles Instructions * Stack pointer value after a reset * Program counter value after a reset conditions initiales move.W move.L #$9000,a1 #$9000,a2 lea move.W $8000,a5 #$7000,a4 move.B d0,(a0) d0 = $87654321 a0 = $01B000 move move.L d0,(a0)+ d0,(a0)+ idem idem move.B (a0),$100(a0) a0 = $01B000 ($01B000) = 00 move.B (a0),3(a0,d0) idem d0 = $02 clr clr asl.B $100(a0,d0) 3(a0,d0) #3,d0 idem idem d0 = $12345678 $5000 Instruction valide OUI OUI OUI OUI movea.L move.W move.W move.W #$01B002,a0 #$FE36,(a0) #$2C34,-2(a0) #$59DC,2(a0) neg.w a0 movea.L neg.B #$01B004,a0 -(a0) neg.W -(a0) movea.L neg.W #$01B004,a0 -(a0) OUI movea.L neg.B #$01B004,a0 -(a0) OUI movea.L neg.W #$01B004,a0 -1(a0) OUI registre a0=$0001B002 a0=$0001B002 a0=$0001B002 a0=$0001B002 ($01B000) XX XX XX XX XX XX XX XX FE 36 XX XX 2C 34 FE 36 XX XX 2C 34 FE 36 59 DC OUI J. FRANCOMME [email protected] - [email protected] – [email protected] Website : http://francomme.fr.fm/ (courses and codes) 5 / 14 J. FRANCOMME [email protected] - [email protected] – [email protected] Website : http://francomme.fr.fm/ (courses and codes) 6 / 14