Vous êtes sur la page 1sur 3

École Supérieure en Sciences et Technologies de l'Informatique et du Numérique 2020/2021

Module : Architecture des ordinateurs II


Niveau : 2e année CPI Dr S. BOUCHELAGHEM

Correction - Exercice Supplémentaire


Soit un contrôleur de disque fonctionnant en mode par test d'état. Ce contrôleur contient les registres
suivants :
RC : Registre de Commandes RD : Registre de Données RS : Registre de Secteur
RP : Registre de Piste RE : Registre d'État
Le répertoire de ce contrôleur comprend les commandes suivantes :
• SEEK (Recherche piste) → Code opération : "001"
• READ (Lecture secteur) → Code opération : "010"
• WRITE (Écriture secteur) → Code opération : "011"
• STOP (Fin du programme d'entrée/sortie) → Code opération : "000"
L'unité centrale accède aux registres du contrôleur en utilisant les instructions suivantes :
• LDA RD Chargement du contenu de RD dans l'accumulateur
• LDA RE Chargement du contenu de RE dans l'accumulateur
• STA RD Rangement de l'accumulateur dans le RD
• STA RC Rangement de l'accumulateur dans le RC
• STA RS Rangement de l'accumulateur dans le RS
• STA RP Rangement de l'accumulateur dans le RP
L'unité centrale dispose également des instructions suivantes :
• LDI val Chargement immédiat de l'accumulateur avec la valeur val.
• LDA adr Chargement direct de l'accumulateur avec la valeur contenue dans le mot
d'adresse adr.
• STA adr Rangement direct du contenu de l'accumulateur dans le mot d'adresse adr.
• LDA *adr Chargement en mode indirect de l'accumulateur avec la valeur contenue dans
le mot pointé par l'adresse qui se trouve dans le mot mémoire d'adresse adr.
• STA *adr Rangement en mode indirect du contenu de l'accumulateur dans le mot pointé
par l'adresse qui se trouve dans le mot mémoire d'adresse adr.
• BZ étiq Branchement conditionnel à l'étiquete étiq si le contenu de l'accumulateur est
nul.
• BNZ étiq Branchement conditionnel à l'étiquete étiq si le contenu de l'accumulateur
n'est pas nul.
• BI étiq Branchement inconditionnel à l'étiquete étiq.
• ADDI val Addition en mode immédiat de la valeur val au contenu de l'accumulateur ;
résultat dans l'accumulateur.
• SUBI val Soustraction en mode immédiat de la valeur val au contenu de l'accumulateur ;
résultat dans l'accumulateur.
• ANDI 'val' ET logique en mode immédiat entre le contenu de l'accumulateur et la valeur
binaire val précisée dans le champ opérande ; résultat dans l'accumulateur.
Chacun des registres du contrôleur ainsi que l'accumulateur ont une taille de 8 bits.
Il est impossible de faire des tests directement sur les registres internes du contrôleur. Toutes les
opérations doivent se faire dans l'accumulateur.
Les bits du registre d'état RE sont positionnés par le contrôleur pour indiquer :
B0 = 1 Le registre de données est plein en lecture.
Le registre de données est vide en écriture.
B1 = 1 La commande exécutée sur le périphérique est terminée.
B2 = 1 Le périphérique et le contrôleur sont prêts.
On veut écrire sur le disque dur une chaîne de caractères qui occupe 1024 octets en mémoire centrale
à partir de l'adresse 2453. On suppose que chaque secteur a une taille de 512 octets.

Question : Écrire le programme exécuté par l'unité centrale et qui efectue l'écriture de la chaîne
d'octets sur le secteur 13 de la piste 25, et le secteur 7 de la piste 31 du disque.
La fin du programme se termine obligatoirement par une commande STOP.
Étiquuetue Instruction Duescription
LDI 2453
STA Adr
LDI 512
Initialisation
STA Nbc
LDI 2
STA Nbs
uetiq1 : LDA RE
ANDI '0000000100' Tester si le contrôleur est prêt
BZ uetiq1
LDI 25
STA RP
LDI 13
STA RS
uetiq5 : LDI '001' Commande SEEK pour rechercher le secteur
STA RC et tester la fin d'exécution de la commande
uetiq2 : LDA RE
ANDI '0000000010'
BZ uetiq2
uetiq4 : LDA *Adr Récupération de l'octet en mémoire
STA RD
LDI '011' Commande d'écriture sur le disque
STA RC
uetiq3 : LDA RE
ANDI '0000000001' Tester si RD est vide
BZ uetiq3
LDA Nbc Décrémenter le nombre de caractères
SUBI 1
BZ suect2 Si le secteur est plein, se déplacer au suivant
STA Nbc
LDA Adr
ADDI 1 Incrémenter l'adresse Adr
STA Adr
BI uetiq4
suect2 : LDA Nbs Décrémenter le nombre de secteurs
SUBI 1
BZ fin
STA Nbs
LDI 512
STA Nbc
LDI 31 Chargement des numéros de piste et secteur
STA RP
LDI 7
STA RS
BI uetiq5
fin : LDI '000' Fin d'écriture sur les deux secteurs du disque
STA RC

Vous aimerez peut-être aussi