CursMS4_2014_prezentat

16
•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 Offset Segmente 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 sursa sau 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

Transcript of CursMS4_2014_prezentat

Page 1: 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

Page 2: CursMS4_2014_prezentat

•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.

Page 3: CursMS4_2014_prezentat

•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.

Page 4: CursMS4_2014_prezentat

•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.

Page 5: CursMS4_2014_prezentat

•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.

Page 6: CursMS4_2014_prezentat

•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

Page 7: CursMS4_2014_prezentat

•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

Page 8: CursMS4_2014_prezentat

•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.

Page 9: CursMS4_2014_prezentat

•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.

Page 10: CursMS4_2014_prezentat

•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

Page 11: CursMS4_2014_prezentat

•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

Page 12: CursMS4_2014_prezentat

•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.

Page 13: CursMS4_2014_prezentat

•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.

Page 14: CursMS4_2014_prezentat

•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.

Page 15: CursMS4_2014_prezentat

•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)

Page 16: CursMS4_2014_prezentat

•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?