Documente Academic
Documente Profesional
Documente Cultură
11.1 GeneralităŃi
Lansat în 1978 de firma Intel, se prezintă sub forma unei capsule cu
40 de pini, este realizat în tehnologia HMOS şi are în structură circa
29.000 tranzistoare, pe o suprafaŃă de siliciu de 37 mm 2 . ApariŃia lui a fost
urmată la scurt timp de o familie de componente:
Intel 8284 - generator de tact;
Intel 8288 - controler de magistrale;
Intel 8087 - coprocesor aritmetic;
Intel 8089 - coprocesor de intrare-ieşire .
În 1979 apare microprocesorul Intel 8088 care păstrează
caracteristicile lui 8086 dar cu magistrala de date externă este de 8 biŃi. A
cunoscut o largă utilizare prin includerea sa în numeroase produse ale
firmei IBM.
Microprocesorul Intel 8086 este cel mai răspândit microprocesor pe
16 biŃi; registrele interne şi magistralele de date interne şi cea externă sunt
de 16 biŃi.
Caracteristici tehnice principale :
multiplexarea în timp a magistralelor de date, adrese şi stări, pentru
păstrarea capsulei de 40 de pini;
magistrala de adrese de 20 de biŃi, ceea ce permite adresarea unei
memorii de capacitate maximă de 1 MB;
o singură tensiune de alimentare : + 5 Vcc;
frecvenŃa semnalului de tact: 4 MHz, 5 MHz sau 8 MHz, în funcŃie
de variantă;
compatibilitate cu limbajul de asamblare al microprocesorului
Intel-8080 şi Intel-8085.
setul de instrucŃiuni conŃine 94 de tipuri de instructiuni, inclusiv
operaŃii aritmetice în cod BCD şi operaŃii de înmulŃire, împărŃire;
operează cu digiŃi (cod BCD, 4 biŃi/digit sau 8 biŃi/digit), cu octeŃi
(byte), cu cuvinte de 16 biŃi (word), cu cuvinte duble de 32 de biŃi
(double word), şiruri de caractere de 8 biŃi (string) şi blocuri de date.
acoperă o gamă largă de aplicaŃii datorită celor două moduri de
lucru: modul minim pentru aplicaŃii simple, în care procesorul
generează el însuşi semnalele electrice necesare transferului de date
cu memoria şi porturile de intrare/ieşire şi modul maxim, pentru
aplicaŃii complexe, inclusiv sisteme multiprocesor, în care semnalele
142
EU BIU
Registre de uz general UA
15 7 0
AH AL AX
15 0
Registre segment
BH BL BX
CS
CH CL CX
DS
DH DL DX
SS
Registre index
SP
ES
BP
IP
DI
Rgistre speciale
SI
Magistrala
internă
Bloc de comandă BIU
Magistrale
Unitate de comandă EU
1 2 3 4 5 6
UAL
Registrele de segment
Sunt registre de 16 biŃi care conŃin adresa de bază a unui segment de
memorie. Memoria direct adresabilă de 1 MB necesită o magistrală de
adrese de 20 biŃi.
Registrele interne ale procesorului fiind de 16 biŃi, memoria este
divizată din punct de vedere logic în segmente de 64 kB, fiecare segment
fiind astfel adresabil cu 16 biŃi. Procesorul poate să utilizeze simultan
atâtea segmente de memorie câte registre de segment posedă.
Adresele de început (de bază) ale celor 4 segmente sunt conŃinute în
cele 4 registre de segment (Cod, Date, Stivă şi de Date suplimentar).
145
15 7 0
AH AL AX Registru acumulator
BH BL BX Registru de bază
CH CL CX Contor
DH DL DX Registru de date
15 0
CS Cod Segment - segment de cod
DS Data Segment- segment de date
SS Stack Segment -segment stivă
ES Extra Segment - segm. de date
Fig. 2. Registrele de date şi de segment la Intel 8086
15 0
SP Stack Pointer - indicator de stivă
BP Base Pointer - indicator de bază
SI Source Index - index sursă
DI Destination Index - index destinaŃie
Interrupt Trap
Sign
Direction
Zero
Overflow Auxiliary Carry
Parity
Carry
OF DF IF TF SF ZF AF PF CF
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SF: (Sign Flag) indicator de semn; conŃine bitul cel mai semnificativ
al rezultatului, deci copiază bitul de semn; va fi ''1'' pentru rezultat
negativ şi ''0'' pentru un rezultat pozitiv.
OF: (Overflow Flag) indicator de depăşire; se activează (în ''1''
logic) când apare depaşirea capacităŃii registrului ce conŃine rezultatul, ca
urmare a unei operaŃii aritmetice cu operanzi cu semn; va fi ''1'' când apare
transport sau împrumut în/din rangul de semn.
TF: (Trap Flag) indicator pentru modul de lucru ''pas cu pas''; dacă
este poziŃionat în ''1'' logic, microprocesorul nu mai lucrează la viteza dată
de semnalul de tact ci în ritmul impus de utilizator. Acest mod de lucru
este deosebit de util la depanarea programelor.
IF: (Interrupt Flag) indicator pentru controlul întreruperilor; dacă
este poziŃionat în ''1'' logic (prin instrucŃiunea corespunzătoare), sunt
validate cererile de întrerupere de tip INTR (mascabile); invalidarea
acestora se face prin poziŃionarea lui IF în ''0'', caz în care cererile INTR
nu vor fi luate în consideraŃie.
DF: (Direction Flag) indicator de ''direcŃie", are efect în operaŃiile
cu şiruri. Dacă este poziŃionat în ''1'', după fiecare transfer, adresa
operandului din şir se incrementează (creşte cu 1) iar dacă este poziŃionat
în ''0'' adresa se decrementează.
GND 1 40 Vcc
AD14 2 39 AD15
AD13 3 38 A16 / S3
AD12 4 37 A17 / S4
AD11 5 36 A18 / S5
AD10 6 35 A19 / S6
Intel 8086 CPU
AD 9 7 34 BHE / S7
AD 8 8 33 MN / MX
Modul minim
AD 7 9 32 RD
AD 6 10 31 RQ / GT0 HOLD
AD 5 11 30 RQ / GT1 HOLDA
AD 4 12 29 LOCK WR
AD 3 13 28 S2 M / IO
AD 2 14 27 S1 DT / R
AD 1 15 26 S0 DEN
AD 0 16 25 QS0 ALE
NMI 17 24 QS1 INTA
INTR 18 23 TEST
CLK 19 22 READY
GND 20 21 RESET
TEST
Procesor
Escape Exec. Wait Continue
de bază
8086/88
Tw
Fig. 4 Rolul semnalului TEST în sisteme multiprocesor
MODUL MINIM
Se instalează dacă intrarea de mod este la nivel ridicat, MN/MX=1.
M/IO ieşire cu trei stări (Memory / Input-Output); determină o
operaŃie de citire sau scriere asupra memoriei sau porturilor. Dacă este ''1''
logic, se execută un ciclu maşină de acces la memorie iar dacă este ''0''
logic se execută un ciclu maşină de transfer cu porturile de intrare / ieşire.
WR: ieşire cu trei stări (Write) activă în ''0'' logic; determină o
operaŃie de scriere în memorie sau în porturi.
INTA: ieşire cu trei stări (Interrupt Acknowledge), activă în ''1''
logic, când microprocesorul execută un ciclu maşină de acceptare
întrerupere.
ALE: ieşire activă în ''1'' (Address Load Enable) care se activează
când pe magistrala multiplexată este încărcată o adresă .
DT/R : ieşire cu trei stări (Data Transmission Reception), care
indică sensul transferului pe magistrala de date. Dacă este ''0'' logic,
magistrala este orientată către microprocesor (Reception) iar în caz
contrar, către sistem (Transmission).
DEN: ieşire cu trei stări (Data Enable) care validează transferul
datelor către microprocesor.
HOLD: intrare pentru cereri de cedare magistrale. Un dispozitiv
inteligent extern solicită controlul total asupra magistralelor în vederea
accesului direct la memorie (tehnică DMA - Direct Access Memory).
HLDA: ieşire, răspuns la cererea HOLD, confirmând acceptarea
acestei cereri, după trecerea magistralelor de adrese, date şi control în
starea SIR (starea de înaltă impedanŃă sau starea ''a treia'').
151
POP AX
POP BX
AX 12 34
PUSH AX
AX 12 34 BX CC C3
206E EF EE 206E EF EE 206E EF EE
206C 06 08 206C 06 08 206C 06 08
206A EA 8E 206A EA 8E 206A EA 8E
2068 AA AB 2068 AA AB 2068 AA AB
2066 A4 0B 2066 A4 0B 2066 A4 0B
2064 2A 1B 2064 2A 1B 2064 2A 1B
2062 30 31 2062 30 31 2062 30 31
2060 C3 CC 2060 C3 CC 2060 C3 CC
205E CB 1B 205E 34 12 205E 34 12
205C 00 EE 205C 00 EE 205C 00 EE
205A 07 08 205A 07 08 205A 07 08
2058 0A FF 2058 0A FF 2058 0A FF
2056 00
2A 0A 2056 00
2A 0A 2056 00
2A 0A
2054 EE
12 01 2054 EE
12 01 2054 EE
12 01
2052 FF FE 2052 FF FE 2052 FF FE
2050 00 00 2050 00 00 2050 00 00
SS SS SS
02 05 02 05 02 05
SP SP SP
00 10 00 0E 00 12
Fig.5 FuncŃionarea stivei: situaŃia curentă (stânga), introducerea în
stivă (mijloc) şi extragerea din stivă (dreapta).
face introducerea în stivă, deoarece la extragere aceasta se inversează:
''cel din urmă va fi cel dintâi''. Calculul adresei se face astfel:
SS: 0 2 0 5 0 +
SP: 0 0 1 0 = 0 2 0 6 0 H = 2060 H
Adunare
19 0
Adresă fizică pe 20 de biŃi
FFFFF H FFFFE H
FFFFD H FFFFC H
FFFFB H FFFFA H
FFFF9 H FFFF8 H
A1 - A19
BHE A0
D8 - D15 D0 - D7
Fig.9 Conectarea blocurilor de memorie la magistrale
BHE A0 Se transferă
0 0 Ambii octeŃi
0 1 Octet superior (cu adresă impară)
1 0 Octet inferior (cu adresă pară)
1 1 Fără transfer
a = adresa pară
a+1 a
BHE=1 A0=0
a+1 a
BHE=0 A0=1
a+1 a
BHE=0 A0=0
Realocarea dinamică
161
înainte de după
segm. de
realocare realocare
cod
segm.
stivă
CS CS segm. de
SS SS cod
DS DS
ES ES segm.
stivă
segm. de
date
segm. de
date
segm. de
segm. de
date
date
Memoria Memoria
Fig. 9 Realocarea dinamică a memoriei
FFFFF H
Rezervat Intel FFFFC H
FFFFB H
Dedicat
FFFF0 H
00080 H
0007F H
Rezervat Intel
00014 H
00013 H
Dedicat
00000 H
Fig. 10 Organizarea memoriei. Zone dedicate, zone rezervate.
11.6 Întreruperi
O întrerupere opreşte temporar execuŃia unui program şi transferă
controlul unei rutine (subprogram) specifice de tratare ce corespunde
cauzei ce a generat întreruperea. Mecanismul prin care se face acest
transfer este în esenŃă de tip apel de procedură, ceea ce implică revenirea
în programul întrerupt după execuŃia rutinei de tratare.
Întreruperile hardware externe sunt activate de cereri de întrerupere
generate de dispozitive periferice inteligente, sub forma unor semnale
electrice, aplicate pe intrările INTR şi NMI ale procesorului; cele interne
apar ca urmare a unor condiŃii speciale de funcŃionare a procesorului (de
exemplu, modul de lucru pas cu pas).
164
InstrucŃiunea
curentă terminată
Secventa de
acceptare întrerupere
Da
INT ?
Nu
Citire cod
Da întrerupere
NMI ?
Nu
Da
INTR ? Salvare indicatori
în stivă
Nu 0 1
IF = ?
Anulare IF si TF
1
TF = ?
0
Salvare CS si IP
ExecuŃia instrucŃiunii
următoare
Apel subrutinã
Da
NMI ?
Nu
TF ? 1
valoare veche
Executie subrutinã
Magistrala
PCLK OSC de adrese
ALE STB
BHE
+Vcc MN/MX BHE
A16-A19
8282
8286
T
DE Magistrala de date D0 - D15
8286
T
DE Magistrala de date D0 - D15