Académique Documents
Professionnel Documents
Culture Documents
Série d’exercices n° 2
Exercice 1 :
Si une adresse physique de branchement dans un programme donné est 5A230H quand CS=5200H, quelle serait
cette adresse physique quand CS devient égal à 7800H ?
Exercice 2 :
En considérant les conditions initiales suivantes du microprocesseur :
BX=0105H, DI=4506H, SI=00AH, BP=0540H, DS=4500H, SS=0100H, EA(x)=1234H, EA(y)=6789H
Calculer les adresses effectives et physiques pour les modes d’adressage suivants :
mode immédiat
mode registre (registre utilisé BX)
mode registre indirect (registre utilisé BX)
mode direct (variable utilisée x)
mode base indexée (registres utilisés BP et DI)
mode registre relatif (registre BX, variable x)
mode base indexée relative (registres BX et SI, variable y)
Exercice 3 :
Interpréter les instructions assembleur suivantes :
mov cl , [bx]
mov cl , bx
mov a650h , 20h
mov a650h , [bp)
mov ds , 1234h
xchg bx , 9abch
Exercice 4 :
Ecrire en assembleur une séquence d’instructions qui réalise l’opération suivante :
W X + Y +24 – Z
Où W, X, Y et Z sont des variables sur 32 bits.
Exercice 5 :
Soient les deux déclarations suivantes :
Byte_var db ‘BYTE’,12, -12, 3dup(0, ?, 2 dup(1, 2), ?)
Word_var dw 5 dup(0, 1, 2), ?, -5, ‘BY’, ‘TE’, 255H
Exercice 6 :
En supposant que le registre DS= 4ab8h et que le data segment correspondant est déclaré comme suit:
mes_données SEGMENT
budget dw 20, -30, 0f610h
poids db 3 dup(0a1h)
comptes dw 100 dup(0abch)
mes_données ENDS
a) donner la représentation mémoire du data segment mes_données,
b) en termes de temps d’exécution, que faut-il faire pour optimiser le temps d’exécution et combien
gagnerait-on si la fréquence du microprocesseur est 2 GHz.
mon_code SEGMENT
assume cs: mon_code ,ds: mes_donnees
start: mov ax , mes_donnees
mov ds , ax
mov si ,0
mov cx , length tab
encore: mov ax , tab[si]
cmp ax , 0
jge positif
neg ax
inc compt
positif: mov new_tab[si] , ax
add si , 2
loop encore
mov ax , 4c00h
int 21h
mon_code ENDS
END start
Questions :
Série d’exercices n° 2
(CORRIGE)
Exercice 1 :
Si une adresse physique de branchement dans un programme donné est 5A230H quand CS=5200H, quelle serait
cette adresse physique quand CS devient égal à 7800H ?
A.P = A.S x 16 + IP
IP = A.P -A.S x 16 =5A230H - 52000H = 8230H
A.P' = A.S' x 16 + IP = 78000H + 8230H =80230H
Exercice 2 :
En considérant les conditions initiales suivantes du microprocesseur :
BX=0105H, DI=4506H, SI=00AH, BP=0540H, DS=4500H, SS=0100H, EA(x)=1234H, EA(y)=6789H
Calculer les adresses effectives et physiques pour les modes d’adressage suivants :
mode immédiat ni A.E , ni A.P
mode registre (registre utilisé BX ni A.E , ni A.P
mode registre indirect (registre utilisé BX) A.E = 0105H , A.P = DS x 16 + BX = 45000H + 0105H = 45105H
mode direct (variable utilisée x) A.E = 1234H , A.P = DS x 16 + A.E = 45000H + 1234H = 46234H
mode base indexée (registres utilisés BP et DI) A.E = BP + DI = 0540H + 4506H = 4A46H ,
A.P = SS x 16 + A.E = 01000H + 4A46H = 05A46H
mode registre relatif (registre BX, variable x) A.E = BX + A.E(X) = 0105H + 1234H = 1339H ,
A.P = DS x 16 + A.E = 45000H + 1339H = 46339H
mode base indexée relative (registres BX et SI, variable y) A.E = BX+SI +A.E (y) = 0105H+000AH+6789H = 6898H
A.P = DS x 16 + A.E = 45000H + 6898H = 4B898H
Note : A.P : Adresse physique , A.E : Adresse effective ou Effective Address
Exercice 3 :
Interpréter les instructions assembleur suivantes :
mov cl , [bx] correcte, de la forme mov reg8 , mem
mov cl , bx incorrecte , incompatibilité de la taille des opérandes
mov a650h , 20h correcte si la variable a650H a été déclarée au préalable
mov a650h , [bp) incorrecte, forme impossible mov mem , mem
mov ds , 1234h incorrecte, la forme mov reg seg , immediat impossible
xchg bx , 9abch impossible , il s'agit d'une instruction de permutation , la constante 9abcH donne
mais ne reçoit pas
Exercice 4 :
Ecrire en assembleur une séquence d’instructions qui réalise l’opération suivante :
W X + Y +24 – Z
Où W, X, Y et Z sont des variables sur 32 bits.
MOV AX , X
MOV DX , X+2
ADD AX , Y
ADC DX , Y+2
ADD AX , 24
ADC DX , 0
SUB AX , Z
SBB DX , Z+2
MOV W , AX
MOV W+2 , DX
Exercice 5 :
Soient les deux déclarations suivantes :
Byte_var db ‘BYTE’,12, -12, 3dup(0, ?, 2 dup(1, 2), ?)
Word_var dw 5 dup(0, 1, 2), ?, -5, ‘BY’, ‘TE’, 255H
(a) Schéma représentatif de la mémoire pour la déclaration Byte_var db ‘BYTE’,12, -12, 3dup(0, ?, 2 dup(1, 2), ?)
7 0
-
REFLEXION :
-
- Donner le schéma représentatif de la mémoire pour
- la déclaration
Byte_var 42H Word_var dw 5 dup(0, 1, 2), ?, -5, ‘BY’, ‘TE’, 255H
Byte_var + 1 59H
Byte_var + 2 54H
Byte_var + 3 45H
Byte_var + 4 0CH
- F4H
- 00H
- ?
- 01H
- 02H
- 01H
02H
- ?
- 00H
- ?
- 01H
- 02H
- 01H
- 02H
- ?
- 00H
- ?
- 01H
- 02H
- 01H
- 02H
Byte_var + 26 ?
-
-
-
-
Exercice 6 :
En supposant que le registre DS= 4ab8h et que le data segment correspondant est déclaré comme suit:
mes_données SEGMENT
budget dw 20, -30, 0f610h
poids db 3 dup(0a1h)
comptes dw 100 dup(0abch)
mes_données ENDS
-
-
-
budget 14H
00H
E2H
FFH
10H
F6H
poids A1H
- A1H
- A1H
Comptes BCH
0AH
- BCH
- 0AH
- -
100 fois 0ABCH
-
-
-
BCH
- 0AH
-
-
-
Exercice 7 : (exercice donné en examen)
Soit le programme suivant :
Langage machine Langage Assembleur
(généré par le turbo Assembleur) (code source)
Questions :
a) Donner la taille de l’espace réellement occupé par le segment mes_donnees réponse : 513 bytes
b) Quelle est l’adresse effective (l’offset) de la variable new_tab ? réponse : 0101H
c) Calculer l’espace réellement utilisé par le code segment réponse : 40 bytes
d) Générer le code machine de mov new_tab[si] , ax et mov ax , 4c00h
réponse : code machine de mov new_tab[si] , ax 89 84 01 01
code machine de mov ax , 4c00h B8 00 4C
Réponse:
#cycles machine = 4+2+4+4+128x(17+4+22+4+17)-12+50x(4+3+21)+78x16+4+51=10897