Académique Documents
Professionnel Documents
Culture Documents
Exercice 1 :
1. Dans l’extrait de programme suivant, précisez pour chacune des instructions le mode
d’adressage ?
Instruction Mode d’adressage
MOV BX , [3125h]
SUB CL , 01h
DEC DL
MOV [CX] , 00h
MOV [SI+0002h] , 2AF5h
MOV [BP] [SI] , 43F7h
2. Soit : SI = 3105h, DI = 10F4h, BP = 0005h, DS = 3452h et SS = 1240h, calculer les
adresses logiques et physiques des deux dernières instructions du tableau ci-dessus (les
instructions en gras) ? Puis donner la répercussion de ces deux instructions sur la mémoire
sachant qu’on travaille avec un microprocesseur INTEL ?
Exercice 2 :
AH contient le code ASCII d’une lettre minuscule (ex : ‘a’). On veut mettre en majuscule
cette lettre (ex : ‘A’). Ecrire une seule instruction qui permet d’effectuer cette modification
quelque soit la lettre en considération ?
Exercice 3 :
Voici le code récupéré à partir du fichier objet :
@1@0 : push bp
mov bp,sp
@1@1 : sub sp,2
mov word ptr [bp-2],2 ;word = 16 bits
@1@2 : jmp short @1@7
@1@3 : mov ax,word ptr [bp+4]
idiv word ptr [bp-2];division de ax par le paramètre
@1@4 : cmp dx,0 ;dx contient le reste
jne short @1@6
@1@5 : mov ax,0
jmp short @1@A
@1@6 : inc word ptr [bp-2]
@1@7 : mov ax,word ptr [bp-2]
imul ax,word ptr [bp-2] ;multiplication entière
@1@8 : cmp ax,word ptr [bp+4]
jl short @1@3
@1@9 : mov ax,1
jmp short @1@A
@1@A : mov sp,bp
pop bp
ret
Entre @1@3 et @1@A, qu’y a-t-il dans la pile en :
- BP–2 ?
- BP ?
- BP+2 ?
- BP+4 ?
En déduire le prototype de la fonction. Que fait-elle à votre avis ?
1/3 M.JBILOU
Exercice 4 :
Dites ce que le programme suivant range dans AL en fin d’exécution : dites ce que cela
représente et donnez la valeur ?
DATA SEGMENT
TAB DB 45, 20, 40, 30, 25, 15, 5, 35, 95, 50, 90, 10, 80
TTM1 DW 12
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:PILE
DEBUT: MOV AX,DATA
MOV DS,AX
MOV BX,offset TAB
MOV AL,[BX]
INC BX
MOV CX,TTM1
Boucle: MOV AH,[BX]
CMP AL, AH
JB Suite
MOV AL,AH
Suite: INC BX
DEC CX
CMP CX,0
JNE Boucle
Fin: MOV AH,4Ch
INT 21h
CODE ENDS
END DEBUT
Indications : JB : Branchement si < et JNE : Branchement si
Exercice 5 :
On souhaite réaliser l’affichage du contenu du registre AL à l’écran. Pour ce faire, on
convertit les 2 quartets qui composent le registre AL en leur code ASCII correspondant.
Par exemple : si AL=5B alors en fin d’exécution de programme, la chaîne RESULT doit
contenir les octets : 35h (code ASCII de ‘5’), 42h (code ASCII de ‘B’) suivi du caractère de
fin de chaîne ‘$’ en vue d’un affichage.
Le programme ci-dessous réalise cette transformation :
DATA SEGMENT
RESULT DB 3 DUP(?)
DATA ENDS
2/3 M.JBILOU
CMP AH,0Ah ; 000C
JAE AlphaH ; 000F IP=
ADD AH,’0’ ; 0011
JMP FinH ; 0014
AlphaH: ADD AH,’A’ ; 0017
SUB AH,0Ah ; 001A
FinH: MOV[BX],AH ; 001D AH=
Code ENDS
END Debut
Indications : SHR AX, CX Décalage logique du registre AX vers la droite d’un nombre de
bits indiqué par CX. JAE Branchement si
Compléter les valeurs des registres demandés dans le champ commentaires en fin de ligne ?
N.B : les valeurs de ces registres doivent être données sachant que l’instruction de la ligne
correspondante a déjà été exécutée (si elle l’est !).
Exercice 6 :
1. Complétez la déclaration assembleur pour les données suivantes : le caractère espace, le
caractère retour à la ligne (code ASCII 13), un masque pour ne regarder que le bit 5 des
caractères, une chaîne de caractères "contrôle continue", un entier X, un tableau T de 32
entiers comme X, un entier N donnant la taille du tableau et un autre I pour stocker
l'indice dans le tableau (initialisé à 0).
2. Sachant que la mémoire est organisée en octets et les adresses sont numérotées du haut en
bas, précisez les adresses mémoire correspondant aux différentes variables que vous avez
déclaré en question 1.
exp : Espace → [0000]
Exercice 7 :
En utilisant les données de l’exercice 5, écrire un programme qui range dans X le nombre de
valeurs non nulles dans le tableau T. Utilisez les variables I et N déclarées précédemment.
Attention, Seuls deux registres sont utilisés : AL et BX.
Indications : JGE : saut si JNE : saut sinon égal
3/3 M.JBILOU