éà NB
: Programme Sous DEBUG
1 - L’utilisation des Identificateurs et Label est
NON AUTORISEE
2 - Les Nombres manipulés sont écrits en
HEXADECIMAL
--------------------------------------------------------------------------------------------------------------------------------------
TP 1 (Entrée des données en Mémoire)
Ecrire sous Debug à partir de l’offset 0500 les
suites des pseudo-instructions suivantes
permettant de stocker en Mémoire des Données
DB 4
DB 1234
DB ‘HELLO’
DB PAPA
DW 06
DW BABA
DW 007
DB BABA
DB 0008
DB ‘HELLO PAPA,BABA’
Valider pour sortir
1-Corriger s’il y a erreur ? Expliquer ?
2-Faire l’affichage des contenus des mémoires
à partir de l’offset 0500 . Expliquer ?
3-Desassembler les contenus de ces
memoires à partir de l’offset 0500 ?
4-Qu’est ce qu’on remarque ? Expliquer ?
TP 2 (Transfert des Données en Registre)
Ecrire sous Debug le programme suivant
à l’Offset 1000 :
MOV AX,FFFF
MOV AH,5
MOV BH,6
MOV AL,BH
MOV CH,DADA
-Valider pour sortir
1-Afficher l’etat initial des Registres . Expliquer
2-Executer pas à pas .
Remarques sur les contenus des Registres
pour chaque execution ? Expliquer ?
2-Modifier manuellement les Registres
AX par BABA
BH par FA et AH par DA
3-Verifier les nouveaux contenus des registres
TP3(Contrôle de FLAG)
Ecrire sous Debug le programme en
donnant comme Adresse d’ Offset
d’implantation 1500 :
MOV AX , 33FF
MOV BX , 66FF
ADD AX , BX
MOV AX , 0001
DEC AX
INC AX
SUB AX , 0002
MOV AH , 70
MOV BH , 50
ADD AH , BH
JMP 1500
1-Vérifier le contenu des Registres utilisés ?
2- Désassembler le programme
3-Initialiser le Registre IP à 1500
Vérifier les contenus des Registres
4-Exécuter pas à pas le programme
(instruction par instruction)
Identifier le changement qui intervient
dans le registre FLAG . POUQUOI ?
5-Changer la ligne ADD AX , BX
par ADD BX , AX .
Désassembler. Exécuter à partir du début
TP 4 (Mode d’Adressage)
1-Entrer des données suivantes en Mémoire :
55 à l’Adresse d’Offset 0100
6677 à l’Adresse d’Offset 0200
2- Ecrire le programme suivant à l’Adresse
d’Offset 2000 :
MOV BX , 0100
MOV AX , [BX]
MOV S I , 100
MOV CX , [BX][SI]
3-Afficher les contenus des Registres initiaux
4- Mettre à 0 les Registres AX , BX et CX
Si NON NULS
5-Verifier que ce programme est bien
Implanté en Mémoire ?
6-Initialiser le Registre IP à 2000
7-Executer pas à pas .
Expliquer les resultats obtenus ?
TP 5 ( PILE LIFO )
1)-Ecrire sous Debug , à partir de l’Adresse
d’Offset 3000 , le programme suivant :
MOV AX , 0011
MOV BX , 0022
PUSH AX
PUSH BX
MOV AX , 0033
MOV BX , 0044
POP AX
POP BX
2)-Exécutez pas à pas le programme
3)-Remarquez les Contenus des Registres :
Ax , BX , CS , SS , SP , IP ?
4)-Changez l’ordre d’exécution de POP en
écrivant :
avant POP BX
et après POP AX
5)-Exécuter pas à pas le programme à partir de
l’Offset 3000
6)-Que remarquez – vous ? Conclure
7)- Expliquez le fonctionnement des PILES
TP 6 ( Transfert des Données
Chaines de Caractères
en Mémoire )
1)-Entrer en mémoire les 2 noms ci-après :
à l’Adresse d’Offset 0100 : RAKOTO
à l’Adresse d’Offset 0200 : RAZAFY
2)-Ecrire le programme suivant à partir de l’Adresse
d’Offset 4000
MOV SI , 0100
MOV DI , 0200
MOV AL , [SI]
MOV AH , [DI]
CMP AH , AL
MOV AL , [SI+1]
MOV AH , [DI+1]
CMP AH , AL
MOV AL , [SI+2]
MOV AH , [DI+2]
CMP AH , AL
3)-Exécuter pas à pas et expliquer les états du
Registre FLAG et du Registre AX
4)-Ajouter à partir de l’Offset 401E un programme
permettant de transférer les 3 premières lettres de
la chaine des caractères RAZAFY qui se trouvent en
mémoire à partir de l’Adresse d’Offset 0200 vers
l’Adresse Mémoire d’Offset 0300 . VERIFIER les
resultats obtenus en Mémoire ?
( Proposition de Solution
MOV SI , 0200
MOV DI , 0300
MOV AL , [SI]
MOV [DI] , AL
MOV AL , [SI+1]
MOV [DI+1] , AL
MOV AL , [SI+2]
MOV [DI+2] , AL
Remarques
SI : Source
DI : Destination
5)- Reecrire le programme en utilisant les
Instructions REP et MOVSB , en transferant dans
l’Adresse Mémoire d’Offset 500 les 3 premiers
caractères de RAZAFY
( Proposition de SOLUTION :
PUSH DS
;(met la valeur de DS sur la Pile )
POP ES
;(récupère cette valeur dans ES)
; (Pile utilisée, Nécessaire pour effectuer
des opérations de transfert non prévues)
MOV SI,200
MOV DI,500
CLD
; ( DF=0 , Incrémentation SI et DI à prévoir )
MOV CX,3
; (les 3 Caractères à transférer)
REP MOVSB
Verifier le contenu de Memoire d’Offset 500
TP 7 : INTRRUPTION
EXO 1
Entrer en mémoire à l’Offset 200 la phrase suivante
‘ Salama , Manakory aby$ ‘
Ecrire le Programme suivant à l’Offset 300
MOV AH , 09
MOV DX , 200
INT 21
INT 20
NOP
Executer et Expliquer
EXO 2
Ecrire le Proigramme suivant à l’Offset 500
MOV AH , 00
INT 16
INT 20
NOP
ERxecuter et Expliquer