Architecture des Ordinateurs et Programmation assembleur
TD Langage Machine Exercice
Soit le programme suivant stocker en mémoire à partir de l’adresse 0000h:
B8 2A 14 8E D8 A1 00 00 BB 00 00 D1 E0 B9 0A 00 3B C3 7E 1A 2B C3
3B 06
02 00 74 0C 05 0A 00 D1 E8 48 8B 1E 02 00 EB EE 40 2D 0A 00 EB E2
1. Donner sa représentation symbolique ?
2. Complétez le tableau ci-dessous en donnant l’état des registres, y
compris registre d'état, après l’exécution de tout le programme
suivant sachant que l’adresse mémoire 0000h contient 100 et
l’adresse 0002h contient 100 :
Opération IP RI RTA RTUAL AX BX ZF,SF Mode
adressage
Etat initial 0000 (00)00 0000 00 00 1, 0
3. Soit le programme chargé en mémoire à l’adresse 0100h. Compléter
les valeurs des registres après exécution de chaque instruction
sachant que l’adresse 0034h contient 0Ah:
Opération IP RI AX RTA RTUAL ZF, SF, OF
Etat initial 0100h 00 00 00 00 1,0,0
Mov AX,09h
Inc AX
SUB AX, [0034h]
CMP AX, 00
JE 0103h
Mov [0034h], AX
ADD AX, 34
Exercice 3.
Nous voulons concevoir un microprocesseur pour un lecteur multimédia.
Le nombre d’opération est 256 utilisant trois mode d’adressage (Immédiat,
implicite et direct). Les adresses sont sur 8 bits et les valeurs sont sur 16
bits. Nous tenant que les opérations suivantes :
getFormat valeur , moveFirst, moveNext, goto [adr], play valeur, replay,
setVolume valeur.
1. Donner la taille d’un segment mémoire ?
2. Donner la taille maximale adressable de la mémoire ?
3. Donner la taille maximale d’une instruction ?
4. Donner un codage conventionnel et leur mode d’adressage des
instructions données ci-dessus ?
5. Ecrire un programme qui permet de lire un fichier de format 3 (mp3)
avec un volume 12 et le rejouer en langage symbolique et en
langage machine. Annexe :
Symbole Code Op. taille Octets signification
MOV AX, valeur B8 3 AX ← valeur
MOV AX, [ adr ] A1 3 AX ← contenu de l’adresse adr.
MOV [ adr ], AX A3 3 range AX à l’adresse adr.
MOV AH, valeur B4
MOV DS,AX 2 AH←valeur
8ED8 2 DS←AX
1
ADD AX, valeur 05 3 AX ← AX + valeur
ADD AX, [ adr ] 03 06 4 AX ← AX + contenu de adr.
SUB AX, valeur 2D 3 AX ← AX - valeur
SUB AX, [ adr ] 2B 06 4 AX ← AX - contenu de adr.
SUB AX,BX 2BC3 2 AX←AX-BX
SUB BX,AX 2BD8 2 BX←BX-AX
SHR AX, 1 D1 E8 2 décale AX à droite.
Mov BX , [adr] 8B1E 4 BX←contenu de adr
SUB BX, valeur 83EB 4
SHL AX, 1 D1 E0 2 décale AX à gauche.
INC AX 40 1 AX ← AX + 1
DEC AX 48 1 AX ← AX - 1
Mov BX, valeur BB 3
CMP AX, valeur 3D 3 compare AX et valeur.
CMP AX, [ adr ] 3B 06 4 compare AX et contenu de adr.
CMP AX,BX 3BC3 2 compare AX et BX.
INT valeur CD 2 interruption
JMP adr EB 2 saut inconditionnel (adr. relatif).
JE adr 74 2 saut si =
JNE adr 75 2 saut si =
JG adr 7F 2 saut si >
JLE adr 7E 2 saut si ≤
JA adr saut si CF = 0
JB adr saut si CF = 1