Compte rendu linux
Fiche : Compte rendu linux. Recherche parmi 300 000+ dissertationsPar saadelmabrouk • 14 Octobre 2018 • Fiche • 2 352 Mots (10 Pages) • 1 108 Vues
[pic 1]
- INTRODUCTION
- OBJECTIFS
- MATERIEL UTILISE
- ACTIVITES :
- Activité 1 : Entrée et Sortie de DEBUG
- Activité 2 : Examiner et changer les contenus de registres.
- Activité 3 : Coder et Exécuter les programmes avec DEBUG.
- Activité 4 : Manipulation des données avec DEBUG.
- Activité 5 : La convention « Little Endian » et comment le μP80x86 sauvegarde les mots.
- Activité 6 : Examiner et changer le registre FLAGS avec DEBUG.
- Activité 7 : Compléments.
[pic 2]
DEBUG : un programme inclus dans le système d'exploitation DOS de Microsoft et IBM PC, permet de suivre l'exécution d'un programme écrit en langage assembleur, en bloc ou une instruction à la fois. Ce qui est important pour trouver ce qui ne marche pas dans un programme.
Plus particulièrement, DEBUG permet d'examiner et de changer le contenu de la mémoire, entrer un programme et l'exécuter.
[pic 3]
L'objectif de ce TP est de bien comprendre la programmation avec l'utilitaire DEBUG, plus particulièrement comment:
- entrer et sortir de DEBUG,
- entrer, exécuter et déboguer des programmes,
- examiner et changer le contenu des registres et de la mémoire,
- manipuler les commandes les plus importantes de DEBUG.[pic 4]
• Micro-ordinateur IBM et compatible muni d'un μP80x86.
• Programme DEBUG[pic 5]
Activité 1 : Entrée et sortie de Debug :
- A l'invite de commandes 'CMD' pour entrer dans 'DEBUG' on tape "DEBUG" après "entrer", et on tape "q" ou bien "Q" pour sortir.
- Pour DEBUG les lettres en majuscule ou minuscule sont la même commande.
[pic 6]
Activité 2 : Examiner et changer les contenus de registres :
- On tape 'R' pour afficher le contenu de tous les registres de µP80x86.
[pic 7]
- La première ligne affiche le contenu des registres généraux : AX, BX, CX, DX, SP, BP, SI et DI.
- La deuxième ligne affiche le contenu des registres :
- Segments (CS, DS, SS, ES).
- Pointeur programme (IP).
- L’état de 8 bits du registre flags (OF, DF, IF, SF, ZF, AF, PF, et CF).
- La troisième ligne affiche l'adresse logique du segment de code (CS:IP), la mnémonique de l'instruction du programme pointée par CS:IP et la case mémoire à laquelle l'instruction courante réfère.
Pour afficher le contenu d’un registre et le changer on tape ‘r’ ‘registre’. Par exemple on va afficher le contenu du AX et le changer successivement avec ces valeurs: 7AC2, BC2, C4, 4, 6ABC5. A chaque fois on va taper ‘r’ et on va observer les résultats.
[pic 8]
Le programme nous affiche "error" à la cinquième commande parce que AX est codé sur 16 bits et 6ABC5 sur 20 bits.
- On tape ‘R' BX, ‘R' BH, ‘R' BL.
[pic 9]
On remarque les deux commandes R ‘BH’ et R ‘BL’ affiche des erreurs !
Pourquoi ?
Ces commandes ne fonctionnent pas parce-que Les registres AX ; BX ; CX ; DX se décomposent de 2 sous registres de 8 bits : H (partie haute) ; L (partie basse). Alors BH et BL ne sont pas des registres de µP80x86.
Donc avec la commande R BH ou R BL on ne peut pas changer uniquement la Partie haute ou basse du registre BX c’est pour cela on a eu Erreur.
Activité 3 : Coder et exécuter les programmes avec DEBUG :
On tape ‘A 100’ suivit des instructions suivantes :
- MOV DH, CF7
- MOV BX, 9CBCF4
- MOV CS, 2000
- MOV SI, CH
- MOV AX, DL
- MOV CH, DX
- MOV DX, [AX]
[pic 10]
Le programme nous affiche après chaque instruction "erreur" parce que :
- MOV DH, CF7: DH est codé sur 8 bits et CF4 suer 12 bits.
- MOV BX, 9CBCF4: BX est codé sur 16 bits et 9CBCF4 sur 24 bits.
- MOV CS, 2000: CS est un registre de segments.
- MOV SI, CH: SI est un registre d'Offset .
- MOV AX, DL: Ax est un registre général et DL la partie basse du BX.
- MOV CH, DX: DX est codé sur 16 bits et CH sur 8 bits seulement.
- MOV DX, [AX]: AX est un registre général ne contient pas une adresse.
Il faut que la taille de la valeur placer soit moins que la taille du registre ou du sous registre où on va la placer.[pic 11]
On tape la commande ‘A 100’ suivant de ces commandes :
MOV AX, 1[pic 12]
MOV DI, 203
MOV BX, [200]
MOV CX, [DI]
ADD AX, BX
ADD AX, CX
INT 3
Explications :
• MOV AX, 1 : mettre la valeur 1 dans AX.
• MOV DI, 203 : mettre la valeur 203 dans DI.
• MOV BX, [200] : déplacer le contenu de 200 vers le registre BX.
• MOV CX, [DI] : déplacer le contenu de DI vers le registre CX.
...