Département Electronique Faculté de Technologie Université Ferhat Abbas TP 2 :
Département Electronique Faculté de Technologie Université Ferhat Abbas TP 2 : Le registre des drapeaux (Flags register) et la pile (stack). Rappel : Les registres, dont les principaux sont ax, bx, cx, dx, si, di, bp, sp, cs, ds, es, ss, flags et ip, sont des emplacements de mémoire situés dans le processeur. Ils ont en général chacun une fonction particulière. Le registre Flag 1- P1 : Reprendre le programme d’addition des valeurs 121 et 13 en utilisant juste AX. 2- P2 : Reprendre le programme d’addition des valeurs 121 et 13 en utilisant AL. Durant l’exécution des 2 programmes observer le registre Flags, en cliquant sur le bouton Flags dans la fenêtre ‘Emulator’ et compléter le tableau ci-dessous. AH AL CF ZF SF OF PF AF IF DF Valeurs initiales 00 00 0 0 0 0 0 0 1 0 Valeurs après exécution Programme 1( P1) 00 86 0 0 0 0 0 1 1 0 Valeurs après exécution Programme 2 (P2) 00 86 0 0 1 1 0 1 1 0 Constat 1 : Dans les deux cas, le programme donne des mêmes résultats, mais dans le second cas le registre flag nous signal un changement au niveau de SF et OF. Programme (1a): En utilisant les instructions Mov et Cmp, écrire un programme pour comparer la valeur1 = 9 avec la valeur 10. Exécuter le et remplir le tableau des Flags. mov ax, 10 cmp ax, 9 Licence électronique 1 Le microprocesseur Département Electronique Faculté de Technologie Université Ferhat Abbas CF ZF SF OF PF AF IF DF 0 0 0 0 0 0 1 0 Programme 1b: Reprendre la même opération pour comparer la valeur 2 = 10 avec 10. CF ZF SF OF PF AF IF DF 0 1 0 0 1 0 1 0 Programme 1c: Reprendre la même opération pour comparer la valeur 3 = 11 avec 10. CF ZF SF OF PF AF IF DF 1 0 1 0 1 1 1 0 Constat2 : Dans les 3 cas, La dernière ligne du programme ne renvoi rien, mais le registre Flags change à chaque fois. D’accord nous avons bien observé que les flags changent, et alors ! A quoi cela sert ? et comment exploiter les informations fournies par les flags. ? Ce qui suit, répondra à vos interrogations. Soit une variable qui peut prendre les valeurs 9,10 et 11, qu’on va comparer à la valeur 10 et prendre des décisions en conséquence. Programme 2a : Vous reprenez le programme (1a), si la variable prend la valeur 9 donc inferieur à 10, vous chargez BX avec la valeur 00FFh dans le cas contraire vous chargez BX avec la valeur FF00h. Programme 2b : Vous reprenez le programme (1b), si la variable prend la valeur 10 donc égale à 10, vous chargez CX avec la valeur 00FFh dans le cas contraire vous chargez CX avec la valeur FF00h. Programme 2c : Vous reprenez le programme (1c), si la variable prend la valeur 11 donc supérieur à 10, vous chargez DX avec la valeur 00FFh dans le cas contraire vous chargez DX avec la valeur FF00h. NB : Il faut, consulter votre liste d’instructions et recenser celles qui impliquent l’instruction ‘CMP’, et les bits ‘CF’, ‘SF’, ‘ZF’, etc du registre Flags. Programme 2a Programme 2b Programme 2c mov ax, 10 cmp ax, 9 ja inf mov bx, 0ff00h inf: mov bx, 00ffh mov ax, 9 cmp ax, 10 jna inf mov bx, 0ff00h inf: mov bx, 00ffh mov ax, 10 cmp ax, 10 je equ mov cx, 0ff00h equ: mov cx, 00ffh mov ax, 10 cmp ax, 11 jb bel mov dx, 0ff00h bel: mov dx, 00ffh mov ax, 11 cmp ax, 10 jnb bel mov dx, 0ff00h bel: mov dx, 00ffh Licence électronique 2 Le microprocesseur Département Electronique Faculté de Technologie Université Ferhat Abbas La Pile (Stack) La pile est un espace mémoire pour placer et récupérer des données temporaires. Les instructions qui travaillent avec la pile sont ( push, pop, call, …voir la liste complète des instructions). Quelle est son utilité ? Est-elle indispensable ? Comment fonctionne – t-elle ? Ce qui suit, répondra à vos interrogations. Programme 1a : 1- Charger les valeurs 1234h et 5678h respectivement dans les registres ax et bx. Vous supposez que tous les autres registres sont utilisés (pas libre). 2- Alterner les valeurs contenues dans ax et bx. Votre commentaire ? …Je ne peux pas, il faut d’abord libérer l’un d’eux. Il faut passer par par la mémoire ou la pile. Première methode : Mémoire interne (TP1) mov ax, 1234h mov bx, 5678h mov [1000h],ax mov ax, bx mov bx,[1000h] Hlt Deuxième méthode : Pile ou stack seule mov ax, 1234h mov bx, 5678h push ax mov ax, bx pop bx hlt troisième méthode : Pile ou stack seule. mov ax, 1234h mov bx, 5678h push ax push bx pop ax pop bx hlt Programme 1b : 1- Charger les valeurs 2,3,4,5 respectivement dans les registres ax, bx, cx, dx . 2- Multiplier 3 x 4 et placer le résultat dans bx, 3- Multiplier 2 et 5 et placer le résultat dans dx. Votre commentaire ? pour multiplier 3 et 4 il faut charger 3 ou 4 dans ax et comme il est occupé ………….je peux pas ou il faut le libérer A travers ces 2 exemples, on répond au 2 premières questions. Voyant maintenant comment fonctionne - t’elle ? Licence électronique 3 Le microprocesseur Département Electronique Faculté de Technologie Université Ferhat Abbas Programme 2a : 1- Charger les valeurs 1234h et 5678h respectivement dans les registres ax, bx.. 2- Sauvegarder temporairement la valeur contenue dans ax dans la pile. Remarque : Explorer la liste des instructions et chercher l’instruction qui permet cela. 3- Charger la valeur contenue dans bx dans ax. 4- Charger la valeur sauvegardée temporairement dans la pile dans ax. mov ax, 1234h mov bx, 5678h push ax mov ax, bx pop bx Programme 2b : 5- Charger les valeurs 2,3,4,5 respectivement dans les registres ax, bx, cx, dx . 6- Sauvegarder temporairement les valeurs contenues dans ax et dx dans Stack. Pourquoi effectuez- vous cette opération ? …la multiplication implique ax et dx , pour une multiplication 16 bit et AX seulement pour une multiplication 8 bits. 7- Effectuer la multiplication des contenues de bx et cx. 8- Charger le résultat dans bx. 9- Continuer…….pour multiplier les contenues de ax et dx. Votre programme mov ax, 2 mov bx, 3 mov cx, 4 mov dx, 5 push ax push dx mov ax, bx mul cx mov bx, ax pop dx pop ax mul dx Licence électronique 4 Le microprocesseur Département Electronique Faculté de Technologie Université Ferhat Abbas Comment s’effectue l’échange avec la pile :…Le dernier entrant, le premier sortant ( LIFO) Last In First Out.. Conclusion générale: Vous résumez ce que vous avez compris Licence électronique 5 Le microprocesseur uploads/Litterature/ tp2-s-etudiants.pdf
Documents similaires










-
27
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 12, 2022
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.1625MB