Vous êtes sur la page 1sur 8

Je suis un étudiant en 1ere année d'ingénieur informatique.

J'ai un exercice sur


l'architecture des ordinateurs, chapitre sur les mémoires. Répond a chaque question
en DETAIL, avec chaque étapes et des explications du cours si besoin.

Voici l'énoncé :

Nous disposons d'un ordinateur disposant de 512 Mo de mémoire vive dont la taille
du mot mémoire est de 32 bits.

A.
1. Déterminer l'adresse la plus haute (la plus grande) de cette mémoire.
2. Convertir l'adresse trouvée en octal.

B. Un tableau de réels, selon la norme IEEE-754 double précision, est stocké dans
la mémoire de cette machine à partir de l'adresse 0AE.
3. Calculer l'adresse en décimal du huitième élement de ce tableau.
4. Combien d'octets précédent l'adresse de début de ce tableau.

C. Nous désirons effectuer une addition sur deux élements du tableau de réels.
6. Donner l'instruction en utilisant le mode d'adressage immédiat qui permet de
modifier le contenu du registre ESI. ESI contiendra l'indice du cinquième élement
du tableau.
7. Donner l'instruction en utilisant le mode d'adressage indexé pour accéder au
cinquième élement du tableau, sachant que le registre de base contenant l'adresse
de début du tableau est EBX.
ChatGPT
A.

Déterminer l'adresse la plus haute (la plus grande) de cette mémoire.


La mémoire vive de l'ordinateur est de 512 Mo. Un octet contient 8 bits et un Mo
équivaut à 1024^2 = 1 048 576 octets.

Ainsi, la mémoire de l'ordinateur est de 512 * 1 048 576 = 536 870 912 octets.

La taille du mot mémoire est de 32 bits, ce qui équivaut à 4 octets. Donc, le


nombre total de mots dans la mémoire est de 536 870 912 / 4 = 134 217 728 mots.

L'adresse mémoire est généralement représentée en commençant par 0, donc l'adresse


du dernier mot sera 134 217 728 - 1 = 134 217 727.

Convertir l'adresse trouvée en octal.


Pour convertir l'adresse maximale en octal, vous devez diviser par 8 répétitivement
et prendre le reste à chaque étape. En Python, vous pouvez simplement utiliser la
fonction oct() pour faire cela. L'adresse en octal serait donc oct(134 217 727),
qui donne 0o777777777.

B. Un tableau de réels, selon la norme IEEE-754 double précision, est stocké dans
la mémoire de cette machine à partir de l'adresse 0AE.
3. Calculer l'adresse en décimal du huitième élement de ce tableau.

La norme IEEE-754 pour les nombres en double précision stipule qu'un nombre occupe
64 bits, soit 8 octets. Par conséquent, chaque élément du tableau occupe 8 adresses
mémoire consécutives.

L'adresse du huitième élément serait donc à l'adresse de départ plus 7 fois la


taille d'un élément. En supposant que l'adresse de départ est en hexadécimal, nous
convertissons d'abord l'adresse en décimal:

0xAE = 174 en décimal.


Ensuite, nous ajoutons 7 fois la taille d'un élément:

174 + 7*8 = 174 + 56 = 230.

Combien d'octets précédent l'adresse de début de ce tableau.


L'adresse de départ du tableau est 0xAE, soit 174 en décimal. Comme chaque adresse
représente un octet, 174 octets précèdent le début de ce tableau.

C. Nous désirons effectuer une addition sur deux élements du tableau de réels.
6. Donner l'instruction en utilisant le mode d'adressage immédiat qui permet de
modifier le contenu du registre ESI. ESI contiendra l'indice du cinquième élement
du tableau.

En assemblage x86, une instruction qui charge une valeur immédiate dans un registre
serait de la forme mov registre, valeur. Si nous voulons stocker l'indice du
cinquième élément du tableau dans ESI, nous pourrions utiliser l'instruction:

Copy code
mov esi, 4
Ceci est basé sur l'hypothèse que les indices du tableau commencent à 0. Par
conséquent, l'indice du cinquième élément serait 4.

Donner l'instruction en utilisant le mode d'adressage indexé pour accéder au


cinquième élement du tableau, sachant que le registre de base contenant l'adresse
de début du tableau est EBX.
Dans le mode d'adressage indexé, l'adresse effective est obtenue en ajoutant un
déplacement à la valeur dans le registre de base. Si EBX contient l'adresse de base
du tableau, et ESI contient l'indice du cinquième élément du tableau (qui est 4),
alors nous pouvons accéder à ce cinquième élément avec l'instruction:

css
Copy code
mov eax, [ebx + esi*8]
Cela suppose que l'instruction est en mode 32 bits, et que les éléments du tableau
sont de taille 8 octets (64 bits). EAX est utilisé pour stocker le cinquième
élément du tableau.

User
La question A. 2. doit être faisable lors d'une évaluation, donc uniquement feuille
et calculatrice
ChatGPT
Bien sûr, pour convertir une valeur décimale en octal manuellement, il vous suffit
de suivre ces étapes :

Divisez le nombre en base 10 par 8.


Notez le reste.
Continuez à diviser le quotient par 8 et notez le reste à chaque fois, jusqu'à ce
que le quotient soit 0.
Lisez tous les restes de bas en haut. Le nombre octal correspondant sera la suite
de ces chiffres.
Pour 134 217 727 en base 10:

134 217 727 ÷ 8 = 16 777 215, reste 7


16 777 215 ÷ 8 = 2 097 151, reste 7
2 097 151 ÷ 8 = 262 143, reste 7
262 143 ÷ 8 = 32 767, reste 7
32 767 ÷ 8 = 4 095, reste 7
4 095 ÷ 8 = 511, reste 7
511 ÷ 8 = 63, reste 7
63 ÷ 8 = 7, reste 7
7 ÷ 8 = 0, reste 7
Si nous lisons les restes de bas en haut, nous obtenons le nombre octal 777777777,
qui est le même que nous avons obtenu précédemment.

User
Je suis un étudiant en 1ere année d'ingénieur informatique. J'ai un exercice à
réaliser lors d'une évaluation, sur l'architecture des ordinateurs, chapitre sur
les mémoires. Répond a chaque question en DETAIL, avec chaque étapes et des
explications du cours si besoin. S'il y a des schémas à faire, fait les à l'écrit.

Voici l'énoncé :

On désire effectuer la synthèse d'un compteur synchrone modulo 8 à base de bascule


D. Un compteur modulo 8 est un type de compteur qui compte jusqu'à 7 puis
recommence à 0. On propose d'utiliser des bascules D à front montant.

1. Justifier le choix de trois bascules D.


2. Faire et compléter la table de transition
3. Remplir les tableaux de Karnaugh correspondant ç ces fonctions Di, puis donner
l'équation réduite de chaque fonction.
4. Compléter le schéma de câblage de ce compteur.
5. Compléter le logigramme correspondant.
ChatGPT
Justifier le choix de trois bascules D.
Un compteur modulo 8 est capable de compter de 0 à 7, ce qui représente huit états
distincts. En binaire, ces états sont représentés par les nombres de 000 à 111.
Étant donné que chaque bit peut être stocké dans une bascule, trois bascules sont
nécessaires pour représenter ces trois bits. Ainsi, trois bascules D sont
nécessaires pour un compteur modulo 8.

Faire et compléter la table de transition.


La table de transition dépend du nombre de bascules et décrit comment le compteur
doit se comporter pour chaque état.

État actuel (Q2 Q1 Q0) Entrée D2 Entrée D1 Entrée D0 Prochain état (Q2' Q1'
Q0')
000 0 0 1 001
001 0 1 0 010
010 0 1 1 011
011 1 0 0 100
100 1 0 1 101
101 1 1 0 110
110 1 1 1 111
111 0 0 0 000
Remplir les tableaux de Karnaugh correspondant à ces fonctions Di, puis donner
l'équation réduite de chaque fonction.
La fonction D pour chaque bascule peut être trouvée à l'aide de la table de vérité
et de la méthode de Karnaugh. Voici les équations réduites pour chaque fonction Di:
Pour D0:

Le tableau de Karnaugh de D0 est :

Q1/Q0 00 01 11 10
0 1 0 0 1
1 1 1 1 1
D'après le tableau de Karnaugh, l'équation de D0 est:

D0 = Q1 + Q0'

Pour D1:

Le tableau de Karnaugh de D1 est :

Q2/Q0 00 01 11 10
0 0 1 0 1
1 0 1 1 1
D'après le tableau de Karnaugh, l'équation de D1 est:

D1 = Q0 + Q2'Q1

Pour D2:

Le tableau de Karnaugh de D2 est :

Q2/Q1 00 01 11 10
0 0 0 1 1
1 0 0 0 1
D'après le tableau de Karnaugh, l'équation de D2 est:

D2 = Q1Q0'

Compléter le schéma de câblage de ce compteur.


Comme je suis un modèle de langage AI et ne peux pas dessiner des images ou des
schémas, je vais décrire comment le schéma de câblage pourrait être organisé.

Trois bascules D sont disposées en série, chacune alimentée par l'horloge du


système. Les entrées D de chaque bascule sont contrôlées par une combinaison de
portes logiques qui implémentent les équations que nous avons déterminées plus
haut.

Pour D0: Connectez Q1 à une porte OR et Q0' à la même porte OR.


Pour D1: Connectez Q0 à une porte OR et Q2'Q1 à la même porte OR par une porte AND.
Pour D2: Connectez Q1Q0' à une porte AND.

Les sorties de ces portes logiques vont ensuite aux entrées D des bascules
correspondantes.

Compléter le logigramme correspondant.


De nouveau, je suis incapable de dessiner un logigramme, mais je vais le décrire en
détail. Le logigramme serait similaire au schéma de câblage.

Il contiendrait trois bascules D, chacune avec son entrée D connectée à la sortie


d'une porte logique. Les portes logiques seraient câblées pour refléter les
équations que nous avons déterminées pour D0, D1 et D2. Les sorties des bascules D
seraient les trois bits de sortie du compteur, et l'horloge serait connectée à
chaque bascule pour assurer le comptage synchrone.
User
Refait la question 4 et 5 et dessine avec des tirets, etc, de sorte a me visualiser
le schéma
ChatGPT
D'accord, voici une version textuelle des schémas. Pour un meilleur rendu, j'ai
utilisé plusieurs caractères pour représenter les différentes parties du circuit.

Compléter le schéma de câblage de ce compteur.


Voici une description de haut niveau du schéma de câblage :

css
Copy code
CLOCK ----> |D Q| ----> |D Q| ----> |D Q|
|0 0| |1 0| |2 0|
Où :

"CLOCK" est l'entrée d'horloge, qui est connectée à chaque bascule D.


"|D Q|" est une bascule D. Le nombre qui la suit est son indice (0, 1, 2).
Les flèches ("---->") représentent des fils.
Les entrées D des bascules sont contrôlées par une combinaison de portes logiques,
comme suit :

rust
Copy code
Q1 -| Q0 -|
| OR gate ----> D0 | AND gate ----> D1
Q0' -| Q2'Q1 -|

Q1Q0' ----> D2
Où :

Les lignes verticales avec des tirets ("-|") représentent les entrées d'une porte
logique.
"---->" représente les fils.
"OR gate" et "AND gate" sont des portes logiques.
"D0", "D1" et "D2" sont les entrées des bascules D respectives.
Compléter le logigramme correspondant.
Le logigramme serait similaire au schéma de câblage. Il illustrerait la combinaison
des portes logiques qui alimentent les entrées D de chaque bascule.

rust
Copy code
Q1 -| Q0 -|
| OR gate ---->|D Q| | AND gate ---->|D Q|
Q0' -| |0 0| Q2'Q1 -| |1 0|
Q1Q0' ---->|D Q|
|2 0|
Où :

Les "|D Q|" sont les bascules D, avec leurs indices respectifs à côté d'elles.
Les portes "OR gate" et "AND gate" sont connectées aux entrées de chaque bascule.
Les flèches ("---->") représentent des fils, qui relient les portes logiques aux
bascules.
"CLOCK" est l'entrée d'horloge, qui est connectée à chaque bascule (non représentée
dans le logigramme pour simplifier).
Veuillez noter que ces illustrations sont une simplification de la réalité. En
réalité, vous devriez inclure plus de détails, tels que les portes NOT pour les
inversions, et peut-être des détails supplémentaires en fonction des exigences de
votre cours.

User
Je suis un étudiant en 1ere année d'ingénieur informatique. J'ai un exercice à
réaliser lors d'une évaluation, sur l'architecture des ordinateurs, chapitre sur
les mémoires. Répond a chaque question en DETAIL, avec chaque étapes et des
explications du cours si besoin.

Voici l'énoncé :

Ecrire un programme assembleur bien commenté qui calcule la somme des carrés des
entiers de 1 à 10 et affiche le résultat. Commente chaque ligne de sorte a bien
comprendre le programme.
ChatGPT
L'assembleur est une classe de langages de bas niveau qui permettent de manipuler
directement la mémoire et les registres d'un ordinateur. Voici un exemple de
programme en assembleur x86 qui calcule la somme des carrés des entiers de 1 à 10.
Le programme utilise la syntaxe de l'assembleur NASM, l'un des assembleurs les plus
couramment utilisés pour l'architecture x86.

assembly
Copy code
section .data ; Cette section contient des données initialisées
result dd 0 ; Nous définissons une variable "result" pour stocker notre
résultat final.

section .text ; Cette section contient le code du programme


global _start ; Le point de départ de notre programme

_start:
mov ecx, 10 ; Nous initialisons le compteur (registre ECX) à 10.

sum_loop:
imul eax, ecx, ecx ; Nous calculons le carré du compteur et le stockons dans
EAX.
add [result], eax ; Nous ajoutons le carré à notre résultat.
dec ecx ; Nous décrémentons notre compteur.
jnz sum_loop ; Nous retournons en arrière si le compteur n'est pas encore
à 0.

; Nous utilisons l'appel système write pour afficher le résultat.


; Nous passons les paramètres nécessaires dans les registres, puis nous invoquons
l'interruption.
mov eax, 4 ; Le numéro de l'appel système pour write est 4.
mov ebx, 1 ; Le descripteur de fichier pour la sortie standard est 1.
mov ecx, result ; Nous passons l'adresse de notre résultat en tant que
pointeur vers les données à écrire.
mov edx, 4 ; Nous voulons écrire 4 octets (la taille d'un entier en
x86).
int 0x80 ; Nous invoquons l'interruption pour effectuer l'appel
système.
; Enfin, nous utilisons l'appel système exit pour terminer le programme.
mov eax, 1 ; Le numéro de l'appel système pour exit est 1.
xor ebx, ebx ; Nous renvoyons le code de statut 0 pour indiquer que tout
s'est bien passé.
int 0x80 ; Nous invoquons l'interruption pour effectuer l'appel
système.
Veuillez noter que ce programme est destiné à un environnement Linux et qu'il
affiche le résultat en tant que nombre brut, et non pas en tant que chaîne lisible
par l'homme. Il se peut que vous ayez besoin de faire des ajustements pour
l'adapter à votre environnement et à vos besoins spécifiques.

User
Je suis un étudiant en 1ere année d'ingénieur informatique. J'ai un exercice à
réaliser lors d'une évaluation, sur l'architecture des ordinateurs, chapitre sur
les mémoires. Répond a chaque question en DETAIL, avec chaque étapes et des
explications du cours si besoin.

QCM, choisi La bonne réponse (une seule) et justifie la bonne et corrige les
mauvaises réponses.

1. Bus :
a. Il y a 4 types de bus : données, adresse, commande et contrôle.
b. un bus est un groupe de lignes électriques qui relie le CPU aux autres
composantes.
c. chaque ligne électrique d'un bus peut transférer deux bits d'informations à la
fois.
d. Le bus de données permet le transfert des données dans un seul sens.

2. Adressage :
a. Adressage registre un adressage entre adresse mémoire et valeur implicite.
b. Adressage direct est un adressage entre deux registres.
c. Adressage immédiat est un adressage entre deux adresses mémoires.
d. Adressage indirect est un adressage entre un registre et une adresse mémoire.

3. Soit le nombre -27 en base décimale. Comment écrire ce nombre en binaire


complément à 2 sur 8 bits ?
a. 1110 0101
b. 0001 1011
c. 1110 0100
d. 0001 1100

4. L'unité de commande ne contient pas :


a. Décodeur
b. Séquenceur
c. Accumulateur
d. Registre d'instruction
ChatGPT
Bus :
Réponse correcte : b. Un bus est effectivement un groupe de lignes électriques qui
relie le CPU aux autres composantes.
a. Il existe en général trois types de bus dans un système informatique : le bus de
données, le bus d'adresses et le bus de commande. Le bus de contrôle n'est pas un
type distinct de bus, mais plutôt une fonction du bus de commande.

c. Chaque ligne électrique d'un bus peut transporter un bit d'information à la


fois, pas deux.

d. Le bus de données est généralement bidirectionnel, permettant le transfert de


données dans les deux sens entre le processeur et la mémoire ou les périphériques.

Adressage :
Réponse correcte : d. L'adressage indirect est un mode d'adressage où l'adresse
d'un opérande est donnée dans un registre.
a. L'adressage par registre est un mode d'adressage où l'opérande est dans un
registre du processeur.

b. L'adressage direct est un mode d'adressage où l'adresse de l'opérande est


directement spécifiée dans l'instruction.

c. L'adressage immédiat est un mode d'adressage où l'opérande est inclus dans


l'instruction elle-même.

Soit le nombre -27 en base décimale. Comment écrire ce nombre en binaire complément
à 2 sur 8 bits ?
Réponse correcte : a. Le nombre -27 est représenté comme 1110 0101 en complément à
deux sur 8 bits.
b, c, d. Ces réponses sont incorrectes. Pour obtenir la représentation en
complément à deux de -27, nous prenons la représentation en binaire de 27 (0001
1011), nous inversons les bits (1110 0100) et ajoutons 1 (1110 0101).

L'unité de commande ne contient pas :


Réponse correcte : c. L'accumulateur est un registre du processeur, mais il n'est
pas dans l'unité de commande.
a, b, d. Le décodeur, le séquenceur et le registre d'instruction sont tous des
composants typiques de l'unité de commande. L'unité de commande est responsable de
la séquence d'opérations de traitement des instructions.

Vous aimerez peut-être aussi