Sunteți pe pagina 1din 16

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

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

FFFFF
A
Data DS

Code CS

Stack SS

Extra ES

FS

GS

B
C
D
E

G
H
I
J
K
L
00000

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

Segment si Offset
Relocare

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

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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

Moduri de adresare
Mod 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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

Moduri de adresare
Mod 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

Moduri de adresare
Mod 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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

10

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

11

Moduri de adresare
Mod de adresare cu operand din memorie
Calculul adresei efective se face cu urmatoarea formula generala:
EA= baza+(index x factor de scala)+deplasament

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

12

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

13

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

BA
AB

14

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

15

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

16

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

17

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

18

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

19

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

Deplasament
Adresare indexata a unui array de date

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

20

10

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

21

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 rrayului.
Orice element al array-ului se
acceseaza prin modificarea valorilor
din registrele baza si index.
Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014

Memorie

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

22

11

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

23

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

24

12

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

25

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.
Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014

26

13

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

27

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

; scade continutul lui CX din BX si pune rezultatul in

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

28

14

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

29

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)

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

30

15

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) si
CF, dupa executia instructiunii
SAR AX, CL?
Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014

31

16

S-ar putea să vă placă și