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