Académique Documents
Professionnel Documents
Culture Documents
BOUCHENE
Pour modifier le contenu d’un registre, exécuter r suivi du nom du registre, exemple,
écrire 1234h dans le registre ax :
Pour modifier la valeur d’un flag, taper la commande rf puis sur la nouvelle ligne, écrire la
nouvelle valeur du flag :
1
TP ARCHITECTURE DES ORDINATEURS / 2021-2022 Mme S.BOUCHENE
1 2 3
Adresses de début Zone mémoire affichée par la commande d Les caractères
des espaces de 16 correspondants aux
octets). contenus mémoire de
la zone affichée
Par défaut, la commande d affiche un espace contigu de 128 octets (8 lignes de 16 octets) à
partir de l’offset 100h de l’adresse DS par défaut.
Chaque ligne est précédée par son adresse de début en mémoire.
La commande d interprète chaque contenu mémoire (valeur d’un octet) comme étant du code
ascii d’un caractère, si le caractère est imprimable elle l’affiche sur la zone 3 sinon elle
affiche un « . ».
2
TP ARCHITECTURE DES ORDINATEURS / 2021-2022 Mme S.BOUCHENE
Exemple :
Exemple :
3
TP ARCHITECTURE DES ORDINATEURS / 2021-2022 Mme S.BOUCHENE
La nouvelle
valeur introduite Espace pour
passer à l’octet Espace pour
suivant sauter cet octet
Contenu de la case
sans le modifier
mémoire d’adresse
1234 :200
Il est possible de charger les données directement sur la même ligne que la commande
e:
o A
o A CS : OFFSET
o A OFFSET
Prenant l’exemple d’un programme qu’on veux charger en adresse CS=1234 à partir
de IP=0000h et le code d’une procédure qu’on veux charger dans le même segment à
partir de IP=100H , ce dernier sera appelé à partir du premier programme.
On observe pour ce code que la première instruction sera chargée dans le segment
d’adresse 1234h à partir de IP = 0000h, comme la taille de cette instruction est 3
octets, la prochaine instruction sera chargée à l’adresse 0004h, puisque la première
instruction occupe en mémoire 4 octets ayant les adresses 0000h, 0001h, 0002h et
0003h .
Pour l’exemple ci-dessus, l’instruction à corriger est push bx qui doit etre remplacée par
push ax comme suit :
5
TP ARCHITECTURE DES ORDINATEURS / 2021-2022 Mme S.BOUCHENE
Chargement du code de la procédure :
A ce niveau-là, nous avons les deux codes chargés en mémoire, cette opération de chargement
n’influence pas l’état des registres du processeur car l’exécutio n n’est pas lancée a présent et donc si
une commande R sera exécutée il n’y’aura aucun changement sur les registres.
6
TP ARCHITECTURE DES ORDINATEURS / 2021-2022 Mme S.BOUCHENE
Instructions assembleur
Contenus mémoire regroupés correspondant aux codes
@ Début des machines
en codes machine
instructions en mémoire
U vs D ???
Avant d’exécuter ce programme, il est nécessaire d’initialiser les variables, nous avons trois
données d’entré au programme : AX, DS :[200h] et DS :[202h].
7
TP ARCHITECTURE DES ORDINATEURS / 2021-2022 Mme S.BOUCHENE
Une fois le code du programme et les données sont chargés en mémoire, on peut passer à l’exécution du
programme.
8
Première instruction de la Prochaine instruction à A ce niveau-là, la première instruction
procédure exécuter dans le programme du programme appelant est exécutée
TP ARCHITECTURE DES ORDINATEURS / 2021-2022 Mme S.BOUCHENE
9
TP ARCHITECTURE DES ORDINATEURS / 2021-2022 Mme S.BOUCHENE
Avant d’exécuter le RET 6, il est possible d’examiner l’état de la pile après la sauvegarde du
résultat du traitement de la procédure dans la pile à l’adresse SS :[BP + 6]par la commande d.
L’adresse BP+8
Encore un T pour exécuter l’instruction ret 6 qui permet le retour au programme appelant et
déplace donc le sommet de pile de 8 octets [00ED 00F5] et met dans ip l’adresse retour
au programme appelant : 000C :
Encore un T pour exécuter la dernière instruction du programme appelant : pop [202h] qui
récupère le résultat et le met dans la case mémoire d’adresse DS :[204h] :
Etant terminé l’exécution du programme, le contenu de la case mémoire DS :[204h] peut être
consulté par la commande d :
Pour une exécution globale, réinitialiser les registres par leurs valeurs initiales par la
commande r, puis exécuter G, ou bien sortir du deug et revenir puis vérifier si le programme
est toujours chargé en mémoire et exécuter G.
G= @debut @fin
Attention : @fin pour G c’est l’adresse de début de la prochaine instruction qui ne fait
pas partie du programme.
1
0