Vous êtes sur la page 1sur 3

TRAVAUX DIRIGÉS N°4 (CORRECTIONS)

1- Donner le mode d’adressage de chaque opérande ainsi que le résultat de chaque instruction (calculer les
adresses physiques) :
MOV AX, 0102h
MOV DS, AX
MOV [F104], AX
MOV DX, 1241h
MOV DS, DX
MOV [1412h], DX
MOV AL,[1413]

R1- MOV AX, 0102h : Mode Immédiat, AX=0102h


MOV DS, AX : Mode Registre, DS = 0102h
MOV [F1040], AX : Mode Direct, Ad. physique =F104h + 10h x 102h =10124h
MOV DX, 1241h : Mode Immédiat, DX=1241h
MOV DS, DX : Mode Registre, DS = 1241h
MOV [1412h], DX : Mode Direct, Ad. Physique = 1412h + 10h x 1241h = 13822h
MOV AL,[1413h] : Mode Direct, AL = 12h

2- CS=A11Bh DS=B222h SS=C339h ES=2EA0h IP=789Ah


AX=3456h BX=2305h CX=4567h DX=789Ah
SP=1579h BP=268Ah SI=1111h DI=2222h

a- Donnez l’adresse physique :


- de la prochaine instruction à exécuter
- du sommet de la pile
- pointée par BP
- pointée par SI
- pointée par DI

b- Indiquer l’action des instructions suivantes :


- MOV [BX+5],SI
- MOV AX,[DI+Ah]
- MOIV [BP+SI+4], BX

R2- a1- Ad.Ph. = IP + CS x 10h = A8A4Ah


a2- Ad.Ph. = SP + SS x 10h = C4909h
a3- Ad.Ph. = BP + SS x 10h = C5A1Ah
a4- Ad.Ph. = SI + DS x 10h = B33B1h
a5- Ad.Ph. = DI + DS x 10h = B44C2h

b1- Ad.P. = BX + 5 + 10h x DS = B452Ah


b2- Ad.P. = DI + Ah + 10h x DS = B444Ch,
b3- Ad.P.= BP + SI + 4 + 10h x SS = C6B26

3- Ecrire un programme qui calcule la somme de deux mots stockés aux adresses [500h] et [600h] et stocker le
résultat dans [1000h]

R3-
MOV AX, [500h]
ADD AX,[600h]
MOV [1000h],AX

4- Ecrire un programme qui fait la somme de deux double mots stockés à [200h] et [400h], le résultat sera mis
dans [600h].
R4-
MOV AX, [200h]
MOV BX,[201h]
ADD AX, [400h]
ADC BX, [402h]
MOV [600h], AX
MOV [602h], BX

5- Ecrire un programme qui calcule (sous forme d’une boucle), la somme S = 1+2+3+4+5+6+7 et mettre le
résultat dans DX.

R5-
MOV DX,0
MOV BX, 1
Boucle : ADD DX,BX
INC BX
CMP BX,7
JBE boucle

6- Ecrire ujn programme qui calcule (sous forme d’une boucle) la somme de i² et mettre le résultat dans DX.

R6-
MOV DX,0
MOV BL,1
Boucle : MOV AL,BL
MUL BL
ADD DX,AX
INC BL
CMP BL,7
JBE Boucle

7- Soit une chaîne de caractères à l’adresse 1200h. Ecrire un programme qui met sa longueur dans CX.

R7- BX : pointeur, CX : compteur


MOV CX,0
MOV BX,1200h
Boucle : MOV AL, [BX]
CMP AL,0
JE fin
INC CX
INC BX
JMP Boucle
Fin :

8- Soit une chaîne de caractères à l’adresse 1200h. Ecrire un programme qui compte le nombre de « A » dans
cette chaîne, le résultat est mis dans DX.

R8- BX : pointeur, DX : compteur

MOV DX,0
MOV BX, 1200h
Boucle : MOV AL, [BX]
CMP AL,0
JE fin
CMP AL, 41h ; code ASCII du caractère « A »
JNE suite
INC DX
Suite : INC BX
JMP boucle
Fin :
9- Soit une chaîne de caractères à l’adresse 1200h. Ecrire un programme qui convertit les caractères minuscules
de cette chaîne en majuscules.

R9-
A= 0100 0001 Z =0101 1010
a = 0110 0001 z = 0111 1010

MOV BX,1200h
Boucle : MOV AL,[BX]
CMP AL,0
JE fin
CMP AL,61h ; comparer avec A
JB suite
CMP AL,7A ; comparer avec Z
JA suite
AND AL, DFh ; DF =1101 1111
MOV [BX], AL
Suite : INC BX
JMP Boucle
Fin :

Vous aimerez peut-être aussi