CursMS4_2014_prezentat
-
Upload
vlad-stefan-cristian -
Category
Documents
-
view
212 -
download
0
Transcript of CursMS4_2014_prezentat
•1
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 1
Agenda
• Microprocesoare- moduri de operare
• Modul real
• Segment si Offset
• Registre si instructiuni suportate in modul real
• Setul de instructiuni
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 2
Segment si OffsetSegmente de memorie – continue, adiacente,
disjuncte si suprapuse
• Segmentele sunt identificate cu literele A, B, C, etc..
• Registrul segmentului de date DS contine valoarea B. Al 2-lea segment de memorie, de 64 KB, notat cu B, reprezinta segmentul de date curent. In acest segment sunt stocate datele care sunt prelucrate. Acest spatiu de memorie trebuie sa contina locatii de memorie ce pot fi accesate de instructiuni pentru operanzi sursasau destinatie.
• Segmentul E este selectat de registrul CS ca segment de cod. Acesta este segmentul de cod din care sunt extrase instructiunile programului curent pentru executie.
• Registrul SS contine H. Segmentul cu acelasi nume este folosita ca stiva.
• ES, FS si GS sunt incarcate cu valorile J, K, L astfel ca segmentele de memorie J, K, L sunt segmentele de date adiţionale.
.
B Data DS
FFFFF A
B
D
E
G
J
K
L
00000
C
H
I
F
E Code CS
H Stack SS
J Extra ES
K FS
L GS
•2
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 3
Segment si OffsetRelocare
• Adresarea prin segmentare permite relocarea datelor si a codului.
• Program relocabil. Se poate schimba locul in oricare zona de memorie si executat, apoi, fara nici o modificare.
• Date relocabile. Pot fi plasate in oricare zona de memorie si utilizate fara nici o modificare a programului.
• Un segment de memorie poate fi mutat fara a schimba vreun offset. Trebuie modificat doar continutul registrului segment sa specifice baza pentru noua zona de memorie.
• Altfel programul ar fi trebuit rescris sau modificat inainte de a fi mutat. Aceasta ar fi costat timp si ar fi necesitat mai multe versiuni de program pentru diferite configuratii.
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 4
Registre si instructiuni suportate in modul real
• Setul de registre disponibile in modul real include:
• Toate registrele definite pentru microprocesorul 8086.
• plus noile registre introduse pentru microprocesoarele pe 32-biti, ex. FS si GS, registre de control, registrele FPU, etc.
•3
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 5
Moduri de adresare
• La executia unei instructiuni, microprocesorul efectueaza o anumita functie pe anumite date. Aceste date se numesc operanzi.
• Operanzii pot fi:
• parte a unei instructiuni;
• Se afla intr-unul din registrele interne ale microprocesorulu;
• Se afla in memorie la o anumita adresa;
• port I/O.
• Pentru a accesa tipuri diferite de operanzi, microprocesorul are diferite moduri de adresare (ex. structuri de date, inregistrari, array-uri 1D sau 2D).
• Modurile de adresare sunt impartite in trei categorii:
• Adresarea operandului din registru;
• Adresarea operandului imediat;
• Adresarea operandului din memorie.
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 6
Modul de Adresare din Registru
• Operandul este specificat intr-un registru intern al microprocesorului.
• Registrele interne pot fi utilizate ca sursa sau destinatie a operanzilor.
Registrele de date pot fi accesate pentru diverse dimensiuni ca: octet, word,
double-word sau quad-word.
• Exemplu:
• MOV AX, BX
• Copiaza continutul lui BX, care este specificat ca operand sursa, in AX,
operand destinatie.
• Ambii operanzi, sursa si destinatie, reprezinta continutul unor registre interne
ale microprocesorului.
•4
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 7
Modul de Adresare din Registru
• Inaintea executiei instructiunii, continutul lui BX
este ABCDH si continutul lui AX este “orice” .
• Instructiunea este citita din coada de
instructiuni, decodata si executata.
• Rezultatul produs de executia acestei
instructiuni este ca valoarea ABCDH este
copiata in AX.
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 8
Moduri de adresareMod de adresare imediat
• Daca operandul este o parte dintr-o instructiune, atunci acesta reprezinta un operand imediat si este accesat prin modul de adresare imediat.
• Operandul poate avea lungimea de 8, 16, 32 sau 64 biti, este codificat in instructiune codul operatiei si in mod mormal reprezinta o valoare constanta. .
• Acest mod de adresare poate fi folosit pentru a specifica un operand sursa.
• Ex.
• MOV AL, 18H
• 18H, operand sursa, operand imediat.
• Operand destinatie, continutul lui AL, adresare prin registru
• Instructiunea foloseste adresare imediata si prin registru.
•5
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 9
Moduri de adresareMod de adresare imediat
• Operandul imediat este in segmentul de
cod, in octetul imediat dupa codul operatiei.
• Valoarea impreuna cu codul operatiei
pentru instructiunea MOV sunt extrase din
memorie in coada de instructiuni.
• Nu se efectueaza nici un acces la memoria
externa.
• Rezultatul produs prin executia instructiunii
este ca operandul imediat, 18H, este
incarcat in AL.
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 10
Moduri de adresareMod de adresare cu operand din memorie
• Operand in memorie – microprocesorul trebuie sa calculeze adresa fizica a operandului si apoi sa initieze o operatie de scriere sau citire la aceasta locatie.
• Adresa fizica este formata din adresa de baza a segmentului (segment base address (SBA) ) si adresa efectiva (effective address (EA)).
• SBA identifica locatia de inceput a segmentului de memorie.
• EA reprezinta offsetul operandului fata de inceputul acestui segment de memorie.
• Segmentul si offsetul se combina si formeaza adresa fizica in modul real intr-un microprocesor.
•6
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 11
Moduri de adresare
Mod de adresare cu operand din memorie
• Valoarea offset-ului se poate specifica in diferite moduri:
• Mai multe tipuri de moduri de adresare:
• Adresare directa – cel mai simplu mod
• Exista un numar de moduri de adresare care depind de combinarea a patru elemente: baza, index, factor de scala si deplasament.
• Acestea se numesc: adresare indirecta prin registru, adresare bazata, adresare indexata; adresare bazata indexata
• Aceste moduri de adresare ofera programatorului diverse posibilitati de calcul al adresei efective a unui operand din memorie.
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 12
Moduri de adresareMod de adresare cu operand din memorie
Calculul adresei efective se face cu urmatoarea formula generala:
• EA= baza+(index x factor de scala)+deplasament
•7
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 13
Moduri de adresare
Mod de adresare cu operand din memorie
Adresarea directa
• Codul instructiunii este urmat de adresa efectiva - offset pe 16 biti - a locatiei de memorie a operandului - fata de adresa de baza din registrul segment.
• Registrul segment implicit este intotdeauna DS. In consecinta, adresa fizica este obtinuta din DS:EA.
• Se poate referi orice registru segment: CS,DS,SS, ES, FS,GS
• Exemplu:
• MOV CX, [BETA]
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 14
Moduri de adresare
Mod de adresare cu operand din memorie
Adresarea directa
• Daca valoarea asignata lui BETA este
1234H si continutul lui DS este 0200,
atunci adresa fizica a operandului sursa
este
• PA= 02000H+ 1234H= 03234H.
• Instructiunea citeste cuvantul de date
incepand cu aceasta adresa, ABBAH, si
apoi o incarca in registrul CX.
BA
AB
•8
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 15
Moduri de adresare
Mod de adresare cu operand din memorie
Adresare indirecta prin registru
• Este similar modului precedent in felul de obtinere a adresei fizice. Diferenta este la specificarea offset-ului.
• Adresa efectiva se afla intr-un registru de uz general: AX,BX,CX,DX.SP,BP,SI,DI.
• Exemplu:
• MOV AX, [SI]
• Executia acestei instructiuni muta continutul locatiei de memorie care este la un offset - valoarea din SI - fata de adresa de baza a segmentului in AX.
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 16
Moduri de adresare
Mod de adresare cu operand din memorie
Adresare indirecta prin registru
• Daca SI contine 1234 si DS contine
0200, atunci adresa fizica este 03234H.
Continutul acestei locatii este copiat in
registrul AX.
• De remarcat: rezultatul produs de
executia acestei instructiuni este la fel cu
cel din exemplul anterior – adresare
directa.
• Acest mod de adresare se utilizeaza
atunci cand valoarea lui EA este calculata
si stocata in registru de instructiunile
anterioare. EA este o variabila.
•9
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 17
Moduri de adresare
Mod de adresare cu operand din memorie
Adresare bazata
• Adresa fizica a operandului este obtinuta prin adunarea unui deplasament direct sau indirect la continutul unui registru baza.
• Registrul baza defineste o structura de date, inregistrare, in memorie, iar deplasamentul selecteaza elementul din structura.
• Modificarea valorii deplasamentului permite accesul la alt element al structurii.
• Modificarea continutului registrului baza permite accesul la o alta inregistrare.
• Registrul baza poate fi: AX,BX,CX,DX,SP,BP,SI,DI;
• Deplasamentul direct: orice valoare pe 8 sau 16 biti. Element n
Element n-1
.
Structura de date
.
Element 2
Element 1
Element 0
Deplasament
Registru Baza
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 18
Moduri de adresare
Mod de adresare cu operand din memorie
Adresare bazata
• Exemplu:
• MOV [BX]+BETA, AL
• Registrul baza BX si deplasamentul direct BETA sunt utilizate pentru a deriva EA a
operandului destinatie.
• Notatia: registrul baza se pune intre paranteze drepte. Urmeaza semnul “+” si
deplasamentul direct.
•10
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 19
Moduri de adresare
Mod de adresare cu operand din memorie
Adresare bazata
Continutul lui AL este BA, continutul lui DS
este 0200, BX este 2000, iar valoarea lui
BETA este 1234. Adresa fizica este
05234H.
Instructiunea muta valoarea BA in memorie
la aceasta adresa fizica.
DS registru segment implicit.
Daca registrul baza este SP sau BP, atunci
calculul adresei fizice este automat
efectuat cu registrul segment de stiva
SS.
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 20
Moduri de adresare
Mod de adresare cu operand din memorie
• Adresare Indexata.
• Acest mod foloseste deplasamentul ca pointer la un array din memorie
iar continutul registrului specificat este folosit ca index care selecteaza
elementul din array.
• Daca in registrul index este valoarea n, atunci se selcteaza elementul n.
• Exemplu:
• MOV AL, ARRAY+[SI]
• Indexul este in registrul SI. Acesta este adunat cu deplasamentul direct
ARRAY. Registrul index este intre paranteze drepte.
• Adresa fizicaPA este
• PA= DS:{ARRAY+(SI)}
• Registrul segment: CS,DS,SS,ES,FS,GS
• Registrul index: AX,BX,CX,DX,BP,SI,DI
Array de
date
Adresare indexata a unui array de date
Deplasament
•11
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 21
Moduri de adresare
Mod de adresare cu operand din memorie
Adresare indexata
• Valoare ARRAY este 1234, DS este
0200, SI este 2000, atunci PA devine
05234. Continutul acestei locatii de
memorie este BA. Acest octet este citit
in AL.
• Factorul de scala poate fi inclus,
considerand una din valorile: 1,2,4 sau
8.
• Calcul EA: valoarea registrului index
este inmultita cu factorul de scala si
apoi este adunat cu deplasamentul.
• Exemplu: MOV AL, ARRAY+[SI x 2]
• PA devine:
• PA= 02000H+1234H+2000Hx2=
07234H
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 22
Moduri de adresare
Mod de adresare cu operand din memorie
Adresare bazata indexata
• Se combina adresarea bazata cu adresarea indexata.
• Se utilizeaza pentru accesul la structuri de date complexe, array-uri bidimensionale.
• Array de date m x n. Deplasamentul este valoarea fixa ce stabileste primul element al raay-ului in memorie. Registrul baza – coordonata m a array-ului
• Registrul index – coordonata n a rray-ului.
• Orice element al array-ului se acceseaza prin modificarea valorilor din registrele baza si index.
Element (m,n)
.
.
.
Element (m,1)
Element (m,0)
Element(m-1,n)
.
.
.
Element(1,1)
Element (1,0)
Element (0,n)
.
.
.
Element (0,1)
Element(0,0)
Registru Index
Registru Baza
Deplasament
Array
bidimensional
Memorie
•12
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 23
Moduri de adresare
Mod de adresare cu operand din memorie
Adresare bazata indexata.
• Exemplu
• MOV AH, [BX][SI]+BETA
• BX - registru baza, SI - registru index, BETA - deplasament.
• EA a operandului sursa este
• EA = (BX)+(SI)+BETA
• Adresa fizica PA se formeaza din continutul registrului DS si EA.
• PA= DS: {(BX)+(SI)+BETA}
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 24
Moduri de adresare
Mod de adresare cu operand din memorie
Adresare bazata indexata
• DS contine 0200, BX este 2000,SI
este 2000 si BETA este 1234, atunci
PA = 7234H.
• Executia instructiunii - valoarea
stocata in memorie la aceasta locatie
este citita in AL.
• Indexul poate fi scalat cu un factor de
scalare, similar adresarii indexate.
•13
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 25
Setul de Instructiuni
• Setul de instructiuni al 8086 si 8088 este denumit set de instructiuni de baza.
• Acesta a fost extins la 80286 si a fost denumit set de instructiuni extins.
Include si implementeaza noi instructiuni (ex. PUSHA push all si POPA pop all) si
moduri de adresare (ex. IMUL utilizeaza adresare cu operand imediat) - MOD
REAL.
• Pentru 80386 au fost adaugate noi instructiuni in modul real – bit test si bit scan.
• Extindere cu instructiuni de control al sistemului. Acestea controleaza operarea
multitasking, managementul memoriei, mecanismele de protectie (ex. CLTS –
clear task switched flag)
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 26
Setul de Instructiuni
• Grupuri de functionalitate:
• Aceste grupuri includ:
• Instructiuni de transfer de date,
• Instructiuni aritmetice,
• Instructiuni logice,
• Instructiuni de deplasare a bitilor (shift),
• Instructiuni de rotire a bitilor (rotate),
• Bit test si Bit scan,
• Instructiuni de control flag-uri,
• Instructiuni de comparare si setare,
• Instructiuni de salt (jump),
• Instructiuni de tratare a subrutinelor,
• Instructiuni de lucru cu stiva PUSH si POP,
• Instructiuni de tratare a buclelor si string-urilor.
•14
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 27
Setul de Instructiuni
• Instructiuni de transfer de date. Aceste instructiuni copiaza date intre registrele interne sau intre un registru si o locatie de memorie. Include instructiuni care copiaza date intre acumulator si porturi de I/O. Exemple:
• MOV DX,CX ; copiaza continutul lui CX in DX
• XCHG AX,DX ; interschimba continuturile lui AX si DX
• XLAT ; translatie – operare cu look-up table. Inlocuieste continutul lui AL cu continutul locatiei de memorie de la adresa PA=(DS)0+(BX)+(AL)
• LDS SI, [200H] ; incarca registrul SI cu continutul locatiei de memorie de la adresa cu offsetul 200H.
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 28
Setul de Instructiuni
• Instructiuni aritmetice. Include instructiuni pentru adunare, scadere, inmultire si impartire. Aceste operatii se pot efectua cu o varietate de formate de date numerice (octet binar cu semn sau fara semn, word, double word, BCD impachetat sau neimpachetat, numere ASCII).
• Starea care rezulta din executia unei instructiuni aritmetice este inregistrara in flag-urile registrului EFLAG. Flagurile afectate sunt: flagul de transport, flagul de transport auxiliar, flagul de semn, flagul de zero, flagul de paritate si flagul overflow. (Engl. carry flag (CF), auxiliary carry flag (AF), sign flag (SF), zero flag (ZF), parity flag (PF), overflow flag (OF)).
• Exemple :
• ADD AX,BX ; aduna continutul lui AX cu continutul lui BX si pune rezultatul in AX. (AX)+((BX) -> (AX)
• INC AH ; incrementeaza AH.
• SUB BX, CX ; scade continutul lui CX din BX si pune rezultatul in BX.
•15
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 29
Setul de Instructiuni
• Instructiuni aritmetice.
• Exercitii:
• 1. Daca registrele AX si BX contin 1100H si 0ABCH, care este rezultatul executiei instructiunii ADD AX,BX?
• 2. AX contine 1234H, BL contine ABH, locatia de memorie SUM contine 00CDH, iar CF este 0. Se executa urmatoarea secventa de instructiuni:
ADD AX, [SUM]
ADC BL, 05H
INC [SUM]
Cum se modifica (AX), (BL), (SUM) si (CF)?
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 30
Setul de Instructiuni
• Instructiuni Logice. Acest grup include instructiuni pentru efectuarea operatiilor
AND, OR, exclusive-OR, si NOT.
• Instructiunile AND, OR and XOR efectueaza operatii pe fiecare bit al operanzilor
sursa si destinatie, iar rezultatul este reprezentat de continutul operandului destinatie.
• AND AX, BX ; continutul lui BX este AND cu continutul lui AX, iar
rezultatul se pune in AX.
• Exemplu: daca AX este 1234H si BX este 000FH, atunci rezultatul este 0004H in AX.
• Exemplu: Se executa urmatoarea secventa de instructiuni:
MOV AL, 01010101B
AND AL, 00011111B ; mascarea celor mai semnificativi trei biti ai lui AL
OR AL, 11000000B ; setarea celor mai semnificativi 2 biti ai lui AL
XOR AL, 00001111B ; complement logic pentru bitii 1 din AL
NOT AL ; inverseaza fiecare bit al lui AL
Descrieti rezultatul executiei acestei secvente de instructiuni.(AL)
•16
© Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014 31
Setul de Instructiuni
• Instructiunile de deplasare (Shift).
• Acest grup de instructiuni poate efectua doua tipuri de baza de operatii, shift logic (SHL) sau shift aritmetic (SAL). Fiecare din aceste operatii se poate efectua la stanga sau la dreapta. (left or right). Exemple:
• SHL AX,1 ; continutul lui AX este deplasat cu o pozitie de bit la stanga.
• SHR AX, CL ; continutul lui AX este deplasat cu un numar de pozitii de biti egal cu continutul lui CL la dreapta.
• Exemplu: CL contine 02H , iar AX contine 091AH. Cat este (AX) siCF, dupa executia instructiunii
SAR AX, CL?