0% ont trouvé ce document utile (0 vote)
41 vues3 pages

Corrections des travaux dirigés en assembleur

Le document contient plusieurs exercices de programmation en assembleur avec leurs réponses. Les exercices portent sur des opérations basiques comme l'addition et la soustraction de registres et de zones mémoire, la manipulation de chaînes de caractères et la conversion entre majuscules et minuscules.

Transféré par

aidoun.ibtissam
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
41 vues3 pages

Corrections des travaux dirigés en assembleur

Le document contient plusieurs exercices de programmation en assembleur avec leurs réponses. Les exercices portent sur des opérations basiques comme l'addition et la soustraction de registres et de zones mémoire, la manipulation de chaînes de caractères et la conversion entre majuscules et minuscules.

Transféré par

aidoun.ibtissam
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

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- [Link]. = IP + CS x 10h = A8A4Ah


a2- [Link]. = SP + SS x 10h = C4909h
a3- [Link]. = BP + SS x 10h = C5A1Ah
a4- [Link]. = SI + DS x 10h = B33B1h
a5- [Link]. = 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