Td corrigé TD 1 - lirmm pdf

TD 1 - lirmm

Exercice 1 - Corrigé .... 3 ? Passez les écritures concernant les comptes de TVA et, éventuellement, le paiement (qui devra être effectué le 17 novembre 2008) ...




part of the document



TD 2
Architecture des Calculateurs




A. RAPPELS DE COURS
1. Mode d'Adressage indexé
 EMBED Word.Picture.8 
Ce mode d'adressage est associé à un registre ; Registre Index. Pour écrire ou lire un tableau en mémoire, il suffit d'incrémenter le registre index avant chaque instruction.
2 Mode Branchement Inconditionnel Direct (Rupture de séquence)
 EMBED Word.Picture.8 
3. Mode Branchement Conditionnel Direct
Bien sur, avant une instruction de saut conditionnel, une autre instruction renvoyant un "flag" a été préalablement exécutée.
 EMBED Word.Picture.8 
Exemple : Instruction de comparaison entre A et B renvoie C=1 si A>B. 0 sinon.
Le test de condition est réalisé par la logique combinatoire. Le résultat du test est ensuite traité par le µSéquenceur.

Exemple :
JUMP Condition sur un Drapeau, Mode Adressage, Valeur
 EMBED Word.Picture.8 

B. QUESTIONS
Exercice 1 : Mode d'Adressage Indirect
Détailler l'instruction :
ADD A, INDIRECT, Valeur
sur l'architecture S2.
 EMBED Word.Picture.8 

- Fetch S2 Charger RI avec le mot mémoire dont l'adresse est donnée par CO et incrémenter CO.
- A1, eRA Libération de l'adresse 1001 et écriture dans RAM.
- sM Lecture de la valeur 3000 et écriture dans RE.
- A2, eRA Libération de l'adresse 3000 et écriture dans RAM.
- sM Lecture de la valeur 4000 et écriture dans RE.
- A2, eRA Libération de l'adresse 4000 et écriture dans RAM.
- sM Lecture de la valeur et écriture dans RE.
- B1, E1, D2, O5, eRE Libération de RE et RA. Addition et écriture du résultat dans RE.
- eA Transfert de RE dans RA.
- A1, F2, B2, E1, O4, eRE incrémentation de CO et écriture dans RE.
- eCO, FIN Ecriture dans CO.

Exercice 2 : Mode d'Adressage Relatif
Détailler l'instruction :
LOAD A, Relatif, Valeur
sur l'architecture S1.
 EMBED Word.Picture.8 

- Fetch S1 Charger RI avec le mot mémoire dont l'adresse est donnée par CO et incrémenter CO.
- COB, T0, eRAM Libération de l'adresse 1001 et écriture dans RAM.
- sM Lecture de la valeur 2000 et écriture dans RE.
- REB, T0, Ca2, OC0, eC Libération de RE et écriture dans RC.
- COB, T0, Ca2, Cb2, OC3, eC Libération de CO et addition avec RC. Ecriture du résultat dans RC. RC contient donc la valeur 3001.
- Cb2, BB, T0, eRAM Libération de RC et écriture dans RAM.
- sM, COB, T1, eCO Lecture de la valeur et écriture dans RE. Incrémentation de CO.
- REB, T0, eA, FIN Libération de RE et écriture dans RA.

ou
- Fetch S1 Charger RI avec le mot mémoire dont l'adresse est donnée par CO et incrémenter CO.
- COB, T0, eRAM, eB Libération de l'adresse 1001 et écriture dans RAM et dans RB.
- sM Lecture de la valeur 2000 et écriture dans RE.
- REB, T0, Ca2, Cb1, OC3, eC Libération de RE et RB. Ecriture du résultat (3001) de l'addition dans RC.
- Cb2, BB, T0, eRAM Libération de RC et écriture dans RAM.
- sM, COB, T1, eCO Lecture de la valeur et écriture dans RE. Incrémentation de CO.
- REB, T0, eA, FIN Libération de RE et écriture dans RA.

Exercice 3 : Mode Branchement Inconditionnel Direct
Détailler l'instruction :
JUMP, Direct, Valeur
sur l'architecture S1.




- Fetch S1 Charger RI avec le mot mémoire dont l'adresse est donnée par CO et incrémenter CO.
- COB, T0, eRAM Libération de l'adresse 1001 et écriture dans RAM.
- sM Lecture de la valeur et écriture dans RE.
- REB, T0, eCO, FIN Libération de RE et écriture dans CO.
Exercice 4 : Mode Branchement Conditionnel Relatif
Détailler l'instruction :
JUMP C, Relatif, Valeur
sur les trois architectures.

Structure S1
- Fetch S1 Charger RI avec le mot mémoire dont l'adresse est donnée par CO et incrémenter CO.

- COB, T1, eCO, FIN Libération de l'adresse 1001, incrémentation et écriture dans CO.

- COB, T0, eRAM Libération de l'adresse 1001 et écriture dans RAM.
- sM Lecture de la valeur et écriture dans RE.
- REB, T0, Ca2, OC0, eC Libération de RE et écriture dans RC
- COB, T0, Ca2, Cb2, OC3, eC Libération de OC et addition avec RC. Ecriture du résultat dans RC
- Cb2, BB, T0, eCO, FIN Libération de RC et écriture dans CO.

Structure S2
- Fetch S2 Charger RI avec le mot mémoire dont l'adresse est donnée par CO et incrémenter CO.

- A1, F2, B2, E1, O4, eRE Libération de l'adresse 1001, incrémentation et écriture dans RE.
- eCO, FIN Libération de RE et écriture dans CO.

- A1, eRA Libération de l'adresse 1001 et écriture dans RAM.
- sM Lecture de la valeur et écriture dans RE.
- eA Libération de RE et écriture dans RA
- A1, F2, B2, E1, D2, O5, eRE Libération de OC et addition avec RA. Ecriture du résultat dans RE.
- eCO, FIN Libération de RE et écriture dans CO.

Structure S3
- Fetch S3 Charger RI avec le mot mémoire dont l'adresse est donnée par CO et incrémenter CO.

- COB1, XP1, eCO Libération de l'adresse 1001, incrémentation et écriture dans CO.

- COB1, XP, eRAM Libération de l'adresse 1001 et écriture dans RAM.
- sM Lecture de la valeur et écriture dans RE.
- REB1, COB2, ADDX, eCO, FIN Libération de OC et addition avec RE. Ecriture du résultat dans CO.


Exercice 5 : Programme Assembleur
Liste d'Instructions
ADD Registre (Valeur du mot mémoire + Registre ( Registre)
LOAD Registre, Mode Adressage, Valeur (Valeur du mot mémoire ( Registre)
INC Registre ( Incrémenter un Registre
CMP Registre1, Registre2 ( Compare deux registres
JUMP Condition, …
STORE Registre, Mode Adressage, Valeur ( Enregistre dans la mémoire
DEC Registre ( Décrémenter un registre

Ecrire un programme trouvant la valeur maximale d'un tableau dont l'adresse de début est 1000. La longueur du tableau est stockée en 999. La valeur maximale sera stockée en 998.

Algorithme :
Charger la longueur du tableau dans le registre B
Charger le registre A avec -( (initialisation)
Charger le registre Index avec 1000 (adresse de début du tableau)
Tant que B ( 0
Charger dans le registre C la valeur à l'adresse donnée par le registre Index
Comparer RA et RC
Si RC > RA
Charger RA avec la valeur de RC
Incrémenter le registre Index (Adresse du tableau + 1)
Décrémenter le registre B (longueur du tableau – 1)
Stocker RA à l'adresse 998

LOAD B, Direct, 999 Contenu de l'adresse 999 ( B
LOAD A, Imm, -( Valeur -( ( A
LOAD Index, Imm, 1000 Valeur 1000 ( Index
Add1 : LOAD C, Direct, Index Contenu de l'adresse Index ( C
CMP A, C si A > C ( drapeau = 1
JUMP drapeau = 1, Relatif, +2 Aller à l'adresse Add2
LOAD A, Imm, C C > A
Add2 : INC Index, Imm, +1
DEC B, Imm, -1
CMP 0, B si B ( 0 drapeau = 1
JUMP drapeau = 1, Relatif, -7 Aller à l'adresse Add1
STORE A, Direct, 998 Contenu de A à l'adresse 998











Soit A, la donnée à l'adresse 1000. Soit B la donnée à l'adresse 1001. Si A ( B alors écrire 1 à l'adresse 1002. Sinon écrire 0 à l'adresse 1002.

Algorithme :
Charger le registre Index avec 1000
Charger le registre A avec la valeur contenue à l'adresse Index
Incrémenter le registre Index
Charger le registre B avec la valeur contenue à l'adresse Index
Comparer A et B
Si A ( B
Charger A avec la valeur 1
Sinon
Charger A avec la valeur 0
Incrémenter le registre Index (1002)
Stocker A à l'adresse donnée par le registre Index

LOAD Index, Imm, 1000 Valeur 1000 ( Index
LOAD A, Direct, Index Contenu de l'adresse Index ( A
INC Index, Imm, +1
LOAD B, Direct, Index Contenu de l'adresse Index ( B
CMP A, B si A ( B ( drapeau = 1
JUMP drapeau = 1, Relatif, +3 Aller à l'adresse Add1 car A ( B
LOAD A, Imm, 0 Valeur 0 ( A car A < B
JUMP Relatif, +2 Aller à l'adresse Add2
Add1 : LOAD A, Imm, 1 Valeur 1 ( A car A ( B
Add2 : INC Index, Imm, +1
STORE A, Direct, Index Contenu A stocké à l'adresse Index (1002)


Architecture des CalculateursTD 2

 PAGE 7