Faculté des Sciences Département de physique Option : Infotronique Architecture des ordinateurs TD n°3 : Architecture des microprocesseurs 1. Questions de cours 1.1. Donner l’architecture générale d’un microprocesseur ? Donner le nom et le rôle des différents modules d’un microprocesseur ? 1.2. C’est quoi une UAL ? 1.3. C’est quoi un séquenceur ? 1.4. Quelle est la différence entre un registre et une mémoire ? 1.5. Quelle est la différence entre un séquenceur câblé et un séquenceur microprogrammé ? 1.6. Quels sont les différents types de registres dans les microprocesseurs ? Expliquer le rôle de chaque type de registre. 1.7. Donner les différents types de formats des instructions. 1.8. Donner les différentes façons de stockages des opérandes utilisés par les instructions. 1.9. Donner les différentes étapes d’exécution d’une instruction par un microprocesseur. 2. Les registres du 8086 En exécutant la commande r sous debug on obtient le résultat ci-dessous : AX=FF11 BX=FF00 CX=1712 DS=1816 ES=1816 SS=1816 1816:010C 8B1E00FF MOV DX=0000 SP=FFEE CS=1816 IP=010C BX,[FF00] BP=0000 SI=0000 DI=0000 NV UP EI NG NZ NA PE NC DS:FF00=3210 2.1. Expliquer le rôle de la commande r de debug. 2.2. Donner les noms des registres d’index, des registres de segments et des registres de pointeur ? 2.3. D’après les résultats affichés, donner les contenus des différents registres. 2.4. Lequel est le registre d’instruction ? 2.5. Quel est le rôle du registre d’instruction ? 2.6. Quelle est l’adresse de la prochaine instruction à exécuter ? 2.7. Quelle est l’adresse de l’instruction suivante à exécuter ? 3. Codage et format des instructions En exécutant la commande u sous debug, on obtient le résultat ci-dessous : 1816:0100 1816:0103 1816:0106 B81100 BB00FF 01D8 MOV AX,0011 MOV BX,FF00 ADD AX,BX ____________________________________________________________________________________________________________ o Architecture des ordinateurs – TD-TP N 3 1/3 A. Khouas 1816:0108 1816:010C 1816:0110 1816:0112 1816:0113 1816:0115 3.1. 3.2. 3.3. 3.4. 8B0E1100 8B1E00FF 01D9 40 FFC0 CD20 MOV MOV ADD INC INC INT CX,[0011] BX,[FF00] CX,BX AX AX 20 Expliquer le rôle de la commande u de debug. Quelle est la taille de ce programme ? Donner le format des instructions 1,3,4 et 7. Donner l’opcode des instructions MOV, ADD, INC et INT, sachant que le format général des instructions du 8086 est le suivant : N° du bit dans l'octet N° d'octet 7 6 5 4 3 2 1 0 1 opcode d w 2 mod reg r/m 3 [optionel : déplacement (Low), adresse ou donnée] 4 [optionel : déplacement (High), adresse ou donnée] 5 [optionel : donnée (Low)] 6 [optionel : donnée (High)] Opcode : code opération de l’instruction. d = 1 pour données trasférée de R/M ver REG et = 0 pour REG vers R/M. w = 0 pour donnée sur 8 bits et =1 pour donnée sur 16 bits. mod : mode d’interprétation du champ r/m (e.g. 11 pour registre registre). reg : sélection des registres (e.g. 000=AX ou AL, 001=CX ou CL, 010=DX ou DL, ...) r/m : mode d’adressage registre/mémoire 3.5. Quel est le nombre de cycles nécessaire pour l’exécution de ce programme ? Le tableau ci-dessous donne le nombre de cycles pour certaines instructions du 8086. Instruction Nombre de cycles mov reg imm mov reg mem Add reg reg inc reg int 4 8 3 3 71 4. La machine virtuelle Soit une machine virtuelle avec : & Un bus d’adresse de 8 bits. & Un registre d’instruction de 16 bits. & Un registre général de 16 bits nommé A. & Une mémoire organisé en cellules de 16 bits. & Le format des instructions sur 16 bits est le suivant : Opcode (8 bits) 15 14 ………9 8 Opérande (8 bits) 76………10 ____________________________________________________________________________________________________________ o Architecture des ordinateurs – TD N 3 2/3 A. Khouas & Le jeu d’instructions de la machine est donné dans le tableau ci-dessous : Nom de l’instruction Code opération (hexa) Description LOAD XX 01XX A <-- XX LOAD [XX] 02XX A <-- [XX] STR [XX] 03XX [XX] <-- A ADD XX 11XX A <-- A + XX ADD [XX] 12XX A <-- A + [XX] SUB XX 21XX A <-- A – XX SUB [XX] 22XX A <-- A – [XX] MUL XX 31XX A <-- A * XX MUL [XX] 32XX A <-- A * [XX] END 3021 Fin du programme [XX] représente le contenu de la cellule mémoire d’adresse XX. 4.1. 4.2. 4.3. 4.4. Quelle est l’espace d’adressage de cette machine ? Quelle est la taille maximale de la mémoire que la machine peut utiliser ? Sur combien de bits cette machine travaille-t-elle ? Donner les instructions du programme qui se trouve à l’adresse 10h de la mémoire cidessous. Adresse (hexa) 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F Contenu 0220 1221 0322 0221 2220 0323 3021 0120 0221 1021 1220 0120 0221 1021 0F00 00EF Adresse (hexa) 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F Contenu 0F00 00EF 0FEB 0FEC 0FED 0FEE 0FEE 0F01 0F00 00EF 0F00 00EF 0FEB 0FEC 0FED 0FEE 4.5. Quelles sont les cellules mémoires qui sont modifiées après exécution du programme ? Donner le contenu de ces cellules après exécution du programme. 4.6. Écrire pour cette machine un programme assembleur permettant de faire l’opération suivante : 008F + 00CD – (000F * 0008). Le résultat sera sauvegardé à l’adresse 30h. 4.7. On suppose qu’on a saisi le programme de la question 4.6 à l’adresse 20h de la mémoire, donner sous forme d’un tableau le contenu de la mémoire avant et après exécution du programme. 5. Travail pratique (à faire chez soi) 5.1. Écrire et exécuter sous debug un programme assembleur permettant d’identifier parmi tous les flags (NV, UP, EI, PL, ZR, AC, PE, et CY) celui de la retenu, de débordement, de zéro et de signe. ____________________________________________________________________________________________________________ o Architecture des ordinateurs – TD N 3 3/3 A. Khouas