1 Université Saâd DAHLAB de BLIDA Département d’Electronique Licence en Télécom
1 Université Saâd DAHLAB de BLIDA Département d’Electronique Licence en Télécommunications L3/S5 Unité d’enseignement : Calculateurs & Interfaçage Année scolaire :2021/2022 NOM : BOUNAB Prénoms : D o u n i a NOM : AR A B Prénoms : M a la k NOM : B o u c h a i b Prénoms : S a r a Devoir : Réponses 1. Pour chaque ligne des programmes des Figures 2, 3, 4 et 5, dire quel mode d’adressage est utilisé : Figure 2, ligne : 1. Immediate addressing mode 2. Immediate addressing mode Figure 3, ligne : 1. Immediate addressing mode 2. Register addressing mode 3. Register addressing mode Figure 4, ligne : 1. Immediate addressing mode 2. Register addressing mode 3. Immediate addressing mode 4. Direct memory addressing mode 5. Immediate addressing mode 6. Direct adressing mode Figure 5, ligne : 1. Immediate addressing mode 2. Register addressing mode 3. Immediate addressing mode 4. Register addressing mode 5. Indirect immediate deplacement 6. indirect avec immediate 7. Register indirect 8. Register indirect avec deplacement 2. Faire une petite recherche et expliquer en quelques mots, la signification, la localisation, la taille et le rôle de chacun des registres AX, BX, CX et DX. AX : La signification : Accumulateur un registre d’entré sortie on les donne des paramètres avant d’appeler une fonction ou une procédure La localisation : le groupe de donnée La taille : 16bits (Le registre peut être décomposé en AH (H pour high, les 8 bits de fort poids de AX) et AL( L pour low, les 8 bits faible poids de AX) Le rôle : utilisé pour de nombreuses opérations arithmétique. BX La signification : registre de base pour les données dans le segment pointé des adresses dans le segment de données, il 2 décompose en BH et BL. La localisation : le groupe de données La taille : 16 bits Le rôle : utilisé pour l’adressage de données dans une zone de mémoire différente de la zone code Cx : La signification : le compteur d’itérations (dans les instructions de boucle) dont les traitements de chaines le registre CL est utilisé en compteur lors des instruction de décalage et de relations multiples ( sur plusieurs bits), il décompose su CH et CL La localisation : le groupe de données La taille : 16 bits Le rôle : utilise comme compteur dans les boucles et écrire l’instruction saisie d’une étiquette qui représente sans adresse en mémoire DX : La signification : registre de données entres sorties La localisation : le groupe de données La taille : 16 bits Le rôle : la premier machine L de EU( unité d’exécution) regroupe les fonctions de traitement ( unité logique et arithmétique), les registres et le décodeur … 3. Expliquer en quelques mots, la signification, la localisation, la taille et le rôle de chacun des registres DS et SI. DS : La signification : Data segment La localisation : le registre de segment La taille : 16 bits Le rôle : quand à lui destiné à conteur d’adresse du segment des données du programme en cours SI : La signification: source index La localisation: le registre de segment La taille : 16 bits Le rôle : pointer la mémoire qu’il forme en général un décalage et aussi pour les instructions de chaine de caractères 4. Faire une petite recherche sur l’instruction MOV de l’assembleur 8086, et expliquer pourquoi on doit passer par AX (ou BX ...) pour affecter une valeur à DS (ou SI ...). On peut utiliser un adressage immédiat avec le registre DS (ex : MOV DS, 9876H) et lire le message d’erreur (message d’erreur en anglais qui contient la réponse). Vous trouverez aussi à la fin de ce document, pour vous aider, le jeu d’instruction complet du 8086. MOV : c’est une instruction qui permet de transférer les données (un octet ou un mot) d'un registre à un autre registre ou d'un registre à une case mémoire. 5. Exécuter pas à pas le programme de la Figure 4, puis : a). Donner le contenu des registres suivants ([X] veut dire valeur contenue dans le registre X, valeur représentée en hexadécimal, décimal, binaire ...) : [AX]= (23.45)16 / (10001101000101)2 / (9029)10 / (43.105)8 [DS]= (23.45)16 / (10001101000101)2 / (9029)10 / (43.105)8 [CX]= (22)16/ (100010)2 / (42)8 / (43)10 [BX]= (5678)16 / (101011001111000)2 / (126170)8 / (22136)10 [BX]= (569A)16 / (101011010011010)2 / (126232)8 / (22170)10 3 b). Sachant que 456 (décimal)=1C8 (hexadécimal) : Calculer l’adresse physique correspondant à l’adresse logique : [DS] :1C8 L’adresse physique correspondant à l’adresse logique : [DS] :1C8 : 2345*10+1C8= 23618 4 c). Aller à l’adresse logique [DS] :1C8, puis donner la valeur numérique contenue dans cette case mémoire, expliquer ensuite la valeur finale contenue dans BX. Contenu de la mémoire FIguRE 8 – La Figure 8 montre où introduire l’adresse logique, ne pas oublier de valider en appuyant sur la touche ENTRER. La réponse : Au premier la valeur de BX MOV à 5678h et [456] a cx alors cette valeur mov à 22h Donc finalement on a adresse BX, cx Qui est 5678h+22h = 569A 6. Exécuter pas à pas le programme de la Figure 5, puis : a). Donner le contenu des registres suivants : [AX]= (3000)16 / (11000000000000)2 / (60000)8 / (16288)10 [DS]= (3000)16 / (11000000000000)2 / (60000)8 / (16288)10 [BX]= (1234)16 / (1001000110100)2 / (2264)8 / (4660)10 [SI]= (1234)16 / (1001000110100)2 / (2264)8 / (4660)10 [BX]= (688)16 / (11010001000)2 / (6210)8 / (1672)10 [AX]= (400B)16 / (100000000001011)2 / (1000)8 / (16395)10 Adresse Logique Adresse Physique correspondante 6 b). Aller à l’adresse logique [DS] :[SI], puis donner la valeur numérique contenue dans cette case mémoire. c). Aller à l’adresse logique [DS] :[SI]+1, puis donner la valeur numérique contenue dans cette case mémoire. d). Aller à l’adresse logique [DS] :[SI]+2, puis donner la valeur numérique contenue dans cette case mémoire. e). Expliquer ensuite la valeur finale contenue dans BX, et la valeur finale contenue dans AX. f). La réponse : b- [SI] : (BAC)16 c- [SI]+1 : (100B)16 d- [SI]+2 : (10)16 e- On a la valeur première de BX mov a 1234h et SI mov a 0bac AT d'après le programme la valeur BX= Bx ( première ) - SI ( bac) Donc bx2= 1234- bac = 688 7. Exécuter pas à pas le programme de la Figure 6, après chaque instruction exécutée inscrire la valeur du registre SP (Stack Pointer : Pointeur de pile) : Instruction 1 : [SP]= Fffe Instruction 2 : [SP]= Fffe Instruction 3 : [SP]= Fffc Instruction 4 : [SP]= Fffa Instruction 5 : [SP]= Fffc 8. Sachant que l’instruction PUSH permet d’insérer une valeur de 16 bits dans la Pile, et que l’instruction POP permet de retirer une valeur de 16 bits dans la Pile, conclure d’après la réponse à la question 7 sur le rôle du registre SP. Le registre SP est un registre servant à gérer la pile , SP (Stack Pointer, littéralement pointeur de pile) est le déplacement pour atteindre le sommet de la pile (16 bits de poids faible). SP pointe vers le sommet, c'est-à-dire sur le dernier bloc occupé de la pile. Lorsque l'on ajoute un élément à la pile, l'adresse contenue dans SP est décrémentée de 2 octets (car un emplacement de la pile fait 16 bits de longueur). En effet, lorsque l'on parcourt la pile de la base vers le sommet, les adresses décroissent. Par contre l'instruction POP incrémente de 2 octets (16 bits) la valeur de SP. 7 9. EFFORT PERSONNEL 1 : Adresses logiques SS:SP Contenu de la Pile Cliquer pour voir le contenu de la Pile FIguRE 9 – Exécuter pas à pas le programme de la Figure 6, la Figure 9 explique comment voir le contenu du segment de Pile (Stack Segment : SS) : En exécutant le programme de la Figure 6 pas à pas et en analysant le contenu de la Pile, donner une explication au fait que la valeur initiale du registre SP est [SP]=FFFE (H). 10. EFFORT PERSONNEL 2 : En faisant une recherche personnelle, expliquer chacun des modes d’adres- sage restants, en écrivant des petits programmes simples et corrects comme ceux des figures 4 et 5 : a). Mode d’adressage basé (Base Relative Addressing Mode). b). Mode d’adressage indexé (Indexed Relative Addressing Mode). c). Mode d’adressage basé indéxé (Based Indexed Adressing Mode). 11. EFFORT PERSONNEL 3 : Ecrire un programme qui permet d’affecter 1234H à AX et 5678H à BX, puis permuter les contenu des registres AX et BX (les registres échangent leur contenu). Indication : utiliser la pile et le principe LIFO. 8 EFFORT PERSONNEL 1 : 9) D’abord on entre dans le programme puis on appuie sur ‘run’. Deuxième chose que nous allons à ‘stack’ dans la table contre. La troisième chose qui nous montre est la table des stocks. Nous trouvons ‘ss’ dans une main gauche Push AX store data onto stack (sp= sp-2) Pop BX retriever data from stack (sp= sp+2) Sp=FFFF car en uploads/Management/ devoir-ci.pdf
Documents similaires










-
55
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 31, 2022
- Catégorie Management
- Langue French
- Taille du fichier 0.9848MB