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

Programme Debug : Manipulation Mémoire et Registres

Ce document présente sept exercices sur l'utilisation d'instructions assembleur pour la manipulation de données et de registres, le transfert de données en mémoire et entre registres, l'utilisation de piles et de chaînes de caractères, et les interruptions.

Transféré par

Nantenaina RANDRIA
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
41 vues10 pages

Programme Debug : Manipulation Mémoire et Registres

Ce document présente sept exercices sur l'utilisation d'instructions assembleur pour la manipulation de données et de registres, le transfert de données en mémoire et entre registres, l'utilisation de piles et de chaînes de caractères, et les interruptions.

Transféré par

Nantenaina RANDRIA
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd

éà 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

Vous aimerez peut-être aussi