Architecture des ordinateurs ANNEXE A : Les commandes de DEBUG

Transcription

Architecture des ordinateurs ANNEXE A : Les commandes de DEBUG
Faculté des Sciences
Département de physique
Option : Infotronique
Architecture des ordinateurs
ANNEXE A : Les commandes de DEBUG
1. Lancement de DEBUG
Sous DOS, on peut lancer DEBUG de plusieurs façons:
¾ En tapant debug : pour lancer DEBUG sans charger de programme.
¾ En tapant debug <programme avec extension> : pour lancer DEBUG en chargeant un
programme.
¾ En tapant debug <programme avec extension> <paramètres> : pour lancer DEBUG en
chargeant un programme et en donnant des paramètres au programme.
¾ En tapant debug < <fichier.txt> : pour lancer DEBUG avec redirection de l’entrée à partir
d’un fichier au lieu du calvier.
¾ En tapant debug > <fichier.txt> : pour lancer DEBUG avec redirection de la sortie vers
un fichier au lieu de l’écran.
¾ En tapant des combinaisons des commandes précédentes pour lancer DEBUG avec
redirections des entrées et/ou des sorties et avec chargement d’un programme.
Sous WINDOWS, il est préférable d’ouvrir une fenêtre DOS et ensuite lancer DEBUG. Il est
aussi possible de lancer le programme DEBUG an allant dans DémarrerÆ Exécuter, et ensuite
taper debug.
Une fois lancé, DEBUG nous donne un tiret d’invite nous permettant d’entrer les commandes de
DEBUG. Les commandes ont toutes une lettre avec une suite de paramètres. Il n'y a pas de
différences entre les majuscules et les minuscules. Toutes les valeurs numériques sont en
hexadécimal.
2. Les paramètres des commandes DEBUG
Les commandes de DEBUG ont toutes une lettre avec une suite de paramètres. Ces paramètres
peuvent être :
¾ <adresse> : L'adresse peut s'écrire sous un seul nombre <offset> ou sous un couple de
nombres <segment>:<offset>. Il est possible de donner comme segment le mot DS ou CS.
Si on ne précise pas de segment, c'est DS qui est pris par défaut, sauf pour certaines
commandes.
¾ <bloc> : C'est un ensemble d'adresses dans un même segment. Il y a deux formes:
<adresse début> <adresse fin> ou <adresse début> L <longueur en octet>. Seulement
l’adresse de début peut avoir un segment.
¾ <port> : C'est une adresse d'un port d'entrée/sortie. Par exemple 378 pour les données de
l'imprimante.
¾ <octet> : C'est une donnée sur 1 ou 2 chiffres hexa.
¾ <liste d’octets> : C'est une suite d'octets séparés par des espaces (ou des virgules).
¾ <mot> : Nombre de 1 à 4 chiffres hexa.
____________________________________________________________________________________________________________
Architecture des ordinateurs – ANNEXE A
1/3
A. Khouas
¾ <nom de fichier> : Donne au moins le nom et l'extension d'un fichier. On peut y mettre le
chemin.
¾ <chaîne> : Une chaîne est délimitée par des apostrophes ou des guillemets (e.g. ‘bonjour’
ou "bonjour"). Pour mettre une apostrophe dans une chaîne, il faut utiliser les guillemets
comme délimiteurs (e.g. "ceci est un exemple pour l’apostrophe").
¾ <registre> : Nom d'un registre.
¾ <disque> : 0 représente le lecteur A:, 1 le lecteur B:, 2 le disque C: et ainsi de suite.
¾ <secteur> : Si on a nb_t têtes et nb_s secteurs par cylindres, le secteur S du cylindre C de la
tête T porte le numéro S+nb_s*(T+nb_t*C). Le premier secteur porte le numéro 0.
¾ <nombre de secteurs> : Nombre entre 1 et 80 (on ne peut pas lire ou écrire en une fois plus
de 80 secteurs. Je rappelle que les secteurs sont de 512 octets.
3. Les commandes de DEBUG
Les commandes ont toutes une lettre avec une suite de paramètres. Ci-dessous la syntaxe et la
signification de certaines commandes :
¾ ? : La commande ? permet d’afficher la liste des commandes de DEBUG.
¾ A <adr> : La commande A (assemble) permet d’entrer ligne par ligne les instructions à
assembler à partir de l’adresse <adr>. On termine les lignes par un retour chariot
supplémentaire.
¾ C <bloc> <adr> : La commande C (compare) permet de comparer le bloc <bloc> au bloc
qui débute à l’adresse <adr> (e.g. C F100 F200 F400 ou C F100 L100 F400 compare les
blocs F100-F200 et F400-F500). Si les blocs sont identiques, la commande ne renvoie aucun
message.
¾ D <adr> ou D <bloc> : La commande D (dump) permet d’afficher la suite d’octets du bloc
de 128 octets qui commence à l’adresse <adr> ou du bloc <bloc>. D sans paramètre affiche
les 128 octets suivants.
¾ E <adr> <liste d’octets> : La commande E (enter) permet de mettre en mémoire une liste
d’octet à partir de l’adresse <adr>. E sans la liste d’octets permet d’afficher un à un les
anciens octets et d’entrer les nouveaux octets en tapant l’octet suivi d’un espace. Un espace
tout seul permet de garder l’ancien octet et de passer à l’octet suivant. On termine la
commande par un retour chariot. La touche ‘-‘ permet de revenir en arrière.
¾ F <bloc > <liste d’octets> : La commande F (fill) remplit le bloc <bloc> avec la liste
d’octets. La liste d’octet est répétée jusqu’à ce que tout le bloc soit rempli.
¾ G <=adr1> <adr2>…. : La commande G (go) permet d’exécuter un programme à partir de
l’adresse <adr1>. Les adresses suivantes représentent des points d’arrêt. Si aucune adresse
n’est spécifiée, la commande exécute le programme à partir de l’adresse définie par CS:IP.
CS est le registre de segment de donnée et IP est le registre du pointeur d’instruction.
¾ H < mot1> <mot2> : La commande H (hexa) permet d’afficher la somme et la soustraction
des deux nombres (i.e. <mot1> + <mot2> et <mot1> - <mot2>.
¾ M <bloc> <adr> : La comande M (move) déplace le bloc dans la mémoire à partir de
l’adresse <adr>.
¾ P <=adr> <mot> : La commande P (proceed) exécute <mot> instructions à partir de
l’adresse <adr>. Si aucun mot n’est spécifié, la commande exécute une instruction. Si
aucune adresse n’est spécifiée, la commande exécute le programme à partir de l’adresse
définie par CS:IP. La commande P considère les boucles comme si c’était une seule
instruction.
¾ Q : La commande Q (quit) permet de terminer la session de DEBUG.
¾ R <reg> : La commande R (register) permet de modifier le contenu du registre <reg >. Si
aucun registre n’est spécifié, R affiche le contenu de tous les registres. R F permet de
modifier individuellement le registre des flags. OV, DN, EI, NG, ZR, AC, PE, CY permet
de mettre à 1 les flags, et NV, UP, DI, PL, NZ, NA, PO, NC permet de mettre 0 les flags.
____________________________________________________________________________________________________________
Architecture des ordinateurs – ANNEXE A
2/3
A. Khouas
¾ T <adr> <mot> : La commande T (trace) exécute <mot> instructions à partir de l’adresse
<adr>. Si aucun mot n’est spécifié, la commande exécute une instruction. Si aucune adresse
n’est spécifiée, la commande exécute le programme à partir de l’adresse définie par CS:IP.
T ressemble à la commande P, sauf qu’elle entre dans les boucles et permet de suivre
l’exécution à l’intérieur des fonctions.
¾ U <adr> ou <bloc> : La commande U (unassemble) permet de désassembler un bloc de 32
(20h) octets à partir de l’adresse <adr> ou le bloc spécifié. Si aucune adresse et ni aucun
bloc n’est spécifié, U désassemble les 32 octets suivants.
Pour plus d’informations sur les commandes de DEBUG, vous pouvez consulter l’aide et le support
de Windows.
4. Les registres du 8086
Tous les registres du 8086 sont de 2 octets (16 bits). Les registres du 8086 sont :
¾ 4 Registres généraux : AX, BX, CX et DX. Chaque registre général est composé de deux
registres de 1 octets (8 bits) (e.g. AX = AH*256 + AL, AH est le registre de poids fort et AL
est le registre de poids faible)
¾ 2 Registres d’index : SI (Source Index) et DI (Destination Index).
¾ 4 Registres de segment : CS (Code Segment), DS (Data Segment), ES (Extra segment), et
SS (Stack Segment)
¾ 3 registres de pointeur : IP (instruction Pointer), SP (Stack Pointer) et BP (Base Pointer).
¾ 1 Registre d’état : F (Flag Register).
5. Table de conversion (décimal, binaire et hexadécimal)
Décimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Binaire
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Hexadécimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
____________________________________________________________________________________________________________
Architecture des ordinateurs – ANNEXE A
3/3
A. Khouas