8
1 Université Kasdi MERBAH – Ouargla Faculté des sciences et de la technologie et des sciences de la matière Département : Génie électrique Spécialité : Licence Instrumentation Pétrolière Module : Microprocesseur Année universitaire : 2012 – 2013 solution du devoir à domicile les étudiants: Bentarfa Islam G2 Souigat Khaled G2 Chaabani Sara G2 Hafiane Tarek G5 Benhamida Tayeb G5 vous pouvez télécharger les fichiers exécutables sur ce lien: http://goo.gl/dYSPnp

Devoir Dmoicile Correction

Embed Size (px)

DESCRIPTION

Devoir Dmoicile micoprosisor Correction

Citation preview

Page 1: Devoir Dmoicile Correction

1

Université Kasdi MERBAH – Ouargla Faculté des sciences et de la technologie et des sciences de la matière

Département : Génie électrique Spécialité : Licence Instrumentation Pétrolière Module : Microprocesseur Année universitaire : 2012 – 2013

solution du devoir à domicile

les étudiants:

Bentarfa Islam G2

Souigat Khaled G2

Chaabani Sara G2

Hafiane Tarek G5

Benhamida Tayeb G5

vous pouvez télécharger les fichiers exécutables sur ce lien:

http://goo.gl/dYSPnp

Page 2: Devoir Dmoicile Correction

2

Question de cours:

a. Quelle est la taille de l’espace mémoire actif à un moment donné pour un 8086 ? Justifier votre réponse. a. La taille maximale de la mémoire active pour 8086 est de 256 KB. 64 Ko pour le programme 64 Ko pour pile 128 Ko pour les données 64+64+128=256Ko

b. Sur une carte mère sont disposés un microprocesseur 8 bits dont le bus d’adresse est de 24 bits, ainsi que des circuits mémoires de 8 bits de capacité de 512 Ko.

- Quelle est la capacité d’adressage mémoire du processeur ?

- Si l’on suppose que la totalité de l’espace adressable est occupé par les circuits mémoires,

combien de circuits sont présents sur cette carte mère ?

b.la capacité d’adressage mémoire du processure est :224𝑜𝑐𝑡𝑒𝑡

_ 512𝐾𝑜 = 219𝑜𝑐𝑡𝑒𝑡

_ 224

219=32 circuit memoire .

c. Préciser quelles sont les opérations effectuées lors de l’exécution de l’instruction POP AX. c. les operation effectuées lors de l’exécuton de linstruction : pop AX 𝑨𝑿⃪[𝑺𝑷] ;le sommet de la pile es copié dans AX 𝑺𝑷⃪𝑺𝑷 + 𝟐 ;incrémenter le register SP par 2 𝑰𝑷⃪𝑰𝑷 + 𝟏 ;incrémenter le register IP par 1 d. Quelle est la différence entre une instruction et une directive ? d. Des définitions de données déclarées par des directives (mots spéciaux interprétés par l'assembleur, les instructions (qui sont en quelque sorte le coeur du programme), la première devant être précédée d'une étiquette, c'est-à-dire par un nom qu'on lui donne. Celles-ci sont regroupées dans le segment d'instructions

Page 3: Devoir Dmoicile Correction

3

e. Expliquer les directives : DB, DW, EQU, DUP. DB: (Define byte): définit une variable de 8 bits : c a d elle réserve un espace mémoire d'un octet : donc les valeurs qu'on peut stocker pour cette directive sont comprises entre 0 et 255 ( pour les nombres non signés ) et de -128 jusqu'à 127 pour les nombres signés . DW: ( define word) : définit une variable de 16 bits : c a d elle réserve un espace mémoire d'un

mot : donc les valeurs qu'on peut stocker pour cette directive sont comprises entre 0 et 65535 (

pour les nombres non signés ) et de -32768 jusqu'à 32767 pour les nombres signés .

EQU : (equal) :la directive pour déclarer une constante

DUP: (DIrective dup) Lorsque l'on veut déclarer un tableau de n cases, toutes initialisées à la même valeur, on utilise la directive dup.

f. Expliquer l’instruction LEA. Quelle est son utilité ? LEA signifie : Load Effective Address: LEA calcule l'offset de la source (BX + SI) et le place dans la

destination (AX).

g. Expliquer les instructions : LAHF et SAHF. Quelle est leur utilité ? LAHF: Cette instruction permet de transférer les bits d'indicateurs du registre d'état vers le

registre AH.

SAHF: Cette instruction permet de copier les bits du registre AH dans l'octet de poids faible dans

le registre des drapeaux (les indicateurs d'état).

h. Expliquer les instructions : CLC, STC et CMC. Quelle est leur utilité ? CLC: L'instruction clc efface (clear) le drapeau de retenue (carry) en le mettant à 0. Toute

retenue qui aurait été obtenue (drapeau à 1) par un calcul précédant est donc ainsi perdue

(drapeau à 0).

STC: L'instruction stc positionne (set) le drapeau de retenue (carry) à 1. CMC: L'instruction CMC complémente à un, c'est-à-dire inverse l'état du drapeau : s'il était à 1,

il passe à 0, et vice versa.

i. Expliquer les instructions : CLI et STI. Quelle est leur utilité ? CLI: CLI (Clear Interrupt) est l'instruction contraire, qui désarme le drapeau d'interruption. Permet principalement d'activer/désactiver les interruptions hardware. STI: STI (Set Interrupt) sert à armer le drapeau d'interruption.

Page 4: Devoir Dmoicile Correction

4

j. Expliquer les instructions : CLD et STD. Quelle est leur utilité ? CLD: Cette instruction met l'indicateur d'état DF à 0. Les opérations sur les chaînes de

caractères

STD: Cette instruction permet de fixer l'indicateur de direction (DF) à la valeur 1.

2. Soit un nombre de 8 bits dans l’accumulateur (AL). Donner une instruction permettant de mettre à 0 ses 7 bits de poids faible. 2.l’nstruction: and AL,10000000b 3. On considère un nombre contenu dans AL, ce nombre ne peut avoir que 2 valeurs : 00H ou 80H. Donner une instruction permettant de mettre AL à 01H s’il contenait 80H, et de laisser à 00H s’il contenait 00H. 3. ROL AL,1

4. Parmi les instructions suivantes, indiquer celles qui sont incorrectes et les corriger.

Instruction

Correcte (Oui / Non)

Proposition de correction

PUSH AL NON PUSH AX

MOV AX,[1] OUI

ROL AX,CX NON ROL AX,CL

CMP [AX],4 NON CMP AX,4

IDIV 2 NON MOV BL,2 IDIV BL

MOV AX,BL NO MOV AX,0 MO AL,BL

5. Soit le programme suivant : MOV AL, 72H ADD AL, 78H ADC AH, 00H SAR AX, 1 MOV [3000H], AL HLT

- Expliquer l’opération effectuée par chaque instruction.

- Mentionner le mode d’adressage pour chaque instruction.

- Dans le cas de l’adressage de la mémoire, donner l’adresse logique de la donnée et calculer son adresse physique (Sachant que DS = 0500H).

- Quelle est la fonction réalisée par ce programme ?

Page 5: Devoir Dmoicile Correction

5

5. le programme: MOV AL, 72H ;entrer la valeure 72h dans le rgistre de 8bits AL(mode Immédiat) ADD AL, 78H ;aditionner le contenu de AL avec 78h( mode immédiat ) ADC AH, 00H ;aditionner le contenu de AH avec le contenu de CF ( mode immédiat ) SAR AX, 1 ; décaler AX de 1 position vers la droit et conserve le bit de singe (le bit le plus fort) MOV [3000H], AL ;sauvgarder le contenu de AL dans l’address logic[ 0500h:3000h] HLT ;fin de programme.

L’opération effectué: l’addition de 72h avec 78h et aditionner la somme avec R le retenu dans CF ensuit effectué un décalage arithmétique vers l’droit (SAR=DIVISION SUR 2)dans le register AX et sauvegarder le resultat dans l’adresse logic [DS:3000h] . L’operation:

𝑨+𝑩+𝑹

𝟐

A=72h=114d B=78h=120d R:le retenu (dans CF) Ecrire des programmes en assembleur 8086 qui permettent de : 6. Evaluer l’expression suivante et stocker le résultat en mémoire à l’adresse 0300H : Y = (4x2 - 3x) / (2x -7). Tel que x est un nombre positif (1 octet) stocké en mémoire à l’adresse 0100H. Attention : il faut prendre en considération que le dénominateur peut être nul.

6. le programe:

jmp start

x db ?

3X dw ?

2X7 dw ?

start:

mov al,[100h]

mov x,al ;var(x)=contenu de [0100h]

mov bl,2

mul bl ;ax=2X

sub ax,7 ;AX=2X-7

mov 2X7,AX ;var(2X7)=2X-7

cmp ax,0

je fin ;si(2X-7)=0 fin le program

mov ax,0

mov al,x

mov bl,3

mul bl ;AX=3X

mov 3X,AX ;var(3X)=contenu de AX(3x)

Page 6: Devoir Dmoicile Correction

6

mov ax,0 ;AX=0

mov al,x ;al=x

MUL al ;ax= 𝑥2

mov bl,4

MUL bl ;ax= 4𝑥2

sub ax,3x ;ax=(4𝑥2-3x)

mov bx,2X7 ;bx=(2x-7)

div bx ;[dx,ax]=(4𝑥2-3x)/(2x-7);dx:le retenu de division,ax : le resulata

mov [300h],AX ;sauvegarder le contenu de AX dans l’espace memoir{301h,300h}

mov [300h]+2,dx ;sauvegarder le contenu de DX dans l’espace memoir{303h,302h}

fin: hlt ;fin de programme

7. Faire la somme de N premiers entiers naturels ne dépassant pas une valeur MAXI positive fixée en avance et stockée en mémoire à l’adresse 1000H. N est inconnu au départ. Le but du programme est de trouver N et de le stocker en mémoire à l’adresse 2000H. Exemple : Si MAXI = 12, alors SOMME = 1 + 2 + 3 + 4 = 10 Donc N = 4.

7. le programme :

jmp start maxi db ? start: mov al,[1000h] mov maxi,al mov ax,0 mov cx,0 etq1: inc cl add al,cl cmp al,maxi jng etq1 dec cl mov [2000h],cl hlt

8. Compter le nombre de 0 dans un mot binaire de 16 bits. Le résultat sera stocké dans la case mémoire d’adresse 100H. 8. le programme: MOV CX,16

MOV ax,[102h]

Page 7: Devoir Dmoicile Correction

7

neg ax

sub ax,1

tt:sar ax,1

adc bl,0

loop tt

mov [100h],bl

hlt

9. Donner la taille (le nombre d’éléments) d’un tableau stocké en mémoire à l’adresse 0200H, sachant que le dernier élément est 99H. Le résultat sera stocké à l’adresse 0550H.

9. le programme:

mov si,-1

tt:inc si

mov al,[200h][si]

cmp al,99h

jnz tt

mov [0550h],si

hlt

10. Calculer le PGDC (plus grand diviseur commun) de deux nombres se trouvant aux adresses 200H et 201H ; le résultat sera placé à l’adresse 202H.

10. le programe:

jmp start

a db ?

b db ?

start:

mov al,[200h]

mov bl,[201h]

mov a,al

mov b,bl

mov al,a ; On met la valeur de a dans le registre al

mov bl,b ; On met la valeur de b dans le registre bl

mov dl,0 ; On met la valeur 0 dans le registre dl

top:

div bl ; on fait la division du couple (dl,al) par bl

mov cl,0 ; on met la valeur 0 dans le registre cl

cmp cl,dl ; Le registre dl contient le reste de la divison, qu'on compare à la valeur contenu dans

le registre cl

Page 8: Devoir Dmoicile Correction

8

jnz retour ; si c'est different de 0 on fait un saut au label retour

jmp fin ;si c'est = 0, on fait un saut au label fin

retour:

mov al,bl ; on remet le diviseur dans le registre al

mov bl,dl ; et le reste dans le registre bl

mov dl,0 ; le registre dl va prendre la valeur 0

jmp top ;et on retourne au label top pour une nouvelle division

fin:

mov [202h],bl; a la fin, [202h] va contenir le dernier reste non nul

mov al,1

mov bl,0

HLT

11. Inverser l’ordre des 20 éléments d’un tableau placé en mémoire à l’adresse 100H. Exemple :

11. le programme:

mov cx,10

mov si,100h

mov di,100h+20

etq1:

mov al,[si]

mov bl,[di]

mov [di],al

mov [si],bl

inc si

dec di

loop etq1

hlt