Sunteți pe pagina 1din 242

ARHITECTURAMICROPROCESOARELOR ARHITECTURAMICROPROCESOARELOR

CristianAVRAM CristianAVRAM
criavram@gmail.com
2
Introducere n arhitectura microprocesoarelor cu explicarea noiunilor
privind :
Setul deinstruciuni;
Aritmetica n procesor istructuracii dedate;
Calea decontrol;
Memorie dedateimemorie deprogram;
Structurile detip pipeline;
Semnalele deinterfaare alemicroprocesorului;
Sistemul dentreruperi.
Familiarizarea culimbajul deasamblare irealizareaunorprogramesimple
OBIECTIVECURS OBIECTIVECURS
3
Unmicroprocesoresteounitatecentraldeprelucrare(UCP)integratntrunsingur
chip
Esteparteintegrantatutrorcalculatoarelorisistemelordecalculactuale
Uncalculator esteomain deprelucrare automat a datelor cefuncioneaz sub
controlul unei listede instruciuni (program)stocate n memoria principal a
calculatorului.
Uncalculator este ocombinaiederesursefizice(hardware)iprograme(software)
Uncalculator conine:UCP+Memorie+I/O
Microprocesorulesteentitateafizicmenitsinterpretezeisexecutecomenzile
existentenprogramuldestinatuneiaplicaii.
CEESTEUNMICROPROCESOR? CEESTEUNMICROPROCESOR?
4
Unsistem decalcul reprezint omain automat destinat prelucrrii informaiilor
(n3faze)
transformareainformaiei(semnale)ntrunformatcompatibilcuunitateadecalcul;
prelucrareainternadatelor;
transformareadatelorfurnizatensemnalenecesareaplicaiei.
Pentruaasiguraflexibilitateasistemuluidecalculcele3faze vorfiasiguratede
elementediferite:uncalculator+periferice.
Organizare calculator:
UCP(ci dedateicontrol)
Memoria principal
Interfee sausistemul deintrareieire (legtura cu dispozitivele externe periferice)
Perifericele calculatorului includ
Dispozitive deintrare (tastatur,mouse,memorii secundare)
Dispozitive deieire (display,difuzoare,memorii secundare, imprimant)
ORGANIZAREAUNUISISTEMDECALCUL ORGANIZAREAUNUISISTEMDECALCUL
5
Intern,uncalculator prelucreaz maimulte fluxuri deinformaie : datele numerice i
instruciunile programului.
Dupmodul deprelucrare al acestor fluxuri informaionale calculatoarele sepot
clasifica n:
mainidetipSISD (SingleInstructionSingleData) arhitecturisecveniale (von
Neumann,Harvard);
arhitecturiparalelecu2saumaimulteuniticentraleceprelucreazsimultan
maimultefluxurideinformaie:mainiSIMD (SingleInstructionMultipleData)i
MIMD (MultipleInstructionMultipleData).
FLUXURI FLUXURIINFORMA INFORMAf fIONALE IONALE
6
Microprocesoarele suntutilizatengeneralpentruaplicaiidenaltperforman de
procesare.
SuntutilizatecaUCPpentrucalculatoaredeuzgeneral(GPC)
MicroprocesoarelenecesitexternmemorieiinterfeeIO
MicroprocesoarelesuntutilizatenPCuri,staiidelucru,servere,unde
compatibilitateasoftware,performana,generalitateaiflexibilitateasunt
importante.
Microprocesor=Flexibilitate
FLUXURI FLUXURIINFORMA INFORMAf fIONALE IONALE
Microcontrollerele suntproiectatepentruaseobineodimensiuneredusachip
ului,micorareacosturiloriincludereadespaiudememorieiIOpechip.
Microcontrollerelesuntadeseaspecializatepeaplicaii ndaunaflexibilitii.
Unmicrocontrollerconinepeunacelaichip:UCP,Memorie,IO
Microcontroller=Specializare
MICROPROCESOARE MICROPROCESOARE
8
Dezvoltarearapidndomeniusebazeazpedoucaracteristiciprincipale:
dezvoltareatehnologieisemiconductoareutilizatlaconstruciamicroprocesoarelor
inovaiinorganizareaiproiectareacalculatoarelor
Anii1960 calculatoaremari.Aplicaiiletipiceincludeauprocesridedatenafaceri
icalculetiinifice
Anii1970
apariia minicalculatorului: laboratoaretiinifice, utilizatori multipli care partajeazresursele
delaterminaleindependente
microprocesorul:mbuntirintehnologiacircuitelorintegrate,costredus,producien
numrmare,rspndirenmulteaplicaiidecalculnumeric
Generalizarea limbajelor de programare de nivel nalt (HLL) + translatoare a nlturat
nevoiacompatibilitiiprogramelorlaniveldecodobiect
Creareadesistemedeoperarestandardizate,independentedeproductor,careau
sczutcosturileiriscuriledeutilizareanoilorarhitecturi
SCURTISTORIC SCURTISTORIC
9
Anii1980:apariiaarhitecturilorRISC(ReducedInstructionSetComputer).
MainileRISCaupermisdezvoltareaparalelismuluilaniveldeinstruciune(iniial
prinpipeliningiarapoiprinlansareamultipldeinstruciuni)iutilizareamemoriilor
cache.
Apariia calculatoarelor desktop construite pe bazde microprocesor (personal
computers,workstations).
Anii1990:
rspndirealegturiiInternetiatehnicilorWorldWideWeb
dispozitivedecalculportabil(PDA,notebook)
electronicdigitaldelargconsum
SCURTISTORIC SCURTISTORIC
10
1971 Primulmicroprocesorproiectatpentruaplicaiidecontrol(Intel4004,2300
tranzistoare).
8biisecvenial:Intel8080(1974),MotorolaMC6800(1974),ZilogZ80(1976)
Microcontrollere: P6502(1975bazatpeMC6800,Hobbycomputers:Commodore,
Apple,Ataris),Intel8048(1976 familiaIntelMCS48),Intel8051
16bii: Intel8086(1978), MotorolaMC68000(1979)
anii80:instructionpipelining,cache
1980 InteliAPX43232bii;1984 MotorolaMC68020,32bii,pipelinecu5etaje;
1987 ZilogZ280,16bii;1990 Intel80960 RISC
PowerPC604(95),Pentium(94):arhitecturisuperscalare,execuiebazatpemai
multeunitipipelineimaimulteunitiaritmetice
MICROPROCESOARE MICROPROCESOARE
11
anii90:
1995 Intel133MHzPentium
1996 IntelPentiumII
1999 IntelPentiumIIIla500MHz
RISC
Multiprocesoare SoC(SystemonChip)
VLIW(verylargeinstructionword)uncompilatorplanificinstruciunile(static)
spredeosebiredeplanificareadinamicdelaprocesoarelesuperscalare
Dincencemaimultefunciiimplementatehardware:acceleratoaregrafice,extensii
deinstruciuniMMX
SistemeEmbedded 90%dinmicroprocesoareleprodusenprezent:
microcontrollere,DSP,procesoaremedia,procesoaregrafice,procesoarede
comunicaiietc.
MICROPROCESOARE MICROPROCESOARE
12
Frecvenedeceasmaimaride2GHz
Procesoaredeputeremic(aplicaiimobile)
Microarhitecturisuperscalare(maimulteinstruciunilansatenparalel)
SIMD(SingleInstructionStreamMultipleDataStream):operaiisimilareefectuaten
paralelpeseturidiferitededate
FunciideprelucrareDSP:MMX,3D,grafic,sunet
Nucleeprocesormultiplepeunchip
Memoriecachepe23niveluri
............................
MICROPROCESOARE MICROPROCESOARE secolulXXI secolulXXI
13
Piaamicroprocesoarelorsadezvoltatpetreidireciimari:
Desktop
Exemple:PC,staiidelucru
Metrici:laten(graficisistemdeIO)
Serverefurnizeazserviciidefiiereicalcul
Exemple:serverWeb,serverbazdedate,serverLAN
Metrici:throughput,fiabilitate,scalabilitate
SistemeEmbedded(sistemecuprocesornglobat)
Exemple:telefoncelular,PDA,cuptorcumicrounde,camervideodigital
Metrici:complexitate,putereredus,laten
Piaaembeddedesteceamaimare!
ProcesorEmbedded=Unprocesorprogramabilacruiinterfadeprogramarenu
esteaccesibilutilizatoruluifinalicarerealizeazunsetrestrnsdefunciuni
dedicateaplicaieispecifice.
MICROPROCESOARE MICROPROCESOARE secolulXXI secolulXXI
14
O Performanaunuimicroprocesoredeterminatdecapacitateadeaprelucradate.
Cretereacapacitiideprelucrareserealizeazpemaimulteci:
Tehnologic
densitateadeintegrare
vitezadeprelucrareadatelor(frecvenadetact)
reducereaputeriiconsumate(controluldimanicalconsumului,scderea
frevenei)
vitezaicapacitateamemoriei+nlocuireaHDDcumemoriiexternepesiliciu
Arhitectur
pipeline
ierarhizareamemoriei memoriacache (maimulteniveluridecacheninteriorul
chipuluiprocesor)
gamadereprezentareinternadatelor
arhitecturasetuluisetuluideinstruciuni
arhitecturmulticoreiarhitecturiparalele
Firmware (softwarencorporat)
gestiuneamemoriei
mecanismemultitasking
memoriavirtual
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
15
DENSITATEADEINTEGRARE DENSITATEADEINTEGRARE
Creterea numrului detranzistoare/chip
PentiumIII 7,5milioaneCMOS0,18um
PentiumIV 42demilioane
procesoare actuale peste 1miliard detranzistoare/chip
memorii peste 64512miliarde
VitezadeprelucareadatelordepindedevitezadecomutaieatranzistoarelorHMOS
dincompunereamicroprocesoarelor
Vitezadecomutaieestedirectproporionalculimeaporiitranzistoarelor
ncepndcuPentiumIIIseimplementeaztehnologia0,18mcualimentarela1,6Vcc
ceeacepermitedepireabariereide1GHzpentrufrecvenadetact
Din2002seimplementeaztehnologia0,13m(L
GATE
=70nm,H
OXID
=1,5nmcu
alimentarela1,3Vcc)folositlamicroprocesoareleactuale
Cutoateacestea,estegreusseechivalezecretereanumruluidetranzistoare
/chipcucretereaperformaneiprocesoarelor
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
16
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
FRECVEN FRECVENf fADECEAS ADECEAS
Cuctsuntmaimulteimpulsuri/secundcuattmaimareestenumruldeoperaii
cesepoateexecuta
Cuctfrecvenaestemaimarecuattcreteputereaconsumat(comutaie)
Cretereafrecveneiimpunedecimijloacededisipareaclduriiprocesorului
Procesoaremulticore(maimultenucleecelucreaznparalel)
Intelacalculatcscdereacu20%afrecveneipentruunnucleuconducelascderea
lajumtateaputeriiconsumateidoarla13%pierdereadeperforman
Dacsempartsarciniledeprelucrarentre2nucleecelucreazlaofrecvenredus
la80%,seobineoperformanmaimarecu73%pentruaceeaiputereconsumat
Dispareaclduriiestemaibun(dounodurinlocdeunul)
Tendinaactual:oprireacreteriifrecveneideceas+arhitecturimulticore
17
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
PIPELINE PIPELINE
Executareainstruciunilorsefacen45faze:
citireinstruciune
decodificareinstruciune
citireoperanddinmemorie(dacesetcazul) fetch
execuieinstruciune
salvarerezultatenmemorie(dacestecazul)
Oarhitecturpipeline presupuneimplementareaunorblocuristructuralecepermit
execuiasimultan,nparalel,atutroracestorfaze
Seimplementeazncepndcumicroprocesoareleevoluate(Pentium);la8086
execuiasefceapseudosecvenial(douunitifuncionalecepermitaducerea
instruciunilordinmemorienavans prefetch)
nprezentseutilizeazarhitecturiparaleleimulticore avansate
18
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
MEMORIACACHE MEMORIACACHE
Memoriacacheesteozondememoriefoarterapidncaresememoreaz
instruciuniidatecucaremicroprocesorulopereaznmodcurent ultimele
instruciuniexecutate
Aceastmemorielucreazfrstrideateptare,nritmulmicroprocesoruluifiindde
aproximativ10orimairapiddectmemoriaRAM
Seorganizeazpeniveleierarhice:
memoriacachelevel1 esteintegratnchipulprocesorului(aparela80x486,
primulprocesorcapabilssuporteinterfeegraficedetipWindows)
memoriacachelevel2 externmicroprocesorului,asigurinterfaacumemoria
RAM
nprezentsedispunmaimulteniveluridecacheninteriorulprocesorului
seimplementeazspaiidiferitedememoriecachepentruinstruciuniidate:
Icache iDcache
19
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
REGISTRELEINTERNEALEMICROPROCESORULUI REGISTRELEINTERNEALEMICROPROCESORULUI
Gamadereprezentareinternadateloresteuncriteriudecisivnmrireacapacitii
deprelucrare
Aceastacreteodatcumrirearegistrelorinternealemicroprocesoruluiia
magistraleiinternededate:80x386esteprimulmicroprocesorpe32debii
Procesoareactuale:registreimagistralededatepe64debiisaumaimult
COMPLEXITATEASETULUIDEINSTRUC COMPLEXITATEASETULUIDEINSTRUCf fIUNI IUNI
CISC(ComplexInstructionSetComputer)
RISC(ReducedInstructionSetComputer)
20
PERFORMAN PERFORMANf fAMICROPROCESOARELOR AMICROPROCESOARELOR
FIRMWARE FIRMWARE SOFTWARE SOFTWARE NCORPORAT NCORPORAT
Oaltdireciepentrucretereacapacitiideprelucrareamicroprocesoareloreste
nglobareaderesursealesistemuluideoperaredirectnchip(ctmaimultsoft
implemetatninteriorulmicroprocesorului)
Ex:
modululdegestiuneamemoriei(MMU)
implementareamecanismelormultitasking
gestionareamemorieivirtualedirectdectrechip(la80x286gestiunea
memorieivirtualeerafcutdeSOpringrijaprogramatorului)
21
EVOLU EVOLUf fIAMICROPROCESOARELOR IAMICROPROCESOARELOR
Dualcore
IA32
Dual Dual core core
IA IA 32 32
Madison
IA64
Madison Madison
IA IA 64 64
Deerfield
IA64
Deerfield Deerfield
IA IA 64 64
P
e
r
f
o
r
m
a
n
P
e
r
f
o
r
m
a
n


02 02 00 00 01 01
.25 .25 .18 .18 .13 .13
.
.
.
.
.
.
03 03
Itanium
IA64
Itanium Itanium
IA IA 64 64
PentiumIII Xeon
Pentium Pentium III III Xeon Xeon
98 98 99 99
Pentium IIXeon
TM
Processor
Pentium Pentium II IIXeon Xeon
TM TM
Processor Processor
Pentium IV
Pentium Pentium IV IV
McKinley
McKinley McKinley
800MHz 800MHz 1,5GHz 1,5GHz
3GHz 3GHz
450MHz 450MHz
22
MICROPROCESOARE(IERI MICROPROCESOARE(IERI AZI AZI MAINE) MAINE)
An Clock
(MHz)
Tz/chip(x10
6
)
Tehnologie
Registre/
Memorie
Arhitectur Procesoare
Intel
1978 10 16b/20M Scalar 8086
1985 32b/4G Scalar 80386
1993 66233 3,1/0,6um 32b/4G Pipeline Pentium
1997 450 7/0,25 32b/4G Superpipeline,MMX PentiumII
1989 32b/4G Scalar,FPUncorporat 80486
1995 200 5,5/0,35um 32b/4G SuperpipelineP6 PentiumPro
1999 1000 8,2/0,25um 32b/4G Superpipeline,MMX PentiumIII
2001 1500 42/0,18um 32b/4G NetBurst PentiumIV
2004 3000 42/0,18um 64b/4G Hyperthreading PentiumIV
2006 /0,13um 64b/70TB Multicore,hyperthreading Core2Duo
2009 /0,13um 64bii/70TB
Nehalem,multicore (4) i
hyperthreading
IntelI5,I7
(8ML3)
ARHITECTURADECALCULATOR ARHITECTURADECALCULATOR
24
ARHITECTURADECALCULATOR ARHITECTURADECALCULATOR
Arhitecturadecalculatorinclude:
1.Arhitecturasetuluideinstruc Arhitecturasetuluideinstruc iuni iuni ISA ISA (InstructionSetArchitecture)
Interfantrehardwareisoftware.
ISAincludetotcetrebuiescunoascunprogramatorpentruaprogramalanivel
fizicmaina.
ISApermitecadoumainidiferite(implementare,costuriiperformane
diferite)srulezeaceleaiprograme.
2.Implementare Implementare,cudoucomponente :
Organizarea includeaspecteledenivelnaltaleproiectului,cumarfi :
organizareasistemuluidememorie
structuramagistralelor
organizareainternaUCP
Doumainipotaveaorganizridiferite,daracelaiISA.
Hardwaresereferlaaspectelespecificedeimplementarealemainii(proiectul
dedetaliuallogicii,tehnologiasemiconductoareutilizat,tipuldecapsul,etc.)
25
ORGANIZAREAGENERALAUNUICALCULATORUNI ORGANIZAREAGENERALAUNUICALCULATORUNI PROCESOR PROCESOR
26
ORGANIZAREAGENERALAUNUICALCULATORUNI ORGANIZAREAGENERALAUNUICALCULATORUNI PROCESOR PROCESOR
FluxuldeinformaiiestecontrolatdeUCPpedouci:
caledecontrol (creierulprocesorului).Semnaleledecontrolspunciidedate,
memorieiisistemuluideintrare/ieirecesfac,conforminstruciunilorunui
program.
calededate (muchiiprocesorului).Caleadedaterealizeazoperaiiaritmetice/
logiceidetransfer
27
ORGANIZAREAGENERALAUNUIMICROPROCESOR ORGANIZAREAGENERALAUNUIMICROPROCESOR
28
MAGISTRALASISTEM MAGISTRALASISTEM
Principaleleuniticomponentealesistemului(procesor,memorieprincipal,
moduledeI/O)suntinterconectatepentruaschimbainformaiidedateicontrol
Caleadecomunicarentredousaumaimulteunitiestenumitmagistral(bus)
Magistralaconineliniielectricecaretransferinformaiacodificatnbinarprin
intermediulunorsemnaleelectrice(niveluridetensiune)
Omagistrallacaresuntconectateprincipalelecomponentealecalculatorului
(procesor,memorieprincipal,moduledeI/O)estenumitmagistralsistem
29
MAGISTRALASISTEM MAGISTRALASISTEM
Magistralaesteuncanaldecomunicarepartajatntimp:doarundispozitivpoate
transmitedatepemagistrallaunmomentdat.Pentrucacelelaltedispozitivesnu
alterezedatelevehiculate,toatedispozitivelesuntconectatelamagistralprin
intermediulunorcircuite3state.
Pentruanlturasuprancrcareacanaluluidecomunicaie,iacreteperformanele
acestuia,seconstruieteoierarhiedemaimultemagistraleinterconectate.
Elementecheielaproiectareamagistralelor:
arbitrare
sincronizare
lrgimeamagistralelor(numrdebiitransmiinparalel)
30
MAGISTRALASISTEM MAGISTRALASISTEM
31
IERARHIEDEMAGISTRALEMULTIPLE IERARHIEDEMAGISTRALEMULTIPLE
Cuctsuntmaimultedispozitiveconectatelaomagistral,cuattmaimareeste
lungimea acesteia
Cuctsuntmaimultedispozitiveconectatelaomagistral,cuattmaimarevafi
ntrziereaproduslatransmisiadatelor
Dispozitiveleconectatelaomagistralauvitezemultdiferitedefuncionare
Comparaivitezaprocesorului(UCP)cuaunuiechipamentperiferic
Magistralaunicconducelascdereavitezeimedii atransmiteriiinformaiilor
32
MAGISTRALEMULTIPLE MAGISTRALEMULTIPLE
Structurtradiionaltipic
33
MAGISTRALEMULTIPLE MAGISTRALEMULTIPLE
Structurdenaltperforman
34
MAGISTRALESINCRONE MAGISTRALESINCRONE
MagistralelesincroneincludoliniedeCLOCK(controlatdeunoscilatorcucuar)
ntreliniilemagistraleidecontrol.Frecvenetipicesunt:5,66,133,266,333,400,
600,800MHz
Toatetransferurilepemagistraldureazunnumrntregdeciclurideceas,numite
ciclurimagistral.
Avantaje:
vitezamaredetransfer
logicsuplimentarfoartesimpl
Dezavantajulconstnfaptulcpentrutransferurilecaresarputeafacemairapid
dectintervalulcorespunztorunuinumrntregdeciclurimagistral,protocolul
trebuiepstrat(timpprestabilitdetransfer)
35
MAGISTRALEASINCRONE MAGISTRALEASINCRONE
MultedispozitivedeI/Onupotaccepta/generadatelaoratmare(ex.unprocesor
Pentiumpoatefurnizauneiimprimantectevasutedemilioanedecaracterepe
secundcenupotfiimprimatelaaceastvitez;tastaturafurnizeazdatelaviteza
dereacieuman;etc.)
Calculatoareleaunevoiedeprotocoaledetransferdedatepentruanulimitaviteza
deexecuielaceaadispozitivelorperiferice,lente:handshaking
Implementareaacestuimecanismlanivelfizic:
porturidestare iporturidecontrol ncomponenadispozitivelorde
intrare/ieire
controlleredentrerupere pentrutratareacererilordispozitiveloresterne
36
MAGISTRALEASINCRONE MAGISTRALEASINCRONE HANDSHAKING HANDSHAKING
37
TIPURIPRINCIPALEDEARHITECTURI TIPURIPRINCIPALEDEARHITECTURI
ArhitecturavonNeumann osingurmemoriepentruinstruciuniidate
ArhitecturaHarvard (DSP,MC) memoriiseparatepentruinstruciuniidate
38
ARHITECTURAVONNEUMANN(1945) ARHITECTURAVONNEUMANN(1945)
Dateleiinstruciunile suntstocatenaceeaimemorieprincipal (conceptulde
programstocat);
Coninutulmemorieiesteadresabillaniveldelocaie (fraseconsiderace
informaieestestocat:datesaucod);
Instruciunile suntexecutatesecvenial (unacteunanordinealocaiilordememorie
ncaresuntstocate)cuexcepiafaptuluicndacestlucruesteprecizatexplicitncod.
Calculatorulconineurmtoarelesubsisteme:
unitatedecontrol
unitatearitmeticilogic(ALU)
sistemI/O
memorie
CalculatoarelecuarhitecturvonNeumannsuntcalculatoaredeuzgeneral.Elepot
rezolvadiverseproblemenfunciedeprogramulexecutat
39
ARHITECTURAVONNEUMANN ARHITECTURAVONNEUMANN reprezentarestructural reprezentarestructural
arhitecturdeuzgeneralsecvenial
40
REPREZENTAREACICLULUIDEINSTRUC REPREZENTAREACICLULUIDEINSTRUCf fIUNE IUNE
Pentrurulareaprogramului,UCPareo
funcionarecicliclafiecareinstruciune
executat
Circuiteleelectronicealeunuicalculator
recunosciexecutdoarunsetlimitatde
instruciunielementare,codificatenform
binar
Instruciunilerecunoscutesuntrareorimai
complicatedect:
adundounumere
verificdacunnumresteegalcu
zero
copiazdatedintrozonamemoriei
calculatoruluinaltzon.
41
UNITATEADECONTROL(UC) UNITATEADECONTROL(UC)
Unitateadecontrol(UC)estecreierulprocesorului
UCcontroleazisincronizeaztoateelementeledininteriorulUCPiinterfeele
ctrecaleadedateextern.
42
UNITATEAARITMETIC UNITATEAARITMETICb bILOGIC ILOGIC(UAL)+REGISTRE (UAL)+REGISTRE
Unitateaaritmeticilogic(ALU),realizeazoperaiilogice sauaritmetice cu
operanziiadresaideUC
naintedeprelucrare,operanziisestocheazntrunsetderegistredeuzgeneral,
folositecamemorietemporar
RegistrelereprezintomemorielocalUCP,defoartemarevitez
Setulderegistredeuzgeneralpoatefifolositnsipentrusalvareadiferitelor
informaiiprivindadresareamemorieiprincipale.
nfunciederezultatuloperaiilorefectuate,ALUseteazanumiiindicatoride
condiii (indicatoridestare,fanioane,flaguri)
43
MEMORIAPRINCIPAL MEMORIAPRINCIPAL
Memoriaprincipalservetela
stocareadateloriinstruciunilor
excecutatedeUAL
Stocareadateloriinstruciunilor
sefacelalocaiidememorie
consecutiveadresabiledirect
44
SISTEMULDEINTRARE/IE SISTEMULDEINTRARE/IEb bIRE IRE
SistemuldeI/Oconinelocaiiadresabile(porturi)princarecalculatorulfaceschimb
deinformaieculumeaextern.Sistemulconinecircuitepentrufunciile:
schimbareformatdate(serial/paralel)
stocaretemporardedate(latch)
verificareacorectitudiniidatelortransferate
sincronizarentreperifericiUCP(datoritdiferenelormaridevitezde
funcionare)
logicdedecodificare
45
PERIFERICE PERIFERICE
Dispozitive(periferice)deintrare recepioneazinformaiadinmediulextern(prin
diverisenzori)subformdesemnaleelectriceiotransformcanaturfizici
formatdereprezentare compatibilitatecuniveluriledetensiunerecunoscutede
calculator(cavaloribinare).
Dispozitive(periferice)deieire operaieinversdispozitivelordeintrare.
Prelucreazdateledincalculatoriletransformninformaieacceptabilla
dispozitivuldeieire.
46
REPREZENTAREAFUNC REPREZENTAREAFUNCf fIONALAUNUICALCULATOR IONALAUNUICALCULATOR
Uncalculatorpoatefidescrisiprinfunciile operaiilepecarelepuneladispoziia
utilizatorului
Circuiteleelectronicealeunuicalculatorrecunosciexecutdoarunsetlimitatde
instruciunielementare,codificatenformbinar
Instruciunilerecunoscutesuntrareorimaicomplicatedect:
adundounumere
verificdacunnumresteegalcuzero
copiazdatedintrozonamemorieicalculatoruluinaltzon
47
LIMBAJULMA LIMBAJULMAb bIN IN LIMBAJULDEASAMBLARE/PROGRAMARE LIMBAJULDEASAMBLARE/PROGRAMARE
Instruciunile elementare, recunoscute de un procesor formeazlimbajul main
(codmain) alprocesorului
Notaie:limbajL
0
cecorespundemainiifiziceM
0
.
ProgramatorulscrieprogramelesalentrunlimbajL
1
,formatdininstruciuni
simbolice(succesiunidelitereicifre),maiapropiatdelimbajuluman
PentruaputeaexecutaacestprogrampemainaM
0
fiecareinstruciunedinL
1
a
programuluitrebuietranslatat ninstruciunidinlimbajulL
0
DeexempluprogramatorulpoatescrienL
1
instruciunea:
addal,6
iarprogramuldetranslatarevagenerasuccesiuneabinar,corespunztoareluiL
0
:
0000010000000110
48
MA MAb bINIVIRTUALE INIVIRTUALE
Funcional,sepoatespuneclimbajulL1corespundeuneimainivirtuale
programabilenumitM1.Numeleacestuilimbajsimbolicdeprogramareestelimbaj
deasamblare,iarprogramuldetranslatareestenumitasamblor.
Translatarea:
totprogramulscrisnL1estetransformatnprogramscrisnL0(executabil),iarprogramul
nL1esteabandonat.
programulnL0estencrcatnmemoriacalculatoruluiiexecutat
Exempledeprogrametranslator:compilator,asamblor.
Interpretorul esteunprogramnL0careruleazpeM0icarepreiainstruciunile
programuluinL1capedatedeintrare.
InterpretorulciteteidecodificfiecareinstruciunedinL1iapoitreceimediatla
execuiaacesteia.Lainterpretarenusegenereazunprogramexecutabilcala
translatare
Limbajedeprogramaremaiapropiatedelimbajuluman:L2,L3,...(pentrumaini
virtualeM2,M3,...) suntnumitelimbajedenivelnalt(C,C++).
49
CALCULATOR=SUCCESIUNEDEMA CALCULATOR=SUCCESIUNEDEMAb bINIVIRTUALE INIVIRTUALE
Niveluln:ProgramelenLnpotsfie
interpretatedeuninterpretorceruleazpe
omaindenivelinferior,saupotsfie
translatatectrelimbajulmainalunei
mainiinferioare
Nivelul2:ProgramelenL2potfiinterpretatede
uninterpretorceruleazpeomainM1
sauM0saupotfitranslatatenL1sauL0
Nivelul1:ProgramelenL1potfiinterpretatede
uninterpretorceruleazpeomainM0sau
potfitranslatatenL0
Nivelul0:ProgramelenL0potfiexecutate
directdectrecircuiteleelectronice
numerice
50
IERARHIEDEMA IERARHIEDEMAb bINIVIRTUALELAUNGPCMICROPROGRAMAT INIVIRTUALELAUNGPCMICROPROGRAMAT
51
SOFTWARE SOFTWARE
52
NOTE NOTE
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE(UCP) (UCP)
54
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE
Structuraunitiicentraledeprelucrare
Cicluriledefuncionareaunuiprocesor
Unitateaaritmeticilogic.Structurifuncionare
Unitateadecontrol.Circuituldedecodificareisemneleledecontrol
Magistraleleinternealeprocesorului
Execuiainstruciunilorimecanismepipeline
55
FUNC FUNCf fIEPROCESOR IEPROCESOR
UnitateaCentraldePrelucrare(UCP UCP)acalculatoruluinumericesteostructurde
procesordeuzgeneral,cusetdeinstruciuni
ncadrulunuisistemdecalcul,(micro)procesorulUCPareresponsabilitateageneral
deinterpretare interpretare i execu execu ie ie ainstruciunilorunuiprogram(secvendeinstruciuni
stocatnmemoriaprincipal)
naccepiuneaclasic(vonNeumann)aunuisistemdecalcul,mainaconineo
singurUCP.Unastfeldecalculatorestenumituniprocesor,pentrualdeosebide
calculatoarelemultiprocesor,careconindousaumaimulteUCP
56
COMPONENTELEUNUISISTEMDECALCUL COMPONENTELEUNUISISTEMDECALCUL
Modelulclasicdecaclulator(vonNeumann)cuprinde:
Unitateadecontrol(UC)
Unitateaaritmeticilogic(UAL)
Memoria(M)
Dsipozitivedeintrare(DI)
Dispozitivedeieire(DO)
M
UC
D
I
D
O
UAL
Date de
intrare +
program
Date de
ieire
UCP=UC+UAL
Unitatea central deprelucrare
57
STRUCTURAGENERALAUCP STRUCTURAGENERALAUCP
Unitatea Unitatea de deComand Comand (UC) (UC) circuitlogicsecvenial responsabil pentru:
Citirea instruciunilor dinmemorie
Decodificarea instruciunilor
Generarea desemnale decontrolpentru execuia instruciunilor
Unitatea Unitatea Aritmetico Aritmetico L Logic ogic (UAL) (UAL) circuitlogiccombinaional ceefectueaz operaii
aritmetice ilogice:
Aritmetice:+,,/,*,mod,comparare
Logice:bI,SAU,NU,
Deplsari/rotaiistnga/dreapta
Registre Registre
Registre generale (RG):pentru pstrarea temporar adatelor
Registre speciale (RS) : deadresare,destareicontrol
58
STRUCTURAGENERALAUCP STRUCTURAGENERALAUCP
UCP UCP
Unitatea de Control
+
Registre Speciale
Registre Generale
R1 Rn
Magistrala
sistem
R2

UAL UAL
Indicatori
decondiii
Comenzi
interne
procesorului
Comenzi
externe
Instruciunii
semnalede
stareexterne
Intraredate Ieiredate
59
EXECU EXECUf fIAINSTRUC IAINSTRUCf fIUNILOR IUNILOR
UCPareofuncionareciclic fiecareinstruciuneesteexecutatntrosecvende
etape faze deexecuie:
citire codinstruciune (instructionfetch IF IF)
decodificare instruciune (instructiondecodingDec Dec)
citire operand(operanzi)(datafetch DF DF)
execuie operaie (executionEx Ex)
scriere rezultat (writebackWB WB)
Cicluri detransfer:
ciclu decitire instruciune
ciclu decitire operand(opional)
ciclu descriere rezultat (opional)
C durata unei instruciuni este determinat denumrul decicluri caretrebuie s
seexecute
60
CICLURIDEFUNC CICLURIDEFUNCf fIONARE IONARE
Cicluinstruc Cicluinstruc iune iune:Secvenadeoperaiinecesarepentruadresarea,aducereai
execuiauneiinstruciuni.
Uncicluinstruciuneconinemaimulteciclurimain
Cicluma Cicluma in in:intervaluldetimpnecesarpentruterminareauneioperaii
intermediare(citirememorie,scrierememorie,citireportI/O,scriereI/O)
Cicluldefetchinstruciune =primulciclumainaloricruicicluinstruciune
Deobiceiunciclumainimplicuntransferalprocesoruluicuexteriorul
UnciclumainconineunasaumaimultestriUCP(perioadedeceas)
Stare Stare (timpdeciclualUCP) (timpdeciclualUCP)
EstetimpulUCP(t
UCP
)necesarpentruexecutareauneioperaiielementarei
binedefinite(esteinversulfrecveneilacarelucreazprocesorul)
Ooperaieelementar(microoperaie)sereferdeobiceilauntransferntre
douregistre
StareaesteunitateadetimpdebazpentrumsurareadurateiactivitilorUCP
t
UCP
=durata celei mai lungi cinUCP(suma intrzierilor produse ncircuitele
combinaionale carealctuiesc calea unui semnal)
61
FUNC FUNCf fIONAREACICLICAPROCESORULUI IONAREACICLICAPROCESORULUI
62
STRUCTURAUNEIUCPELEMENTARE STRUCTURAUNEIUCPELEMENTARE
63
FUNC FUNCf fIONAREAUNEIUCPELEMENTARE IONAREAUNEIUCPELEMENTARE
64
PERFEC PERFECf fIONAREAUCPELEMENTARE IONAREAUCPELEMENTARE
PrincipaleletipurideextinderenorganizareaUCPelementarsunturmtoarele:
Introducereaunorregistrespecialedestareicontrol:
Registrudestare(registrudeindicatori)
Indicatoriidestare(flags flags)potfitestaiprinprogram(deex.Saltcondiionat)
Indicatoridecontrolsauregistredecontrol
Introducereaunorregistresuplimentaredeadresare,pentrustocareimanipulare:
Operanzi
Informaiipentruadresare
Adeseasefolosescregistrepentrumoduricomplexedeadresare(indexat,
bazat,cubaziindex)
Dacregistreleinterneauutilizaregeneral(stocare,adresare,operaiide
prelucrareetc.)mainasespunecareorganizarepebazderegistredeuz
general
65
PERFEC PERFECf fIONAREAUCPELEMENTARE IONAREAUCPELEMENTARE
Extindereafunciiloroferitedeunitateaaritmetic unitateaaritmetic :
Operaiidenmulireimprirenvirgulfix
Operaiicunumerenvirgulmobil(numerereale)
Introducereadesuporthardware(logicplusregistredeadresarespecializate)
pentruimplementareamemorieistiv memorieistiv :
EsteostructurdedateaccesibilpeprincipiulLIFO(lastinfirstout)
Stivaimplementatnmemoriaprincipalecontrolatprinregistruldeadresare
alUCPnumitStackPointer(SP)ceindicnpermanenadresavrfuluistivei
Introducereafacilitilorpentruprelucrareaparalel prelucrareaparaleladousaumaimultor
instruciuni:
Unitatedecontrolorganizatcaunpipelinecukniveluriceeacepermite
prelucrareaparalelakinstruciuniaflatendiferitefazedeexecuie
Organizareaunitiiaritmeticecaoconductdeexecuie(pipelinearitmetic)cu
ketaje
AdugareadekunitiALUpentruprelucrareanparaleladatelor
66
STRUCTURAUNEIUCPTIPICE STRUCTURAUNEIUCPTIPICE
67
SETTIPICDEINDICATORIDECONDI SETTIPICDEINDICATORIDECONDIf fII II
Indicatoriidecondiiereprezintunsetdebistabilicealctuiescregistruldestareal
procesorului
Suntsetai/resetaidectreUALnfunciederezultatulultimeioperaiiaritmetice
saulogiceefecutateisuntfolosiipentrucomandaexecuieiulterioareaprocesului
SignFlag SF SF Semnrezultat
ZeroFlag ZF ZF Rezultatnul(toibiiipe0)
ParityFlag PF PF Numrpardebiipe1
OverflowFlag OF OF Depire!
CarryFlag CF CF Transport
AuxiliarzFlag AF AF Transportauxiliar
68
OVERFLOWFLAG OVERFLOWFLAG
Pentrubituldesemndedoreteutilizareaaceleeaiecuaiicaipentruceilalibii
69
OVERFLOWFLAG OVERFLOWFLAG
70
NOTE NOTE
71
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE
UNITATEAARITMETIC UNITATEAARITMETIC iLOGIC iLOGIC
72
UNITATEAARITMETICO UNITATEAARITMETICO LOGIC LOGIC
Ac Ac Registruacumulator Registruacumulator
pstreazunoperandi
rezultatuloperaiei
R R Registrupentrualdoilea
operand
RS RS registrudestare (FLAGS) (FLAGS)
Codulopera Codulopera ieiestegeneratde ieiestegeneratde
ctreunitateadecontrol ctreunitateadecontrol i i
comand comand iarerolulselec iarerolulselec iei iei
circuitelorlogicepentruexecu circuitelorlogicepentruexecu ia ia
opera opera ieidesemnate iei desemnate
R
Ac
UAL
n
n
n
n
n
Cod
Operaie
RS
73
SUMATORPEUNBIT SUMATORPEUNBIT
C
i
C
o
A
i
B
i
S
i
S
i
= A
i
B
i
C
i
C
o
= A
i
* B
i
+ C
i
* (A
i
B
i
)
74
SUMATORPEUNNBI SUMATORPEUNNBIf fI I
E
n-1
S
n-1
B
n-1
A
n-1
C
n-1
C
n-2
E
1
S
1
B
1
A
1
C
1
C
0
E
0
S
0
B
0
A
0
C
-1
75
OPERA OPERAf fIEDEADUNARECUOPERANZI IEDEADUNARECUOPERANZI N2REGISTRE N2REGISTRE
E
0
D
0
E
1
D
1
A
1
E
n-1
D
n-1
A
n-1
A
0
B
0
B
1
B
n-1
CKB
Ad
CKA
Pas Operaie Comenzi
1
btergeregistrulA
nscrieregistrulB D(operand)
Ad =0,CKA =, CKB = (impuls 1
L
)
2
TransferB A
nscrieregistrulB D(al2leaoperand)
Ad =1,CKA =,CKB=
3 A A+B Ad =1,CKA =,CKB=_(0
L
)
76
CIRCUITDEADUNARE CIRCUITDEADUNAREb bISCDERE ISCDERE NCOMPLEMENTFA NCOMPLEMENTFAf fDE DE2 2
Pentruoperaiadescdere,secomplementeazaldoileaoperandiseexecut
operaiadeadunare
E
0
D
0
E
1
D
1
A
1
E
n-1
D
n-1
A
n-1
A
0
B
0
B
1
B
n-1
CLKB
CLKA
Ad / Sc
C
0
C
1
C
n-1
77
UNITATELOGICPE UNITATELOGICPE2BI 2BIf fI I
MUX 4:1
C
i-1
A
i-1
Cod
operaie
1
B
i-1
MUX 4:1
C
i
A
i
1
B
i
78
ALGORITMPENTRUOPERA ALGORITMPENTRUOPERAf fIADE IADE NMUL NMULf fIRE IRE
1100 * 12 *
1010 10
0000
1100
0000
1100
1111000 = 78H = 120
00000000 Acumulator (AC)
0 0000000 0 Depl. dr.
1 1100 Adunare
0001100 0 Produs parial
000110 00 Depl. dr.
0 00011 000 Depl. dr.
1 1100 Adunare
1111 000 Produs final
79
IMPLEMENTAREAOPERA IMPLEMENTAREAOPERAf fIEIDE IEIDE NMUL NMULf fIE IE
E (n+1)
Dispozitivde
comand
Deplasare
X
Q
0
Q
1
Q
n-1
. . .
B
0
B
1
B
n-1
. . .
B
S
A
0
A
1
A
n-1
. . .
A
S
Q
S
Y
btergere
Scriere
Scriere
Test
Deplasare
Scriere
80
ALGORITMDE ALGORITMDE NMUL NMULf fIRE IRE
1. nscriere operanzii n registre B X, Q Y, terge acumulatorul A 0
2. Complementareoperanzidacsemnulestenegativ
3. TestQ
0
Q
0
= 0, deplasare dreapta A i Q
Q
0
=1,adunareA=B+AideplasaredreaptaAiQ
4. Serepetpasul3pncndY
n1
ajungenQ
0
.Dupultimaeventualadunarenu
semaifacedeplasare
5. A
S
=B
S
+Q
S
6. ComplementarerezultatdacA
S
=1
81
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE
UNITATEAdeCOMAND UNITATEAdeCOMAND i i
CONTROL CONTROL
82
UNITATEADECONTROL UNITATEADECONTROL
UC
GF
CK
RI
DI + BCC
PC (IP)
RS
(flags)
Comenzi
Adresa
Instruciune
Este creierul calculatorului ise compune din :
Generatorul desemnaluluidetactCK
Generatorul fazelordeexecuie GF
Unitatea dedecodificare instruciuni (DI)i
blocul decomand icontrol(BCC)
interpreteazinstruciunile igenereaz
semnalele decomand necesare pentru
execuia lor
Registrul deinstruciuni RI
pstreaz instruciunea curent
ContoruldeprogramPC
pstreaz adresa instruciunii urmtoare
Registrul destareprogramRS
83
UNITATEADECONTROL UNITATEADECONTROL
Unitateadecontrol(UC) genereazsemnaledecontrolctrecaleadedate
RolulUCaunuimicroprocesorcerecunoateunsetdeinstruciuni,estesaduc
instruciunile codificatebinardinmemoriaprincipal(externprocesorului)is
transmitsemnaledecontrol ctrecaleadedateictrememorieisubsistemulde
I/O,nscopulexecutriiinstruciunilor
Semnaleledecontrolselecteazlafiecaremomentfunciadeexecutatdectre
caleadedateiselecteaztraseulspecificaldatelorprinunitilefuncionale
Conformsemnaleloremise,unitateadecontrol(UC)face,periodic,oreconfigurare
dinpunctdevederelogicaunitiideprelucrare,astfelnctaceastasexecuteun
setimpusde(micro)operaii.
84
FUNC FUNCf fIILEPRINCIPALEALEUC IILEPRINCIPALEALEUC
Secven Secven iereainstruc iereainstruc iunilor iunilor
sereferlamanierancarecontrolulprocesoruluiestetransferatdelao
instruciunelaalta,prinordineadegenerareaadreselorctrememoria
principalacalculatorului.
Interpretareainstruc Interpretareainstruc iunilor iunilor
sereferlamodulncareUCdecodificcodulfiecreiinstruciuniila
modalitateadegenerareasemnalelordecontrolctrecaleadedate,pentrua
comandaexecuiainstruciunilor.
85
SECVEN SECVENf fIEREAINSTRUC IEREAINSTRUCf fIUNILOR IUNILOR
Instruciunile sunt selectate pentru execuie n ordinea dictatde UC (secveniere)
dupinterpretareacoduluiinstruciuniicurenteiasemnalelordereaciedin
exterior
Informaiedesecveniere=?
Dacfiecareinstruciunearconineadresaurmtoareiinstruciunicetrebuie
adusdinmemorie lungimemareacoduluiinstruciunii
Celemaimulteinstruciunidintrunprogramauunsuccesorunic
InstruciuneaI
i
arecaunicsuccesorinstruciuneaI
i+1
Stocare I
i
n locaia de adresA stocare I
i+1
n locaia de adresA+1 ce
urmeazimediatdupA
86
SECVEN SECVENf fIEREAINSTRUC IEREAINSTRUCf fIUNILOR IUNILOR
Adresa instruciunii urmtoare poate fi calculatprin incrementare !
Adresaestestocatntrunregistrunumrtordeadresealinstruciunilornumit
contordeprogram,notatpescurtPC
Adresainstruciuniiurmtoaresecalculeazprinoperaia:
PC PC+c
undecreprezintnumruldecuvintedememoriepecaresentindeinstruciunea
curent
Laramificare(instruciunidesalt,sautratareaevenimentelordentrerupere)adresa
urmtaoreiinstruciuniesteneconsecutiv
ncazuluneiramificri,registruldeadresarePCsencarcdirectcuadresalacarese
facesaltul
PC X
AdresaX esteconinutncodulinstruciuniideramifiare
87
INTERPRETAREAINSTRUC INTERPRETAREAINSTRUCf fIUNILOR IUNILOR
FiecreiinstruciuniinterpretatedeUC,icorespundeosuccesiunedecomenzi
emisedeUC,conformalgoritmuluidoritdeproiectantulUC
ComportareaUCdinpunctuldevederealsemnalelordecontrolgenerate(cafuncie
icasuccesiunentimp)pentrucomandaoperaiilorsepoatedescrieprin:
Tabeledetranziieastrilor
Organigrame
Limbajededescrierehardware
Combinaiialemetodelordemaisus
ExistdoumetodedeproiectareiimplementareaUC:
Unitatedecontrolcablat
Unitatedecontrolmicroprogramat
88
UNITATEADECONTROLCABLAT UNITATEADECONTROLCABLAT
Unitateadecontrolcablat esteunautomatsecvenialproiectaticonstruitpentru
generareaunuisetspecific introsecvenfix desemnaledecontrol
Odatproiectat,algoritmuldecontrolnumaipoatefimodificatdectprin
reproiectareantregiistructuri
ImplementareasepoatefaceprinconstruciihardwaredetipPLA(programmed
logicarray)
Avantaje aletehniciicablate:
dimensiunimicialeUC
vitezmaredeoperare
Controlulcablatestefolositpentruprocesoarecarerecunoscun setregulatirelativ
redusdeinstruciuni (deobiceiinstruciunicuformatdelungimefix)
implementareaunuisetcomplexdeinstruciuni(cala8086)estedificil
89
CONTROLULCABLAT CONTROLULCABLAT SCHEMBLOC SCHEMBLOC
Unitateadecontrolcablatesteunautomatcecuprinde:
registruldememorareastriicurente
registruldeinstruciuni,carememoreazcoduloperaiei
logicdecontrol(deobiceicombinaional)
90
UNITATEADECONTROLMICROPROGRAMAT UNITATEADECONTROLMICROPROGRAMAT
Launitateadecontrolmicroprogramat semnaleledecontrolsuntinclusencuvinte
binaresuccesive(microinstruciuni)stocatentromemoriedemarevitez,inclusan
UC,numitmemoriedecontrol
Implementareaalgoritmuluidecontrolsefaceprinprogramarea coninutului
memorieidecontrol
Fiecreiinstruciunirecunoscutedeprocesoricorespundeosecvende
microoperaiigenerateprincitireauneisecvenedemicroinstruciunidin
memoriadecontrol(secvendemicroinstruciuninumitmicroprogram)
Microprogrameleconinutenmemoriadecontrolformeazuninterpretor al
setuluideinstruciunirecunoscutdeprocesor
91
CONTROLULMICROPROGRAMAT CONTROLULMICROPROGRAMAT
Fiecarebitdintromicroinstruciunereprezintocomandelementarcaremerge:
Directlaoresurscomandat(registru,sauCLC),sau
Esteprelucratmpreuncualteinformaii(pentrudecodificareisincronizare)
pentrucaapoissecomanderesursafizic.
Fiecarecoddeinstruciunecititidecodificatproducesaltullaoadresdinmemoria
decontrolundesegsetemicroprogramulasociatexecuieiaceleiinstruciuni
Principaleleavantaje:
setuldeinstruciunipoatefiuorschimbatprinschimbareamicroprogramelor
dacestenevoie,permitemodificareadinamic(ntimpulrulriiprogramelor)a
setuluideinstruciunirecunoscutdeUCprinrescriereamemorieidecontrol
permitereducereacosturilorgeneraledeproiectareiconstrucieaUC
reducereadimensiunilormicroprogramelor
Dezavantajelemicrocodului:
Vitezaredusdelucru,dependentdetehnologiaderealizareamemoriilor
Gabaritulmare(suprafamareocupatpechip)
92
CONTROLULMICROPROGRAMAT CONTROLULMICROPROGRAMAT
93
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE
MAGISTRALAINTERN MAGISTRALAINTERN. .
SEMNALELEdeCONTROL SEMNALELEdeCONTROL
94
MAGISTRALEEXTERNE MAGISTRALEEXTERNE
Magistraladedate
Magistraladeadrese
Magistraladecontrol
95
MAGISTRALADEADRESE MAGISTRALADEADRESE
Liniideadres,cetransmitdoarsemnaledeieiredinmicroprocesor
Esteomagistralunidirecional
Liniiledepeaceastmagistralsefolosescpentruadresarealocaiilordememoriei
aporturilordeintrareieire.
IeirilePspremagistralaexterndeadresepottrecenstareadenaltimpedan
(HiZ)laocerereextern,cndUCPcedeazcontrolulmagistralelorctrealt
dispozitiv
Deobiceivalorilebinarecelemaisemnificative(cupondereabinarmaxim)din
adressefolosescpentruselectareablocurilordememorie
96
LOGICDEADRESARE LOGICDEADRESAREb bIDECODIFICAREMEMORIE IDECODIFICAREMEMORIE
97
MAGISTRALADEDATE MAGISTRALADEDATE
Lrgimeamagistraleidedateestedeobiceimultipludeoctet(d=8,16,32,64...)
Celedliniialemagistraleidedatesuntbidirecionale
Liniileauposibilitateadetrecerenstareadenaltimpedan(HiZ)
MAGISTRALAINTERNaprocesoruluitrebuiestransfereDATE MAGISTRALAINTERNaprocesoruluitrebuiestransfereDATE iADRESE iADRESE
Magistralamultiplexat Magistralamultiplexat ntimpimplementatlauneleuP pentrueconomiedepini
Este folositatt ca magistralde adrese cti pentru transferul datelor
nprimulciclumainalfiecreiinstruciunipemagistraladedatesepot
transmiteinformaiideadressauinformaiidecontrol
Laprocesorul8086piniaimagistraleidedatesuntmultiplexaipentruase
puteatransmiteiinformaiedeadres(adresvalidatdesemnaluldecontrol
ALE(AddressLatchEnable)carecomandstocareaadreseintrunregistru
extern
98
MAGISTRALADECONTROL MAGISTRALADECONTROL
1. Semnaledecontrolisincronizarepentrutransferuridedate cumemoriai
dispozitiveledeI/O;
2. Semnaledecontrolisincronizareacererilordecedareacontrolului
magistralelor;
3. Semnaledecontrolisincronizarecuevenimenteexternecegenereazcereride
ntrerupere;
4. Semnaleindicatoaredestare;
5. Semnaleutilitare,cumarfireset,clock,alimentarecutensiune;
6. Semnalediverse,specificetipurilordemicroprocesoareiscopuluipentrucareau
fostproiectate.Deexemplu:
intrritestabileprinsoftware
intrripentrucomandaactivitiipascupasaUCP
intrripentrusemnalizareaunorerori
intrri/ieiripentrulucrulnsistemmultiprocesoretc.
99
SEMNALEDECONTROLPENTRUTRANSFERULDATELOR SEMNALEDECONTROLPENTRUTRANSFERULDATELOR
Rol:permitprocesoruluicontrolulisincronizareatransferurilorpemagistralade
date,cumemoriaidispozitiveledeIO
Setminim:
RD ReaD citirededatedinmemorie/registruport
WR WRite scrieredatenmemorie/registruport
R/W Launelemicroprocesoareexistunsingursemnaldecontrolal
sensuluidetransferaldatelorpemagistral(ceselecteazoperaia
doritfunciedenivelullogic)
AS AddressStrobesemnaldevalidareaadreseiplasatpemagistrala
deadrese
READY SemnalprincarememoriasaudispozitivuldeI/Osemnaleaz
procesoruluicpoatetrasmite/recepionadate
100
CICLUDEMAGISTRALTIPIC CICLUDEMAGISTRALTIPIC(CITIRE) (CITIRE)
Cicluldemagistralesteunevenimentasincroncencepecuapariiaadresiunei
locaiidememorie(portI/O)urmatdeemitereaunorsemnaledecontrol
Echipamentulselectatacceptdatadepemagistaladedate(cicludescriere)sau
plaseazdatepemagistral(cicludecitire)
CK
Adres
AS
RD
READY
Date
UCP Memorie
RD
AS
READY
ADR
Date
101
SEMNALEDECONTROLPENTRUTRANSFERURIDMA SEMNALEDECONTROLPENTRUTRANSFERURIDMA
Problemacererii/cedriicontroluluimagistralei altedispozitivedetipmaster(alte
procesoare,controllere)ceauposibilitateadetransferaldatelordirectcumemoria
principal(transferDMA DirectMemoryAcces)
Setminim:
BR BusRequest cereredeaccesicontrolalmagistralelorsistemului
BG BusGrantconfirmareacedriicontroluluimagistralelor
nurmacedriicontroluluimagistralelor,UCPtreceieirilesalectremagistralelede
date,adreseiopartedinceledecontrolnstaredenaltimpedan(HiZ)
UCPprevzutcuaceastperechedesemnalesondeazdeobiceisemnaluldecerere,
detipBR,lasfritulfiecruiciclumainicedeazcontrolulmagistralelorctmai
curndposibil,cuexcepiaunorcazurispecialencareoperaiilenupotfintrerupte
ntrziereamaximcucareesteservitocereredeacceslacontrolulmagistralelor
estedeciunciclumain
ncazulmaimultorcererideacordareacontroluluimagistralelor,analizaprioritilor
sefacedeobiceicuuncircuitdearbitrarecentralizatacererilordemagistral.
102
SEMNALEDESINCRONIZAREACERERILORDE SEMNALEDESINCRONIZAREACERERILORDE NTRERUPERE NTRERUPERE
Semnaleleaurolulsincronizriievenimentelorexternecumicroprocesorul
Cerereadentrerupereprovenitdinexteriorestedeobiceiocereredeserviciidin
parteadispozitivelordeintrare/ieire
Existdoutipuridecereridentreruperehardware(iniiateprinsemnalelectricde
ntrerupere):
ntreruperimascabile
ntreruperinemascabile
Unsetminimdesemnalepentrumanevrareacererilordentreruperecuprinde:
INT INTerrupt cereredentrerupere
NMI NonMascableInterrupt cereredentreruperenemascabil
INTA INTeruptAcknoledgeconfirmareaacceptriintreruperii
103
SEMNALEDEUTILITARE SEMNALEDEUTILITARE
Q Q RESET RESET
SemnaluldetipRESETesteprezentlatoatemicroprocesoareleieladuceconinutul
registrelormicroprocesoruluintrostareprefixatprinproiectare
naceaststarepredeterminatcontoruldeprogram(PC)seiniializeazlaovaloare
fix(deobiceilazero),iarntreruperilemascabilesuntinvalidate
Restartaremicroprocesor
PoweronReset(Resetarelaalimentareacircuitului)
Q Q CLOCK CLOCK
Semnaluldeceasarerolulsincronizriituturoroperaiilordinsistem
Semnaluldeceasestefurnizatdeuncircuitdeceasspecialsincronizatcufrecvena
unuioscilatorcuquartz
Laprocesoareleactuale,aceastfrecvenestemultiplicatdeunnumrdeori
104
CIRCUITULDECEAS CIRCUITULDECEAS
Circuituldeceasintel8084 aparinndfamilieix86necesitconectareaexterna
unuicristaldequartz(f
QuartZ
=14,28MHz)iareroluldeagenera:
Semnaledesincronizare:
CK(Clock) furnizatprocesorului(f
CK
=f
QuartZ
/3=4,76MHz)
PCK(PeripheralClock) furnizatcircuitelorexterne(f
PCK
=f
CK
/2=2,38MHz)
SemnaluldeRESET pt.iniializareaprocesorului(printruncircuittriggerSchmitt)
respectivpoweronreset (deiniializareduppornireatensiuniidealimentare
semnaluldecomanddureazcelpuin50deperioadedetact)
Semnalepentruinserareastrilordeasteptare ncicluldemagistral
RDY1
RDY2
RES READY
RESET
CK
PCK
CK
RESET
READY
X1
X2
8086 8284
105
UNITATEACENTRALDEPRELUCRARE UNITATEACENTRALDEPRELUCRARE
PIPELINING PIPELINING
PARALELISM PARALELISM nEXECU nEXECUf fIA IA
INSTRUC INSTRUCf fIUNILORprinTEHNICIPIPELINE IUNILORprinTEHNICIPIPELINE
106
PIPELINE PIPELINE INT INTR RODUCERE ODUCERE
Pipelining Pipeliningesteotehnicdeintroducereaparalelismuluinexecuiainstruciunilor
Pipeline Pipeline =conductdeexecuie
Serealizeazprinmprireacicluluideexecuiealuneiinstruciuninmaimultefaze
deprelucrare,iarexecuiasefacenparalelpentrumaimulteinstruciunicarese
aflnfazediferitedeprelucrare
Fiecareetaj/segmentalconducteicompleteazopartedinoperaiilenecesaren
execuiainstruciunii
Etajeleconducteisuntconectateunuldupcellaltpentruarealizaoband de
execuieainstruciunilor
Tehnicadetippipelinepoatefiaplicatattpentruexecuiainstruciunilorcti
pentrucircuitelearitmeticedeprelucrare
Pipelinearitmetic
Pipelinedeinstruciuni
107
PRINCIPIULPIPELINING.CICLUMA PRINCIPIULPIPELINING.CICLUMAb bINALCONDUCTEI INALCONDUCTEI
Tehnicapipelineconducelaoreducereatimpuluideexecu oreducereatimpuluideexecu iemediupentruo iemediupentruo
instruc instruc iune iune
Timpulnecesarpentrudeplasareauneiinstruciunicuunetajninteriorulconductei
constituieuncicluma cicluma inalconductei inalconductei
Lungimeacicluluimainalinstruciuniiestedeterminatdetimpulcerutpentru
prelucrareancelmailentsegmentdinconduct
Unciclumainalconducteiesteegalcuunulsaumaimulteciclurideceasprocesor,
darobiectivuloricreimainiceimplementeazaceasttehnicestesseajungla
omediedeoinstruciuneexecutatpecicludeceasprocesor
Ceamaisimplcaledeanelegeprincipiulconducteiestesimaginmfiecareetaj
cafiindformatdintrunregistruurmatdeuncircuitcombinaionaldeprelucrare
108
CONDUCTCU CONDUCTCU4ETAJE 4ETAJE SCHEMDEPRINCIPIU SCHEMDEPRINCIPIU
RegistrelestocheazdateledeintrarepentruCLCpeduratanecesarcasuboperaia
corespunztoaresegmentuluisfieterminatirezultatelesaparcorectlaieirea
circuituluicombinaional
Dacncrcarearegistrelorcudateledelaetajulanteriorsefacesincroncuun
impulsdeceas,perioadaceasuluitrebuiesfiesuficientdemareastfelcacelmai
lentdintreetajestermineprelucrarea
109
CONDUCTDEINSTRUC CONDUCTDEINSTRUCf fIUNI IUNI
Considermoconductdeinstruc conductdeinstruc iuni iuniformatdin5etaje:
IF(InstructionFetch) IF(InstructionFetch) instruciuneaadresatprinregistrulcontorprogramPC
esteadusdinmemorienregistruldeinstruciuni(RI)iarregistrulPCeste
incrementatpentruaadresaurmtoareainstruciune
ID(InstructionDecode) ID(InstructionDecode) instruciuneaestedecodificatiaroperanziisunt
ncrcainregistreledeintrarealeUAL
EX(Execution) EX(Execution) executoperaiacurentiplaseazrezultatulnregistul
acumulator(registruldeieireimplicit).Coninutulregistrelordepindedeoperaia
executat:
operaiearitmetic/logic(registruregistru):rezultatulnregistrulAcc
referinlamemorie(scriere/citire):regAccconineoadresefectivde
memorie
saltnprogram:UALcalculeazadresadesaltioplaseaznregistrulAcc
110
CONDUCTDEINSTRUC CONDUCTDEINSTRUCf fIUNI IUNI
MA(MemoryAccess) MA(MemoryAccess) acceslamemorie(citire/scriere)
operaiadecitirememorie:datelesuntcititedinmemoriedelaadresadin
registrulAcciplasatnregistrultemporardeintraredate
operaiadescrierememorie:dateledinregistrultemporardeieiredatesunt
transferatenmemoriadedate(Dcache)
WB(WriteBack) WB(WriteBack) scriererezultatnregistreleprocesoruluiiseexecutn
cazuloperaiilorregistruregistru.
operaieregistruregistru:coninutulregistruluideieirealUAL(Acc)este
transferatnregistrulrezultat(deex.unuldintreregistrelegeneraleale
procesorului)
111
CONDUCTDEINSTRUC CONDUCTDEINSTRUCf fIUNI IUNI
Execu Execu iesecven iesecven ial ial
suntnecesare5
perioadedeceas
pentruexecuiaunei
instruciuni
Arhitecturiscalare
Execu Execu iepipeline iepipeline
ncazulideal,se
executoinstruciune
lafiecareperioadde
ceas
Arhitecturipipeline
IF ID EX MA WB
IF ID EX MA WB
IF ID EX MA WB
IF ID EX MA WB
IF ID EX MA WB
IF ID EX MA WB
IF ID EX MA WB
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
T
9
T
10
Instr.i1
Instr.i2
Instr.i3
Instr.i4
Instr.i5
Perioade
deceas
Instruciunea1 Instruciunea2
CicluUCPcurent
112
CRE CREb bTEREA TEREA NVITEZ NVITEZ
Conductcuketaje ininstruciuni deexecutat
T
CK
timpuldeciclualconductei
k T
CK
timpulnecesarpentruumplereaconductei
T
P
=(k+n1) T
CK
timpultotalpentruexecuiacelorninstruciuni
Pentruunprogramcuninstruciuni,frpipeline(cuexecuiesecvenial)timpul
mediutotaldeexecuievafiegalcu:
T=n T
mediu
T
mediu
timpmediunecesarpentruexecuiauneiinstruciuni
Cretereanvitezdatoritfolosiriiconducteipoateficalculatcaraportntrecele
douvaloridetimpconsiderndn>>k1 ipresupunndT
mediu
= k T
CK
Cretereanviteztindelanumruldeetajealconductei
( )

mediu mediu
CK CK
nT T
S= k
k+n - 1 xT T
113
ORGANIZAREACIIDEDATE ORGANIZAREACIIDEDATE NTR NTR UNPROCESORRISCELEMENTAR UNPROCESORRISCELEMENTAR
Main Memory
Pipeline
Decode &
Control
ALU
D: Linii de date
PC: Program Counter
A: Linii de adres
I-cache D-cache
D D A A
Instruction
Fetch
PC
MMU MMU
Register
File
Magistral Rezultat
Magistral Operand B
Magistral Operand A
114
ARHITECTURPIPELINE ARHITECTURPIPELINE
E E
M
U
X
P
C
MEM
Instruciuni
ICACHE
P
C
P
C
R
I
U
A
L
R
e
g

I
n
1
U
A
L
R
e
g

I
n
2
R
e
g
i
s
t
r
u

I
m
e
d
i
a
t
B
l
o
c
R
E
G
I
S
T
R
E
R
E
G
I
S
T
R
E
D
E
C
M
U
X
M
U
X
U

L
U

L
U
A
L
R
e
g

O
u
t
R
e
g
i
s
t
r
u

C
o
n
d
i

i
i
Zero?
+4
MEM
Date
DCACHE
R
e
g
i
s
t
r
u

D
a
t
e
R
e
g
i
s
t
r
u

D
a
t
e
R
e
g
i
s
t
r
u

R
e
z
u
l
t
a
t
M
U
X
IF(FetchInstruciune) ID(Decodificare) EX(Execuie) MA(AccesMemorie) WB
R
e
g
i
s
t
r
e

I
F
/
I
D
A
d
r
e
s

i
n
s
t
r
u
c

i
u
n
i

d
e

s
a
l
t
Scriere n registru
Selectoroperaie
regreg/regmem
A
d
r
e
s
a
r
e

r
e
g
i
s
t
r
e
115
SURSEDECONFLICT(HAZARD) SURSEDECONFLICT(HAZARD)
Cretereanvitezegalcunumruldeetajealconductei(k)estedoarolimit
teoretic,pentruc:
pemsuracreteriinumruluideetajediferenelentreT
mediu
ikT
CK
semresc
cuctcretenumruldeetajecuattmaigreuestesechilibrezetimpiide
execuiepefiecareetaj
nplusaparproblemedecarenusainutcontnrelaiacalcul:
salturilenprogram
dependenadedateinterinstruciuni
dependenaderesurselehardwareinterinstruciuni
acesteelementecreeazceeacesenumetehazardulstructuriidetipconduct
Sursedeconflict(hazard):
Conflictederesurse hazardstructural
Dependenadatelor hazarddedate
Ramificrile hazarddecontrol
116
HAZARDULDEDATE HAZARDULDEDATE
Dependenadatelor(hazarddedate) sereferlainstruciunicarefolosescca
operanzirezultatealeinstruciuniloranterioaredinconduct
instruciunileanterioarencnuaufostcompletexecutate
rezultatulnuestedisponibil
Hazarduldedatesenlturfieprin:
metodehardware:multiplicarearegistrelor(bypass)
metodesoftware:prinreordonareainstruciunilordinprogram
IF ID EX WB
IF ID EX
IF ID EX
IF
movAX,5
movBX,AX
subCX,2
monDX,CX
WB
WB
ID EX WB
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
T
9
T
10
T
11
117
HAZARDULDECONTROL HAZARDULDECONTROL
Hazarddecontrol estecauzatdeinstruciuniledesaltnprogram(ramificri)
stivatrebuiegolitirenceputprocesuldeexecuiealinstruciunilordelaadresadesalt
metodelederezolvarencearcsmeninconductaplinlafiecareimpulsdeceas:
prinprediciasalturilor
prininstruciunidesaltntrziat
IF ID EX
IF EX WB
ID EX WB
IF ID EX MA WB
jeET1
abbAX,BX
subCX,3
ET1:mov[1234],AX
T
1
T
2
T
3
T
4
T
5
T
6
T
7
T
8
.

.

.
ID
IF
118
HAZARDULSTRUCTURAL HAZARDULSTRUCTURAL
Conflictederesurse(hazardstructural) produsedeaccesullaaceleairesursedin
douetajediferitealeconductei
Deexempluaccesulsimultanadouetajelamemoriaprincipal,unuldinaccesepentru
aducereacoduluiuneiinstruciuni,iarcellaltpentruaccesareaoperanzilor
Acesteconflicteserezolvprinmrireanumruluideunitifuncionale(de
exempluUALmultiple)iprinutilizareadespaiiseparatedememoriepentrudatei
instruciuni
IF ID EX MA WB
movAX,5
mov[1234],AX
T
1
T
2
T
3
T
4
T
5
IF ID EX WB
119
PIPELINEARITMETIC PIPELINEARITMETIC
Exempludepipelinearitmetic
pentruadunarea/scderean
virgulmobil
X=Ax2
a
Y=Bx2
b
120
ARHITECTURPIPELINE ARHITECTURPIPELINE
E E
M
U
X
P
C
MEM
Instruciuni
ICACHE
P
C
P
C
R
I
U
A
L
R
e
g

I
n
1
U
A
L
R
e
g

I
n
2
R
e
g
i
s
t
r
u

I
m
e
d
i
a
t
B
l
o
c
R
E
G
I
S
T
R
E
R
E
G
I
S
T
R
E
D
E
C
M
U
X
M
U
X
U

L
U

L
U
A
L
R
e
g

O
u
t
R
e
g
i
s
t
r
u

C
o
n
d
i

i
i
Zero?
+4
MEM
Date
DCACHE
R
e
g
i
s
t
r
u

D
a
t
e
R
e
g
i
s
t
r
u

D
a
t
e
R
e
g
i
s
t
r
u

R
e
z
u
l
t
a
t
M
U
X
IF(FetchInstruciune) ID(Decodificare) EX(Execuie) MA(AccesMemorie) WB
R
e
g
i
s
t
r
e

I
F
/
I
D
A
d
r
e
s

i
n
s
t
r
u
c

i
u
n
i

d
e

s
a
l
t
Scriere n registru
Selectoroperaie
regreg/regmem
A
d
r
e
s
a
r
e

r
e
g
i
s
t
r
e
ARHITECTURADE ARHITECTURADEMICROPROCESO MICROPROCESOR R
122
ARHITECTURAMICROPROCESORULUI ARHITECTURAMICROPROCESORULUI
Arhitecturamicroprocesoruluiintel8086
Registrelemicroproccesorului8086
Cicluriledemagistral.Semnaleledecomandicontrol
Magistralainternmultiplexat
Arhitecturievoluate.Paralelism
123
ARHITECTURAMICROPROCESORULUI ARHITECTURAMICROPROCESORULUI
ARHITECTURAMICROPROCESORULUI8086 ARHITECTURAMICROPROCESORULUI8086
124
MICROPROCESORULINTEL8086 MICROPROCESORULINTEL8086 caracteristiciprincipale caracteristiciprincipale
E magistraladedatede16bii;
E magistraladeadresede20bii(1MBdememorieadresabildirect);
E adresaresegmentatamemoriei;
E 4registredeuzgeneralpe16biiadresabiledirectsaupeoctei;
E 4registredesegmentpe16bii;
E 2registreindexpe16bii;
E unsistemfoarteflexibildeadresareamemoriei(7moduri);
E sistemdentreruperihardwareisoftware;
E posibilitateafuncionriinsistememultiprocesor;
E posibilitateaefecturiioperaiiloraritmetice(inclusivnmulireimprire)i
operaiilogice;
E frecvendetact6MHz.
125
ARHITECTURAINTEL8086 ARHITECTURAINTEL8086
126
PINTEL8086 PINTEL8086 UNIT UNITf fIFUNC IFUNCf fIONALE IONALE
Unitateadeexecuie (EU ExecutionUnit)
Unitateadeinterfacumagistrala (BIU BusInterfaceUnit)
BIUiEUopereaz asincroniformeaz unmecanismunitardeaduceresiexecuiea
uneiinstruciuni.
Procesareaparalel acelordouunitifuncionaleasigur cretereavitezeide
lucruamicroprocesorului prinsuprapunereaetapeideaducereauneiinstruciunidin
memorie(prefetch)cuetapadeexecuieainstruciuniiprecedente(magistrala
sistemesteutilizat maieficeint).
127
Pi8086 Pi8086 UNITATEADEINTERFA UNITATEADEINTERFAf fCUMAGISTRALA CUMAGISTRALA
Unitateadeinterfa Unitateadeinterfa cumagistrala cumagistrala (BIU BusInterfaceUnit)
BIUexecuttoatecicluriledemagistral (READ,WRITE,INTA)fielacererea EU
saupentruumplereauneicozideinstruciuni (QFIFO)
QFIFOesteomemoriedetipFirstInFirstOut cu6cuvinte (6registrex1octet)
BIUexecutnoicicluriFETCH nintervalelectEUnusolicitmagistralamfiind
posibiladucereanavans(prefetch)amax6octeidin programul executat din
locaiidememorieadiacente(procesareserialaprogramului)
Dac EUexecut oinstruciune cetransfer controlul programului spre onou
adres,BIUreseteaz coada iorealimenteaz cu 6octeincepnd delaaceast
nou adres
Dac QFIFO esteplin iEUnusolicit transferuri pe magistral, apar cicluri n
ateptare (exemplu:T1T2T3T4TITI...TITIT1T2T3T4...TI=Idle State)
BIUgenereazadresafizic pe 20debii
128
Pi8086 Pi8086 UNITATEADEEXECU UNITATEADEEXECUf fIE IE
Unitateadeexecu Unitateadeexecu ie ie (EU ExecutionUnit)
EUobinecoduridelaBIU(ateaptdacQFIFOestevid doarncazul
instruciunilordesaltnprogram)
EUdecodific iexecutinstruciunile,respectivproceseazdatelecuexcepia
calculelorcomplexeefectuatedecoprocesorulmatematici8087
EUlucreaz cuadreseidatepe8/16bii
EUactualizeazflagurile (indicactoriidecondiie)
EUcalculeazadreseleefective (pe16bii)aleoperanzilorconformmoduluide
adresarespecificatncoduloperaieidininstruciune
EUfurnizeazadreseleefectiveidatelectreBIU
Execuiainstruciunilorarelabazprincipiulmicroprogramrii:toatecodurile
operaiilorcepotfiexecutatedeEUsuntmemoratentromemoriedetipROMdin
interiorulUCP.
129
Registreledeuzgeneral Registreledeuzgeneral (MainRegisters)
RGsuntlocaii dememorie carestocheaz datele pe careEU leproceseaz laun
momentdat itrebuie s fienconcordan cu magistrala intern aprocesorului
(M
DATE
=k*R
UCP
). Ex.Pentium: busintern pe 64bii,reg. pe32bii
Suntregistrepe16biiadresabiledirectsaupeoctet
Registreindex pe16bii:
SI(SourceIndex),DI(DestinationIndex),BP(BasePointer),SP (StackPointer)
Registrulindicatorilordestare idecontrolalprocesului(decondiii) FLAGS
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IE
15 8 7 0
AH AL AX (accumulator)
BH BL BX (base)
CH CL CX (counter)
DH DL DX (data)
130
Registredeuzgeneral Registredeuzgeneral (MainRegisters) (MainRegisters)
AX operaiiaritmetice(),(/)pe16biiioperaiideI/Ope16bii
AL aritmeticzecimalpe8biiiconversiidecod
AH operaiiaritmetice()i(/)pe8bii;
BX conversiidecodicaregistrudebazdeadrese (adresarebazat);
CX operaiicuiruri,curoldecontordecicluri;
CL deplasri(stnga,dreaptacuunnumrdepaidaidevaloarealuiCL);
DX operaiiaritmetice(),(/)pe16biiicaregistrudeadresareindirecta
porturilordeintrare ieire(I/O);
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IE utilizri utilizri
131
Registreindex Registreindex ipointer ipointer pe16bi pe16bi i i
SP implicitntoateoperaiilecustiva(conineadresavrfuluistivei);
BP implicitnoperaiilecustiva(conineadresadebazasegmentuluidestiv);
SI operaiileasuprairurilordedate(specificadresasursei);
DI operaiileasuprairurilordedate(specificadresadestinaiei).
Registrelepointer(BP,SP)suntfolositepentruapstradeplasamentulrelativlabaza
registrelordesegmentnoperaiiledeacceslamemorie.
SP(registrulindicatordestiv) estenpermanendecrementatfrintervenia
programului)iindicadresavrfuluistivei (ultimalocaiedememorieimplicatntr
ooperaiecustiva)relativlabazasegmentuluidestiv
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IE utilizri utilizri
132
FLAGSRegister FLAGSRegister Registruldestare Registruldestare
CF CarryFlag depirearitmetic(transport)
PF ParityFlag paritate(rezultatuloperaieiareunnumrpardebiisetai)
AF AuxiliaryFlag transportntrebitul3i4
ZF ZeroFlag rezultatnullaultimaoperaiearitmeticsaulogic
SF SignFlag bitdesemn(iavaloareaMSBlaoperaaiilecunumerecusemn)
TF TripFlag TF=1determinUCPslucrezenmodulpascupas se
genereazcteontrerupereinterndupfiecareinstruciune
IF InterruptFlag mascpentrunteruperiexternemascabile
(IF=1 validarentreuperi;IF=0 invalidarentreruperi)
DF DirectionFlag indicdireciadeplasriiadreseilaoperaiilecuiruri
(autodecrementarearegistrelorSI,DIdacDF=1respectiv
autoincrementareadacDF=0)
OF OverflowFlag indicatordedepirearitmetic:sapierdutMSBalrezultatului
datoritfaptuluicvaloareaacestuiaadepitcapacitateade
reprezentarealocaieidestinaie
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IE utilizri utilizri
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Bit
- - - - O D I T S Z - A - P - C Flag
133
REGISTRELEUNIT REGISTRELEUNITf fII II DEINTERF DEINTERFA Af fCUMAGISTRALA CUMAGISTRALA
Registresegment Registresegment
CS CodeSegment
DS DataSegment
SS StackSegment
ES ExtraSegment
Registrulcontordeprogram Registrulcontordeprogram
IP
Instruction
Pointer
Conineadresa relativ (offsetul)n segmentul decod
curent(relativ laCS) ainstruciuniicurente
BIUactualizeazvaloareanscrisnIPdupfiecare
operaiedefetch
n cazul unei instruciuni desalt intersegment,IPeste
salvat n vrful stivei (mpreun cu CS) iapoi ncrcat cu
adresa relativ n segmentul decod ainstruciunii int
Registrepe16bii spaiudeadresarede64kB
Ofersuportpentruimplementareaunuispaiude
memoriede1MB
Coninadreseledebazalesegmentelorlogicedecod,
date,stiviextrasegment
Doar4segmenteactivelaunmomentdat
134
SEMNALELEEXTERNEALEMICROPROCESORULUIi8086 SEMNALELEEXTERNEALEMICROPROCESORULUIi8086
135
SEMNALELEEXTERNEALEMICROPROCESORULUIi8086 SEMNALELEEXTERNEALEMICROPROCESORULUIi8086
136
SEMNALELEEXTERNEALEMICROPROCESORULUIi8086 SEMNALELEEXTERNEALEMICROPROCESORULUIi8086
137
CicluldemagistralalBIU esteunevenimentasincron cencepeodatcuapariia
adreseiuneilocaiidememoriesauaunuiportdeI/Ourmatdeunsemnalde
controldecitire/scriere
Echipamentulselectat(MEM/port)acceptdatadepemagistraladedatepedurata
cicluluidescrieresauplaseazdatapemagistralntimpulcicluluidecitire.
Laterminareacicluluidemagistralechipamentulrespectivmemoreazdatascirs
prinintermediulunorcircuitedetiplatch buffere sau,ncazulcicluluidecitire,i
trececircuiteledeieirenstaredenaltimpedan(HiZ)
Microprocesorul8086foloseteaceeaimagistralinternpentrutransferuldatelor
iadreselor
CircuiteledememoriesauporturiledeI/Oaunevoiedeoadresstabilpetoat
duratacicluluidemagistral
CICLULDEMAGISTRALALBIU CICLULDEMAGISTRALALBIU
138
Considermuncicluldemagistralde4perioadedetactT
1
T
4
cueventualelestri
deateptare(T
w
)
Integritateadatelortransferatepemagistralainternamicroprocesoruluiimpuneca
aceastasfiedemultiplexatntimppeduratacicluluidemagistral
pedurataT
1
informaiadeadresesteplasatpemagistraliarmicroprocesorul
activeazsemnalulALE carevaasiguramemorareaadreseincircuiteLATCH(ex.
8282 neinversorsqu8283 inversor)
CircuiteleLATCHaurorluldeameninepeliniilemagistraleideadreseneiveluride
tensiunestabilepetoatduratacilculuidemagistralT
1
T
w
T
4
(inclusivnperioadele
ncarepemagistraladeadrese/dateAD
15
AD
0
vorfitransferatedate)
Deasemenea,magistraladedateestebufferatprincircuite8286/8287pentrua
evitacaunechipamentexternsacceseweaccidentaldatepemagistrala
multiplexatiscompromitastfeladresapeperioadaT
1
MAGISTRALAMULTIPLEXATA MAGISTRALAMULTIPLEXATAu uP8086 P8086
139
CICLUDEMAGISTRAL CICLUDEMAGISTRAL ACCESMEMORIE(CITIRE/SCRIERE) ACCESMEMORIE(CITIRE/SCRIERE)
140
MAGISTRALADEADRESEDEMULTIPLEXAT MAGISTRALADEADRESEDEMULTIPLEXATb bIDEMAGISTRALADATEBUFFERAT IDEMAGISTRALADATEBUFFERAT
8086
AD
15
AD
0
ALE
A
19
A
16
BHE
8282/83
8282/83
8282/83
8282/83
8282/83
DT/R DEN
EN
T
EN
T
A
D
1
5

A
D
0
Magistralade
adreseextern
(20debii)
Magistralade
dateextern
(16bii)
A
19
A
16
4
16
8
8
8
8
4
A
19
A
16
A
15
A
8
A
7
A
0
D
15
D
8
D
7
D
0
141
Procesor pe 16bii
16semnale dedate,24semnale deadres (spaiu deadresare 16MB)
Moduri delucru:realiprotejat
u uPi80286 Pi80286
Unitatea deadresare
Unitatea deinterfaare
Amplif.date
Magistrala
Amplif adrese
extern
Controlmag.
Unitatea deexecuie
Unitatea deinstruciuni
Coada Decod.
deinstr. instr.
142
Procesor pe 32bii,32semnale dedate,32semnale deadrese (spaiu deadresare
4GB)
Registre generale extinse la32bii
2registre segmentsuplimentare
Modprotejat perfectat
u uPi80386 Pi80386
Unitatea de Unitatea de
segmentare paginare
Unitatea de Unitatea de
execuie interfaare
Unitatea de Unitatea de
decodificare prenc.instr.
143
Integreaz:
procesor
+ coprocesor matematic(FPU FloatPointUnit)
+ unitateademanagementamemoriei(MMU MemoryManagementUnit)
Faciliteaza utilizarea memoriei cache
Perfectarea modului protejat
u uPi80486 Pi80486
Unitatea de Unitatea de
segmentare paginare
Procesor
virgul fix Unitate Unitate
cache interf.
Procesor mag.
v.mobil
Decodificare Prencrcare
instruciuni instruciuni
144
NOTE NOTE
145
ARHITECTURAMICROPROCESORULUI ARHITECTURAMICROPROCESORULUI
ARHITECTURIPENTIUM ARHITECTURIPENTIUM
146
Dou linii deprocesare pipeline:UiV
Magistrala extern dedatepe 64bii(deieste procesor pe 32bii)
Versiuni:
Pentium arhitectur cu2linii pipeline
PentiumPro
PentiumII arhitectur superscalar P6
PentiumIII
PentiumIV arhitectur NetBurst
u uPPENTIUM PPENTIUM
147
PentiumPro
Arhitectur superscalar P6
Execuie dinamic ainstruciunilor:
Analiza fluxurilor dedate
Predicia salturilor
Execuia speculativ ainstruciunilor
PentiumII
Tehnologia MMX:
Component pt.datemultimedia
Execuie paralel tipSIMD
57instruciuni noi MMX
PentiumIII
Tehnologia SSE2
Executie paralel SIMDpt.operaiilenvirgulflotant
Pentru grafic 2D/3D
MAGISTRALAMULTIPLEXATA MAGISTRALAMULTIPLEXATAu uP8086 P8086
148
3 uniti autonome :
Unitateadecitireidecodificareinstruciuni
citetedinmemorieidecodific3instruciuni/perioadadeceas
asigurprediciasalturilorprinintermediulunuiblocdememorarea
adreselordesalt
Unitateadedispecizareiexecuieprezintunitideexecuiespecifice:
execuieoperaiicunumerentregi
execuieoperaiicunumerereale(nvirgulflotant FPU)
execuiedatemultimedia(MMX)
Unitateaderetragere
refaceordineanormalarezultatelordupexexciaparalelainstruciunilor
asigurinterfaacumemoriacachededatepentruscrierea/citireadatelor
ARHITECTURASUPERSCALARP ARHITECTURASUPERSCALARP6 6
149
Noustandarddemagistral MagistralaP6
magistrala lucreaz n modsincron,cumemorarea semnalelor pe frontul
cresctor alsemnalului deceas
transferul dedateserealizeaz pe baz detranzacii caresepotdesfura n
paralel
exist suport pentru conectarea mai multor procesoare pe aceeai magistral
sunt favorizate transferurile pe blocuri dedate
exist implementate aunormecanisme dedetecie i corecie aerorilor
exist suport pentru verificarea imeninerea consistenei memoriilor cache
seutilizeaz otehnologie detransmitere asemnalelor caregaranteaz
nealterarea semnalelor chiar i lafrecvenemari
ARHITECTURASUPERSCALARP ARHITECTURASUPERSCALARP6 6
150
ARHITECTURASUPERSCALARP ARHITECTURASUPERSCALARP6 6
Unitateade Unitateade
extragere extragere i i
decodificare decodificare
instruc instruc iuni iuni
L1ICache
L1DCache
Unitateadeinterfaareamagistralei(BIU)
L2Cache
Unitateade Unitateade
dispecizare dispecizare i i
execu execu ie ie
Unitateade Unitateade
retragere retragere
Rezervordeinstruciuni
Magistrala sistem
Load Store Fetch
Blocul Blocul
de de
registre registre
151
Pentium PentiumIII III
aparen1999la450MHz(tehnologie0.25microni) Katmai
2niveluricachede32kB
versiuneaCoppermine tehnologie0.18um
PentiumI PentiumIV V
aparen2000subnumeledecodWillamette
arhitecturpe32debiiceopereazlaofrecvendeceasde1,5MHz
42milioanedetranzistoarentehnologie0.18microni
tehnologiehyper tehnologiehyper pipeline pipeline cu20deetaje(exceptndetajeleIFiID)
cachenivel1de12kB
memorieICachedetipTraceCache TraceCache(stocaredimanicainstruciunilor)
cachenivel2de256kB
versiuneaFoster(2001)laofrecvend2GHzprezintcachelevel3isuport
DDRSDRAM
versiuneaNorthwood ntehnologie0.13 tehnologie0.13u um m introducenoulsocket478
PROCESOAREPENTIUM PROCESOAREPENTIUM
152
implementareauneiarhitecturihyper hyper pipelinecu20 pipelinecu20 defazedeprocesarea defazedeprocesarea
instruc instruc iunilor iunilor,dublufadevariantaP6
cre cre tereade4oriafrecven tereade4oriafrecven eimagistralei eimagistralei sistem,careastfelajungela400MHz 400MHz;prin
utilizareatehnologiei"quadpump"seasiguroratdetransferde3,2Goctei/s
dublareavitezeideexecu dublareavitezeideexecu iea ieaUAL UAL,ceeacepermiteefectuareaadouoperaii
aritmeticeilogicesimplepefiecareperioaddeceas;defaptunitateaaritmetico
logiclucreazcuunsemnaldeceascarearefrecvenadublfadefrecvena
procesorului
utilizareauneimemoriicachedefoartemarevitez memoriicachedefoartemarevitez (eng.AdvancedTransferCache),
carelaofrecvende2GHzasiguroratdetransferde64Goctei/s
extindereatehnologieiMMX(eng.SSEStreamingSIMDExtension)prinadugareaa
144instruciuniSIMDnoiiextinderealimiidatelorprelucratela128bii(16octei
prelucrainparalel)
mbuntireacu30%arateidepredic 30%arateidepredic ie ie asalturilornspecialdatoritextinderii
ferestreideanaliz;procesorulPentium4meninenliniadeexecuiepnla126de
instruciuniiutilizeaz4Kocteipentrumemorareaadreselordesalt(BTB Branch
TargetBuffer)
ARHITECTURANETBURST ARHITECTURANETBURST PENTIUMIV PENTIUMIV
153
ARHITECTURANETBURST ARHITECTURANETBURST PENTIUMIV PENTIUMIV
L1ICache(TraceCache)
BTB Prediciesalturi
BIU
Decodificactor
Alocarereg.alias
L2Cache
Cozideateptare
microoperaii
Planificatoare
Registrepentruntregi RegistreFPU
UAL UAL UAL UAL UAL UAL UAL UAL UGA UGA UGA UGA UAL UAL F F UAL UAL F F
L1DCache
ROM
Extragere i
decodificare
instruciuni
Planificare i
execuie
instruciuni
154
Scop:
reducerea timpului deexecuie sublimita impus detehnologie
Dificultai:
descompunerea problemei insecveneexecutabile inparalel
sincronizarea ntre taskuri paralele
Tipuri deparalelism:
SISD singleinstructionsingledata
arhitectur scalar (neparalel)
SIMD singleinstructionmultipledata
arhitectur cumai multe UAL
paralelism dedate
MISD multipleinstructionsingledata
arhitectur pipeline
MIMD multipleinstructionmultipledata
arhitectur paralel propriuzis
mai multe procesoare execut nparalel secvenediferite deprogram
ARHITECTURIPARALELE ARHITECTURIPARALELE
155
ARHITECTURIPARALELE ARHITECTURIPARALELE
.
.
. M
P C M
.
.
.
M
.
.
.
SI
MI
SD MD
.
.
. M
.
.
.
C
C
C
C
C
C
P
P
P
P
P
P
P
I D
156
A Arhitecturi rhitecturi func func ional ional paralele paralele
DLP(Data LevelParallelism)
paralelism lanivel dedate UALmultiple
ILP(InstructionLevelParallelism)
paralelism lanivel deinstruciuni:
arhitecturi pipeline
VLIW verylargeinstructionword
TLP(ThreadLevelParallelism)
paralelism lanivel defiredeexecuie/taskuri:
arhitecturi multicore
arhitecturi multiprocesor
supercalculatoare calculatoare paralele
PLP(ProcessLevelParallelism)
paralelism lanivel deprocese:
arhitecturi paralele,sisteme distribuite,GRID,cloud
ARHITECTURIPARALELE ARHITECTURIPARALELE
157
Memorie partajat SharedMemory:
spaiu liniar si globaldeadrese
variante:
UMA UniformMemoryAccess
timp uniformdeacces lamemorie
NUMA NonUniformMemoryAccess
timp deacces estefunciedeadresa dememorie
COMA CacheOnlyMemoryArchitecture
SymmetricMultiprocessor:
SharedMemory+SharedI/O
Memorie privat PrivateMemory:
multe adrese/memorii locale,privatepentru fiecare procesor
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI NARHITECTURILEPARALELE NARHITECTURILEPARALELE
158
Toate procesoarele (P)auacces directlatoate modulele dememorie (M)
Mecanism rapidisimplu decomunicaie
Probleme potaprea laaccesul simultan lamediul decomunicaie (magistral)sau la
acelaimodul dememorie
ARHITECTURICUMEMORIEPARTAJAT ARHITECTURICUMEMORIEPARTAJAT
P
Reea de interconectare
Memorie
...
P P
159
COMUNICA COMUNICAf fIEPRINMEMORIAPARTAJAT IEPRINMEMORIAPARTAJAT
Spaiu virtual de adrese Spaiu fizic de adrese
P
3
P
2
P
1
local
comun
store
load
Schimb de date i sincronizare prin operaii
Load and Store Operations
X:
X:
X:
160
Procesoarele auacces directnumai lamemoriile proprii (locale)
Comunicaia ntre procesoare sefaceprin schimb demesaje
ARHITECTRACUMEMORIEPRIVAT ARHITECTRACUMEMORIEPRIVAT
Reea de interconectare
...
M
P
M
P
M
P
161
Schimb dedateisincronizare prin operaiiSend+Receive
Procedura decomunicaie:
construirea antetului (header)
copierea datelor nbufferul emitentului
transmiterea datelor
copierea datelor dinbufferul deintrare alreceptorului
ARHITECTRACUMEMORIEPRIVAT ARHITECTRACUMEMORIEPRIVAT
local
x:
local
y:
Procesor P Procesor Q
Send(x,Q) Rec(y,P)
Rendez-vous
162
NOTE NOTE
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI
164
ORGANIZAREAMEMORIEIPRINCIPALE ORGANIZAREAMEMORIEIPRINCIPALE
Sistemuldememorie.Ierarhizareamemoriei
Proiectareamodulelordememorie
Memoriinonvolatileimemoriivolatilecuaccesaleator
Celuledememorie.Circuitedememorie
StructuramemorieiRAMstaticeidinamice
Exempledeproiectare
Organizareamemorieiprincipale
Conveniidestocareadatelornmemorie
Organizareadatelornmemorieialiniereavariabilelor
Segmentareamemoriei
Adresareamemorieinmodulreal
Adresareamemorieinmodulprotejat
Organizareaioperareamemorieistiv
MemoriaCache
165
SISTEMULDEMEMORIE SISTEMULDEMEMORIE
Dispozitiveledememorareauroluldeastoca informaianumeric(programe,date
iniiale,rezultateintermediareifinale)cuposibilitateacainformaianumerics
poatfiaccesat printroadresa,pentruaficitit sauscris
Sistemuldememoriealcalculatorului=dispozitiveledestocare ainformaiei+
algoritmiidecontrolalmemoriei(implementaifiensoftwarefienhardware)
Laproiectareaiconstruciaunuisistemdememorie,sefaceuncompromis,alcrui
obiectivsseobin:
ovitezdeaccesmedie ctmaimare
ncondiiileunuicosttotalminim
166
SISTEMULDEMEMORIE SISTEMULDEMEMORIE principiiderealizare principiiderealizare
Informaiastocatestedistribuit peovarietatededispozitivedememorie
(dispozitivecuraportcost/performanicaracteristicifizicefoartediferite)
Transferuldeinformaii ntrediferitelenivelurialememorieisedesfoar
transparent pentruutilizator(sarcinasistemuluideoperare)prinmetodede alocare
dinamic aspaiuluidisponibildememorie,pentruoutilizarectmaieficient.
Realizareaconceptelormemorieivirtuale pentruaeliberaprogrameleutilizatorde
funciaadministrriispaiuluidememorieipentruafaceprogramelerelativ
independentedeconfiguraiadatamemorieifizice.
Creterealrgimiideband asistemuluidememorieiasigurareaunormecanisme
deprotecie
167
LOCALIZAREAREFERIN LOCALIZAREAREFERINf fELORLAMEMORIE ELORLAMEMORIE
Lamajoritateaprogramelorrulatesemanifestlocalizareareferinelorlamemorie :
Doaromicporiuneamemorieiesteaccesatlaunmomentdat.
Localizareareferineloresteocaracteristicaprogramelorcesemanifestnceamai
mareparteatimpuluilarulareaprogramelor.
localizaretemporalareferinelor:dacprogramulfaceacceslaoceluldememorie
lamomentult,estefoarteprobabilcaprogramulsfacdinnouacceslaaceeai
celullamomentult+
localizarespaialareferinelor:daclamomentultprogramulfaceacceslaocelul
dememoriedeadresX,estefoarteprobabilcalamomentult+programulsfac
acceslaceluladeadresX+
nvirtutealocalizriireferinelor,sistemuldememoriepstreazcelemairecent
accesatedatenmemoriaceamairapid(MEMORIACACHE)
168
ORGANIZAREAIERARHICAMEMORIEI ORGANIZAREAIERARHICAMEMORIEI
Memorie
cacheL2
UCP UCP
Registre
interne
Memorie
principal
RAM
Memorie
virtual
Memorie
auxiliar
(extern)
HDD
I/O
capacitate
cost, vitez de acces
Acces direct Acces indirect
Memorie
cacheL1
169
ORGANIZAREAIERARHICAMEMORIEI ORGANIZAREAIERARHICAMEMORIEI
Sistemeledememoriemultinivel,cuposibilitateadescrierecitiretrebuies satisfac
douproprietiprivindinformaiastocat:
proprietatea de incluziune : informaiile care se gsesc pe un anumit nivel de
memoriesevorgsiipeniveluldememorieinferior(M1c M2c ...c Mn)
proprietateadecoeren : informaiaexistentlaoanumitadresnspaiul de
memorietrebuiesfieaceeai,indiferentde niveluldememoriepecareseafl.
170
ORGANIZAREAIERARHICAMEMORIEI ORGANIZAREAIERARHICAMEMORIEI
Proprietateadeincluziune
EsteposibilcaoinformaieexistentpenivelulM
i+1
snusegseascpenivelul
M
i
,darsfieaccesat(cerut)penivelulidememorie.nacestcaz(evenimentul
estenumit"wordmiss")cuvntulnecesarafiaccesattrebuieaduspeunnivelde
memoriesuperior(depeniveluli+1,peniveluli).ncazcontrarevenimentulse
numete"wordhit".
Proprietateadecoeren
Dacuncuvntestemodificatpeniveluli,atuncivatrebuimodificatipenivelul
i+1ipetoatenivelurileinferioare.
Coerenanivelurilordememoriesepoateobinefieprinpropagareavalorii
modificatespretoateniveleleinferioare("writethrough"),sauprinactualizarea
nivelurilorinferioarenmomentulnlocuiriiinformaieidepenivelulcurent
("writeback").
171
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI
CIRCUITEDEMEMORIE CIRCUITEDEMEMORIE
STRUCTUR STRUCTURb bINO INOf fIUNIPROIECTARE IUNIPROIECTARE
172
CIRCUITEDEMEMORIE CIRCUITEDEMEMORIE
Celula dememorie
Circuit digitalcarememoreaz unbit deinformaie (ex:bistabil JKMS,3TCell)
Locaia dememorie (cuvnt dememorie)
Setdecelule elementare dememorie careseacceseaz simultan
Unitatea elementar deadresare (1,4,8,16,32bii)
Fiecare locaie areasocitat oadres
Circuitdememorie =Setdelocaiidememorie
Capacitatea memoriei = numrul totaldelocaii(adrese)
bk . . . b1 b0
locaie
linii
coloane
0 1 2 . . c-1
0
1
2
.
.
l-1
Structur
matricial
(k matrici)
celul
173
TIPURIDECIRCUITEDEMEMORIE TIPURIDECIRCUITEDEMEMORIE
Q MemoriiROM(ReadOnlyMemory)
menininformaiaidupdecuplareatensiuniidealimentare
potfiprogramate(PROM,EPROM,EEPROM,Flash)
Q MemoriiRAM(RandomAccessMemory)
MemoriiRAMstatice(SRAM) MemoriiRAMstatice(SRAM)
setdecircuitebistabile(ex.JKMS)cepstreazinfrormaiapedurata
alimentriicuenergie
suntconstruitederegulntehnologiebipolarsauunipolarsunt
memoriirapidedardecapacitatemic/unitatedecosticonsumridicat
suntrealizatecuadresareunisaubidimensional
MemoriiRAMdinamice(DRAM) MemoriiRAMdinamice(DRAM)
celuledememorie3T(tranzistoareCMOS)cepierdconinutulntimp
(perioadadedescrcareacapacitiiGrilSursatranzistoruluiCMOS)
vitezmediedarconsumredusdeenergiesicapacitimari/unitateadecost
densitatedeintegrareridicat
174
MEMORIANONVOLATILROM MEMORIANONVOLATILROM READONLYMEMORY READONLYMEMORY
DEC
ADR
Amplificatoare date la
citire si programare
A0
A1
An
Logica
de
control
CS
PROG
OE
Dk Dk-1 D1 D0
ADR
DATE
Adresa valida
Date valide
t
ACC
T
CICLU
t
OE
t
CS
t
OH
CS
OE
WL
DL
T
ROM
WL
DL
T
PROM
Vcc
~
F
WL
DL
T1
EPROM
PL
T2
175
SRAMCUADRESAREUNIDIMENSIONAL SRAMCUADRESAREUNIDIMENSIONAL
ID
k-1
CS
D
C
Q
D
C
Q
D
C
Q
D
C
Q
D
C
Q
D
C
Q
D
C
Q
D
C
Q
D
C
Q
ID
1
ID
0
OD
k-1
OD
1
OD
0
R/W
DEC
ADR
A
0
A
1
A
n-1
176
SRAMCUADRESAREBIDIMENSIONAL SRAMCUADRESAREBIDIMENSIONAL
CircuitdememorieSRAM cudimensiunea8kB
13liniideadres(2
13
=8k)partajatede2decodificatoaredeadres(DCDliniiiDCD
coloanemacestadinurmrealizatprintrunblocde8MUX/DMUX)
celuleledememoriesuntbistabilicepastreazinformaiapeduratadealimentare
177
MEMORIARAMDINAMIC MEMORIARAMDINAMIC(DRAM) (DRAM)
Celula elementara dememorie este uncondensator CMOScereineinformaiasub
formasarciniielectricestocate
Estevorbadecapacitateajonciuniigrilsurs
Condensatorulsedescarc intimp pierdereainformaiei
WL/R
DL
T3
WL/W
C C
T1
T2
Pentru apreveni pierderea sarcinii,
informaia trebuie remprosptat dintimp
n timp condensatoarele trebuie
rencrcate cuinformaia stocat anterior
funcionare dinamic, ce presupune
ncrcarea periodic acondensatoarelor
interne
3cicluridefuncionare:
cicluldecitire
cicluldescriere
ciclulderemprosptare
178
CARACTERISTICIDRAMCONVEN CARACTERISTICIDRAMCONVENf fIONAL IONAL
Prezint cea mai maredensitate deintegrare dintre tehnologiile adecvate memoriei
principale i totodat prezint cel mai mic costpe bit
Matricea dememorie este ptrat (m m iar m =2
n/2
1,unden estedimensiunea
magistraleideadrese)
Sefolosete oschem deadresare bidimensional (DCDlinii i DCDcoloane MUX/
DEMUX)
Sefolosete multiplexarea biilor pentru adresele delinie i adresele decoloan.
Adresa furnizat dispozitivului de memorie sefaceprintrunnumr delinii egal cu
jumtate dinnumrul totaldebii deadres numr mai mic de pini lacapsul
* Deexemplu:
pentru 2
22
celule =4Mbit cumatrice de2048x 2048celule numrul depini
deadres aicapsuleidmemorie este 11i nu 22
atenie:magistraladeadreseasistemuluirmnepe22debii
179
MEMORIARAMDINAMIC MEMORIARAMDINAMIC(DRAM) (DRAM)ASINCRON ASINCRON
DEC
Adr
linie
MUX / DMUX
2
n/2
-1:1 / 1: 2
n/2
-1
A0
A1
An/2-1
D
in
Registru
adres
linie
Registru
adres
coloan n/2
0 1 2 . . 2
n/2
-1
0
1
2
.
.
2
n/2
-1
n/2
n/2
RAS
CAS
D
out
WE
Amplificatoare R/W
+
Buffer I/O
180
CICLURILEDEACCESLAMEMORIADRAM CICLURILEDEACCESLAMEMORIADRAM
Adrese Adrese
RAS RAS
CAS CAS
WR WR
Date Date
Adr.Linie Adr.Linie Adr. Co Adr. Coloan loan
Date Date
Adr.Linie Adr.Linie Adr. Co Adr. Coloan loan
Date Date
T_ras T_ras- -cas cas
T_acces T_acces
T_ciclu_citire T_ciclu_citire
T_cas T_cas
T_ras T_ras- -cas cas
T_acces T_acces
T_ciclu_scriere T_ciclu_scriere
T_cas T_cas
Adrese Adrese
RAS RAS
CAS CAS
WR WR
Adr.Linie Adr.Linie
T_ciclu_refresh T_ciclu_refresh
Amplificatoarele R/W sunt circuite care
genereaz nivel logic0sau 1pornind dela
tensiunea depe condensatorul tranzistorului
CMOS(celula)selectat
Decte ori seselecteaz olinie,acelai circuit
amplificator facei remprosptarea(renscrierea
tuturor condensatoarelor depe linia respectiv)
181
PROIECTAREAUNUIMODULDEMEMORIE PROIECTAREAUNUIMODULDEMEMORIE
Structurageneralaunuimoduldememorie:
Adrese
Date
Selecii
A
m
p
.

a
d
r
e
s
e
A
m
p
.

d
a
t
e
Matricea de
circuite de
memorie
Circ.decontrol
D
e
c
Selecie
modul
Comenzi
182
CERIN CERINf fEDEPROIECTAREMODULSRAM EDEPROIECTAREMODULSRAM
Tipulmemoriei :SRAM
Capacitateamemoriei :1MB
Organizareaintern :pe16biicuaccesdirectpeoctet
Magistralafolosit :ISA
24liniideadres
16liniidedate
Semnaledecomand:MRDC(citirememorie)iMWTC(scrierememorie)
Circuitedememoriefolosite :64kB
Aresadenceput :C00000h
pentrumapareaspaiuluidememoriede1MBnspaiultotaldelocaii
adresabileprinmagistralaISA(16MB)
Necesitateafolosiriiamplificatoarelordeadresidatesefacepentruasigurarea
nivelurilorcorectedetensiunepemagistrale
183
SUBMODULDEMEMORIEPE16BI SUBMODULDEMEMORIEPE16BIf fIACCESABILPEOCTET IACCESABILPEOCTET
Pentruasepermiteaccesareamemorieipeocteticuvnt,fiecaresubmodulde
memorieesterealizatdin2circuitedememoriede64kB(celedisponibile)folosindu
sedousemnaledeselecie:
CSL ChipSelectLow
CSH ChipSelectHigh
SemnaleledeselecieoctetLow/HighseobindepeliniamagistraleideadresA
0
i
BHE(ByteHighEnable)
Pentruadresarealocaiilordememoriedincircuitelede64kBsefolosesc15liniide
adres(A
1
...A
16
):2
15
=64k
Prininterconectareamaimultorsubmoduledememoriesevaobineomatricede
memoriededimensiueadorit
Bloculdedecodificare trebuie s genereze semnale deselecie pentru submodule i
pentru modulul dememorie luat cantreg;decodificarea sefacepe baza semnalelor
deadres si decomand
184
SUBMODULULDEMEMORIEPE16BI SUBMODULULDEMEMORIEPE16BIf fI I
D
0
D
1
D
7
D
8
D
9
D
15
Magistrala
dedate
Magistrala
deadrese
A
1
A
16
MWR
CS
i
A
0
BHE
CSL
i
CSH
i
D
0
D
1
D
7
D
8
D
9
D
15
CS
WR
CS
WR
A
0
A
1
A
15
A
0
A
1
A
15
Submoduli
128kB
64Kx16bii
64k*8
64k*8
185
CONSTRUIREAMATRICIIDEMEMORIEDE1MB CONSTRUIREAMATRICIIDEMEMORIEDE1MB
A
0
- A
16
64K
*16
64K
*16
64K
*16

D
0
- D
15
BHE\
CS
0
\
MWR\
CS
1
\
CS
7
\
512K*16=1M*8
BHE\
CS\
MWR\
BHE\
CS\
MWR\
BHE\
CS\
MWR\
186
PROIECTAREAUNIT PROIECTAREAUNITf fIIDEDECODIFICARE IIDEDECODIFICAREb bICOMAND ICOMAND
A A Q Q0 0
B B Q Q1 1
C C Q Q2 2
74LS138 74LS138
(D (DCD CD) )
E1 E1\ \
E2 E2\ \ Q Q7 7
E3 E3
A23
A22
A21
A20
A19
A18
A17
Adresa de nceput :
C00000h
(110000...0b)
CS7\
CS2\
CS1\
CS0\
CS\
MRD\
MWR\
Circuit de comand Circuit de comand
Decodificator Decodificator
187
CERIN CERINf fEDEPROIECTAREMODULDRAM EDEPROIECTAREMODULDRAM
Tipul memoriei : DRAM asincron
Capacitateamemoriei :16MB
Organizareaintern :pe16biicuposibilitateadresarepeoctet
Caracteristicilemagistralei
28liniideadres
16liniidedate
Semnaledecomand:MRDC(citirememorie),MWTC(scrierememorie)i
Refresh(ptrenprosptare)
Circuitedememoriefolosite :1MB
Aresadenceput :D000000h
pentrumapareaspaiuluidememoriede16MBnspaiultotaldelocaii
adresabileprinmagistral(256MB)
188
SUBMODULDEMEMORIEPE16BI SUBMODULDEMEMORIEPE16BIf fIACCESABILPEOCTET IACCESABILPEOCTET
Proiectarea memoriilor dinamice este nprincipiu similar cuproiectarea memoriilor
statice,cuurmatoarele amendamente:
trebuie s seadauge unmecanism deremprospatare periodic amemoriei
adresele trebuie multiplexate (generarea secvential pe aceleaisemnale a
adresei delinie si aadresei decoloan)
trebuie s segenereze semnale devalidare aadresei delinie (RAS\ RowAddress
Select)iaadresei decoloan (CAS\ ColumnAddressSelect)
selecia circuitelor sefacecusemnalele RAS\ si CAS\
Pentru circuitele RAMdinamice,multiplexarea ntimp aadreselor afost necesar
pentru areducenumrul depini ai circuitului dememorie iimplicitadimensiunii
acesteia (datfiindcapacitatearelativmareamemoriilordinamice).Astfel,adresava
fitransmiscircuituluidememoriesecvenialprinaciuneacelordoutipurise
semnaledeselecieRASiCAS
Remprospatarea sefacesimultan lanivelul unei linii ntregi dinmatricea dememorie
189
SCHEMABLOCULUIDEMEMORIEDRAM SCHEMABLOCULUIDEMEMORIEDRAM
Circuitde
control
DEC
MUX
ADR
Adrese linii/coloane Adrese linii/coloane
A A
9 9
A A
0 0
Mag. de adrese A Mag. de adrese A
27 27
A A
0 0
Mag. de date D Mag. de date D
15 15
D D
0 0
Mag. de control Mag. de control
Circuitul de Circuitul de
memorie memorie
CAS0 CAS0
CAS1 CAS1
CAS7 CAS7
RAS RAS
MW/R MW/R
Submodul1
21MB
Submodul2
21MB
Submodul7
21MB
Adr_Sel Adr_Sel
A A
20 20
A A
1 1
A A
27 27
A A
21 21
D D
15 15
D D
0 0
A A
0 0
A A
0 0
190
SUBMODULULDEMEMORIEDE2MB SUBMODULULDEMEMORIEDE2MB
A0 A0 D0 D0
A1 A1 D1 D1
1M 1M 8biti 8biti
A9 A9 D7 D7
CAS CAS\ \
RAS RAS\ \
WR WR\ \
A0 A0 D0 D0
A1 A1 D1 D1
1M 1M 8bit 8biti i
A9 A9 D7 D7
CAS CAS\ \
RAS RAS\ \
WR WR\ \
D15 D15
D9 D9
D8 D8
D7 D7
D1 D1
D0 D0
RAS RAS\ \
CASi CASi\ \
BHE BHE\ \
MWR MWR\ \
A0 A0
Adrese linii/coloane Adrese linii/coloane
A0 A0 9 9
Magistrala de Magistrala de
date date
Submodulul i Submodulul i
1M 1M 16bi 16bi i = 2Mo i = 2Mo
191
UNITATEADEDECODIFICARE UNITATEADEDECODIFICAREb bICOMAND ICOMAND
A A Q Q0 0
B B Q Q1 1
C C Q Q2 2
74LS138 74LS138
E1 E1\ \
E2 E2\ \ Q Q7 7
E3 E3
A27 A27
A26 A26
A25 A25
A24 A24
A23 A23
A22 A22
A21 A21
CAS7 CAS7\ \
CAS2 CAS2\ \
CAS1 CAS1\ \
CAS0 CAS0\ \
Refresh Refresh\ \
MWR MWR\ \
MRD MRD\ \
Sel_Modul Sel_Modul\ \
RAS RAS\ \
CAS CAS\ \
Adr_Sel Adr_Sel
Circuit de comand Circuit de comand
Decodificator Decodificator + +
Linie de Linie de ntrziere ntrziere
Adresa de nceput :
D000000h
(110100...0b)
Adr_Sel areroluldeaselectadepe
magistraladedatesistemdecada
low/highcesevaconectapeintrrilede
adresalecircuituluidememorie.
Acestsemnaltrebuiesprecead
semnaluldeactivareaadreseide
coloan(CAS)
192
MODULULDEMULTIPLEXAREADRESE MODULULDEMULTIPLEXAREADRESEb bIAMPLIFICAREDATE IAMPLIFICAREDATE
10 10 MUX2:1 MUX2:1
Amp
buffer
Amp
buffer
Amp
buffer
S SA A10 10
S SA2 A2
S SA1 A1
S SA A20 20
S SA A1 12 2
S SA A1 11 1
I0 I0
I1 I1
Q Q
A A9 9
A A1 1
A A0 0
SD7 SD7
SD1 SD1
SD0 SD0
SD15 SD15
SD9 SD9
SD8 SD8 Adr_Sel Adr_Sel
D7 D7
D1 D1
D0 D0
D15 D15
D9 D9
D8 D8
S SA A0 0
SBHE SBHE\ \
MRDC MRDC\ \
MWRC MWRC\ \
A A0 0
BHE BHE\ \
MRD MRD\ \
MWR MWR\ \
MRD MRD\ \
CS CS\ \
193
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI
MEMORIAPRINCIPAL MEMORIAPRINCIPAL
194
ORGANIZAREALOGICAMEMORIEIPRINCIPALE ORGANIZAREALOGICAMEMORIEIPRINCIPALE
ORGANIZAREALOGICAMEMORIEIPRINCIPALE ORGANIZAREALOGICAMEMORIEIPRINCIPALE(MP) (MP)
sereferla:
Modalitateadestocareadateloriinstruciunilor
Aliniereainformaieinmemorie
Segmentareamemoriei
Moduriledeaccesladateiinstruciuni
195
MEMORIAPRINCIPAL MEMORIAPRINCIPAL
MEMORIAPRINCIPAL MEMORIAPRINCIPAL esteunspaiudememoriecuaccesaleator(RAMRandom
AccessMemory)adresabildirectdectremicroprocesor.Capacitatea acestuispaiu
dememorie (noctei)depindededimensiuneamagistraleideadrese :
| |
| |
2
MA bits
MP bytes =
Microprocesorul intel8086
Poateaccessadirect1MB (2
20
)de
memorielaadresele0 FFFFFh(MA
pe20debii)
Memoriaesteadresabilpeoctet
00000
FFFFF
1MB
7 0
00002
00003
FFFFE
FFFFD
00001
Memoria
principal
octet
196
LOCA LOCAf fIIDEMEMORIESPECIALE IIDEMEMORIESPECIALE
Microprocesorul intel8086dispunedeoseriedelocaiidememoriespecialesituatela
adresele0 07Fh(128octei)iFFFF0h FFFFFFh(16octei):
Rezervatedefirmpentrudezvoltriulterioare
Dedicate pentrunteruperi ipornirea
sistemuluidupreset
TVI Tabelavectorilordenterupereconine
adreselerutinelordetratareantreruperilor
RESET Spaiudememoriececonine
instruciunileceseexecutlarepornirea
sistemuluiprincomandareset
00000
FFFFF
7 0
00014
0007F
octet
FFFFC
FFFFB
FFFF0
00013
TVI
rezervat
rezervat
RESET
128octei
16octei
Disponibil
197
CONVEN CONVENf fIIDESTOCARE IIDESTOCAREb bIADRESAREAINFORMA IADRESAREAINFORMAf fIEI IEI NMP NMP
Tipuridedatememorate:
8bii(octet/byte)
16bii(cuvnt/word)
32bii(doublesaupointeri)
Stocareainformaiei(dateiinstruciuni)nmemoriesefacenlocaii
adiacentedememoriesituatelaadresesuccesive
DupmodulncaresestocheaznmemoriaprincipalinformaiileMULTI
OCTETexistdouconvenii:
LittleEndian (conveniaIntel)
BigEndian(conveniaMotorola)
198
CONVEN CONVENf fIIDESTOCARE IIDESTOCAREb bIADRESARE IADRESARE INFORMA INFORMAf fIEMULTI IEMULTI OCTET OCTET
LittleEndian (conveniaIntel)
Stocarea nmemoriesefacenordine,delaoctetulcelmaipuinsemnificativ(adresa
mic)ctreoctetulcelmaisemnificativstocatlaadresaceamaimare
Adresarea informaiei
multioctetsefaceprin
lansareaadreseiceluimai
puinsemnificativoctet
Exempludestocarenmemorie
aunuicuvntdublude32de
bii(valorilenumericeau
fostscrienhexazecimal)
3F
45
5C
01
Datastocat
ncepnddela
adresaA este:
3F045C01
Memoria
principal
A+3:
A+2:
A+1:
A:
Celmai
puin
semnificativ
octet
Celmai
semnificativ
octet
199
SELEC SELECf fIAHARDWAREAMEMORIEI IAHARDWAREAMEMORIEI
CONSTRUIREAUNEIMEMORII
ADRESABILEPEOCTET
Omemoriedecapacitatemare
impunefolosireamaimultor
blocuridememorieselectate
prinintermediulunui
decodificatordeadres
Exemplu:
256kBdememoriecucircuite
de64kB
256k=2
18
18biipentru
magistraladeadrese
200
ADRESAREAMEMORIEIPECUVNT ADRESAREAMEMORIEIPECUVNT
CONSTRUIREAUNEIMEMORIIADRESABILEPECUVNT
128kB=2x64kB Mag.Date 16bii;Mag.Adrese 16bii
201
ALINIEREAINFORMA ALINIEREAINFORMAf fIEI IEI NMEMORIE NMEMORIE
Legatdeconveniadestocarenmemorieainformaiilor(instruciuni,date,adrese)
trebuiemenionatclaunelemicroprocesoareaccesullaobiectemaimaridectun
octetsepoatefacedoardacinformaiaesteALINIAT
Aliniereainformaieiiancalculdoumrimi:dimensiuneaobiectuluistocat(D
OB
)i
dimensiuneamagistraleidedate(D
MagDate
)
Aliniereasereferlafaptulcaccesullaunobiectstocatnmemoriesefaceprin
specificareaadreseiA aprimuluioctetocupat,undeadresaArespectecuaia:
A modulo D
MagDate
=0
Deexemplu,dacmagistraladedateestepe32debii(4octei),toateadresele
divizibilecu4desemneazlocaiidememoriealiniate,indiferentdedimensiunea
obiectuluistocat
202
ALINIEREAINFORMA ALINIEREAINFORMAf fIEI IEI NMEMORIE NMEMORIE
203
ALINIEREAINFORMA ALINIEREAINFORMAf fIEI IEI NMEMORIE NMEMORIE
Lamicroprocesoareleactuale,asamblorulatribuieautomattuturordateloradrese
aliniate,indiferentdenumruldeocteiocupatdeacestea
Avantaj:seminimizeaztimpuldeaccesladateledinmemorie
Dezavantaj :risculdeocupareaunuispaiudememoriemaimaredectcelnecesar.
Optimizareamemorieiocupaterevineprogramatorului
Ex. C ASM
charc; DBc
floatf; DDf
spaiudememorieocupat 8octei
spaiudememorieutil 5octei
204
ALINIEREAINFORMA ALINIEREAINFORMAf fIEI IEI NMEMORIE NMEMORIE i8086 i8086
Lamicroprocesoruli8086nuexistrestricii privindplasareadatelornmemorie(ele
potfistocateoriundenmemorie,nlocaiialiniatesaunealiniate)
Magistraladedatepe16bii Amodulo2=0pentruadreselepare(datealiniate)
nfunciedeplasareadatelorlaadresepare(aliniate) sauimpare(nealiniate),UCPva
executaautomatnumruldeciclurinecesarpentrucitirea/scrierealor
Avantaj :optimizareamemorieiocupate(stocaredensaprogramuluinmemorie).
Acestlucruafostimpuslaprimelegeneraiidemicroprocesoaredatoritpreului
marealmemorieidemarecapacitate
Dezavantaj :UCPvaexecutaunnumrdubludecicluridemagistral pentruaccesul
ladatelenealiniate(stocatelaadreseimpare)
205
ALINIEREAINFORMA ALINIEREAINFORMAf fIEI IEI NMEMORIE NMEMORIE i8086 i8086
.data
var1 db5
var2 db7
var3 dbA
var4 dw12
Variabilavar4este
nealiniatfiind
stocatlaadresa
impar1FA13h
(deplasament=3)
Variabil
stocat
var4
A
var2
var1
Adres
HEX
1FA14h
1FA13h
1FA12h
1FA11h
1FA10h
7 0
Memoriaprincipal
Baz
segmentdedate
05
07
41
0C
00
206
ORGANIZAREAHARDWAREAMEMORIEI ORGANIZAREAHARDWAREAMEMORIEI I8086 I8086
Spaiuldememoriede1MBestedivizathardwaren2zonea512kB
Cele2blocuripotfiselectateseparatsausimultanincarcpemagistraladedate
(16bii)cteunoctet:
lowerbank D7...D0
upperbank D15...D8
A19...A1 selecteazsimultanolocaiedememoriede1octetnlower
bankiupperbank
A0 selecteazbankulinferior
BHE selecteazbankulsuperior
BHE A0 Aciune
0 0 ambii octei pe magistrala de date
0 1 selecteaz octetul H (adres impar)
1 0 selecteaz octetul L (adres par)
1 1 niciun octet selectat
207
ORGANIZAREAHARDWAREAMEMORIEI ORGANIZAREAHARDWAREAMEMORIEI I8086 I8086
BankH
512kx8
ADR
Data
CS
BHE
D15: D8
D7: D0
A0
BankL
512kx8
ADR
Data
CS
D15: D0
Magistraladedate
Magistraladeadrese
8
8
16
19 19
A19: A1
208
ACCESULLAOVARIABILWORDNEALINIAT ACCESULLAOVARIABILWORDNEALINIAT
BHE
D15: D8
D7: D0
A0
D15: D0
8
8
16
19 19
A19: A1
000C2 000C3
000C4
XL
XH
Ciclumagistral A19...A0 A0 BHE D15...D0
H
L
L
H
i adresavariabileiXpe
magistraladeadrese
000C3h
XLpeliniileD15...D0
alemagistraleidedate
i+1adresaeste
incermentat
000C4h
XHpeliniileD7...D0
alemagistraleidedate
209
SEGMENTAREAMEMORIEI SEGMENTAREAMEMORIEI i8086 i8086
20debiideadresechivaleazcu1MBmemorieadresabildarsetulderegistre
interne al microprocesoruluii8086estepe16bii putndcodificaadresendomeniul
0h...FFFFhntrunspaiumaximde64kB
Spaiuldememoriede1MBestemprit nsegmentede64kB,adresabilecu
ajutorulregistrelorpe16bii
SEGMENTELEsuntunitilogicedememoriecontinu,independenteiadresabilen
modseparat
Segmentelepotfiisuprapuse(potexistaoinfinitate)dartrebuieavutnvedere
integritateadatelorconinute
Segmentelepotfiplasateoriundenmemoriecurespectarealocaiilordememorie
speciale
210
SEGMENTAREAMEMORIEI SEGMENTAREAMEMORIEI i8086 i8086
Segmentelesuntdefinitenmodunicprinadresadesegment(AS) adresadesegment(AS) unntregfr
semn,pe16bii,multiplude4,ceidentificadresabazeisegmentului(coninutn
registrulsegmentalmicrorprocesorului)
Lai8086,BIUconine4registresegment(CS,DS,SS,ES) maxim4segmente
adresabilenmodcurent (segmentuldecod,date,stivaiextrasegmentuldedate)
Segmentdedate
Segmentdecod
Segmentdestiv
Extrasegment
SS
ES
DS
CS
UCP
RAM
Registresegment
211
ADRESAEFECTIV ADRESAEFECTIV(AE) (AE)
Lamicroprocesoarelecumemoriasegmentat,adresaefectiv(AE)rezultcaun
ntregfrsemn,pe16bii,cereprezintdeplasamentul(offsetul) adresarelativ
aoperanduluifadenceputulsegmentuluincareseafl
AdresaefectivaoperanzilorinstruciunilorestecalculatdectreUnitateade
execuie(EU) aUCP
Instruciunile suntextrasedinsegmentuldecodiarAEestedatderegistrul IP
(InstructionPointer)referiticaPC(ProgramCounter)
Operaiilecustiv suntexecutatensegmentuldestivcurentiardeplasamentule
datderegistrulindicatordestivSP(StackPointer)
212
ADRESAFIZIC ADRESAFIZIC(AF) (AF)
Adresafizic(AF)rezultcaunntregfrsemn,pe20debii,ceidentificnmod
unicolocaiedememoriedinRAM
AdresafizicaoperanzilordatelorestegeneratdectreUnitateadeinterfacu
magistrala (BIU)aUCP
Intel8086:Adresafizic(AF)seobinedinadresaefectiva(AE)lacareseadaug
adresadesegment(AS)nmulitcu16,canecuaia:
AF=ASx2
4
+AE
Cualtecuvinte,adresafizic(AF) seobineprindeplasareaadreseisegment(AS)cu4
biisprestngaiadunareadeplasamentului(AE)
nconcluzie,pentruadresareaunuioctetdememoriesefolosescdouentitipe16
bii(oadressegmentconinutonligatoriuntrunregistrusegment)iun
deplasament.Sevorbetedeadrese(pointeri)pe32debiideiadresafizicse
codificpe20debii
213
FORMAREAADRESEIFIZIC FORMAREAADRESEIFIZIC(AF) (AF)
Oadrescompletestecodificatintern
printrun pointer pe 32debii
Specificareaunuipointerfolosetenotaia
SEGMENT:OFFSET(AS:AE)
Ex: DS:5678 sau1234:5678
AF=179B8h
AS 0000
AE
AF
19 430
19 0
15 0
Adr.efectiv(offset)
Adr.segment
Adr.fizic
1 2 3 4 0
5 6 7 8
1 7 9 B 8
214
ADRESAREAMEMORIEI ADRESAREAMEMORIEI MODULREAL MODULREAL
1234
RegistrulDS
5678
Deplasamentul
Segmentulde
date64kB
Memoria
principal
12340
179B8
:
2233F
00000
E
<<4
x16
1MB
215
MEMORAREAPOINTERILOR MEMORAREAPOINTERILOR
Oadrescompletpe32debiiestememoratcudeplasamentullaadresemiciicu
adresasegmentlaadresemari
Asocierea(segment:offset adresfizic)nuestebiunivoc(perechile1234:5678 i
1235:5668reprezintaceeaiadresfizic)
Deplasament
Adresasegment
Segmentul
decod64kB
Memoria
principal
56
00000
FFFFF
78
34
12
216
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI NMODULREAL(8086) NMODULREAL(8086)
Spaiulmaximdeadresareeste1Mo
Unsegmenttrebuiesnceaplaoadresamultiplude16
Unsegmentaremaxim64kB
Segmentelesepotsuprapuneparialsautotal
Aceeailocaiefizicsepoateexprimaprinmaimultevariantedeperechideadrese
(segment:offset)
Existpuineposibilitideprotejareazonelordememorie
Oriceprogrampoateadresaoricelocaiedememorie,neputnduseimpune
restricii(lucrunedoritntrunsistemmultitasking)
Limitri :spaiullimitatdeadresareiposibilitileredusedeprotecie
217
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI NMODULPROTEJAT NMODULPROTEJAT
nmodulprotejatcalcululadreseisefacelafelprinadresdesegmenti
deplasament,darcuuneleamendamente :
Unregistrusegmentpstreazunselectordesegment inuadresadenceputa
segmentului
Selectorulesteunindicatorcarearatloculundeseaflostructurdedatecare
descrieunsegmenticarepoartnumelededescriptordesegment
Undescriptordesegmentconine:
adresasegmentului(pe32debii)
lungimeasegmentului(pe20debii)
indicatoripentrudeterminareadrepturilordeacces,tipulimoduldeutilizarea
segmentului
Adresadeoffsetseexprimpe32debii
218
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI NMODULPROTEJAT NMODULPROTEJAT
Oferunmecanismcomplexdealocare mecanismcomplexdealocare ideprotec ideprotec ieazonelordememorie ieazonelordememorie
Spaiulmaximdeadresarealmemorieiseextindela4Goctei(4G=2
32
)
Unsegmentareolungimevariabil:dela1octetla4Gocteti
Sedefinesc4niveledeprotecie
nivelul0:celmaiprioritar,alocatnucleuluiSO
nivelul1:rutinedesistem
nivelul2:extensiilesistemuluideoperare
nivelul3:programeutilizator
Unsegmentesteaccesibilnumaitaskuluialocatieventualsistemuluideoperare
Anumitesegmentepotfiblocatelascriere(ex:segmenteledecod)
219
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI NMODULPROTEJAT NMODULPROTEJAT
Este implemetat ncepnd cu microprocecsorul x386
Ofersuportulnecesarpentruimplementareaunuisistemdeoperaremultitaskingi
multiutilizator,prin:
managementulmemoriei(segmentareipaginare)
managementulntreruperilor
managementultaskurilor
Asiguruncontrolmaibunalfiabilitaii,prinmecanismededetecieaerorilorde
acces:
tentativadeacceslaozonadememorienealocattaskului
tentativadescriereintrozonnepermis
lipsaniveluluideprioritatesolicitat
220
ADRESAREAMEMORIEI ADRESAREAMEMORIEI MODULPROTEJAT MODULPROTEJAT
Selector Offset
Adr.fizic
15031 0
Memoria
4GB
Adressegment
310
Lungime
Acces
0
Descriptordesegment
221
MEMORIASTIV MEMORIASTIV
Memoriastiv(stackmemory)esteostructurdedatespecialcelucreazpe
principiulLIFO (LastInFirstOut=ultimulintrat primulieit)
Fiecarecuvntnouintrodusnstivseaeazpeste cuvinteanterioare
Stivaseumple delaadresemarilaadresemici(contrarcelorlaltorsegmente
dememorie)
Extragereaarticolelordinstivsesefacencepnddelavrfulstivei (ultimul
articolintrodus)
Subsistemuldentreruperisalveazautomatnstivirestaureazautomatdinstiv
adresadentoarcerelaprogramulntrerupt
222
ROLULMEMORIEISTIV ROLULMEMORIEISTIV
Memoriastivesteutilizatcamemoriedestocaretemporar:
sistemuldentreruperi
tehniciledeapelareaprocedurilor (subrutinelor)
stocaretemporariregsirerapidadatelor (rezultateintermediare,sau
parametritransmiictreproceduri)
Metodedeimplementareamemorieistiv
stivhardwareimplementatcuregistreinternevitezmare/capacitatemic
destocare
stivsoftwareimplementatncadrulmemorieiprincipale,ntrozoncu
dimensiunesatisfctoarepentruaplicaie(segmentdestiv)vitezredus/
capacitatemaredestocare
223
STIVAHARDWARE(STIVADEREGISTRE) STIVAHARDWARE(STIVADEREGISTRE)
224
STIVAHARDWARE(STIVADEREGISTRE) STIVAHARDWARE(STIVADEREGISTRE)
Adncime4cuvintepe8bii(4registrepeoctet)
225
SEGMENTULDESTIV SEGMENTULDESTIV(STIVA) (STIVA)
Gestiuneainformaiilordinstivesterealizatcuajutorulpointeruluidestiv(stack
pointer SS:SP)carememoreazntotdeaunainformaiadeadresareavrfuluistivei
(topofstack) n2registre:
RegistrulIndicatordeStiv(SP StackPointer)
Registrulsegmentuluidestiv(SS StackSegment)
Dimensiuneastiveiestestabilitdeprogramator;nuaredimensiunifixe,cu
respectareaeventualelorrestricii(lai8086dimenisuneamaximasegmentuluide
stiveste64kB)
Lanscriereaunuiarticolnstivsespunecstivacrete seumplestivaise
actualizeazconinutuluiregistruluiSP(cuadresaefectivaultimuluiarticolnscrisn
stiv)
Convenii decretereastivei:
creterectreadresemici(conveniaIntel)
creterectreadresemari(conveniaMotorola)
226
SEGMENTULDESTIV SEGMENTULDESTIV(STIVA) (STIVA)
ValoareainiialaconinutuluiluiSPsenumeteadresadebazastivei (bazastivei)
anuseconfundacubazasegmentuluidestiv
TransferulntreUCPistivaconstruitnmemoriaprincipalsepoatefacendou
moduri:
automat (dectreunitateadecontrol),princodificareaanumitorintruciuni
prininstruciunispeciale pentrutransfercustiva(PUSH iPOP)
ntreUCPistivnusepottransferadatepeoctet
InstruciunilePUSHiPOPacceptdoaroperanzipe16i32debiiiarpointerul
vrfuluistiveisedecrementeaz(push),respectivincremeneat(pop) cuvaloarea2
227
NCRCAREASTIVEI NCRCAREASTIVEI PUSH PUSH
ValoareainiialaconinutuluiluiSPsenumeteadresadebazastivei (baza
stivei)anuseconfundacubazasegmentuluidestiv
00FE0h
00FE6h
00FE5h
00FE4h
00FE3h
00FFFh
valoare
AX
00FE0h
00FE6h
00FE5h
SS
00FFFh
SP
SP
SS
Stiv
32octei
Stiv
32octei
Stiv
ocupat
Stiv
liber
Vrfulstivei
Bazastivei
Bazasegmentului
destiv
PUSHAX
[SS:SP] =AX
SP=SP 2
228
EXTRAGEAREADINSTIV EXTRAGEAREADINSTIV POP POP
Extragereauneivaloridinstivnutergeconinutul locaieidememorierepectivecidoar
modificpoiteruldestivcarevaadresalocaiadememoriesuperioar
Totui,nutrebuiencercataccesareauneilocaiidinstivdeundeovaloareafostextras
cuPOP(SOialteaplicaiipotfolosizonadestivrmasliber)
Laurmtoareascrierenstivvecheavaloareestepierdut(memorieesterescris)
00FE0h
00FE6h
00FE5h
00FE4h
00FE3h
00FFFh
valoare
AX
SP
SS
Stiv
32octei
00FE0h
00FE6h
00FE5h
SS
00FFFh
SP
Stiv
32octei
Stiv
ocupat
Stiv
liber
Vrfulstivei
Bazastivei
Bazasegmentului
destiv
POPAX
AX=[SS:SP]
SP=SP+2
229
ACCESAREADATELORDINSTIVFREXTRAGEREALOR ACCESAREADATELORDINSTIVFREXTRAGEREALOR
Este posibilfolosind mecanismul de adresare indexatimplementat n cazul
microprocesoarelordinfamilia80x86
Pointeruldestivestemodificatcontinuu(offsetulvaloriidoritetrebuiecunoscut)
Stivarmnenemodificatdupaccesareadatelor
00FE0h
00FE6h
00FE5h
00FE4h
00FE3h
00FFFh
valoare
AX
SP
SS
Stiv
32octei
Vrfulstivei
Bazastivei
Bazasegmentului
destiv
PUSHAX
PUSHBX
MOVAX,[SP+2]
valoare
BX
00FE2h
00FE1h
00FE0h
00FE6h
00FE5h
00FE4h
00FE3h
00FFFh
valoare
AX
SP
SS
Stiv
32octei
valoare
BX
00FE2h
00FE1h
230
ALOCAREADINAMICAMEMORIEI ALOCAREADINAMICAMEMORIEI.SEGMENTULHEAP .SEGMENTULHEAP
Aplicaiilecomplexefolosescresursedememoriensemnateinecesitalocareai
eliberareamemorieinmoddinamic
Alocareadinamicesteposibilnlimbajeledeprogranaredenivelnalt
C :malloc free
C++ :new delete
Pascal :new dispose
Rutineledealocaredinamicamemorieioferurmtoarelefaciliti:
Permitprogramatoruluisdecidctspaiudestocaresevaalocaaplicaiei
Alocareaacestuispaiudememoriesefacedinamicpeparcursulexecuiei
programului
Eliminareadezavantajuluiocupriimemorieidectredatecenusuntfolosite
Cedareacontroluluispaiuluidememoriectresistemuldeoperare
231
ORGANIZAREAMEMORIEI ORGANIZAREAMEMORIEI
MEMORIACACHE MEMORIACACHE
232
MEMORIACACHE MEMORIACACHE
SRAM DRAM SDRAM Memoria
virtualHDD
CACHE
Capacitate Mic
164ko
Medie
2562Go
Medie
2564Go
Mic
510ns
Mediu
Mic
2ko2Mo
Timp de
acce
Mic
110ns
Mediu
1570ns
Mare
100Go1To
Mare
110ms
F.mic
0.55ns
Cost/
koctet
Mare Mediu Mic Mare
Problem:viteza redus deacces lamemoria principal (dispozitivele de memorie
suntmai lente dect microprocesorul)
Seconsider c unsistem funcioneaz ineficient,cumulte stri deateptare
pentru procesor,dac viteza procesorului este mai maredecel puin 3ori fa de
viteza cucaresetransmitdatele pe magistrala comun cumemoria
233
ROLULMEMORIEICACHE ROLULMEMORIEICACHE
Memoriilecache(tampon) Memoriilecache(tampon) suntfolositepentrustocareaunorfragmentedeprogram,
dateirezultateintermediare,frecventfolositedectreprocesor (pastreaz copii ale
unor zone linii dinmemoria intern)
Memoria cachenu este vizibil programatorului; prezenamemorieicachevafi
vizibilpentruutilizatornumaiprinsporireavitezeidelucrulaexecuiaprogramelor
Transferul unorzonedecodsaudatentrememoriaprincipalimemoriacachese
realizeazautomat,prinhardware,frinterveniautilizatorului subcontrolul
Unitaiidemamagement amemoriei (MMU)
Ideea debaz:aduce mai aproape deprocesor zonele dememorie cu probabilitate
mai maredeutilizare nviitorul apropiat
Memoriacacheesteamplasatntreprocesorimemoriaprincipal
234
STRUCTURLOGICCACHE STRUCTURLOGICCACHEb bIMEMORIAPRINCIPALE IMEMORIAPRINCIPALE
Bloc
Tag
Numr
Linie
Cache
LungimeBloc
(Kcuvinte)
Lungime
cuvnt
Adres
memorie
Bloc0
(Kcuvinte)
BlocM1
235
ROLULMEMORIEICACHE ROLULMEMORIEICACHE
Utilizareauneimemoriicache,demarevitez,ncaresepotstocaattinstruciuni,
ctidate,frecventfolosite,arecascopprincipalobinereauneivalorimicipentru
timpulmediudeaccesalUCPlamemorie
Existmaimulteniveluridecache:
NivelL1 memoriecacheinternUCP(deordinulsutelordeKBytes)
NivelL2memoriecacheextern(deordinulMbytes)
...
Indiferentdevariantadeprocesor,dimensiuneamemorieicachesencadreazcai
capacitatentreazeceaiamiapartedincapacitateamemorieiprincipale
Ideeadelacaresaplecatnintroducereamemorieicacheestebazatpe
proprietateaprogramelordeafolosireferinelocalizate(90%dintimp seexecut
10%dinprogram)
236
FUNC FUNCf fIONAREAMEMORIEICACHE IONAREAMEMORIEICACHE
AtuncicndUCPlanseazoadrespentruafaceacceslamemoriaprincipalse
examineazmainticoninutulmemorieicache
Dacainformaiaadresatestegsitncachesecitetedectreprocesorspunem
csaprodusunaccesreuitlacache(saupescurtoreuit,"cachehit cachehit")
Dacinformaiaadresatnuestegsitncacheseacceseazmemoriaprincipal
pentrucitireainformaieispunemcsaprodusoratare("cachemiss cachemiss")
Accesullacacheestecontrolatdirectdeprocesor
Accesullamemoriaprincipalsefacedeobiceisubcontrolulunitiidecomanda
memorieicache
Transferulntrememoriaprincipalicachenusefacenslaniveldecuvntcila
niveldeblocdecuvinte,bloccarecuprindeicuvntuladresatdeUCPinegsitn
cache
Performanamemorieicacheesteadeseamsuratcantitativprinaanumitulraport
dereuit("hitratio hitratio",notathr hr)
237
HITRATIO HITRATIOb bITIMPULDEACCESLAMEMORIE ITIMPULDEACCESLAMEMORIE
Valoareahrsecalculeazcaraportntrenumrultotaldereuiteinumrultotalde
accesrilamemorie(ratri+reuite)
Hitratiosemsoardeobiceiprinrulareaunorprogramedetestreprezentative
pentruclasedeprograme
Tipicvaloarealuihrestecuprinsnintervalul0,9<hr<1
Timpulmediudeacceslaomemoriesembunteteconsiderabildacseutilizeaz
memoriecache
Deexempludactimpuldeacceslamemoriacacheestede10ns,iarlamemoria
principalde100ns,iarhr=0,9(din10accesrinousuntreuite)rezultuntimp
deaccesmediude19ns:
9 10 100
19
10
acm
t ns
+
= =
238
ORGANIZAREAMEMORIEICACHE ORGANIZAREAMEMORIEICACHE
Unalgoritmspecialdeanticipareaducenmemoriacachesecveneledeprogram
careurmeazlogicuneiinstruciunidejaexecutate
Factoruldesuccesalmemorieicacheestelegatdedimensiunea,organizareaide
eficienaalgoritmuluidenlocuireainformaieidincache
Dinpunctuldevederealstructuriiiorganizriimemorieicacheexist3tehnici
principalenumitetehnicidemapare tehnicidemapare:
mapareasociativ mapareasociativ
maparedirect maparedirect
mapareasociativpeseturi mapareasociativpeseturi
239
MAPAREAASOCIATIV MAPAREAASOCIATIV
Organizareamemorieicachecaomemorieasociativ(adresabilprinconinut)
conducelavitezaiflexibilitateaceamaibun
Pentrucomemorieasociativestescumpiareungradmicdeintegrare,metoda
estedestulderarutilizatidoarpentruimplementareaunormemoriidemici
dimensiuni
ncadrulmemorieiasociativecefuncioneazcamemoriecachesestocheazatt
adreselecticoninutul(datele)unorlocaiidinmemoriaprincipal
nacestfeloricelocaiedincachepoatememoraoricarecuvntdinmemoria
principal
LalansareauneiadresedectreUCPaceastasecomparcutoate adresele
memoratenmatriceadeadreseamemorieicacheasociative.Daccompararea
combinaionalconducelaoreuit,datacorespunztoareaparelaieireisenscrie
nregistruldedate(pentruoperaiadecitire)
240
MAPAREAASOCIATIV MAPAREAASOCIATIV
Dacseproduceoratare,sefaceacceslamemoriaprincipalpentruaducereaunui
blocdedatecepoatefistocatoriundenmemoriacacheasociativ
Dacmemoriacacheesteplin,trebuiealesunmodprincaresseelimine
informaiacenumaiestenecesar
Pentrudeciziesefolosescalgoritmidenlocuire:
OprocedursimplestedetipFIFO(algoritmpebazdevrstancache =
primulintratprimulieit
LRU(LeastRecentlyUsed)
nlocuirealeatoare
LFU(LeastFrequentlyUsed).
241
ALGORITMIDE ALGORITMIDE NLOCUIRE NLOCUIRE
FIFO Esteunalgoritmpebazdevrstancache =primulintratprimulieit
ProceduraFIFOesteimplementatcaotehnicdetamponcircular(numiti
roundrobin)
Oproceduruordeimplementat
LRU (LeastRecentlyUsed) Senlocuietebloculdincachecareestecelmaivechii
lacarenusafcutaccesdecelmailungtimp
Pentruomapareasociatcudouseturiestefoarteuordeimplementat
FiecarelinieconineunUSEbit.Cndsefacereferirelaliniebituldeutilizare
estesetatpe1,altfelelrmnepe0.Cndseaduceunblocncachesevapune
nliniacubituldeutilizarecuvaloarea0.Estedeobiceiceamaieficientmetod
denlocuire
LFU (LeastFrequentlyUsed) nlocuieteblocullacaresaufcutcelemaipuine
referiri
Seimplementeazcuajutorulunorcontoareasociatefiecreilinii.
nlocuirealeatoare conducelaperformane(hr)mairedusedectLRUiLFU,dar
esteextremdeuordeimplementat
242
MAPAREAASOCIATIV MAPAREAASOCIATIV
243
MAPAREADIRECT MAPAREADIRECT
Mapareadirect estreosoluiemaiieftinpentrucpermiteimplementareacucu
ajutorulunormemoriiRAMstatice
Lamapareadirectadresadeabiiestelogicmpritndoucmpuri:
index index (celmaipuinsemnificativ),caredinpunctdevederelogicpoatefiprivitca
fiindformatdinaltedoucmpuri:bloc bloc i cuvnt cuvnt
irespectivetichet etichet
244
MAPAREADIRECT MAPAREADIRECT
Numruldebiipentruindex(kbii)determindimensiuneamemorieicache(2
k
cuvinteadresabileprinindex),valoareasaconstituindadresapentrumemoriacache
ncachesestocheaznunumaidatacorespunztoareciieticheta(formatdinak
bii)asociatdatei
Deasemenea,lngetichetmaipotfinscriseialteinformaiicumarfi:
bitceindicdacdatelesuntvalidesaulocaiaeprivitcafiindgoal
bitdeprotecielascrierealocaiei(protecialascriereesteutilatuncicnd
datelesereferlarutinealesistemuluideoperare)
245
MAPAREADIRECT MAPAREADIRECT
LacitirecmpuletichetaladreseidememoriedelaUCPestecomparatcueticheta
cuvntuluigsitncacheiavndaceeaiadresdeindexcuadresadememorie
Dacetichetelesepotrivesc,saprodusunevenimentdereuit(cachehit)
Potexista2
ak
cuvintecuacelaiindex,decistocabilenaceeailiniedememorie
cache
Dacseacceseazrepetatdousaumaimulteadresecuacelaiindex(distanantre
douasemeneaadresesuccesiveeste2
k
)factoruldereuitscademult
Moduldemaparedirectpoatefiexprimatanaliticca:
i=jmodulom
unde
i =numrullinieidincache;
j =numrulbloculuidinmemoriaprincipal;
m =numrultotaldeliniincache
246
MAPAREADIRECT MAPAREADIRECT
Tips:
Laratareseaduceunntregblocdecuvinte,cuaceeaiadresdebloc
Blocurilesuntalesecudimensiuneaputerealuidoi
ncachesestocheazosingurdatetichetaunuibloc,pentruceaesteaceeai
pentrutoatecuvinteleblocului
nexemplulurmtor:
Adresdememoriede32debii
Etichetpe8bii
Adresdeblocpe20debii
Adresdecuvntncadrulblocului,pe4bii
247
MAPAREADIRECT MAPAREADIRECT
248
POLITICIDESCRIERE POLITICIDESCRIERE
naintedenlocuireaunuiblocdincachetrebuieverificatdacafostmodificatdoar
ncache(pstrareacoereneidatelor)
Writethrough.scrierecupropagarectrenivelurileinferioaredememorie,notatpescurt
WT
Esteceamaisimpltehnic,daresteconsumatoaredetimp
Writeback,scriereprinactualizareanivelurilorinferioarenmomentulnlocuirii(eliminrii)
informaieidincache,notatpescurtWB
Scrierilesefacdoarncache,iseactualizeazunbit(Updatebit,sauDirtybit)asociat
linieidincache.
Writethroughwithbufferedwrite acelaiprincipiucalaWT,daradresaidataasociat
scrissestocheazntruntampondescrieredemarevitez
Scriereanmemoriaprincipalseefectueazindependentdeprocesor
Rezultovitezmare,darunhardwaresuplimentar.
ncazulunuievenimentdetipwritemissseutilizeaz:
Writeallocate(numitifetchonwrite) Bloculestencrcatncachedupevenimentulde
ratare(similarcuratarealacitire).
Nowriteallocate(numitiwritearound) Bloculestemodificatdoarpenivelulinferiori
nuestencrcatncache.
ARHITECTURASETULUIDEINSTRUC ARHITECTURASETULUIDEINSTRUCf fIUNI IUNI
250
ARHITECTURASETULUIDEINSTRUC ARHITECTURASETULUIDEINSTRUCf fIUNI(ISA) IUNI(ISA)
Tipurideinstruc Tipurideinstruc iuni iuni
Moduriledeadresare Moduriledeadresare
Complexitatea Complexitatea icaracteristicilesetuluideinstruc icaracteristicilesetuluideinstruc iuni iuni
Formatulsetuluideinstruc Formatulsetuluideinstruc iuni iuni
Implementareahardwareainstruc Implementareahardwareainstruc iunilor iunilor
Codificareaoperanzilorlafamiliadeprocesoare80x86 Codificareaoperanzilorlafamiliadeprocesoare80x86
251
ARHITECTURASETULUIDEINSTRUC ARHITECTURASETULUIDEINSTRUCf fIUNI IUNI
Arhitecturasetuluideinstruc Arhitecturasetuluideinstruc iuni iunispecificunuiprocesorcuprinde:
Setuldeinstruciuni (instruciunispecificelanivelmain)recunoscutede
procesor codmain
Tipuloperaiilor carepotfiefectuatedesetuldeinstruciuni
Tipurilededate carepotfimanipulatecuacesteinstruciuni(prelucratedeUAL)
Contextuli modul ncareacesteinstruciuniopereaz
Moduldeadresare aoperanzilorinstruciunilor
252
INTERFA INTERFAf fA A NTREHARDWARE NTREHARDWAREb bISOFTWARE ISOFTWARE
Q Q ISA ISAesteocomponentamainiidecalcul,vizibilprogramatoruluilaniveldelimbaj
deasamblare,componentcarerealizeazinterfaantresoftwareihardware
253
CARACTERISTICIALEISA CARACTERISTICIALEISA
Regularitate(ortogonalitate)
aceastcaracteristicimpunecafiecareinstruciunedinISAspoatoperacuorice
tipdedate,coninutenoricareregistrusauoricarelocaiedememorie,ispoatfi
adresateprinoricaremoddeadresare
Completitudine
aceastcerinarimpunecasetuldeinstruciuniscuprindtotsetuldeoperatori
disponibilintrunlimbaj
254
TIPURIDEINSTRUC TIPURIDEINSTRUCf fIUNI IUNI
Setuldeinstruciunireprezinttotalitateaoperaiilor(aritmeticeilogicemcu
registre,deacceslamemorie,etc.)pecarelepoateexecutaun microprocesor
CLASIFICARE CLASIFICARE
Instruciuniaritmetice
Instruciunilogice
Instruciunipentrutransferulinformaiei
Instruciunipentrudeplasareairotireadatelor
Instruciunideramificare(pentrucontrolulsecveneideprogram)
Instruciunipentrucontrolulprocesorului
255
INSTRUC INSTRUCf fIUNIARITMETICE IUNIARITMETICE
Asiguroperaiilearitmeticeasupraoperanzilor
Afecteazindicatoriidecondiii
Unsettipicdeinstruciuniaritmeticeesterezumatncontinuare(exemplepentru
Intel80x86):
Adunare ADDD,S
Adunarecuconsiderareatransportului ADCD,S
Scdere SUBD,S
Scderecuconsiderareamprumutului SBBD,S
Incrementare INCD
Decrementare DECD
Realizarecodcomplementar(C2) NEGD
Comparare CMPD,S
Not: Existoseriederestriciiprivindnaturaopreranzilordestinaie/surs
256
INSTRUC INSTRUCf fIUNIARITMETICE IUNIARITMETICE
nmulire(frsemn) MULS
nmulire(cusemn) IMULS
mprire(frsemn) DIVS
mprire(cusemn) IDIVS
Ajustarezecimal DAA(DupadunarenNBCD)
DAS(DupscderenNBCD)
Not:Dempritulsaudenmulitulsegsescimplicitnregistreleacumulatori
eventualDX.DinaceastcauzlaI8086existunsinguroperand.LaprocesoareIntel
pe32debii(delaI80386),operaiadenmulirecusemnantregilorpoateaveai
formacudoisautreioperanzi,cazncaresepotfolosiialteregistregenerale,dect
AXiDX.
257
INSTRUC INSTRUCf fIUNILOGICE IUNILOGICE
Asiguroperaiilelogicecuoperanziispecificai
Afecteazindicatoriidecondiii
Unsettipicesterezumatncontinuare(exemplepentruIntel80x86):
bIlogic ANDD,S
SAUlogic ORD,S
SAUExclusiv XORD,S
Complement(NU) NOTD
Testlogic TESTD,S
Prelucrareitestarepebit(dela386insus,lamicrocontrollere)
258
INSTRUC INSTRUCf fIUNIPENTRUTRANSFERULINFORMA IUNIPENTRUTRANSFERULINFORMAf fIEI IEI
Realizeaztransferul(copierea) informaieintreregistre,ntreregistreimemorie,
sauntreregistreiporturideI/O(dinsursndestinaie)
ngeneralnuafecteazvalorileindicatorilordecondiii
Potficlasificatein:
Instruciunidetransferdeuzgeneral
Instruciunidetransfercustiva
Instruciunipentrutransferuladreselor(pointeri)
InstruciunidetransferI/O.
PentrumicroprocesoarelecareauporturiledeI/Omapatenspaiuldeadresede
memorienuexistinstruciunispecializatedetransferdeI/O
259
INSTRUC INSTRUCf fIUNIPENTRUTRANSFERULINFORMA IUNIPENTRUTRANSFERULINFORMAf fIEI IEI EX.8086 EX.8086
Transferdeuzgeneral MOVD,S ;D S
XCHGD,S ;D S
Transfercustiva PUSHS/POPD
PUSHF/POPF
Transferuladreselor LEAr16,adr ;(r16) ad
LDSr16,adr ;r16Low [DS:adr]
;r16High [DS:(adr+1)]
;DSLow [DS:(adr+2)]
;DSHigh [DS:(adr+3)]
TransferdeI/O INAL,adr ;AL adr(port)
INAX,adr ;AL adr(port),16bii
INAL,DX ;AL (DX)
OUTadr,AL
OUTDX,AL
260
INSTRUC INSTRUCf fIUNIPENTRUDEPLASAREA IUNIPENTRUDEPLASAREAb bIROTIREADATELOR IROTIREADATELOR
Instruciunilepropriuzisededeplasarepotfiasociate
instruciunilorlogice,ncazulncaredeplasareaseefectueaznscopulizolrii
unorbiidintruncuvnt(pentruatestasauprelucraaceibii),sau
instruciuniloraritmetice(nmulire/mprirecuputerialelui2);ncazul
deplasriloraritmeticeseconservbituldesemnaloperanduluideplasat
Operaiilededeplasarepotfi:
deplasrinchise(rotaiistnga/dreapta)
deplasrideschise(stnga/dreapta)
Latoateoperaiilededeplasare,seinflueneazivaloareaindicatoruluidetransport
(Carry)
Deplasrilenchise(rotirile)suntdoardetiplogic.
261
INSTRUC INSTRUCf fIUNIPENTRUDEPLASAREA IUNIPENTRUDEPLASAREAb bIROTIREADATELOR IROTIREADATELOR
SALD,1
SHLD,1
SARD,1
SHRD,1
ROLD,1
RCLD,1
RORD,1
RCRD,1
262
INSTRUC INSTRUCf fIUNIDERAMIFICARE(CONTROLULPROGRAMULUI) IUNIDERAMIFICARE(CONTROLULPROGRAMULUI)
Determinmodificareasecveneiliniare,normale,deexecuieaunuiprogram,n
funciedecondiiilencaresaterminatexecuiauneiinstruciuniprecedente
Seasigurastfelramificaiilenprogram iimplementareadiferitelorstructuride
controlspecificatedeunanumitalgoritm.
Acesteinstruciuninuafecteazstareaindicatorilordecondiii,daruneledin
instruciuniledesaltsuntinfluenatedevaloareaconinutanindicatori.
Instruciunilederamificare(salt) potfi:
Necondiionate (apeldeprocedur (CALLop),salturiabsolute (JMPop),revenire
dinprocedur /return(RET))
Condiionate (Jcc Jumpifcondition=TRUE),apeluricondiionaledeproceduri
(CALLifcondition=TRUE)saurepetpncndcondiie=TRUE)
ExemplificripentruI8086:JMPop,CALLop,RET,Jccop
263
INSTRUC INSTRUCf fIUNIDERAMIFICARE(i8086) IUNIDERAMIFICARE(i8086)
Mnemonicelefolosesciniialeproveninddela:
Above,Below,Equal,Not,Greater,Less,Carry,Zero,Overflow,Parity(PEven,POdd),
Sign
TabelpentrutestareacondiieilascdereaadounumereA B :
264
INSTRUC INSTRUCf fIUNIPENTRUCONTROLULPROCESULUI IUNIPENTRUCONTROLULPROCESULUI
Controleazanumitefunciialeprocesorului,ceacioneazfieprinintermediulunor
indicatoridecontrol(sauregistredecontrol),fieprinintroducereaunorstrisau
semnalenecesarepentrusincronizareacuevenimenteleexterne
CMC reset
CLC reseteaz flag transport
STC set
NOP nicio operaie (delay)
CLD reset
STD set
CLI reseteaz flag ntreruperi
STI seteaz flag ntreruperi
HLT oprete
WAIT ateapt
ESC esc
LOCK blo
265
FORMATULGENERALALUNEIINSTRUC FORMATULGENERALALUNEIINSTRUCf fIUNI IUNI
Instruciunilesereprezintnmemoriaprincipalcaocteisuccesivi(unulsaumai
muliocteinfunciedetipuldeprocesor)
Scopulfiecreiinstruciunirecunoscutedeprocesorestesspecifice:
operaiacetrebuieexecutatdehardware
operanziiutilizai
loculundesestocheazrezultatuloperaiei
Tipurideoperanzi :
Registre
Adresedememorie
Dateimediate(constantenumerice)
Codoperaie Operand1 Operand2 Operand3
266
FORMATULGENERALALUNEIINSTRUC FORMATULGENERALALUNEIINSTRUCf fIUNI IUNI
Instruciuneaesteinterpretatcaa =a +b
apoatefiunregistrusauoadresdememorie
bpoatefiregistru,adresdememoriesauconstant(datimediat)
a ib nupotfisimultanadresedememorie
Existinstruciunicuoadres(carelasoperanduldestinaie/surs1implicit)
Existinstruciunicuzeroadresencareambiioperanzisuntimpliciiispecificain
coduloperaiei
Setuldeinstruciunialmicroprocesorului8086areoarhitecturdetipregistru
memorie,dubluadres(maximdoioperanzi)
opera opera ie ie operanzi operanzi
add add
destina destina ie ie i i
surs surs1 1
surs surs2 2
a a, , b b
267
NUMRDEADRESEEXPLICITE NUMRDEADRESEEXPLICITE
ProcesoarelemoderneiceleRISCau,spredeosebirede8086,unsetdeinstruciuni
cepermitefolosireaa3adreseexplicite
268
CLASIFICARE CLASIFICARE
ConformlegturiidintreorganizareaUCP inumruldeadresepeinstruciune,vom
puteancadracelemaimulteprocesoarentrunadinurmtoareletreicategorii:
organizarepebazderegistruacumulator(Ac) lacarepentrumajoritatea
operaiilorunuldintreoperanzisegseteimplicitnacumulator.Deasemenea
rezultatuloperaieiseacumuleaz nacestregistrucufunciespecial.
organizarepebazderegistredeutilizaregenerala(RG) lacareoperanziisunt
explicitlocalizaifienregistreleinternedeuzgeneral(frrestricii),fien
registrelesegmenticledinlocaiilememorieiprincipale(cuanumiterestricii).
organizaredetipstiv(ST) lacareoperanziisegsescimplicitnvrfulstiveiitot
aicisestocheazrezultatul.Existuneleprocesoaredetipstivcarefolosesc
doustive:unapentruoperaiiasupradatelorialtapentruoperaiiasupra
adreselor.
269
EXEMPLUDEINSTRUC EXEMPLUDEINSTRUCf fIUNI IUNI
Tiporganizare Formatinstruciune Comentariu
AC
addx
addr
Ac Ac+x
Ac Ac+[x]
Ac Ac+r
RG
addr1,r2,r3
addr1,r2
addr1,x
r1 r2+r3
r1 r1+r2
r1 r1+[x]
ST
pushx
add
VS [x]
Aduceprimele2valoridinstiv,le
adunistocheazrezultatulnVS
Notaii:
r coninutulregistrului
Ac registrulacumulator
xadresdememorie
[x] coninutuldelaadresax
VS vrfulstivei(SS:SP)
270
EXEMPLUDEOPERA EXEMPLUDEOPERAf fIE: IE:x=a*(b+c) x=a*(b+c)
Instruciunicudouadrese:
movr,b ;r b
addr,c ;r r+c
mulr,a ;r r*a
movx,r ;[x] r
Instruciunicustiva
pusha ;VS a(fieadr,adresacurentavrfuluistivei)
pushb ;VS b(laadresaadr2)
pushc ;VS c(laadresaadr4)
add ;VS b+c(stocatlaadresaadr2)
mul ;VS a*(b+c)(stocatlaadresaadr)
popx ;[x] VS(vrfulstiveivaaveaadresaadr+1,adicvafilapoziia
adresatnaintedeapelulinstruciuniipusha)
271
METODEDEACCESPENTRUINSTRUC METODEDEACCESPENTRUINSTRUCf fIUNI IUNI
SECVENTIAL SECVENTIAL :secitete instruciunea delaadresa urmtoare
PC = PC + lungimea_instruciunii_curente
ex:instruciuni aritmetice si logice
DIRECT DIRECT :secitete instruciunea delaadresa specificat ninstruciunea curent
PC =adresa_direct
ex:instruciuni desalt,apel derutine
RELATIV RELATIV :secitete instruciunea delaoadres relativ fa deadresa curent
(deplasamentul poate fi pozitiv sau negativ)
PC =PC + deplasament
ex:instruciuni desalt,apel derutine
INDIRECT INDIRECT : instruciunea curent specific adresa adresei instruciunii urmtoare
272
MODURILEDEADRESARE MODURILEDEADRESARE
Sereferlamodulncare,nformatulinstruciunii,sespecific adresa unuioperand
deprelucrat,adresadestocarearezultatului operaiei,sauadresaurmtoarei
instruciuni
Operanzii :
imediai(constantedefinitepeunulsaudoioctei)
nregistreinterneUCP
nmemorie(nlocaiispecificateprinadresalor)
nregistreportdeI/O(definitedeoadresunicdeport)
273
MODURILEDEADRESARE MODURILEDEADRESARE
ncazulunuiprogramexecutabil,valoareaoperanzilorestecalculatntreimomente
diferite,nfunciedetipulacestora:
nmomentulcompilrii/asamblriiprogramuluisurspentruoperanziiimediai
nmomentulncrcriinmemoriaprincipal pentruadresareadirectla
memorie
nmomentulexecuiei pentruoperanziiadresainregistre sauadresaiindirect
274
MODURILEDEADRESARE MODURILEDEADRESARE
PentrufiecaremoddeadresareUCcalculeazoadresefectiv(AE) aoperandului
Lamicroprocesoarelecumemoriasegmentat,AErezultcaunntregfrsemnce
reprezintdeplasamentul(adresarelativaoperandului)fadenceputul
segmentuluincareseafl
Intel8086memoriesegmentat(registresegmentCS,DS,SS,ES)
Intel8086:Adresafizic(AF) seobinedinadresaefectiva(AE)lacareseadaug
adresadesegment(AS) nmulitcu16,canecuaia:
AF =AS x2
4
+AE
275
MODURILEDEADRESARE MODURILEDEADRESARE
TIPURILEDEMODURIDEADRESARE TIPURILEDEMODURIDEADRESARE
Adresareimediat
Adresaredirect
Adresaredirectlaregistru
Adresaredirectlamemorie(absolut)
Adresareindirectprinregistre
Adresareindexatsaubazat
Adresareindexatibazat
Adresarerelativ
276
ADRESAREIMEDIAT ADRESAREIMEDIAT
Operandulapareexpilcitninstruciunecadatimediat(constantnumeric)
valoarealuiestefix
NunecesitutilizareadespaiudememoriesuplimentarnRAM
Flexibilitatelimitat;instruciuneapoatelucracuosingurvaloare
Lungimeaconstanteiestenacordcucellaltoperand
addal,0FFh
movax,3A70h
moval,5
movax,5
adr
adr+3
Memoria
principal
adr+2
adr+1
Cod_Op
Data(low)
{Data(high)}
Codoperaie Datimediat
Formatul
instruciunii
277
ADRESAREIMEDIAT ADRESAREIMEDIAT EXEMPLU EXEMPLU
nainte:
BX=xxxxh
dup:
BX=0005h
MOVBX,5
IP BB
0005
Memoriade
program
00
05
IP+1
IP+2
BX
278
ADRESAREDIRECT ADRESAREDIRECT
ADRESAREADIRECTLAREGISTRUeste,deregulimplicit(adresaregistruluieste
codificatncoduloperaiei la8086,pe3bii)
Adresaefectivaoperanduluiestenscrisnregistru
Esteoinstruciunescurt(nunecesitoperanziexplicii)
Timpdeaccesfoartemic;nunecesitcicludetransferpemagistral
addal,bl
movax,cx
divbl
MOVDS,AX
adr
adr+3
Memoriade
program
adr+2
adr+1
Cod_Op
extensie cod
Codoperaie
Formatul
instruciunii
1234
1234 AX
DS
8E
D8
279
ADRESAREDIRECTLAMEMORIE ADRESAREDIRECTLAMEMORIE(ABSOLU (ABSOLUT T) )
DS
AF
COD_OP
AS
DEPLASAMENT
Instruciune
OPERAND
AE
Adresareadirectlamemorie Adresareadirectlamemorie poatefiabsolut sauexplict
Adresaefectivaoperanduluiesteconinutninstruciunecadeplasamentn
segmentuldedatecurent
AdresareadirectlamemoriefoloseteimplicitregistrulDS
Prezintavantajulcsepoatemodificaconinutullocaieidememoriealcreioffset
econinutninstruciune(valoareaoperanduluinuestefix)
Laadresareadirectexplict,operandulinstruciuniiconinepointerulctrevariabila
dinmemorieadresat
280
ADRESAREDIRECTLAMEMORIE ADRESAREDIRECTLAMEMORIE
.data
sirdbadr.abs.
valdw26
.code
movBX,val
add CX,[100]
movAX,[ES:0F16]
;Definetensegmentuldedateovariabilpecuvnt
;PunenBXconinutullocaieidememorieadresatede
variabilaVAL.Laasamblare,expresiaVALvafinlocuit
cuovaloareegalcudeplasamentul(AE)ncadrul
segmentuluidedatecurent
;Deplasamentexplicitncadrulsegmentuluidedatecurent
;Adresareexplictauneilocaiidinextrasegmentulde
date
281
ADRESAREABSOLUT ADRESAREABSOLUT EXEMPLU EXEMPLU
nainte:
BX=xxxxh
val=001Ah
dup:
BX=001Ah
val=001Ah
CS:IP 8B
001A Memoria
principal
1E
08
CS:(IP+1)
CS:(IP+2)
BX
1A
00
DS:0008
DS:0009
MOVBX,VAL
Segmentuldecod
Segmentul de date
00 CS:(IP+3)
codoperaie
deplasament(operand)
AS DS
AF
AE
282
ADRESAREINDIRECT ADRESAREINDIRECT
Instruciuneaconine,caoperand,oadres(nmemorie sauregistre)lacarese
gseteAEadatelorcucarevaoperainstruciunealaexecuiasa
ncazuladresriiindirecteprinregistre adresriiindirecteprinregistre,instruciuneacodificadresaunuiregistru
internalUCPceconineAEaoperanduluidinmemorie
Registrefolosite:BX,SI,DI
Registrudesegmentimplicit:DS
DS
AF
AS
BX/SI/DI
Instruciune
OPERAND
AE
COD_OP
283
ADRESAREINDIRECT ADRESAREINDIRECT
movAX,[BX]
xchgBX,[SI]
add byte ptr [SI],2
add[SI],2
;Punenmemorieconinutullocaieidememoriedela
adresaefectivdatdeBX
;InterschimbconinutulregistruluiBXcuconinutuldin
locaiadememoriecudeplasamentuldatdeSI
;Adunvaloarea2laoctetulaflatlaadresadatdeSI
;Instruciuneincorect;poatefiinterpretatcaadun2la
octetuldelaadresadatdeSI sauadun2lacuvntul
delaadresadatdeSI.Asamblorulvageneraunmesaj
deeroare.
284
ADRESAREINDIRECTPRINREGISTRE ADRESAREINDIRECTPRINREGISTRE
naintedeexecuie:
BX=A1B2h
SI=100h
mem(100h)=1234h
dupexecuie:
BX=1234h
SI=100h
mem(100h)=A1B2h
CS:IP 87
A1B2/1234 Memoria
principal
1C CS:(IP+1)
BX
34/B2
12/A1
DS:0100
DS:0101
XCHGBX,[SI]
AS DS
AF
AE
0100 SI
285
ADRESAREAINDEXAT ADRESAREAINDEXAT
AEaoperanduluisedeterminadunndconinutulunuiregistruindex(SI,DI) saua
unuiregistrudebaz(BX,BP) cuundeplasament(constantnumericpe8sau16
biispecificatncuvntuldeinstruciune)
Prinmodificareaconinutuluiregistruluiindex(ex,incrementare)aceeaiinstruciune
poateadresalocaiidememoriediferite
ADRESAREINDEXAT ADRESAREINDEXAT :SI,DI/registrudesegmentimplicit:DS
ADRESAREBAZAT ADRESAREBAZAT :BX,BP/registrudesegmentimplicit:DS,respectivSS
DS/SS
AF
AS
SI/DI/BX/BP
Instruciune
OPERAND
AE
COD_OP deplasament
286
ADRESAREAINDEXAT ADRESAREAINDEXAT
Adresareaindexatesteutilpentruareferielementeleunuitabeldevalori (vector)
Adresadenceputatabelului esteconinutncodulinstruciunii(operand)
Deplasamentulelementului relativlanceputultabeluluiestedeterminatprintrun
indice,coninutnregistrulindex
Ex:implementareauneibucledeprogramceadreseaznmodsuccesivelementele
unuivectorpentruadeterminasumalorprinsimplaincrementarearegistruluiindex
Numrulderegistreindexdintrunprocesorindicnumruldetablouripoteniale
caresepotadresanmemorie,iarmrimeadeplasamentuluidetermindimensiunea
maximatabloului.
Numrulregistrelorindexesteuncriteriudeperformanpentrumicroprocesoare
287
ADRESAREAINDEXAT ADRESAREAINDEXAT
.data
var1dw1
var2dw2
TABdw10dup(0)
.code
movSI,6
movAX,5E2h
movTAB[SI],AX
mov[SI+TAB],AX
movoffsetTAB,BX
mov[BX+6],AX
movAX,[BX]
movAX,[BP]
;Defineteuntabloude10elemente
;ncarcregistrulindexcuindiceleelementuluicese
doreteafiaccesat
;MutnAXal7leaelementdintabel
;Instruciuneechivalent
;SencarcnBXdeplasamentulluiTABdupcarese
foloseteadresareabazatpentruaaccesaal7lea
elementdintablou;acesteinstruciuniauacelaiefect
caivarianteleprecedente
;Adresareindirect
;Adresarebazatcudeplasamentnul
288
ADRESAREINDEXAT ADRESAREINDEXAT
nainte:
AX=05E2h
SI=0005h
TAB[7]=0000h
dup:
AX=05E2h
SI=0005h
TAB[7]=05E2h
MOVTAB[SI],AX
CS:IP 89
05E2
Memoria
principal
44 CS:(IP+1)
AX
00

DS:0004
DS:000A
AS DS
AF
AE
0005 SI
04
CS:(IP+2)
E2
05 DS:000B
TAB[0]
289
ADRESAREAINDEXAT ADRESAREAINDEXATb bIBAZAT IBAZAT
AEesteformatprinadunareaconinutuluiunuiregistrudebaz(BX,BP),cucelal
unuiregistruindex(SI,DI) icuundeplasament(constantnumericpe8sau16
biispecificatncuvntuldeinstruciune)
Registreledesegmentimplicitesunt:
DS,dacsefolosetecaregistrudebazBX
SS,dacsefoloseteBPncombinaiecuSisauDI
DS/SS
AF
AS
BX/BP
Instruciune
OPERAND
AE
COD_OP deplasament
SI/DI
290
ADRESAREINDEXAT ADRESAREINDEXATb bIBAZAT IBAZAT
iniial :
AX=xxxxh
BX=0100h
SI=0018h
MEM=2FB9h
final:
AX=2FB9h
BX=0100h
SI=0018h
MEM=2FB9h
movax,[bx][si]
movax,[bx][si][7]
movax,[bx+si+7]
movax,[bp+di].7
CS:IP 8B
05E2
Memoria
principal
40 CS:(IP+1)
AX
00

DS:0000
DS:011F
AS
AF
DS
AE
0100
SI
07
CS:(IP+2)
B9
2F DS:0120
0018
BX
291
ADRESAREAEXPLICIT ADRESAREAEXPLICIT
Uzual,acestmoddeadresaresefolosetelaimplementareainstruciunilordesalt
relativnprogram.
Adresarerelativlacontoruldeprogram,PC(IP):AE=[PC+d]
Operandulesteoconstant(pozitivsaunegativ) offset reprezentnd
diferenantreadresainstruciuniicurenteiainstruciuniiurmtoare
Operandulnuesteexplicitncuvntuldeinstruciuneciestecalculatdectre
programulasamblor
CS
AF
AS
Instruciune
OPERAND
AE
COD_OP offset
IP
d()
AE=[IP+d]
292
AD ADRE RESARERELATIV SARERELATIV
CS:(IP+0)
CS:(IP+1)
CS:(IP+2)
CS:(IP+3)
CS:(IP+4)
CS:(IP+5)
CS:(IP+6)
CS:(IP+7)
CS:(IP+8)
CS:(IP+9)
CS:(IP+10)
CS:(IP+11)
CS:(IP+12)
CS:(IP+13) C3
Memoriade
program
IP IP+5
saltpozitivcu+5
8B
F6
EB
00
10
0F
05
7E
00
20
83
DB
8B movbx,ax
TST:cmpbx,20h
jleERR
addbx,10h
jmpTST
ERR:movax,bx
saltnegativcu10(F6h)
IP IP+5
293
AD ADRE RESAREAEXPLICIT SAREAEXPLICIT
Toatemoduriledeadresarefolosescunregistrudesegmentimplicitpentrucalculul
adreseiefective:
DS,ntoatemoduriledeadrsearecenuimplicregistrulBP
SS,nmoduriledeadresareceimplicregistrulBP
Registrulimplictpoatefimodificatprinfolosireaprefixelor(desegment) prefixelor(desegment)
Unprefix prefix esteunoctetplasatnainteacoduluiinstruciuniicemodificamodulimplicit
deexecuieainstruciuniicurente
Instruciune
COD_OP OPERANZI PREFIX
Sintaxinstruciune Codificareinstruciune
movax,[bx+7] 8B4707
movax,es:[bx+7] 268B4707
294
MODURIDEADRESAREPE32DEBI MODURIDEADRESAREPE32DEBIf fI I
ADRESAREBAZAT ADRESAREBAZATb bIINDEXATCUFACTORDESCAL IINDEXATCUFACTORDESCALb bIDEPLASAMENT IDEPLASAMENT
Adresaefectivaoperanduluiesteformatdinconinutulunuiregistrudebazla
careseadaugconinutulunuiregistruindexnmulitcuunfactordescal,lacarese
poateadaugaundeplasament
Factoruldescal efoarteutillaparcurgereatablourilordedatepe2sau4octei,
permindcaindicelelogicaltablouluiscoincidcuconinutulregistruluiindex
Factoruldescalecodificatpe2bii(cuvalorileposibile0,1,2sau4)ncadrul
octetuluiSIB(ScaledIndexByte) dincuvntuldeinstruciune
Exemple:
MOVEAX,[EDI*4][EBX+10h]
MOVECX,[EDI*2][EBP]
MOVEAX,TAB[ESI*4][EBX+10h] ;EDIvaconineindiceleelementuluidintrun
tabloudedatedouble
MOVEDX,TAB[ESI][EBX+5] ;pentruadresareaelementuluik,ESI=4*k
295
MODURIDEADRESAREPE32DEBI MODURIDEADRESAREPE32DEBIf fI I
ADRESAREBAZAT ADRESAREBAZATb bIINDEXATCUFACTORDESCAL IINDEXATCUFACTORDESCALb bIDEPLASAMENT IDEPLASAMENT
nacestcaz,adresasegmentnumaiesteconinutulregistruluidesegmentciadresa
debazconinutndescriptoruldesegmentacruiadresedatderegistrul
selectordesgment
Adresadebaz
AF AS
EBX/EBP
Instruciune
OPERAND
AE
COD_OP SIB
ESI/EDI
deplasament
296
ADRESAREPE32DEBI ADRESAREPE32DEBIf fI(MODPROTEJAT) I(MODPROTEJAT)
297
ARHITECTURARISC ARHITECTURARISC REDUCEDINSTRUCTIONSETCOMPUTER REDUCEDINSTRUCTIONSETCOMPUTER
Observaii :
statisticile arat cadeiprocesorul aremulte tipuri deinstruciuni, programatorii
obinuiesc s foloseasc unsetlimitat deinstruciuni simple
unsetcuinstruciuni complexe necesit oUCPdecomplexitatehardware
ridicat,ce lucreaz laofrecven mai scazut
creterea decomplexitate datorit setului extins deinstruciuni nu sejustific n
cele mai multe cazuri
Ideea :
s sesimplifice lamaximumUCPiimplicitsetul deinstruciuni astfel ncat
procesorul s lucreze laofrecven deceas ct mai mare
Principiu RISC:
sacrific totpentru vitez
programatorul slucreze mai mult dar programul rezultat sa fiemai eficient din
punct devedere altimpului deexecuie
298
COMPARA COMPARAf fIE IECISC CISC / / RISC RISC
C Complex omplex I Instruction nstructionS Set etC Computer omputer
Sauimpusntrunmomentcnd
memoriaeralentifoartescump
Instruciunicuoperanzinmemorie
Densitatemareacoduluinmemorie
Formatdelungimevariabilpentru
instruciuni
Unitatedecontrolmicroprogramat
(microcodat)flexibil
Setcomplex(extins)deinstruciunii
multemodurideadresare
Instruciunicomplexe
R Reduced educedI Instruction nstructionS Set etC Computer omputer
Sereferlacomplexitatea
instruciunilor,NUlanumrullor
Acceslamemorielimitatilent
Densitatemicacodului(programul
ocupmaimultspaiudememorie)
Formatdelungimefixpentru
instruciuni
Unitatedecontrolsimplimplementat
subformcablat
Relativpuinetipurideinstruciunii
puinemodurideadresare
Instruciunisimple
299
COMPARA COMPARAf fIE IECISC CISC / / RISC RISC
C Complex omplex I Instruction nstructionS Set etC Computer omputer
Necesitfolosireaunorcircuitelogice
complexepentruimplementare
Implementeaztehnicipipeline
rudimentare
Unnumrrelativmicderegistren
interiorulUCP
Existainstruciunicomplexedemare
eficien,daruneoriacesteasuntrar
utilizatedectrecompilatoare
R Reduced educedI Instruction nstructionS Set etC Computer omputer
Hardwaresimplificat tehnicide
pipelineing(execuianparalela
operaiilor)maiuordeimplementat
Execuiainstruciunilorntrunsingur
cicluprintehnicipipelineeficiente
Unnumrrelativmarederegistren
interiorulUCP
Utilizareacompilatoarelor
optimizatoare pentruaoptimiza
performanelecoduluiobiect.
300
RISC/CISC RISC/CISC AVANTAJE AVANTAJEb bIDEZAVANTAJE IDEZAVANTAJE
RISC RISC
E frecvenamai maredelucru
E mai multe instruciuni executate n
unitatea detimp
E oblig programatorul s lucreze eficient
E programexecutabil mai scurt (timp i
spaiu)
CISC CISC
E uordeprogramat,timp mai scurt
pentru programare
E compilatoarele delimbaje denivel nalt
sescriu mai usor
E potfi implementate uorstructuri
complexe dedatesi deprogram
RISC RISC
E dificil deprogramat lanivel de
asamblare,timp mai lungpentru
dezvoltarea unei aplicaii
CISC CISC
E timp deexecuie mai marepentru
programe
E codmai lung
E unitate central mai complex,care
consum mai mult
C Concluzie:
combinarea celor 2tehnici incadrul aceluiai procesor:
+arhitectura Pentium:RISCninterior,CISCnexterior
301
CODIFICAREAINSTRUC CODIFICAREAINSTRUCf fIUNILOR IUNILOR
Codificareainstruciunilorpresupuneasocierealorcuuncodnumericunic codnumericunic numit
uneoriicuvntdeinstruciune
Codificareaaminstruc minstruc iuni iuniimplicdeciimplementareaunorcoduripelungimede
n=log n=log
2 2
(m)bi (m)bi i i
Principaleleaspectenproiectareaarhitecturiiunuisetdeinstruciuni:
Implementareahardware
Lungimeainstruciunilor
Flexibilitateasetuluideinstruciuni
302
IMPLEMENTAREAHARDWAREAINSTRUC IMPLEMENTAREAHARDWAREAINSTRUCf fIUNILOR IUNILOR
Codificareainstruciunilornecesitimplementarehardware implementarehardware :ex.decodificatoare
pentruseleciaicomandacircuitelorcombinaionalecerealizeazfunciilei
operaiiledorite
Unsetdeminstruc minstruc iuni iuniimpliccoduripelungimeden=log n=log
2 2
(m)bi (m)bi i i(oinstruciune
peoctetpoatecodificapnala256instruciunidiferite)
Divizareacoduluiinstruciuniinsub sub coduri coduri instruc instruc iunile iunile suntgrupatepefamilii
(tipurideoperaiiefectuate)pentrusimplificareacircuitisticiideimplementare
hardware
MOVAX,BX MOVAX,BX iMOVCX,DX MOVCX,DX suntinstruciunidiferitedarambeletransferdatentre
registreleprocesorului.Diferenaconstnoperanziisursidestinaie
Cmpcodificare
instruciune
Cmpcodificare
operanzi
Cuvntdeisntruciune
303
IMPLEMENTAREAHARDWAREAINSTRUC IMPLEMENTAREAHARDWAREAINSTRUCf fIUNILOR IUNILOR
Exempludeimplementarehardwareacircuituluidedecodificarea Exempludeimplementarehardwareacircuituluidedecodificarea unuisetde8 unuisetde8
instruc instruc iuni iuni
Specificaiilesetuluideinstruciuni :
8instruciuni:MOV,ADD,SUB,MUL,DIV,AND,OR,XOR
fiecareinstruciuneaccept2operanzi:sursidestinaie
operandulsursdesemneaz4entiti:registreleAX,BX,CX,DX
operanduldestinaiedesemneaz4entiti:registreleAX,BX,CX,DX
Configuraiacircuituluidedecodificare :
undecodificatorcu3liniideadrespentrudecodificareacleloroptinstruciuni
doudecodificatoare2/4pentruseleciaregistrelorsursidestinaie
necesituncodpe7bii
304
IMPLEMENTAREAHARDWAREAINSTRUC IMPLEMENTAREAHARDWAREAINSTRUCf fIUNILOR IUNILOR
0 0 0 0 0 0 1
A B C
Q
0
Q
1
Q
2
Q
3
Q
4
Q
5
Q
6
Q
7
B
A Q
0
Q
1
Q
2
Q
3
D
E
C
O
D
E
R
3/8
DECODER
2/4
B
A Q
0
Q
1
Q
2
Q
3
DECODER
2/4
U
A
L
MOV
ADD
SUB
MUL
DIV
AND
OR
XOR
AX
R
e
g
i
s
t
r
e

i
n
t
e
r
n
e

U
C
P
BX
CX
DX
AX
BX
CX
DX
M
a
g
i
s
t
r
a
l
a

i
n
t
e
r
n

U
C
P
Selecie
registru
Seleciecircuitistic
pt.execuie
operaie
Codinstruciune(Cod_operaie:Operanzi)
305
LUNGIMEAINSTRUC LUNGIMEAINSTRUCf fIUNILORVS.COMPLEXITATE IUNILORVS.COMPLEXITATE
Lungimeauneiinstruciunitrebuiesfieunmultipluntreg(nuneapratpar)al
unitiideadresareamemoriei
ProcesoareleRISCacceseazmemorianbocuride32sau64debiiaanct
codificareainstruciunilorsevafacepeminimk*32debii(cuk,numrntreg)
8086poateaccesamemoriapeoctet n=k*8
Tipic,instruciunileprocesorului8086auolungimedela1la16octei
Unaldoileafactorcecondiioneazlungineainstruciunilorestedimensiunea
operanzilor
LaarhitecturileRISCtoioperanziisuntconinuiexplictncodulinstruciunii.Aceste
arhitecturiutilizeazinstruciunidelungimefix cepermitodecodificaremaiuoar
nstructuridetippipeline
ArhitecturileCISC(8086)implementeazinstruciunidelungimevariabil,ceeace
permiteoptimizareaacestora(astfel,instruciunilefrecventevorficodificatepeun
numrmaimicdeoctei).ncontrapartid,tehnicilepipelinesuntdificilde
implementati,caurmare,rudimentare
306
FORMATULUNEIINSTRUC FORMATULUNEIINSTRUCf fIUNI80x86 IUNI80x86
PREFIX PREFIX
[04octei]
modificmodul
deexecuiea
uneiinstruciuni
standard
CODOPERA CODOPERAf fIE IE
[12octei] implict0Fh
defineteoperaiarealizatla
execuiainstruciunii(dacestepe
2octei,primulreprezintprefixul
deextensieacodului)
MOD MOD REG REG R/M R/M
[1octet] opional
specificmoduldeadresarei
dimensiuneaoperanzilor
(doarlainstruciunilece
folosesccaoperanziregistre
saumemoria)
SIB SIB
[1octet] opional
doarlainstruciunile
cefolosescmodulde
adresareindexati
bazat
DEPLASAMENT DEPLASAMENT
[0,1,2sau4octei]
specificdeplasamentul
pentrucalculadresei
efectiveaoperanzilordin
memorie
DATIMEDIAT DATIMEDIAT
[0,1,2sau4octei]
esteoconstant
numericpentru
instruciunilecu
operanziimediai
307
CODIFICAREAINSTRUC CODIFICAREAINSTRUCf fIUNIILA80x86 IUNIILA80x86
8086executoperaiicodificatepe1sau2octei:
codopera codopera iestandard iestandard 1octetcepermitecodificareaunuisetdepnla256 de
operaiidiferite(clasedeinstruciuni)
codopera codopera ieextins ieextins 1octetstandard+1octetdeprefix (implicit0Fh)cepermite
extensiasetuluideinstruciunilaunnumrde512 clase
Ex: CoduloperaieideadunareADD ADD
0 0 0 0 0 0 d s
ADDopcode
d directionbit
d=0:destinaiaestelocaiede
sauregistru(fc.deR/M)
d=1:destinaiaesteunregistru
s sizebit
s=0:operanzipe8bii
s=1:operanzipe16/32bii
308
CODIFICAREAOPERANZILORLA80x86 CODIFICAREAOPERANZILORLA80x86
Octetul mod mod reg reg r/m r/m specificmoduldeadresare
CmpulREGcodificunuldintreregistreleUCPcepoatefisurssaudestinaien
funciedebituldedirecie(d d)dincoduloperaiei;registrulesteadresatpeoctetsau
cuvntfunciededimensiuneaoperanzilor(specificatdebituls s dincoduloperaiei)
CmpulMODspecificnoduldeadresare
CmpulR/M (mpreuncuMOD)specifictipulceluidealdoileaoperandal
instruciunii(registrusaulocaiedememorie)imoduldeadresareaacestuia
MOD REG R/M
00 adresareindirect
01 adresareindexat8bitoffset
10 adresareindexat16bitoffset
11 adresaredirectlaregistru
000 AL/AX
001 CL/CX
010 DL/DX
011 BL/BX
100 AH/SP
101 CH/BP
110 DH/SI
111 BH/DI
309
CODIFICAREAOPERANZILORLA80x86 CODIFICAREAOPERANZILORLA80x86
Octetul SIB SIB ScaledIndexByteefolositncazulmoduluideadresarebazati
indexatcufactordescalspecificmoduluiprotejatlaprocesoarelepe32debii
CmpulINDEXspecificregistrulindexfolosit
CmpulBAZspecificregistruldebaz
CmpulFACTORspecificunfactordemultiplicareavaloriiconinutnregistrul
index(poateluavalorile0,1,2sau4)
FACTOR INDEX BAZ
310
EXEMPLEDECODIFICAREAOPERA EXEMPLEDECODIFICAREAOPERAf fIEIDEADUNARE IEIDEADUNARE
0 0 0 0 0 0 0 0
ADDCL,AL=00C1hsau 02C8h
1 1 0 0 0 0 0 1
CodOperaie Mod Reg R/M
0 0 0 0 0 0 1 1
ADDAX,BX=03C3h
1 1 0 0 0 0 1 1
CodOperaie Mod Reg R/M
0 0 0 0 0 0 1 1
ADDAX,[SI+9]=034609h
0 1 0 0 0 1 1 0
CodOperaie Mod Reg R/M
0 0 0 0 1 0 0 1
Deplasament
1 0 0 0 0 0 0 0
ADDBL,10=80C30Ah
1 1 0 0 0 0 1 1
CodOperaie Mod Reg R/M
0 0 0 0 1 0 1 0
Datimediat
NTRERUPERI NTRERUPERIb bIEXCEP IEXCEPf fII II
312
NTREUPERI NTREUPERIb bIEXCEP IEXCEPf fII II
Apeluldeprocedur.Utilizareastiveinapeluriledeprocedur
Rolulntreruperilor.Tipuridenterupere
Excepii(nteruperisoftware)
Cereridentrerupere.TransefruldedatedelainterfeeleI/O
Identificareaivectorizareantreruperilor
Controleruldentreruperi
Secvenadetratareauneinteruperi
Redirectareantreuperilorsoftware
Programareanteruperilorhardware
313
APELULDEPROCEDUR APELULDEPROCEDUR
Oprocedur esteosecvendeinstruciuniapelatntrunpunctalalteia,executat,
dupcarearelocrevenireansecvenaapelant,laadresaimediaturmtoarecelein
caresafcutapelarea
Laapeluldeprocedurunitateadecontrolsalveazautomatnstiv adresade
revenire coninutnregistruluicontordeprogram(CS:IP)
DupsalvaresefacencrcareaPC(IP)cuadresalacaresefacesaltul (adresaunde
ncepeprocedura)
ProcedurasetermincuoinstruciunedesaltdetipRET (RETurn)princarese
producencrcareaautomataPCcuadresaderevenirelaprogramulntrerupt
Altesalvri/restaurrialevariabilelorcontextuluintreruptsevorefectuadectre
programatorncadrulprocedurii,prinintermediulunorinstruciunidenscriere/
extrageredinstiv(atenieLIFO):PUSH,POP
314
APELULDEPROCEDUR APELULDEPROCEDUR
PP PROC1 PROC2
;instrPP b:
b+1:
pushAX
pushBX
c:
c+1
pushAX
pushDX
.
.
.
;instrP1 ;instrP2
a: CALL PROC1
.
.
.
.
.
.
a+3: instrPP_nxt bb: CALL PROC2 ;instrP2
.
.
.
bb+3: instrP1_nxt
.
.
.
end bb+4:
bb+5:
popBX
popAX
RET cc:
popDX
popAX
RET
t
2

t
0

t
1

t
4

t
3

315
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x :
x1:
x2:
x3:
x4:
x5:
x6:
x7:
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x
PC=a
316
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
x1:
x2 :
x3:
x4:
x5:
x6:
x7:
AL
AH
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2
PC=a b
317
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
x1:
x2:
x3:
x4 :
x5:
x6:
x7:
BL
BH
AL
AH
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2x4 ...
PC=a b b+1 ...
318
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
x1:
x2:
x3:
x4 :
x5:
x6:
x7:
BL
BH
AL
AH
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2x4...x4
PC=a b b+1...bb
319
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
x1:
x2:
x3:
x4:
x5:
x6 :
x7:
AL
AH
BL
BH
AL
AH
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2x4...x4x6
PC=a b b+1...bbc
320
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
x1:
x2:
x3:
x4:
x5:
x6:
x7: DL
DH
AL
AH
BL
BH
AL
AH
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=x8:
SP=x x2x4...x4x6x8 ...
PC=a b b+1...bbc c+1 ...
321
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
x1:
x2:
x3:
x4:
x5:
x6 :
x7:
AL
AH
BL
BH
AL
AH
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2x4...x4x6x8...x6
PC=a b b+1...bbc c+1...cc
322
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
x1:
x2:
x3:
x4 :
x5:
x6:
x7:
BL
BH
AL
AH
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2x4...x4x6x8...x6 x4
PC=a b b+1...bbc c+1...cccc+1
323
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
x1:
x2:
x3:
x4 :
x5:
x6:
x7:
BL
BH
AL
AH
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2x4...x4x6x8...x6 x4x4
PC=a b b+1...bbc c+1...cccc+1cc+2
324
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
x1:
x2:
x3:
x4 :
x5:
x6:
x7:
BL
BH
AL
AH
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2x4...x4x6x8...x6 x4x4x4
PC=a b b+1...bbc c+1...cccc+1cc+2bb+1
325
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x:
x1:
x2 :
x3:
x4:
x5:
x6:
x7:
AL
AH
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2x4...x4x6x8...x6 x4x4x4x2
PC=a b b+1...bbc c+1...cccc+1cc+2bb+1bb+2
326
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x :
x1:
x2:
x3:
x4:
x5:
x6:
x7:
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2x4...x4x6x8...x6 x4x4x4x2 x
PC=a b b+1...bbc c+1...cccc+1cc+2bb+1bb+2bb+3
327
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x :
x1:
x2:
x3:
x4:
x5:
x6:
x7:
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2x4...x4x6x8...x6 x4x4x4x2 x x
PC=a b b+1...bbc c+1...cccc+1cc+2bb+1bb+2bb+3bb+4
328
APELULDEPROCEDUR APELULDEPROCEDUR
adresa: MP(Stiva)
x :
x1:
x2:
x3:
x4:
x5:
x6:
x7:
PP
start:
...
a: callProc1
<iPp_nxt>
...
endstart
Proc1
b: pushAX
pushBX
...
bb: callProc2
<iP1_nxt>
popBX
popAX
ret
Proc2
c: pushAX
pushDX
...
cc: popDX
popAX
ret
SP=
SP=x x2x4...x4x6x8...x6 x4x4x4x2 x xx
PC=a b b+1...bbc c+1...cccc+1cc+2bb+1bb+2bb+3bb+4a+1
329
NTRERUPEREAUNUIPROGRAM NTRERUPEREAUNUIPROGRAM
n timpul rulrii programelor pot aprea unele evenimente neobinuite (excepii) sau
semnaleexterneprovenitededispozitivedeI/O
Acesteevenimentepotconducelasuspendareatemporar aprogramuluiaflat
curentnexecuie
Toateevenimenteleprodusedecondiiineobinuite/neateptatepentruprogramul
curentnexecuiesuntnumitelamodulgeneral" ntreruperi ntreruperi
Fiecreintreruperiiesteasociatuncodnumititipsau nivelalntreruperii
Procesorul8086accept256niveluridentrerupere
ntreruperileproducntrerupereaprogramuluiideviereactreorutinspecialde
tratareaevenimentului"ntreruptornumitrutindetratare rutindetratare anreruperii(RTI)
MecanismulprincaresefaceacesttransferctreRTIestedetipapeldeprocedur
Dupexecuiarutineirespective,programulrevinelaexecuiainstruciunilor
programuluiiniialdinpunctulncaresaprodusevenimentul
330
TIPURIDE TIPURIDE NTRERUPERI NTRERUPERI
Cereride Cereri de ntrerupere ntrerupere
suntevenimentegeneratedinexteriorulUCP carecertratare
suntsemnaleelectriceaplicatelaintrridedicatealemicroprocesorului(INT,NMI)
fiind astfel numiteintreruperihardware
suntasincrone cuprogramulrulat(decivorfiarbitratefiedeuncontrolerde
ntreruperifiedensuiprocesor)
sursedentreruperi :
echipamenteperiferice carecerserviciidelaUCP(cereredetransferdedate,
sauinformricuprivirelastareaperifericului)mouse,tastatur,HDD,reea
circuitespecializate pentrusupraveghereafuncionriinormaleacomponentelor
hardware(eroaredeparitatelacitireamemoriei,eroaredeparitatepe
magistral,cdereaiminentatensiuniidealimentareetc.)
331
TIPURIDE TIPURIDE NTRERUPERI NTRERUPERI
nteruperisoftware nteruperisoftware
evenimentelentreruptoare(carecertratare)suntgeneratedeinstruciunile
programuluirulat
folosite pentru apelul unor funciialesistemului deoperare apeluri sistem (INT
21H) saualesistemuluideintrare ieire (ntreruperiBIOS)
suntdecisincrone cuprogramulcevafintrerupt
producdevieri/capcane("traps")
Excep Excep ii ii
indicsituaiideexcepiecumarfi:
ntlnireaunorinstruciunidecontrolilegale nprogramulutilizator;
ncercareadeviolareasistemuluideprotecie ainformaiilordinmemorie;
condiiiaritmeticespeciale(depiri,mprirelazero);
ncercareadeaaccesaunsegment/paginde informaie (instruciuni,date)
nerezident nmemoriaprincipal.
332
CLASIFICAREEXCEP CLASIFICAREEXCEPf fII(INTEL) II(INTEL)
Dupmoduldemanifestareitratareaexcepiilor,Intel mparteexcepiilen
urmtoarelecategorii:
devieri('traps')
Odevierepoatefitratatdoardup terminareacicluluideinstruciunecurent.Dup
trataredevierile producreluareaprogramuluintreruptncepndcuinstruciunea
urmtoare.
erori('faults')
Suntexcepiicesuntdetectatefienaintede nceputulexecuieiinstruciunii,fien
timpulexecuieiacestora. Dacerorilesedetecteazntimpulexecuieiunei
instruciuni, duptratareaerorii,reluareaprogramuluisevafacencepndcu
instruciuneantrerupt.
eecuriterminrianormale('abort')
Producabandonarea procesului.Eecurilesuntutilizatepentruatrataerorisevere
cumsuntvaloriilegalei/sauinconsecvententabelele sistemuluisaueroride
hardware,accesullalocaiidememorienepermise...
333
SISTEMULDE SISTEMULDE NTRERUPERIALFAMILIEIDEPROCESOAREINTELX86 NTRERUPERIALFAMILIEIDEPROCESOAREINTELX86
ntreruperi interne (software generate prin instruciuni speciale) :
INTn ntreruperesoftwaredetipn vectordentreruperelaadresa4*n
INTO INTerruptonOverflow ntreruperedenivel4generatcndapare
depire(OF=1)
DIV/IDIV ntreruperedetip0generatcnddestinaiaspecificatn
instruciunepentruamemoractulmpririinuaredimensiunea
necesar(prioritatemaxim)
TF=1 ntreruperedetip1(execuiepascupas) uPgenereazautomat
cteontreruperedupfiecareinstruciune(depanareaprogramelor)
INT3 breakpoint ntrerupereexecuiprogramntrunpunct
predefinitpentruaefectuaanumiteprocesrispeciale(depanare)
334
SISTEMULDE SISTEMULDE NTRERUPERIALFAMILIEIDEPROCESOAREINTELX86 NTRERUPERIALFAMILIEIDEPROCESOAREINTELX86
ntreruperi externe (hardware)8086prezint2intrripentrucereridentrerupere:
NMI(NonMaskableInterrupt) ntreruperenemascabil(nedezactivabil)utilizat
pentruasemnalaapariiaunuievenimentcatastrofal :
cdereatensiuniidealimentare
erorideacceslamemorie
erorideparitatepemagistral
INT(INTerrupt) cereredentreruperemascabil(dezactivabil)
provenitdeladispozitiveexterne(tastatur,mouse,porturi,etc.)
suntntreruperihardwarecontrolatedeuncircuitspecializat(controlerde
ntreruperi intel8259A)careaccept8cereridentrerupere
validarea/invalidarea ntreruperilor sefaceprinindicatoruldecondiieIF
(InterruptFlag)folosindinstruciunispecifice:
STI (SeT Interrupt) IF = 1 validare
CLI (CLearInterrupt) IF = 0 invalidare (mascare)
335
SISTEMULDE SISTEMULDE NTRERUPERIALFAMILIEIDEPROCESOAREINTELX86 NTRERUPERIALFAMILIEIDEPROCESOAREINTELX86
Nivel Tipintrerupere Semnal Controller Cauza intreruperii
00h interna impartire cuzero
01h interna executie pascupas
02h interna NMI intrerupere nemascabila
03h interna breakpoint
04h interna depasire (overflow)
05h software tiparire ecran
06h interna rezervat
07h interna rezervat
08h externa (hardware) IRQ0 1 ceas sistem
09h externa (hardware) IRQ1 1 tastatura
0Ah externa (hardware) IRQ2 1 cascadare controlor 2
0Bh externa (hardware) IRQ3 1 COM2(portserial)
0Ch externa (hardware) IRQ4 1 COM1(portserial)
0Dh externa (hardware) IRQ5 1 LPT2(imprimanta)
0Eh externa (hardware) IRQ6 1 controlor dediscflexibil
0Fh externa (hardware) IRQ7 1 LPT1(imprimanta)
10h software interfata video
11h software det.configuratie sistem
12h software det.dimensiune memorie
13h software interfata dedisc
14h software interfata seriala
15h software servicii extinse
16h software interfata detastatura
17h software interfata deimprimanta
18h software saltROMBasic
19h software incarcator (Bootstrap)
1Ah software ceas detimp real
1Bh software apasare CTRL/C
1C software ladispozitia utilizatorului
1D poantor tabela deparametri video
1E poantor tabela deparametri disc
1F poantor tabela decaractere grafice
20h software terminare program
21h software apeluri sistem (DOS)
2526h software citire/scriere fizica disc
27h software TSR
33h software suport mouse
70h externa (hardware) IRQ8 2 ceas detimp real
71h externa (hardware) IRQ9 2 redirectare IRQ2
72h externa (hardware) IRQ10 2 liber
73h externa (hardware) IRQ11 2 liber
74h externa (hardware) IRQ12 2 liber
75h externa (hardware) IRQ13 2 coprocesor aritmetic
76h externa (hardware) IRQ14 2 controlor discfix
77h externa (hardware) IRQ15 2 liber
336
TABELAVECTORILORDE TABELAVECTORILORDE NTRERUPERE NTRERUPERE
esteunsetde256devectoride
ntrerupere(VI)coninndfiecare
adresauneirutinedetratareRTI
TVIocupprimulkBdinmemoria
principalnspaiuldeadresefizice
0h...003FFh
fiecarevectordentrerupereocup4
octei(pointerCS:IP)
Deplasament
Adresasegment
TVI TVI
1F 1F
00000h
003FFh
A5 A5
35 35
A1 A1
CS
IP
adresaVI
n
=4xn
adresaRTI
n
=AF(CS:IP)
TVI (tabelavectorilordenrerupere)asigurlegturadintretipul/nivelulntreruperii
irutinadetratareasociat(procedurdetipfar)
337
TRATAREAUNEI TRATAREAUNEI NTERUPERISOFTWAREDENIVELN NTERUPERISOFTWAREDENIVELN
0
*4
Memoriaprincipal
Rutinadentrerupere
Tabeladentreruperi(TVI)
(256deintrri 4octei)
Program
INT INT n
1kB
<adr_seg>:<offset>
1MB
338
TRATAREAUNEI TRATAREAUNEI NTERUPERI NTERUPERI
UCPrspunde laocerere dentrerupere (hardwaresau software)i trateaz
evenimentul ce aprodus ntreruperea n pai succesivi carepotfi rezumai astfel :
1. UCPsalveaz n stiv coninutul registrului destareprogram (indicatoriidecondiie)
2. UCPidentific sursa ce aprodus ntreruperea :
Identificare prin intrare separat acererilor dentrerupere hardware (INT,NMI)
Identificare printro informaie furnizat deevenimentul ntreruptor
Identificare prin testarea bistabililordecondiie
Indentificareprinconinutulinstruciuniicaregenereazntrerupereasoftware
3. UCPsalveaz nstivadresa derevenire laprogramul ntrerupt adresa instruciunii
urmtoareceurmaafiexecutat(coninutulregistrelorCSiIP)
4. UCPcalculeaz adresa unde segsete RTI (<nivel_intrerupere>*4)
5. SencarcregistreleCS:IPcuadresarutineidentrerupere dintabeladentreruperi
delaadresacalculatlapasulanterior
6. Seexecutsalt laRTIi execuie
7. Revenire laprogramul ntrerupt prin restaurareadinstiva contorului de program
339
ORDINEADEPRIORITATE
ncazulntreruperilormultiple,simultanesausuccesive,subsistemuldentreruperi
trebuiesrealizezeunarbitrajservindntotdeaunacererilecuprioritatemaimare
SistemuldearbitrarepermitecaoRTIsfientreruptdecerereprioritar
ArbitrareapoateficontrolatdirectdectreUCP(ntreruperiBIOS)sauuncontroler
dentreruperiextern(ntreruperimascabile)
Controlerul dentreruperi8259A deservetecereriledentreruperenfunciede
prioritatea prioritatea acestora:
I. INTn ntreruperileinterne(oricarentrerupereintern,exceptndINT1sunt
prioritarefadeoricentrerupereextern)
i. ntrerupereadetip0(Diviziunecu0prioritatemaxim)
ii. ntrerupereadetip3(Breakpoint)
iii. ntrerupereadetip4(Overflowdepiredecapacitate)
iv. ntreruperilesoftwaredetipn(nordineacresctoarealuin> 5)
II. NMI (tip2 ntrerupereaexternnemascabil)
III. IRQi(InterruptReQuest) ntreruperiexternemascabile.Prioritateaacestoraeste
stabilitprinvectorizareasistemuluidentreruperi(vectorizareaserealizeazprin
moduldeconectareadispozitivelorinteruptoarelaintrrilecontroleruluide
ntreruperi8259A)
IV. INT1 ntrerupereainterndetip1(execuiepascupas)
340
SISTEMVECTORIZATDE SISTEMVECTORIZATDE NTRERUPERI NTRERUPERI
INT
INTA
NMI
8086
INTR
8259A
IRQ0
IRQ1
IRQ2
IRQ7
.
.
.
INTA
INTR
8259A
IRQ0
IRQ1
IRQ2
IRQ7
.
.
.
INTA
InterfaI/O
(ceassistem)
InterfaI/O
(tastatura)
IRQ2
IRQ3
IRQ4
IRQ9
.
.
.
IRQ14
IRQ0
IRQ1
D15:D0
341
STRUCTURAINTERNACONTROLERULUIDE STRUCTURAINTERNACONTROLERULUIDE NTRERUPERI NTRERUPERI
IMR InterruptMaskRegister(mascareaselectivacererilordentrerupere)
IRR InterruptRequestRegister(memoreazcereriledentr.semnalizatepeIRQi)
ISR InterruptServiceRegister(mem.nivelulnteruperilorncursdedeservire)
CMP Comparatoruldeprioriti(comparprioritateantreruperiicurentecuceancursde
deservire)
Logicade
conectare
magistral
INTR
i8259A i8259A
IRQ0
IRQ1
IRQ7
.
.
.
Blocde
cascadare
Buffer
Date
Dispozitivdecomand
ISR CMP IRR
IMR
INTA
CAS0..2
RD
WR
A0
CS
D0..7
342
SECVENfADEDESERVIREAUNEI CERERIDE NTRERUPERE
1. Interfaagenereaz o ntrerupere prin activarea unui semnal IRQi ctre controller
2. Controllerul verific dac ntreruperea este permis inu este alta mai prioritar n
cursdedeservire
3. Dac ntreruperea este permis segenereaz ontrerupere ctre procesor prin
activarea semnalului INTR
4. Dup terminarea instruciunii curente,Procesorul genereaz dou cicluri INTApt.
identificarea sursei dentrerupere
5. Pe aldoilea ciclu controlerul pune pe liniile dedatealemagistralei vectorul
ntreruperii curente
6. Procesorul foloeste vectorul caindexnTabela dentreruperi pentru aciti adresa
Rutinei dentrerupere
7. Procesorul salveaz pe stiv adresa derevenire istarea dup carefaceunsaltla
Rutina dentrerupere
8. Lasfaritul rutinei dentrerupere procesorul d ocomand ctre controlerpentru
ncheierea ntreruperii curente (EOI)
9. Laexecutia instruciunii IRET(revenire dinrutina dentrerupere)procesorul ia din
stiv adresa derevenire ifacesaltlaaceast adresa,continund programul ntrerupt
343
SCHEMDEACTIVAREA SCHEMDEACTIVAREA NTRERUPERILORVECTORIZATE NTRERUPERILORVECTORIZATE
344
RUTINADETRATAREAUNEI RUTINADETRATAREAUNEI NTRERUPERI NTRERUPERI
RTIsedefinetecaoprocedurdetipfar
RTIsevancheiacuinstruciuneaIRETcare,pelngCSiIPrefaceiconinutul
registruluiindicactorilordecondiie(flagurile)
RUT_INTPROCFAR RUT_INTPROCFAR
;salvare ;salvare nstiv nstiv:flaguri :flaguri iregistreutilizate iregistreutilizate ncadrulsubrutinei ncadrulsubrutinei
;c ;corpulrutineidetratare orpulrutineidetratare
;r ;refacereregistredinstiv efacereregistredinstiv
IRET IRET
RUT_INTENDP RUT_INTENDP
Orutindetratarefacepartedintrunprogramcareoinstaleaz:
salveazadresavechiirutine (ex.funcia35haint21h)
instaleaznouarutin (ex.funcia25haint21h)
Programuldeinstalare sepoateterminan2moduri:
prineliberareamemorieiistergerearutinei(naintedecedareacontrolului
trebuiesarefacvectoruldentreruperecuadresavechiirutine)
rutinadetratarermnerezindentnmemorie programnumitTSR
(TermianteandStayResident)
345
INSTALAREAUNEIRUTINEDETRATARE INSTALAREAUNEIRUTINEDETRATARE
Funcia35hantreruperii21h
salveazvectoruldentrerupereiniial(aderesavechiirutinedetratare)
cere: AH 35h
AL numrulntreruperii
returneaz:ES:BX adresarutineidentrerupere
Funcia25hantreruperii21h
instaleazorutindentrerupere(repoziionareavectoruluidentrerupere)
cere: AH 25h
AL numrulntreruperii
DS:DX adresadenceputarutineidetratarecareseinstaleaz
Funcia31hantreruperii21h
salveazvectoruldentrerupereiniial(aderesavechiirutinedetratare)
cere: AH 31h
AL niveluldeeroare
DX dimensiuneaspaiuluidememoriecevaramnerezident
(seexprimnparagrafeacte16octei)
346
INSTALAREAMANUALAUNEIRUTINEDETRATARE INSTALAREAMANUALAUNEIRUTINEDETRATARE
SefaceprinmodificareaintrriiTVI (vectoruluidentrerupere)corespunztoare
subrutineisistemdetratareantreruperiirespectivecuadresanoiirutinedefinitede
utilizator
Exemplu:DeturnareantreruperiideceasIRQ0(nivel8)datdeNumrtorul0al
ceasuluiprogramabil8253caregenereaz~ 18ntreruperi/sec.
cli ;activeazntreruperilemascabile
xor AX,AX
mov ES,AX
mov AX,ES:[0024H] ;salveazadresarutineioriginaledinVIdela
mov int8_old_off,AX; adresa0000:0024
mov AX,ES:[0026H]
mov int8_old_seg,AX
mov AX,OFFSETint8_new ;adresanoiirutinedetratare(int8_new)
mov ES:[0024H],AX ;rescrievectoruldentreruperedelaadresa
mov ES:[0026H],CS ; 0000:0024cuadresarutineiint8_new
sti ;dezactiveazntreruperilemascabile
347
REDIRECATREAUNEI REDIRECATREAUNEI NTRERUPERI NTRERUPERI
VECT DW 2DUP(?) ;aici sesalveaz vechiul vectorde ntrerupere
MOV AH,35h ;35hfunciesistem pentru salvarea vectorului dentrerupere
MOV AL,n ;n nivelul dentrerupere redirectat
INT 21h ; apelul funciei sistem returneaz n ES:BXadresa rutinei delanivelul n
MOV VECT,BX ;salvare adres offset
MOV BX,ES
MOV VECT+2,BX ;salvare adres segment
MOV AX,SEGRUT_INT
MOV DS,AX ; DS< adresa desegmentanoii rutine de tratare antreruperii
MOV DX,OFFSETRUT_INT ;DX< adresa deoffsetanoii rutine dentrerupere
MOV AH,25h ; 25h funcia descriere vector;n DS:DXsepune adresa rutinei dentrer.
MOV AL,n ; n nivel dentrerupere
INT 21h ; apelul funciei sistem
;PROGRAM
MOV AX,VECT+2 ;refacerea adresei
MOV DS,AX
MOV DX,VECT
MOV AH,25h ;funcia descriere vector dentrerupere
MOV AL,n ;n nivel ntrerupere
INT 21h ;nscrierea vechiului vectorn tabela deintrerupere
348
PROGRAMAREAUNEI PROGRAMAREAUNEI NTRERUPERIHARDWARE NTRERUPERIHARDWARE
INTA00EQU 20H ;adresa portului 0dincontrolorul dentreruperi
INTA01EQU 21H ;adresa portului 1dincontrolorul dentreruperi
EOI EQU 20h ;comanda deincheiere intrerupere
MASCA EQU 11011111B ;masc pentru validarea intrrii nr.5
MASCA1EQU 00100000B ;masc pentru invalidarea intrrii nr.5
..
;initializare ntrerupere
CLI ;invalidarea ntreruperilor mascabile
MOV AX,SEGRUT_INT
MOV DS,AX
MOV DX,OFFSETRUT_INT
MOV AH,25h ;25h funcia descriere vector
MOV AL,5+8 ;5+8=nivel dentrerupere programat;adresa debaz aprimului
; controlerdentreruperi este 8
INT 21h ;apel defuncie sistem
MOV DX,INTA01
IN AL,DX ;citire registru demasc
AND AL,MASCA ;terge bitmasc pt.ntreruperea 5
OUT DX,AL ;validare intrare dentrerupere
STI ;validare ntreruperi mascabile
.
;program

349
PROGRAMAREAUNEI PROGRAMAREAUNEI NTRERUPERIHARDWARE NTRERUPERIHARDWARE
;sfrit program
CLI
MOV DX,INTA01
IN AL,DX ;citire registru demasc
OR AL,MASCA1 ;seteaz bitul masc pt.ntreruperea 5
OUT DX,AL ;invalidarea intrrii dentrerupere
STI
.
;rutina detratare antreruperii
RUT_INTPROCFAR ;noua rutina detratare aintreruperii
PUSHr ;salvarea registrelor utilizate incadrul rutinei
STI ;validare ntreruperi
..
;corpul rutinei
..
;sfritul rutinei
MOV DX,INTA00
MOV AL,EOI
OUT DX,AL ;comand desfrit ntrerupere
POP r ;refacere registre salvate
IRET
RUT_INT ENDP
350
NOTE NOTE
INTERFE INTERFEf fE E SISTEMULDEI/O SISTEMULDEI/O
352
NTREUPERI NTREUPERIb bIEXCEP IEXCEPf fII II
CircuitedeinterfaI/Oiporturi
Moduridetransferadatelor
Transferprinprogram
Transferprinntreruperi
TransferDMA(prinaccesdirectlamemorie)
ControlerulDMA
Tipurideinterfeeicontrolerespecializate
Interfaaserialasincron
Interfaaparalel.HandShaking
Ceasulprogramabil(RTC RealTimeClock)
353
CIRCUITEDEINTERFA CIRCUITEDEINTERFAf f
Subsistemuldeintrareieire(I/O)alunuicalculatorasigurcaleadecomunicaiea
informaiilorntrecalculatorimediulextern(logicexterncarenulucreazdirect
cuUCP)
Prinintermediulacestuisubsistem,utilizatorulintroduceprogrameleidateledorite
nmemoriacalculatorului,pentruprelucrare,itotcuajutorulsurezultatelese
nregistreaz,sauseafieaznexterior
LegturantreUCPidispozitiveledeI/O(dispozitiveleperiferice)sefaceprin
intermediulunorcircuitedeinterfadeI/O
CircuiteledeinterfaI/Oasigur,dinpunctdevederehardware,schimbulcorectde
date
Circuiteledeinterfasecupleazlamagistralelecalculatoruluiielesuntadresabile
lanivelderegistruportdeintrareieire
Prinport nelegemaiciunregistru,cuadresspecific(deregulmapatnspaiul
deadresealmemorieiprincipale),princarecalculatorulrealizeazschimbde
informaiecuexteriorul;fieculegeinformaia,iarportulesteportdeintrare(PI),fie
transmiteinformaialaunportdeieire(PO)
354
CIRCUITEDEINTERFA CIRCUITEDEINTERFAf f
355
CIRCUITEDEINTERFA CIRCUITEDEINTERFAf f
Rol :adaptarea particularitilorfuncionale,electrice iinformaionale aleunui
dispozitiv periferic deintrare/ieire lacerinele unui anumit sistem decalcul
(adaptarea laomagistralasistemului)
Ce seadapteaz:
Semnale electrice
Secvenadetransmisie si recepie adatelor
Ritmul/viteza/frecvenadetransfer interfaaeste unbuffertemporar dedate
Unele circuite deinterfa sunt incluse n circuitele specializate de controlale
perifericelor (controlere deinterfa)
controlerul unitii dedisc,controleaz operaiile fizice efectuate dediscul
magnetic, curespectareaunor specificaii standardizate deinterfaare
Standardul IDE ("IntegratedDriveElectronics")arealizat transferarea funciilor
decontrolctre mecanismul discului hard
356
NECESITATEAINTERFE NECESITATEAINTERFEf fELORI/O ELORI/O
Principalele diferene ntre UCPi periferice,careimpun folosirea circuitelor deinterfa,
constau n urmtoarele :
perifericele sunt dispozitive acror funcionare sebazeaz pe diferite tehnologii
(electromecanice,electromagnetice, electronice).Deaceea trebuie s existe
dispozitive deconversie conversie a avalorilor valorilor semnalului semnalului,pentru oadaptare dinpunct de
vedere electriccucalculatorul
viteza viteza detransfera detransferadatelor datelor este mult mai sczut laperiferice fa deUCP.Pentru
transferul dedatentre periferice i UCPsau memorie trebuie deci s existe
mecanisme desincronizare
codurile codurile i i formatele formatele datelor datelor n echipamentele periferice potfi diferite fa de
codurile i formatele folosite n UCPi memorie
exist ovarietate varietate de deperiferice periferice,cumoduri defuncionare diferite i deaceea acestea
trebuie controlate adecvat,pentru anu perturba celelalte periferice conectate laUCP
357
SCHEMADEPRINCIPIUAUNEIINTERFE SCHEMADEPRINCIPIUAUNEIINTERFEf fEDEINTRARE EDEINTRARE IE IEb bIRE IRE
Magistrala deadrese
Magistrala dedate
Magistrala de comenzi
Disp.decomand
DEC R. CTRL R. Stare Reg. Ieire
Reg. intrare
IOR
IOW
Adaptor desemnale
Echipament periferic
358
PORTURI PORTURI
Porturile Porturilesuntcidecomunicarentreprocesoridispozitiveleperifericeidentificate
prinadreseunice
Porturilesuntregistre cutransferparalelpe8/16bii(la8086)
Dpdvalprocesorului8086,porturilesuntvzutecaceluledememorientrunspaiu
deadresepe16biiaccesabilepeoctet/cuvnt(numrulmaximdeporturi=2
16
)
Procesorulselecteazunportpunndpemagistraladresacorespunztoareportului.
Acestarecunoateadresaitransferdatelepemagistraladedatelaurmtorul
impulsdetact
Ointerfadeintrare/ieireocupareasociatemaimulteadresedeport,
consecutive,porninddelaoadresdebaz
OinterfaI/Oprezint3tipuriprincipaledeporturi:
Porturidestare Porturidestare :accesatenmodulcitire procesorulcitetestarea
dispozitivuluideintrare/ieire
Porturidecontrol Porturidecontrol :Procesorulscrieocomenzipentrusetareaparametrilorde
funcionareaperifericului
Porturidedate Porturidedate :pentruscrierea/citireadatelordelaperiferic
359
MODURIDETRANSFER MODURIDETRANSFER
Funcia principal aunei interfee estet transferul ransferul dedate dedate
Moduri detransfer:
Transfer Transferprin prin program program transfer iniiat i controlat n totalitate de
programul rulat deUCP prinintermediulunorinstruciunispecifice;
Transfer Transferprin prin ntreruperi ntreruperi transferuleste controlat deUCPca rspuns lao
cerere dentrerupere extern,careiniiaz transferul;
Transfer Transferprin prin acces acces directla directlamemorie memorie (DMA (DMA DirectMemoryAccess) DirectMemoryAccess) transferul
estecontrolatdeuncircuitcontrolerDMA(carepreiacontrolul magistralelor
sistemului),iariniiereatransferuluiestefcutfiedeocereredetransferdela
unperiferic,fielainiiativaprogramuluirulatdeUCP.
Diferite gradedeimplicare aprocesorului principal
Alegerea modului detransferoptim :
Viteza detransfer
Complexitatea transferului
Restriciidetimp si decost
360
TRANSFERPRINPROGRAM TRANSFERPRINPROGRAM
Laacest tipdetransfer,toate transferurile seiniiaz i secontroleaz prin program
prinintermediulunorinstruciunideintrare/ieire
Transferul deI/Oprin programpoate fi :
direct,transfer(citirea sau scrierea unui anumit portdictate de program)
prin interogarea succesiv aporturilor deI/O(polling),pentru determinarea
cerinelor detransferspecifice(seinterogheazportuldestare)
Instruciunideintrare/ieirepentruporturi:
IN IN citetedatedelaport
INdest,port
dest: registreleAX,AL
port: constantnintervalul0 255sauregistrulDX
OUT OUT scriedatelaport
OUTport,dest
dest: registreleAX,AL
port: constantnintervalul0 255sauregistrulDX
361
TRANSFERULPRINPROGRAM TRANSFERULPRINPROGRAM EXEMPLU EXEMPLU
buf DB 100DUP(?)
lbuf EQU $buf ;lungimea bufferului
adrport EQU 300h ;adres portdeintrare (date)
adrstare EQU 301h ;adres registru destare
masca EQU 01h ;masc pentru bitul D0
;iniializare transfer
mov si,offsetbuf ;iniializare pointer memorie
mov dx,adrport ;iniializare adres port
mov cx,lbuf ;iniializare contor
;transferdedate
et1:inc dx
in al,dx ;citire portdeintrare
and al,masca ;testare bitdestare
jnz et3 ;testare bitdestaresetat
et2:dec dx ;adres portdeintrare
in al,dx ;citire port
mov [si],al ;memorare dat
inc si ;avans poantor
loop et1 ;buclare (testare ncheiere transfer)
.
362
TRANSFERPRIN TRANSFERPRIN NTRERUPERI NTRERUPERI
ntreruperea ntreruperea :eveniment externprocesorului (independentdeprogramul rulat)
semnalelectricgeneratdeechipamentece potlansa cereri deservicii (cereri de
ntrerupere)
Deservirea unei ntreruperi :prin execuia unei rutine rutine de de ntrerupere ntrerupere
Tabela Tabela de de ntreruperi ntreruperi :conine adresele rutinelor detratare antreruperilor
Generareavectoruluidentreruperesefacefiedirectdectredispozitivul
ntreruptor(princircuituldeinterfa),fiecentralizat,pentrutoatentreruperile
mascabile,dectreundispozitivspecialnumitcontrollerde controllerde ntreruperi ntreruperi
Avantajele Avantajele sistemului dentreruperi sunt urmtoarele :
permite sincronizarea procesorului cuevenimente externe;
elibereaz procesorul desarcina testrii periodice aperifericelor, sarcin
consumatoare detimp (procesorul poate efectua alte operaiinparalel cu
transferul);
prezint ovitez derspuns mai mare dect transferul prin program;
posibilitatea detratare ierarhizat acererilor dentrerupere simultane sau
succesive prinarbitrareaprioritilor.
363
TRANSFERPRINACCESDIRECLAMEMORIE(DMA) TRANSFERPRINACCESDIRECLAMEMORIE(DMA)
Transferulprinaccesdirectlamemorie(DMA accesdirectlamemorie(DMA DirectMemoryAccess DirectMemoryAccess)esteexecutat
directntrememoriaprincipalidispozitivulperiferic,frcadatelesmaitreac
prinUCP
Avantaje Avantaje :
Vitezadetransfer prinDMAesteceamaimare,dinceletreimoduridetransfer
TransferulprinDMAesteutillatransferareablocurilormaridedate ntre
memoriaprincipaliperiferice
Esteuntransferfolositnaplicaiidegenul:transfercudiscurilemagnetice,
transfercuplciperifericececoninconvertoareADsauDArapideetc.
TransferulprinDMAseefectueazsubcomandaunuicircuitcontrolerDMA controlerDMA,care
controleaztemporarmagistralelesistemului
DeobiceicircuitelecontrolerDMApotgestionatransferuricumaimulteperiferice
simultan,pentrufiecareperifericexistnd(interncontrollerului)uncanalDMA canalDMA
UncicluDMA cicluDMAreprezinttransferulunuicuvntdedatedinsaunmemorie
364
TRANSFERDMA TRANSFERDMA
Memoriaprincipal Memoriaprincipal
UCP UCP
Controler Controler
DMA DMA
Interfa Interfa I I/O /O
DACK DRQ
cerereDMA
acceptareDMA
RD WR
WR RD
BusRequest
(HOLD)
BusGrant
(HLDA)
transfer
direct
Adrese
Date
365
TRANSFERDMA TRANSFERDMA
Iniiereatransferuluisefacedectreperiferic(prinintermediulinterfeei)care
efectueazocereredetransferprinaccesDMA sprecircuitulcontrolerdeDMA
(DMAC)
AcestasolicitdelaUCPcontrolulmagistralelorprinsemnaluldecereredecontrola
magistralelor,BR(BusRequest)sau HOLD
LasfritulcicluluimaincurentUCPcedeazcontrolulmagistralelor,itrece
ieirilectreacesteanHiZ (staredenaltimpedan)iinformeazdespreaceasta
prinsemnalulacordareacontroluluimagistralelor,BG(BusGrant)sau HLDA(HoLD
Acknoledge)
CircuitulcontrolerDMACfurnizeazadresele pemagistraladeadrese,preiacontrolul
semnalelordescriere(WR)icitire(RD)itrimitectreperifericsemnalulde
acceptareatransferuluiprinDMA
CnddispozitivulI/Oprimeteacestsemnaldeacceptare,puneuncuvntpe
magistraladedate(pentruscrierenmemoriaprincipal)sauciteteuncuvntdepe
magistraladedate(pentrucitiredinmemoriaprincipal)
366
CICLUDETRANSFERDMA CICLUDETRANSFERDMA
Adrese Adr UCP Adres DMA Adr.UCP
Date UCP Date DMA
DRQ
HOLD
HLDA
DACK
MRD
\
IOW
\
367
SCHEMAINTERNACONTROLERULUIDMAi SCHEMAINTERNACONTROLERULUIDMAi8237 8237
IOR\ Decrem. Inc./Decr. Amp
IOW\ adr. A0-3
MRD\ Bloc
MWT\ de Adr. Contor Adr Contor
c-d de de curent curent Amp
CS\ baz baz adr. A4-7
AdrStb
AEN
RDY
CLK R. scriere R citire
EOP Amp D0-7
date
DRQ0-3
Bloc R c-d R stare
DACK0-3
arbitrare
HOLD cereri R mti R temp
HLDA DMA
R cereri R mod
368
CARACTERISTICILECONTROLERULUIDMAI8237 CARACTERISTICILECONTROLERULUIDMAI8237
Poate deservi 4periferice independente (are4canale DMA)
Viteza detransfermaxim este de1,6Moctei/s
Mai multe controlerepotfi conectate n cascad pentru amri numrul decanale
DMAdisponibile
Dimensiunea maxim ablocului dedatetransferat este de64Ko
Poate efectua transferdetipmemoriememorie
Suportmai multe moduri detransfer :
Transfersingular
Transferpe bloc(burst)
Transfercuautoiniializare
Transfermemoriememorie
369
TIPURIDEINTERFE TIPURIDEINTERFEf fE Eb bICIRCUITEDECONTROLSPECIALIZATE ICIRCUITEDECONTROLSPECIALIZATE
Controlerpentru interfa interfa a aparalel paralel
PIO parallelI/O:I8255
Controlerpentru interfa interfa aserial aserial
SIO serialI/O,sau USART universalserialasynchronous receiverand
transmitter:I8251
Controlerpentru contorizare/temporizare ceasuldetimpreal
RTC RealTimeCounter/timerController:I8253
Controlerpentru interfaafloppy:I8272
ControlerDMA:I8237
Controlerdentreruperi:I8259A
370
INTERFA INTERFAf fASERIALASINCRON ASERIALASINCRON
USART(Universal Serial Asynchronous Receiver andTransmitter)estefolsitpentru
transmisiadatelorladistanpeunnumrrestrnsdeconexiunielectrice(23)
Transmisiasefacebitcubit(vitzdetrasnfermaimicdectlaPIO)
Erorimaipuine(nuaparproblemedesincronizare) distanedetransfermaimari
Emitorulireceptorullucreazlaaceeaifrecven ratadeserializareadatelor
(baud)
Controlerpentru interfa interfa aserial aserial I Intel ntel8251 8251
Diversestandardedetransmisiserial:RS232,RS485,etc...
DTE DCE
MODEM
Retea telefonica
RS232
RS232
Semnale analogice modulate
Calculator
DCE
371
STANDARDULRS232 STANDARDULRS232
Codificarea informaiilor:niveluri detensiune MAX232(conversie232TTL/CMOS)
0 (+3..+15V)deobicei 12V
1 (3..15V)deobicei 12V
Mediu decomunicaie:fireelectrice (si telefonice)
Sincronizarea:prin bitdestart,stopsi rat prestabilit:300,600,1200,...19200Bauds
Detecia erorilor:prin bitdeparitate
Controlul hardwarealfluxului dedate sefaceprinperechi desemnale decontrol:
DSRDTR Datasetready,DataTerminalReady
RTSCTS RequesttoSend ClearToSend
Distanamaxim detransmisie :100m
semnal
serial
Pauz 5,6,7,8 bii de date Pauz
Start 0 Paritate 1,2 bii Stop
372
INTERFA INTERFAf fASERIALINTEL ASERIALINTEL8251 8251
Porturi:
RegistruldedateTX/RX :adreseCOM1/COM2=3F8h/2F8h
LowBaudGeneratorLBG :3F8h/2F8h
HighBaudGeneratorHBG :3F9h/2F9h
RegistruldestareRSL :3FBh/2FBh
RegistruldecontrolRCL :3FDh/2FDh
RCL
c7 :DLAB(controleazBAUD)
c6 :foreaz0
L
petransmisie
c5
c4 :activeazverificareparitate
c3
c2 :numrulbiilordestop
c1
c0 :lungimecuvntdedate
RSL
s7 :0
L
s6 :portliberpentrutransmisie
s5 :portulegatasaccepte
s4 caracteruldepeliniadedate
s3 :eroarencadrare
s2 :eroaredeparitate
s1 :eroaredesincronizare
s0 :caracterrecepionatdac1
L
373
PROGRAMAREAPORTULUISERIALCOM1 PROGRAMAREAPORTULUISERIALCOM1
;initializari adrese portserial
COM2_D EQU 03F8h ;adresa registru date RX/TX
COM2_C EQU 03FBh ;registrul decontrol
COM2_S EQU 03FDh ;registrul destare
COM2_L EQU 03F8h ;adresa LBG
COM2_H EQU 03F9h ;adresa HBG
;initializarecomunicatie
mov dx,COM2_C
mov al,80h
out dx,al ;seseteaza DLAB
mov dx,COM2_L
mov al,0Ch
out dx,al
mov dx,COM2_H
mov al,0
out dx,al ;BaudRate=9600
mov dx,COM2_C
mov al,3 ;8biti date,fara paritate,1bitdestop
out dx,al
;procedura dereceptie caracter
RXprocfar
cir: mov dx,COM2_S
inal,dx
andal,1
jz cir
mov dx,COM2_D
inal,dx
ret
RXendp
;procedura detrasmisie caracter
TXprocfar
cor: mov dx,COM2_S
inal,dx
andal,20h
jz cor
mov dx,COM2_D
mov al,ah
outdx,al
ret
TXendp
374
INTERFA INTERFAf fAPARALEL APARALEL
Transferul serealizeaz prin mai multe linii:
Linii dedate (ex:8) pentru datele propriuzise
Linii decontrol pentru sincronizarea si controlul fluxului dedate
Caracteristici:
Viteza mai mare
Distante micidatoritproblemelordesincronizare
Transfer(deobicei)unidirecional
Tipuri detransferparalel:
a)fr semnale decontrol
b)protocolasincron fr confirmare
c)protocolasincron cuconfirmare (hand hand shaking shaking)
375
TIPURIDETRANSFERPARALEL TIPURIDETRANSFERPARALEL
a)F Fr r semnale semnale decontrol decontrol
sefolosesc numai semnale dedate
sepoate citi starea unor semnale digitale sau sepotcomanda semnale digitale
nu sepottransfera secvenededate nu exist semnale decontrol
exemple:testarea strii unor senzori,comanda unor elemente deacionare
b)P Protocol rotocol asincron asincron fr fr confirmare confirmare
sefolosete unsemnal decontrolemis fiedetransmitor fiedereceptor
sepottransmite secvenededate
viteza detransfereste controlat deunitatea caregenereaz semnalul decontrol
nu exist semnal dereacie (confirmare)dinpartea unitaiipartenere;viteza trebuie
sa fiesuficient demic pentru aacoperi toate intrzierile posibile
Date Date
RDY RQ
Dat valid Dat valid
376
HAND HAND SHAKING SHAKING
c)P Protocol rotocol asincron asincron cu cuconfirmare confirmare (hand (hand shaking) shaking)
2semnale de control:unul emis detransmitor iunul derspuns delareceptor
transmisie cufeedback (reacie)
sepoate adapta mult mai uorlaviteza delucru aambelor unitaicomunicante;
rezultovitezdetransfer mai mare
pots apar situaiideeroare,ncazul necorelrii semnalelor decontrol
Corect Eroare
Eroare
Data Dat valid Data Dat valid
RDY RDY
ACK ACK
(a) (b)
Data Data1 Data2
RDY
ACK
(c)
377
HAND HAND SHAKING SHAKING
c)P Protocol rotocol asincron asincron cu cuconfirmare confirmare (hand (hand shaking),cu shaking),cuintercondi intercondi ionare ionare ntre ntre semnalele semnalele
decontrol decontrol
rezolv problema corectitudinii transferului
activarea si dezactivarea celor 2semnale decontrolsefaceintercondiionat
Data
RDY
ACK
378
CONTROLLERULi8255 CONTROLLERULi8255 INTERFA INTERFAf fAPARALEL APARALEL
3porturidedate(A,BiC)
Moduridelucru:intraredate/ieiredate/transferbidirecional
RegistrulCsepoatedivizan2pentruadeservisemnaledecontrolregistrelorAiB
Port PA0 - 7
Control A
grup A
Amp
D0 -7 date PC4 - 7
C
PC0 - 3
RD \ C
WR \ Bloc Control
A0 de grup B
A1 control Port
CS \ B PB0 - 7
379
CEASURIPROGRAMABILE(RTC CEASURIPROGRAMABILE(RTC REALTIMECLOCK) REALTIMECLOCK)
Utilizate pentru:
contorizarea unor evenimente externe
generarea unor semnale de o anumit frecven prin divizarea unui semnal de
ceascuunnumrprogramabil
ntrzierea unor semnale (monostabil)
generarea unor ntreruperi periodice sau dup unanumit timp delaapariia unui
eveniment
declanarea periodic aunor cicluri derenprosptare amemoriei
generarea unor semnale sonore deavarie ladifuzorul sistemului
Controlerspecializat:Intel8253
380
CONTROLERULCEASULUIPROGRAMABILINTEL8253 CONTROLERULCEASULUIPROGRAMABILINTEL8253
Intel8253 circuitVLSIcu3numrtoareprogramabile pe 16bii divizarecu
maxim65535
i8253ocupunnumrde4adreseI/Odeciconiendpdvfuncional4porturide
intrare/ieire,sensultransferuluifcnduseprinsemnaledecontrol
Amp
date
Bloc
de
cd
Numrtor
0
Numrtor
1
Numrtor
2
Reg.
control
Out0
D0-7 Clk0
Gate0
Out1
RD\ Clk1
WR\ Gate1
CS\
A0,1 Out2
Clk2
Gate2
381
CONTROLERULCEASULUIPROGRAMABILINTEL8253 CONTROLERULCEASULUIPROGRAMABILINTEL8253
NUM2estedisponibilpentruafiprogranmatdectreutilizator poatealimenta
difuzorulsistemuluicusemnaleaudiongamadefrecven:
f=f
in
/2 f
in
/2
16
[595kHz 18,15Hz]
f
in
=f
PCLK
/2=1,19MHz
ActivareasaublocareaaccesuluilaNUM2sefaceprinprogramareaportuluiparalel
programabil8255,cuadresa0061h.Acestaesteunregistruparalelaicaruibii1i0
comandrespectiv:
Bitul1setat,blocheazieireanumrtorului2prinintermediuluneiporibI
Bitul0setat,inhibnumrarea(intrareaGate2)
382
CONTROLERULCEASULUIPROGRAMABILINTEL8253 CONTROLERULCEASULUIPROGRAMABILINTEL8253
8255 8255
8253 8253
8259A
CLK0
CLK
PCLK
X1 X2
8284
8086
(UCP)
CLK1
CLK2
Gate2
Out0
Out1
Out2
IRQ0
AJF FTJ
2
Port
061h
Bit0
Bit1
f
PCLK
f
IN
INTR
INT
383
APLICA APLICAf fIECEASPROGRAMABIL IECEASPROGRAMABIL
Q Deturnareantreruperiidetastatur(IRQ109h)pentrugenerareaunuisunetla
apsareauneitaste
1. Scriereanoiirutinedetratare
sescrieoprocedurprincareseprogrameazceasulprogramabil
programareanumrtorului2alceasuluiprogramabil8253pentrupornire/
opriresunet
programareatonuluisunetuluiigeneraresemnalsonor
2. Instalareanoiirutinedetratare
salvareaRTIoriginaleasistemului
modificareaintrriiTVIcorespunztoaresubrutineisistemdetratarea
ntreruperiicuadresanoiisubrutinedefinitedeutilizator
alocareaspaiuluirezidentnmemorienecesarpentrurutinadetratare
384
PROGRAMAREACEASULUIPROGRAMABIL8253 PROGRAMAREACEASULUIPROGRAMABIL8253
Iniializareceasprogramabil8253 RTC(RealTimeClock)
Porturifolosite registrepe8bii:
Registruldecontrol :adresa043h
Registruldedate :adresa042h
C
7
C
6
C
5
C
4
C
3
C
2
C
1
C
0 RC043h:
selecie
numrtor:
10 NUM2
citire/scriere
octetlow
apoihigh
setaremoddenumrare
ex:modul3denumrare
(*11) generatorde
impulsuri
dreptunghiulare
numrare
binar
385
PROGRAMAREACEASULUIPROGRAMABIL8253 PROGRAMAREACEASULUIPROGRAMABIL8253
Instruciunidepornire/opriresunet
in AL,61h ;citetestareportparalelprogramabil8255
or AL,3 ;seteazultimii2bii(porniresunet)
out 61h,AL ;pornetesunet
pentruoprireasunetuluisereseteazbiii0i1aiportului61h
ptcasunetulsfieperceptibilseinsereazopauz(ex.buclvid)
ProgramareaNumrtorului2pentrugenerareaunuisunetcufrecvenade500Hz
mov AX,0952 ;tonsunet(500Hz)
out 42h,AL
mov AL,AH
out 42h,AL ;ncrcareportdedateRTCcucei2octeiailuiAXsuccesiv
1.193.180
2386 952
500
in
div
out
f
N h
f
= = = =
386
RTI
STRUCTURAPROGRAMULUI STRUCTURAPROGRAMULUI
.code
int9_offset DW0
int9_s eg DW0 ;sedefinescnsegmentuldecod
int9PROCfar
pushf ;salveareflagurinstiv
calldword ptr cs:int9_o ;apelvecheasubrutinanteruperiidetastatur
;salveareregistrenstiv
;definiieRTIpentruntrerupereadetastatur
;refacereregistredinstiv
int9ENDP
sfarsit EQUthisbyte ;determinspaiuldememorienecesarpentruRTI
main:
;salvareadresavechiirutine
;instalarenouarutindetratareanteruperiidetastatur
mov dx,offset sfarsit+16+100h ;alocarespaiurezidentnmemorie
mov cl,4 ; necesarsubrutineidetratare
shr dx,cl
mov ax,3100h ;terminareaprogramuluicupstrarearezident
int 21h ; nmemorie arutineintreruperii
endmain
PROGRAMAREAMICROPROCESOARELOR PROGRAMAREAMICROPROCESOARELOR
388
PROGRAMAREAMICROPROCECSOARELOR PROGRAMAREAMICROPROCECSOARELOR
Dezvoltareauneiaplicaiinlimbajdeasamblare
Tipurideinstruciuni.Sintax
Proceduriimacroinstruciuni.Elaborareadeprogramemodulare
Accesullaresurselesistemului.Funciisistem
Tratareaiinstalareantreruperilor
Programareaporturilordeintrareieire
389
DECE DECE"PROGRAMAREIN "PROGRAMAREINASAMBLARE ASAMBLARE" " ? ?
Q estemateriedeexamen(ichiardereexaminare)...
Q vreisascrieiprogrameeficiente(dinpunctdevederealtimpuluideexecuieial
spaiuluidememoriealocat)
Q oferunnaltgraddelibertatenprogarmare
Q oferaccestdirectlaresurselesistemului
Q ajutlascriereaioptimitareaprogramelornlimbajeledenivelnalt
Q vreisaintelegeimodulncarefuncioneazuncalculator
390
ETAPELEDEELABORAREAUNEIAPLICA ETAPELEDEELABORAREAUNEIAPLICAf fII II NLIMBAJULDEASAMBLARE NLIMBAJULDEASAMBLARE
Etapelecreriiunuiprogramexecutabilnlimbajuldeasamblare
Etapa Intrare Program Ieire
Editarea Periferice(tastatur) Editordetext myFile.asm
Asamblarea myFile.asm
TASM.EXE(Borland)
MASM32 (Microsoft)
myFile.obj
myFile.map
Linkeditarea myFile.obj TLINK.EXE myFie.exe
Depanarea myFile.exe TD.EXE myFie.exe
391
CREAREAUNUIEXECUTABIL CREAREAUNUIEXECUTABIL NLIMBAJULDEASAMBLARE NLIMBAJULDEASAMBLARE
Etapelecreriiunuiprogramexecutabilnlimbajuldeasamblare
Editorde
text
Asamblor
Interpretator
(Linker)
Debugger
(dezasamblare)
SO
(execuie)
myFile.asm myFile.obj myFile.exe
myFile.asm
.modelsmall
.stack100h
.code
main:
mov ah,01h
int 21h
MOVAH,4Ch
INT21h
endmain
myFile.map
Start Stop Length NameClass
00000H 00007H 00008H _TEXTCODE
00010H 00010H 00000H _DATADATA
00010H 0010FH 00100H STACKSTACK
Programentrypointat0000:0000
lkFile1.obj
lkFile2.obj
392
ETAPELEDECREAREAPROGRAMELOREXECUTABILE ETAPELEDECREAREAPROGRAMELOREXECUTABILE
Q Q ASAMBLAREA(COMPLITAREA) ASAMBLAREA(COMPLITAREA)
detectareaerorilordesintax
rezervareaspaiuluidememorienecesartipurilordedateutilizate
interpretareainstruciunilorimacroinstruciunilorscrisenlimbajdeasamblare
igenerareainstruciunilorcorespunztoarencodmain
interpretareaexpersiiloraritmetice,aconstantelordincodulsurs
Q Q EDITAREADELEGTURI EDITAREADELEGTURI(LINK (LINK EDITARE) EDITARE)
adugareademoduleobiectdinaltebibliotecialeSOsaualtorprograme
completareaitranslatareaadreselorfadenceputulprogramului
creareafiieruluiexecutabil
Q Q LANSAREA LANSAREA NEXECU NEXECUf fIE IE
SOncarcprogramulnmemoriaprincipalipredcontrolul
seexecutinstruciuniledinprogramncepndcuceadelaadresaceamaimic
393
UTILITAREPENTRUCREAREAUNUIEXECUTABIL UTILITAREPENTRUCREAREAUNUIEXECUTABIL
SetareaciiprogramuluiasamblornfiierulbatchAUTOEXEC.BAT
SETPATH=C:\TASM\BIN SETPATH=C:\MASM32\BIN
C:\Cale\...\td myFile{.exe} C:\Cale\...\td myFile{.exe}
Dezasamblareaprogramului
executabil
Posibilprinmodificareafiierelor
.batchpentruasamblarea
instruciunilorpe16bii
Comenziinterfagrafic
C:\Cale\...\link16 myFile{.obj} C:\Cale\...\tlink myFile{.obj}
Editarea de legturi cu SO
(folosetefiierulobiect)
C:\Cale\...\ml/c myFile.asm C:\Cale\...\tasm myFile{.asm}
Asamblareafiieruluisurs
myFile.asm
MicrosoftMacroAssembler
(MASM32)
BorlandTurboAssembler(TASM) Aciune
Anumitefunciisistemnusunt
implementate
Interfagarficcuvizualizarea
registrelor,memorieiialanului
deexecuieainstruciunilor
EMU8086 (Emulator specific
microprocesorului 8086)
Asamblorintegrat
394
REGISTRE,MEMORIE REGISTRE,MEMORIE
Intern,uncalculator prelucreaz maimulte fluxuri deinformaie : datele numerice i
instruciunile programului iconineunulsaumaimultemicroprocecsoare
Unmicroprocesor=unitatecentraldeprelucrare(UCP)integratntrunsingurchip
Pentru amanipuladatele,microprocesorulfolosete:
+ + Registre Registre stocheazdatele(variabile,adrese)cucaremicroprocesorullucreazla
unmomentdat
registre generale pentruoperaiiaritmeticeilogiceicalcululadreselorefective:
(8bii)AH, AL, BH, BL, CH, CL, DH, DL
(16bii)AX,BX, CX, DX,SI, DI, SP,BP
(32bii)EAX,EBX, ECX, EDX,ESI, EDI, ESP,EBP
registrespecialefolositepentruadresareadatelordinmemorie:
CS,DS,ES,SS,IP,Flags,FS,GS
+ + Memoria Memoriaprincipal(integratnRAM RandomAccessMemory)
395
REGISTRE,MEMORIE REGISTRE,MEMORIE
DatelestocatenMEMORIAPRINCIPAL MEMORIAPRINCIPALsuntgrupatnsegmentespecificefuncieipe
careondeplinesc(informaieipecareoconin):
Instruciuni segmentuldecod
directadresabileprinregistrulCSiIP
Variabile segmentuldedate
directadresabileprinregistrulimplicitDS sauexplicitES
constantele constantele suntdateimediate dateimediate;acesteasuntevaluatelaasamblareisunt
coninutencodulinstruciunii,NUnmemoriadedate
Datetemporare segmentuldestiv
accesate prin instruciuni detransfer cu stiva
396
ADRESAREADATELOR ADRESAREADATELOR NCADRULUNUISEGMENT NCADRULUNUISEGMENT
Pentruadresareamemoriei,procesorulare
nevoiederegistre;dimensiunearegistruluid
dimensiuneadespaiuluidememorieadresabil
Selectoruldesegmentesteovaloare
coninutntrunregistrudesegment
Registrulsegmentpoatefiimplicitsau
desemnatnmodexplictninstruciune
Instruciunileidatelesuntmemoratela
locaiisuccesivencepnddelaadresemici
397
ARHITECTURAPROCESORULUIi8086 ARHITECTURAPROCESORULUIi8086
398
PINTEL8086 PINTEL8086 UNIT UNITf fIFUNC IFUNCf fIONALE IONALE
pescurt...
Unitateadeinterfa Unitateadeinterfa cumagistrala cumagistrala (BIU BIU BusInterfaceUnit)
BIUexecuttoatecicluriledemagistral (READ,WRITE,INTA)fielacererea EU
saupentruumplereauneicozideinstruciuni (QFIFO)
BIUgenereazadresafizic pe 20debii alocaieidememorieundesegsetedata
sauinstruciuneacesevaaccesa
Unitateadeexecu Unitateadeexecu ie ie (EU EU ExecutionUnit)
PebazacodurilorprimitedelaBIU(cititedincoadadeinstruciuni),EUdecodific i
executinstruciunile,respectivproceseazdatelecuexcepiacalculelorcomplexe
efectuatedecoprocesorulmatematici8087
EUcalculeazadreseleefective (pe16bii)aleoperanzilorconformmoduluide
adresarespecificatncoduloperaieidininstruciune
399
REGISTRE,MEMORIE REGISTRE,MEMORIE
Segmentdedate
Segmentdecod
Segmentdestiv
Extrasegment
UCP
Memoria
principal
Registre
segment
Registregenerale
400
Registreledeuzgeneral (MainRegisters)
RGsuntlocaii dememorie,interneUCP carestocheaz datele pe careEU le
proceseaz launmomentdat itrebuie s fienconcordan cu magistrala intern a
procesorului (M
DATE
=k*R
UCP
). Ex.Pentium: busintern pe 64bii,reg. pe32bii
Suntregistrepe16biiadresabiledirectsaupeoctet
Registreindexiregistrepointer pe16bii:
SI(SourceIndex),DI(DestinationIndex),BP(BasePointer),SP (StackPointer)
Registrulindicatorilordestare idecontrolalprocesului(decondiii) FLAGS
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IE
15 8 7 0
AH AL AX (accumulator)
BH BL BX (base)
CH CL CX (counter)
DH DL DX (data)
401
FLAGSRegister FLAGSRegister Registruldestare Registruldestare
CF CarryFlag depirearitmetic(transport)
PF ParityFlag paritate(rezultatuloperaieiareunnumrpardebiisetai)
AF AuxiliaryFlag transportntrebitul3i4
ZF ZeroFlag rezultatnullaultimaoperaiearitmeticsaulogic
SF SignFlag bitdesemn(iavaloareaMSBlaoperaaiilecunumerecusemn)
TF TripFlag TF=1determinUCPslucrezenmodulpascupas se
genereazcteontrerupereinterndupfiecareinstruciune
IF InterruptFlag mascpentrunteruperiexternemascabile
(IF=1 validarentreuperi;IF=0 invalidarentreruperi)
DF DirectionFlag indicdireciadeplasriiadreseilaoperaiilecuiruri
(autodecrementarearegistrelorSI,DIdacDF=1respectiv
autoincrementareadacDF=0)
OF OverflowFlag indicatordedepirearitmetic:sapierdutMSBalrezultatului
datoritfaptuluicvaloareaacestuiaadepitcapacitateade
reprezentarealocaieidestinaie
REGISTRELEUNIT REGISTRELEUNITf fIIDEEXECU IIDEEXECUf fIE IE utilizri utilizri
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Bit
- - - - O D I T S Z - A - P - C Flag
402
REGISTRELEUNIT REGISTRELEUNITf fII II DEINTERF DEINTERFA Af fCUMAGISTRALA CUMAGISTRALA
Registresegment Registresegment
CS CodeSegment
DS DataSegment
SS StackSegment
ES ExtraSegment
Registrulcontordeprogram Registrulcontordeprogram
IP
Instruction
Pointer
Conineadresa relativ (offsetul)n segmentul decod
curent(relativ laCS) ainstruciuniicurente
BIUactualizeazvaloareanscrisnIPdupfiecare
operaiedefetch
n cazul unei instruciuni desalt intersegment,IPeste
salvat n vrful stivei (mpreun cu CS) iapoi ncrcat cu
adresa relativ n segmentul decod ainstruciunii int
Registrepe16bii spaiudeadresarede64kB
Ofersuportpentruimplementareaunuispaiude
memoriede1MB
Coninadreseledebazalesegmentelorlogicedecod,
date,stiviextrasegment
Doar4segmenteactivelaunmomentdat
403
SINTAXAINSTRUC SINTAXAINSTRUCf fIUNILOR IUNILOR
{ETICHET:} MNEMONIC MNEMONIC {OPERAND1, {OPERAND2}} {;COMENTARIU}
LABLE1: MOVAX,BX ;copiazconinutulluiBXnAX
Identificatordeadres
(maxim31decaractere)
INSTRUCfIUNE
Ignoratdeasamblor
(nugenereazcodmain)
LABLE2 : JMP LABLE1 ; trece la execuia instruciunii marcacte
;deetichetaLABLE1aceastaindic
;adresaurmtoareiinstruciuniexecutate
Saltnprogram:
Instruciunileexecutatede8086acceptmaximdoioperanzi(0,1,sau2)
Operanziisedespartprinvirgul
Mnemonicaesteuncuvntrezervatcesimbolizezoinstruciune
404
SINTAXAINSTRUC SINTAXAINSTRUCf fIUNILOR IUNILOR OPERANZI OPERANZI
Operand Operand cmpceindicuntermenaloperaiei(indicloculimodulderegsireal
operandului moduldeadresare)
Operanzii unei instruciuni trebuie sa fiedeaceeailungime:octet,cuvnt,dublu
cuvant (exceptii:operaiideinmuliresi imprire)
O instruciune poate conine cel mult unoperand detiplocaie dememorie
formatul instructiunilor x86permite exprimarea adresei unei singure locaiide
memorie
pentru ooperatie aritmeticsau logic ntre dou variabile (locaiidememorie)
unul dintre operanzi trebuie sa setransfere temporar ntrunregistru intern
aceast restricie favorizeaz operaiile pe registre pt.creterea eficienei de
execuie
405
SINTAXAINSTRUC SINTAXAINSTRUCf fIUNILOR IUNILOR OPERANZI OPERANZI
Registre :AX,BX,...,AH,BH,...,AL,BL,...,SI,DI,CS,DS,SS,ES
Variabile :<nume_VAR>
Constante :<nume_CONST>
Adrese :[<registru>],[<adr_explicit>],[<adr_port_I/O>]
Dateimediate :<numr>,<expresie>
unnumrsau oexpresie aritmeticologic caresepoate evalua inmomentul
compilarii iesteconinutncodulinstruciunii;sepoate exprima inzecimal,
hexazecimal (indicativul H)sau binar (indicativul B)
lungimeaconstanteiestenacordculungimeaceluilaltoperand
Expresiiaritmetice:<nume_VAR><OPERATOR_ARITM><numr>
caoperatoriaritmeticiseacceptoperatorii+,,*,/
expresiaaritmetic nuseexecut;eaesteevaluatlamomentulasamblriiiarcodul
mainvaconinedejavaloarearezultatului
406
SINTAXAINSTRUC SINTAXAINSTRUCf fIUNILOR IUNILOR OPERANZI OPERANZI
Locaiidememorie (variabile)
expresie careexprim adresa unei locaiidememorie deoanumit lungime
(oricevariabilesteinterpretatdeasamblorcaolocaiedememoriedeundese
vaextrageovaloarenumeric)
lungimea variabilei:
nacord cualdoilea operand(dac exist)
sededucedindeclaraia numelui devariabil
seindic nmodexplicit('byte','word','dword')
adresa variabilei:
adresa desegment:
specificat nmodimplicit coninutul registrului DS
exprimat nmodexplicit:<reg_segment>:<variabila>
ex:CS:Var1,ES:[100h]
adresa deoffset adresa relativ ncadrul segmentului
407
SINTAXAINSTRUC SINTAXAINSTRUCf fIUNILOR IUNILOR OPERANZI OPERANZI
Adresa deoffset
adresa poate sa fiepe 16bii(modul real)sau pe 32bii(modul protejat)
exprimabil nmai multe moduri:
adres fizic: valoare concret deadresa
[ <adresa_offset> ], ex:MOVAX,[100h]
[<reg_baza>+ <reg_index> + <deplasament> ]
ex:MOVAX,[BX+SI+100h]
adres simbolic: nume simbolic dat unei variabile
VAR1,TEXT,VAR+5
VAR[BX],VAR[BX+SI]
<reg_baz> =BX|BP
<reg_index> = SI|DI
408
REGULISINTACTICE REGULISINTACTICE
olinie deprogrampoate conine maximoinstruciune (mnemonic +operanzi)sau o
directiv
asamblorulnufacedistincientreliterelemariimici
olinie poate conine:
nici oentitate deinstruciune (cmp) linie goal
numai etichet
numai comentariu
combinaiideetichet,instruciune,directiv si comentariu
uncomentariu ncepe cu';'isencheie lasfritul liniei
separareacmpurilorsefacecuunnumrarbitrardecaractere<sp>sau<tab>
oinstruciune x86poate conine maxim2cmpuri deoperanzi:
operand1 indic destinaia sau rezultatuloperaieiaritmeticologice sau primul
termen alunei operaiiunare sau binare
operand2 indic sursa sau aldoilea termen alunei operaiibinare
409
REGULISINTACTICE REGULISINTACTICE
NOP ( XCHGAX,AX)
instruciune fr operanzi
MOVSB
instruciune cuoperanzi implicii
MULCL
instruciune cuprimul operandimplicit(AX=AL*CL)
MOVAX,BX
AX destinaia ,BXsursa transferului
INCSI
SI termenul incrementat si destinaia rezultatului
ADDCX,DX
CX primul termen alsumei si destinaia rezultatului,DX aldoilea termen
ADDAX,BX,CX
instruciune incorect,prea mulioperanzi
410
DIRECTIVE DIRECTIVE SAUPSEUDOINSTRUC SAUPSEUDOINSTRUCf fIUNI IUNI
Suntinstruciunipentruprogramulasamblorexecutatelaasamblare pentruexecuia
unorfunciispecifice(alocarememorie,iniializareadrese,...)
Directivelenugenereazcodexecutabil (nuaucorespondentncodulmain
rezultat)
DB,DW,DD definetedateispecificdimensiuneamemorieialocate
MAXEQU 100 atribuieunnumesimbolicuneiconstantesauir
TABDB10DUP (?) declaraiirepetitivededate(iniializatesaunu)
IF expresie instruciunedeasamblarecondiionat :
;setinst1 permiteignorareauneiporiunidincodulsurs,funciede
ELSE ocondiiecareseevalueazlaasamblare(dac
;setinst2 expresiaesteadevrat,seasambleazsetul1de
ENDIF instruciuniidoaracesteasevorexecuta)
411
DIRECTIVE DIRECTIVE SAUPSEUDOINSTRUC SAUPSEUDOINSTRUCf fIUNI IUNI
.8086 activeazdoarsetuldeinstruciunipe16biispecificlui
8086(programulvafiasamblatnacestmod)
.MODELSMALL selecteazmodeluldememorie
.STACK100h definetedimensiuneasegmentuluidestiv (noctei)
.DATA deschideunsegmentdedateinchidesegmentuldeschis
anterioriiasociazoadresdenceputdisponibilprin
expresiaglobal@data
.CODE deschideunsegmentdecodinchidesegmentuldeschis
END marcheazsfritullogicalunuiprogramiesteobligatorie
ntoateprogramelescrisenlimbajdeasamblare;punctul(adresa)
denceputalprogramuluiesteevaluatdeasamblorprinapelul
acesteidirectiveurmatdeoetichetcemarcheaznceputul
coduluiexecutabil; toateinstruciunileceurmeazdirectiveisunt
ignoratelaasamblare
412
MODELULDEMEMORIE MODELULDEMEMORIE
TINY :toatesegmentele(date,cod,stiv)suntgeneratenacelai
spaiudemaxim64kBiartoatesalturileiapelurilede
procedursuntdetipNEAR.Programe.COM
SMALL :dateleistivanacelaisegment+unsegmentdecod(max
64kB).Salturileiapeluriledeprocedursuntimplicitdetip
NEAR
MEDIUM :unsegmentdedate+stivimaimultesegmentedecod.
SalturileiapeluriledeprocedursuntimplicitdetipFAR
COMPACT :unsegmentdecod+unsegmentdedate+unsegmentde
stiv.Salturileiapeluriledeprocedursuntimplicitdetip
NEAR
LARGE :attdatelecticodulgeneratpotdepi64kB(segmente
multiplededateicod)
HUGE :lafelcamodulcompactdarstructurilecompactededate
(gentablou)potdepi64kB
413
OPERATORI OPERATORI
OFFSET :furnizeazoffsetul(adresaefectiv)asociatuneivariabilesau
etichete;nmodsimilar,operatorulSEGfunizeazadresade
segmentasociat
movBx, OFFSETvar
LENGTH :ntoarcenumruldeelementedefinitentrovariabiliNU
dimensiuenaeinoctei(seaplictablourilordedate)
SIZE :ntoarcedimensiuneanocteiauneivariabile
THIS :creeazunoperandcareareasociateoadresdesegmentiun
offsetidenticecucontorulcurentdelocaii
alfaEQUTHIS word
PTR :operatorulpointerarecaefectschimbareatipuluivariabilei
saueticheteicreiaiseaplic;esteobligatoriuatuncicndse
folosescreferineanonimelamemorie (dincarenusepoate
deducetipuloperandului)
addAL,bytePTR [BX]
414
DECLARA DECLARAf fII IIb bIDEFINI IDEFINIf fIIDEDATE IIDEDATE
Sintaxa: NUME_VARDIRECTIVAVALOARE1{,VALOARE2,}
Variabile
contor1DB50 ;definebyte alocmemoriepentruunoctetiiniializeazdatade
;lalocaiarespectivlavaloarea50(nzecimal)
contor2DB1011b ;iniializarenbinar
Variabileneiniializate
rezultat1DW? ;defineword
Vectori
vect1DW1000h,1020h,1030h\ ;caracterul\ esteseparatordelinie
,1040h,1050h,1060h ;valoriiniializatenhexazecimal
vect2DW10DUP(?) ;alocunspaiudememoriepentru10cuvinte
Caractere iiruridecaractere
car1DBX
sir1DBTastaiuncaracter,0Dh,0Ah,$ ;linienou
;caracterul$ terminatordeir
415
DEFINIREASTRUCTURILORDEDATE DEFINIREASTRUCTURILORDEDATE
Nume_StructuraSTUCT STUCT
nume_membru<definiie_date>
Nume_StructuraENDS ENDS
Ex: ELEVSTRUCT
nume db20dup(?)
pren db20dup(?)
note db10dup(?)
med db?
COMPLEXENDS
Structurilereprezintcoleciidedate
plasatesuccesivprintrunnume
sintacticunic
Ostructuresteinterpretatcauntip
noudedateceintervinendefiniii
concrete:
studELEV<Ionescu,Ion, ,>
Principalulavantaj accesullamembri
ntroformasemntoareLN :
movAX,9
movstud.note[0],AX
416
SEGMENTULDEDATE SEGMENTULDEDATE
nsegmentuldedate,ncepndcuoffsetul0000h,suntniruitedatele,octetcu
octet,laadresesuccesive
VariabilelemultioctetsestocheazcuoctetulLOWlaadresainferioar
Directiva .dataseexecutdectreasamblorpentruatribuirea adresei de nceputa
segmentuluidedate
Program Memorie segmentuldedate
.data adres coninut(HEX)
var4 DB 12345 DS:0004 3132333435
var1 DB 25 DS:0000 25
var2 DB 10011101b DS:0001 AE
var3 DW 1A53h DS:0002 531A
var5 DB a DS:0009 61
417
SEGMENTULDECOD SEGMENTULDECOD
nsegmentuldecodsedefinescinstruciunileprogramului
Segmentuldecodpoateconinedefiniiidedate
Directiva .codeseexecutdectreasamblorpentrudeschidereasegmentuluicod(i
nchidereaceluidedate,presupunndcacestaafostdeschisnainte)
Adresainiialainstruciunilorprogramuluiexecutabiledeterminatdeasamblor
prindirectivaENDcefacereferinlaoetichetdenceputdeprogram
Oriceprogramtrebuiesaaibunnumeunicdeidentificare
UnprogramseincheieobligatoriucudirectivaEND
directivaENDsefolosteosingurdatnprogram;pentruproceduri,ENDP
.code
numeProg:
;...instruciunileprogramului
END numeProg
418
INI INIf fIALIZAREAREGISTRELOR IALIZAREAREGISTRELOR
Ini Ini ializarearegistrelorCS ializarearegistrelorCS iIP iIP
RegistreleCSiIPsuntiniializateautomatdectre sistemuldeoperareDOS la
ncrcareaprogramuluinmemorie,chiarnaintedeexecuialui;directivaENDindic
asambloruluicarevafiadresainiialcesevancrcanCS
DirectivaENDeurmatdeoetichetcaremarcheazpunctuldeundesedcontrolul
programuluidupncrcare
start:
;instruciuni
END start;specificadresadenceputacoduluiprinreferinalaetichet
RegistrulIPesteiniializatderegulcu0(adresaefectivaprimeiinstruciuni)sauo
valoareiniialnenulprinfolosireadirectiveiORG (Origin)
DirectivaORG iniializeazcontoruldelocaii($)carecontroleazoffsetul,n
segmentulcurent,deundeseasambleazinstruciunile(saudatele)
ORG100h ;asambleazlaoffsetul100h(dup256deoctei)
419
INI INIf fIALIZAREAREGISTRELOR IALIZAREAREGISTRELOR
Ini Ini ializarearegistrelorSS ializarearegistrelorSS iSP iSP
RegistrulSS esteiniializatautomatdectre sistemuldeoperareDOS lancrcarea
programuluinmemoriecuadresadefinitdeultimadirectivdedeschiderea
segmentuluidestiv
Directiva.stack <dim> poatespecificadeasemeneaidimensiuneastivei noctei
RegistrulSP esteiniializatcuvaloareadatdedimensiuneatotalastivei
.STACK100h ;defineteostivde256octei
RegistrulSSpoatefiredefinitprinprogramlaoaltvaloare
420
INI INIf fIALIZAREAREGISTRELOR IALIZAREAREGISTRELOR
Ini Ini ializarearegistrelorDS ializarearegistrelorDS iES iES
RegistreleES iDS trebuieiniializateexplicitdeprogramator naintedefolosirea
vreunuioperand
Asamblorulcalculeazdimensiuneasegmentuluidedate pebazamodeluluide
memorieiadatelordefinitenprogram
Locaia segmentuluidedate nmemorie(adresainiial)estedeterminattotde
asamblor(prindirectiva.data)idatdeexpresia@DATA
@datafiindoadres(datimediat),instruciuneaMOVnupermitencrcacreaei
directnregistrulDS:
MOVAX, @DATA
MOVDS,AX
421
CLASIFICAREAINSTRUC CLASIFICAREAINSTRUCf fIUNILORDUPOPERA IUNILORDUPOPERAf fIAEFECTUAT IAEFECTUAT
Instruciuni detransfer : mov,lea,les,push,pop,pushf,popf
Instruciuni deconversie : cbw,cwd,xlat
Instruciuni aritmetice :
add,incsub,dec,cmp,neg,mul,imul,div,idiv
Instruciuni logice,derotaie,deplasare (shift)ipe bit :
and,or,xor,not,shl,shr,rcl,rcr
Instruciuni deIntrare/Ieire(I/O) : in,out
Instruciuni pe siruri: movs,stos,lods
Instruciuni decontrolalfluxului deprogram :
jmp,call,ret,salturi condiionate
Instruciunidecontrolalprocesorului :clc,stc,cli,sti,wait,nop
422
INSTRUC INSTRUCf fIUNIDETRANSFERGENERALE IUNIDETRANSFERGENERALE
MOVDest,Sursa MOVDest,Sursa ;(Sursa) ;(Sursa) (Dest) (Dest)
Unuldinoperanzi(destinaiasausursa)esteobligatoriuregistrudeuzgeneral
Operanziinupotaveadimensiunidiferite
RegistrulCSnupoateapreacadestinaieiarregistrulIPnupoatefifolosit
Nusuntpermisetransferurile:
Memorie Memorie
Memorie Dateimediate
Memorie Registrusegmentdedate
DA MOVAX,[BX] MOVAX,BX MOVbyteptr[BX+10],7
NU MOVAL,BX MOV[BX],[SI] MOVCS,AX
XCHGDest,Sursa XCHGDest,Sursa ;(Sursa) ;(Sursa) (Dest) (Dest)
Aceleairestricii
Ex: XCHG[1234h],BX
423
INSTRUC INSTRUCf fIUNIDETRANSFERDEADRESE IUNIDETRANSFERDEADRESE
LEA LEA Reg16 Reg16, ,AE AE ; ;AE AE ( (Reg16 Reg16) )
LoadEffectiveAddress ncarcnregistruldestinaieadresaefectivavariabilei
surs(poatefiioetichet)
LEAsefolosetepentruncrcareareistrelordebazsegmentcuadresaefectiva
unoroperanzidinmemoire,pentruadresriulterioare
InstruciunileurmtoaresuntechivalentensMOVestemaieficient(necesitun
numrdeciclurimagistralmaimicpentruexecuie)
Ex: varDB7,5,3,1
MOV DX,OFFSETvar
LEA DX,var
LDS/LES LDS/LES LoadData/ExtraSegment LoadData/ExtraSegment
ncarcregistrudeuzgeneralsauregistrusegmentdedatesauextrasegment
LES LES DI,var DI,var ;ES:[DI] vaconineadresavariabileivar
424
INSTRUC INSTRUCf fIUNIARITMETICE IUNIARITMETICE
Instruciunilearitmeticeaurezultatuldepusntrunuldinoperanzi(primul)careeste
obligatoriuunregistru
Modificvalorilebistabililordecondiie:CF,AF,ZF,SF,PF,OF
ADD Adunare addD,S
(S)+(D) (D)
Carry (CF)
Toate
Flagurile
ADC Addwithcarry adcD,S
(S)+(D)+(CF) (D)
Carry (CF)
Toate
Flagurile
INC Incrementare incD (D)+1 (D)
Toatemai
puinCF
SUB Scadere subD,S
(D) (S) (D)
Borrow (CF)
Toate
Flagurile
SBB
Subtractwith
borrow
sbbD,S (D) (S) (CF) (D)
Toate
Flagurile
CMP Comparare cmpReg16,S
(Reg16),(S)nemodificatZF
=1dac(Reg16)=(S)CF=
1dac(Reg16)<(S)
Toate
Flagurile
425
INSTRUC INSTRUCf fIUNIARITMETICE IUNIARITMETICE
Operaiiledenmulireimprire(cusaufrsemn)auunsinguroperand(registru
saulocaiedememorie)iarrezultatulestememoratnregistreimplicite
nmulireaafecteazdoarflagurileCFiOF(suntsetatedacextensiaacumulatorului
estenenul)
Operailedemprire(cusaufrsemn)nuafecteazflagurile
MULOp
IMULOp
Denmulit
(implicit)
nmulitor(operand) Rezultat
Byte*Byte AL Registrusauadres (AH:AL) (AL)*(Op)
Word*Word AX Registrusauadres (DX:AX) (AX)*(Op)
DIVOp
IDIVOp
Demprit
(implicit)
Divizor(operand) Ct:Rest
Word/Byte AX Registrusauadres
(AL) (AX)/(Op)
(AH) AXmod(Op)
Word/Word DX:AX Registrusauadres AX:DX
426
INSTRUC INSTRUCf fIUNIARITMETICE IUNIARITMETICE
Exemple Observaii
ADDAX,25h
ADCAL,BL
ADD[1234h],[00F5h]esteincorect
.data
alfa DB10h
beta DW200h
.code
MOVAL,alfa
MOVAH,0
MULbeta
MUL05hesteincorect
(variantelenoidemicroprocesoareacceptcaoperandidate
imediate)
MOVAX,1000
MOVBL,2
DIVBL
Ctuloperaieieste500
Cumoperandulestepeoctet,rezultatulsevamemoranAL,
doarcavaloareanusepoatereprezentapeoctet
Aparedepire(overflow)isegenereazontreruperede
nivel0.Rutinaafectatacesteiaopreteexecuiaprogramului
iafieazunmesajdeeroarelaconsol
427
INSTRUC INSTRUCf fIUNIDE IUNIDE NTRERUPERE NTRERUPERE INT INT
Sintaxa: INT INT <nivel_int> <nivel_int>
Semnificaie:apelulprinprogramauneirutinesoftwaredetratareauneintreruperi
<nivel_int>=0...255 estenivelul(tipul)ntreruperiiapelate
Adresarutineiestepstratntabelavectorilordentrerupere(TVI)
TVIconine256deintrri(adrese pointer)pentrucele256deniveluriacceptatede
unporcesorx86
Moddeexecuie :
sesalveaznstivregistruldestareprogram(indicatoriidecondiie)
sesalveaznstivCSiIP(adresaurmtoareiinstruciunidinprogram)
secopiaznCS:IPadresarutineidentreruperedintabeladentreruperide
laadresareprezentatde4octeidelaadresadatdeexpresia:
<nivel_intrerupere>*4
seexecutinstruciunilerutineidetratare
serevinelaexecuiaprogramuluiprincipal
428
INSTRUC INSTRUCf fIUNIDE IUNIDE NTRERUPERE NTRERUPERE INT INT
0
*4
Memoriaprincipal
Rutinadentrerupere
Tabeladentreruperi(TVI)
(256deintrrix4octei)
Program
INT INT n
1kB
<adr_seg>:<offset>
1MB
429
FUNC FUNCf fIISISTEM IISISTEM
SubrutinealesistemuluideoperareDOS sausistemuluideI/OBIOS disponibile
programatouluiprinintermediulinstruciuniiINT(caregenereazontrerupere
software)
INTXXh esteinstruciuneapropriuziscareapeleazrutinadetratare
corespunztoare
naintedeapelulinstruciuniifunciasistemestedefinitprinncrcareaunorregiste
dedicate
RegistrulAH coninetotdeaunaidentificatorulfuncieiexecutate(rutinade
ntreruperencepeprinidentificareavaloriidinacestregistru)
Ex:
Funciapentruterminareaprogramului:elibereazmemoriaocupatdeprogrami
predcontrolulsistemuluideoperare(funcia4Canteruperii21h)
MOV AX,4C00h
INT 21h
430
PROTOTIPULUNUIPROGRAM PROTOTIPULUNUIPROGRAM NLIMBAJDEASAMBLARE NLIMBAJDEASAMBLARE
.model SMALL ; specificmodelul de memorie
.stack100h ;stivde256octei
.data ;nceputsegmentdedate
..... ;declaraiidevariabile
.code ;nceputsegmentdecod
start: ;etichetdenceputaprogramului
mov ax,@data
mov ds,ax ;initializare DS
...... ;instruciunialeprogramului
mov ax,4C00h ;revenire nsistemul deoperare
int 21h
endstart ; sfritprogram
431
PRIMULMEUPROGRAM PRIMULMEUPROGRAM
;Iniializeazregistrulsegmentdedate
;Funciesistempentruafiarealaconsoladeieire
;AfieazmesajuldelaadresaconinutnregistrulDX
;Funciadeterminareaprogramuluielibereazmemoria
ocupatdeprogramipredcontrolulsistemuluideoperare
P.1 P.1
432
TEMEDELABORATOR TEMEDELABORATOR L1 L1
P.2 P.2 Studiulexecuieioperaiiloraritmetice
Ssescrieunprogramcaresexecuteoperaiiaritmeticecunumerepe8i16bii
Sevastudiamoduldeexecuiealoperaiilordeadunare,scdere,nmulirei
mprire(testaredepire)
Sevorvizualizaregistreleimplicatenoperaiileefectuate
Se va vizualiza modul n care sunt afectate flagurile
P.3 P.3 Adudareanumerelorpe32debii
Ssescrieunprogrampentruadunareaadounumerepe32debii
Variabileledeintraresedefinescnhexazecimalnfelulurmtor:
var1dw1234h,5678h ;declararept.numul12345678h(32debii)
AtenielaTransport!
433
INSTRUC INSTRUCf fIUNIDETRANSFERCUSTIVA IUNIDETRANSFERCUSTIVA
PUSH PUSH opnd opnd ;SS:SP ;SS:SP (opnd) (opnd) SP SP SP SP 2 2
POP POP opnd opnd ;(opnd) ;(opnd) SS:SP SS:SP SP SP SP+2 SP+2
opnd opndReg16,Registrusegment,Datimediat,LocaiedememoriesauReg32(la
microprocesorelepe32debii)
Nupotfirealizatetrasnsferuricustivapeoctet
pushAX instruciunecorect
pushAH instruciuneincorect
StocareadatelornstivrespectconveniaLittleEndian (octetulLOWlaadresa
mic)
pushAX AHlaadresaSP1
ALlaadresaSP2
pushf,popf pushf,popf transferflagurin/dinstiv
pusha,popa pusha,popa transfertoateregistrele
434
INSTRUC INSTRUCf fIUNILOGICE IUNILOGICE
AND,OR,XOR,NOT AND,OR,XOR,NOT
Operaiilogice pe bit
Sintaxa: <operator> <operand1>,<operand2>
Semnificaia:<operand1> = <operand1> <operator> <operand2>
<operand1/2>:=<reg
8/16
>|<mem
8/16
>|<val_imediat>
Exemple:
andax,bx mov al,10101111b
orax,33h andal,00100000b
notvar1 ; nalvomavea: 00100000b
xor si,si
435
UTILIZAREAINSTRUC UTILIZAREAINSTRUCf fIUNILOR/OPERATORILORLOGICI IUNILOR/OPERATORILORLOGICI
pentru extragerea unui bitsau aunui grup debiidintrunsetdevalori logice
ex: masca EQU101b
and AL,masca ;nAL sepstreaz biiiD0iD2iarrestul vor fi 0
pentru aseta/reseta unbitsau unsetdebii
ex: masca1EQU80h
or AL,masca1 ;D7va fi setat (valoare 1)
masca2 EQU7fh
and AL,masca2 ;D7va fi resetat (valoare 0)
pentru extragerea unui bitsau aunui grup debiidintrunsetdevalori logice
TEST TEST
sintaxa:TEST <operand1>,<operand2>
execut unSI logicfr amemora rezultatul
sefolosetedoarpentrupoziionareaindicatorilordecondiii
436
INSTRUC INSTRUCf fIUNIDECONVERSIE IUNIDECONVERSIE
XLAT XLAT
Sintaxa :XLAT
instruciuneanuianiciunoperand,acioneazasupraunuitabeldeconversie
Semnificaia :
traduce uncodpe baza unui tabel deconversie (Lookuptable);
adresa tabelului trebuie sa sencarce nprealabil in BX
AL = [BX+AL]
Util pentru :
conversii decod (ex.zecimal codhexa)
calcule rapide pe baz derezultate precalculate (ex:inmulire,imprire),n
cazulunoroperaiiaritmeticerepetativencadrulprogramului(XLATseexecut
mairapiddectoperaiilearitmetice)
Alteinstruciunideconversie:
CBW (ConvertBytetoWord),CWB operandimplicitnregistrulAX
437
EXEMPLU EXEMPLU CONVERSIEZECIMAL CONVERSIEZECIMAL COD CODHEXA HEXA
.data
TABELA DB123456789ABCDEF
codhex DB??h
.code
MOV AL,198 ;numrzecimaldeconvertit
LEA BX,TABELA
AND AL,0FH ;sereincei4biiLOWdinAL
XLAT
MOV codhex[1],AL ;codhex=?6h
MOV CL,4
SHR AL,CL ;sedeplaseazALspreadreaptacu4poziii
XLAT
MOV codhex[0],AL ;codhex=C6h (codulHEXA allui198)
Tem:P4.Criptareaunuimesajtextintrodusdelatastatur
438
INSTRUC INSTRUCf fIUNIDECONTROLALPROGRAMULUI IUNIDECONTROLALPROGRAMULUI SALTNECONDI SALTNECONDIf fIONAT IONAT
JMP<eticheta>|<REG>|<var_pointer> JMP<eticheta>|<REG>|<var_pointer> IP IP IP+disp IP+disp
8/16 8/16
execut transferulexecuieilaoaltadresncadrulprogramului
saltulseexecutprininiializareaconinutuluiregistruluiIPcuonouvaloare
datdeundeplasamentpe8sau16bii(disp)evaluatlaasamblare
distanaiadresasaltuluisuntcalculatedeasamblor
pentruamarcaintasaltuluisepreferutilizareaetichetelor(definiteprin : sau
prin numedeproceduri)
salturilenecondiionatenusuntagreatenprogramareastructurat
valoareadeplasamentuluipoatefipozitiv(saltnainte)saunegativ(saltnapoi)
tipuridesalt:
saltintrasegment(deplasamentpe8/16bii)datprinetichetsauregistru
saltintersegmentdatprintrovariabilpointer <adr_seg:offset>(CS:IP)
JMPET1 ;saltnainte
...
ET1: ...
JMPET1 ;saltnapoi
439
INSTRUC INSTRUCf fIUNIDECONTROLALPROGRAMULUI IUNIDECONTROLALPROGRAMULUI SALTCONDI SALTCONDIf fIONAT IONAT
Jcc<eticheta> Jcc<eticheta> IP IP IP+disp IP+disp
8 8
execut saltdacestendeplinitcondiiacc
condiiaestedatdstareaunuiasaumaimultorindicatoridecondiie(flaguri):
CF,ZF,SF,OF,PF
pentruaceeaicondiiepotexistamnemonicidiferite(ex:JZ,JE)
<eticheta>setraduceprintrodistanrelativpe8bii(la8086salturilepotfi
doarnintervalul128...127isenumescsalturiscurte)
CMP AX,BX
JE egal
...
egal:
TEST AL,101
JNZ et1
et1:
ADD AX,[BX]
JO eroare
.......
eroare:
440
INSTRUC INSTRUCf fIUNIDECONTROLALPROGRAMULUI IUNIDECONTROLALPROGRAMULUI SALTCONDI SALTCONDIf fIONAT IONAT
Instr. Conditia Alias
JC CF=1 JB,JNAE
JNC CF=0 JNB,JAE
JZ ZF=1 JE
JNZ ZF=0
JS SF=1
JNS SF=0
JO OF=1 JPE
JNO OF=0 JP
JP PF=1 JPO
JNP PF=0 JNP
Instr. Conditie Indicatori Alias
JG > SF=OF sau ZF=0 JNLE
JGE >= SF=OF JNL
JL < SF!=OF JNGE
JLE <= SF!=OF sau ZF=1 JNG
JE = ZF=1 JZ
JNE != ZF=0 JNZ
441
CONTROLULPROGRAMULUI CONTROLULPROGRAMULUI INSTRUC INSTRUCf fIUNIDEBUCLARE IUNIDEBUCLARE
JCXZ,JECXZ JCXZ,JECXZ saltdacCX(respectivECX)este0
sefolosetenainteauneiinstruciunidebuclare(LOOP),pentruaprentmpina
execuiade65.535deoriabuclei,ncazulncareCX=0
LOOP<eticheta> LOOP<eticheta> instruciunedebuclare
ceface: CXCX1
dac(CX!=0)saltla<eticheta>(repetinstruciuniledinbucl)
altfelcontinucuinstruciuneaurmtoare
CXestefolositimplicitpentrucontorizareaciclurilorexecutate
LOOPZ/LOOPE<eticheta> LOOPZ/LOOPE<eticheta> instruciunidebuclare
semnificaia: CXCX1
dac(CX!=0)i(ZF=1)saltla<eticheta>
altfelcontinucuinstruciuneaurmtoare
LOOPNZ/LOOPNE<eticheta> LOOPNZ/LOOPNE<eticheta> instruciunidebuclare
semnificaia: CXCX1
dac(CX!=0)i(ZF=1)saltla<eticheta>
altfelcontinucuinstruciuneaurmtoare
442
EXEMPLU EXEMPLU CALCULULSUMEIELEMENTELORUNUIVECTOR CALCULULSUMEIELEMENTELORUNUIVECTOR
;varianta1 :
MOV CX,LENGTHvector
LEA SI,vector
MOV AL,0
bucla:
ADD AL,[SI]
INC SI
LOOP bucla
;varianta2 :
MOV CX,LENGTHvector
LEA SI,0
MOV AL,0
bucla:
ADD AL,vector[SI]
INC SI
LOOP bucla
.data
vector DB1,2,3,4,5,6,7,8,9,10
443
PROGRAMAREAMICROPROCECSOARELOR PROGRAMAREAMICROPROCECSOARELOR
Macrouri
Administrareaprogramelormari
Apelullaresurselesistemuluidecalcul
Scriereaprocedurilorirutinelordetratare
Optimizareaprogramelor
TEHNICIDEPROGRAMARE TEHNICIDEPROGRAMARE
444
MACROINSTRUC MACROINSTRUCf fIUNI IUNI
Formeprescurtatedescriereaunorsecvenedeprogramcareserepet
Sintaxa:
nume_macro nume_macro MACRO MACRO { {par1, par1, { {par2, par2, ...}} ...}}
<secven <secven deinstruc deinstruc iuni> iuni>
ENDM ENDM
Exemplu: macroinstruc macroinstruc iunedetransferdirect iunedetransferdirect
definiremacroinstruciune
m_movmacroDest,Sursa
movax,Source
movDest,ax
endm
apeldemacroinstruciunenprogramulprincipal
m_movx,y
445
MACROINSTRUC MACROINSTRUCf fIUNIvs.PROCEDURI IUNIvs.PROCEDURI
Macrouri Macrouri
lafiecareapelsegenereazntreaga
secvendeinstruciuni
nusuntnecesareinstruciunideapel
(CALL)idereveniredinrutina(RET)
nusefolosetestiva
transferuldeparametrisefacedirect
prinspecificareanumelui
execuiemaieficientfadeapelul
deproceduri
potficreateinstruciuni noi
Proceduri Proceduri
osingurcopiepentrumaimulte
apeluri
sefolosescinstruciunideapelside
revenire
seutilizeazastivalaapelsila
revenire
transferuldeparametrisefaceprin
registresaustiv
446
ADMINISTRAREAPROGRAMELORMARI ADMINISTRAREAPROGRAMELORMARI
Programelemarisescriumodular
Creareafiieruluiexecutabilsefacendouetape:
seasambleazseparatfiecaremoduldeprogram
selinkediteazmpreunfiiereleobiectrezultate
Moduleprogram
myPp.asm myPp.asm
programulprincipalalaplicaiei
Asamblor
Interpretator
(Linker)
myPp.obj myPp.obj
myPp.exe myPp.exe
linkmyProg.objio.obj
lkFile1.obj
lkFile2.obj
io.h io.h
declaraiidedate,structuri
declaraiideproceduri
definiiidemacroinstruciuni
io.asm io.asm
definiiideproceduri
Biblioteci
SistemdeOperare
io.obj io.obj
447
ADMINISTRAREAPROGRAMELORMARI ADMINISTRAREAPROGRAMELORMARI
Legareamodulelordeprogramnecesitfolosireaunordirectivespecifice:
Directiva INCLUDE INCLUDE (INCLUDEnume_fisier) (INCLUDEnume_fisier)
Directivele PUBLIC,EXTERN,EXTRN PUBLIC,EXTERN,EXTRN
PUBLICnume_proc1,{nume_proc2,...} PUBLICnume_proc1,{nume_proc2,...}
EXTERNnume_proc1:tip,{nume_proc2:tip,...} EXTERNnume_proc1:tip,{nume_proc2:tip,...}
myPp.asm myPp.asm
includeio.h
;altedirective
;instruciuniprog.principal
;apelprocecdura:
callproc2
;apelmacroinstruciune
macro1
io.h io.h
externproc1:far
externproc2:far
;declaraiidedate
;declaraiimacrouri
macro1macro
;instruciuni
callproc1
endm
io.asm io.asm
publicproc1
publicproc2
proc1procfar
;instruciuni
endp
proc2procfar
;instruciuni
endp
448
ACCESULLARESURSELEUNUISISTEM ACCESULLARESURSELEUNUISISTEM
Resurseleunuisistemdecalcul:
hardware:
registre,indicatoaredecondiie(flaguri)
memorie
interfeeidispozitivedeintrare/ieire
sistemuldentreruperi
ceasdetimpreal,altetimere
software:
sistemuldefiiere
gestiuneataskurilor
gestiuneacomunicaieiiserviciidesincronizare,etc.
449
NIVELURILEDEACCESLARESURSE NIVELURILEDEACCESLARESURSE
MH
BIOS
DOS
LNI+BIB.
Aplicaii
Comenzispecifice
Funcii predefinite
Funcii sistem (INT 21h)
RutinedentrerupereBIOS:
INT10h,13h,16h,....
InstruciuniIN/OUT
450
ACCESULLANIVELULMA ACCESULLANIVELULMAb bINIIHARDWARE INIIHARDWARE
Sefaceprininstruciunidescrire/citiredelaporturileinterfeelordeintrare/ieire
aledispozitivelorhardzarealesistemului(IN/OUT)
Exemplu:Tiprireaunuitextlaimprimant
.data
text dbhello world
ltext equ$text
port equ378h
port_c equ37ah
port_s equ379h
strob equ00000001b
busy equ10000000b
ack equ01000000b
cmd_init equ 00000001b
.code
start:movax,data
movds,ax
movsi,offsettext
movcx,ltext
movdx,port_c
moval,cmd_init
out dx,al
movdx,port_s
et1: inal,dx
testal,busy ;activpe1
jzet1
moval,[si]
incsi
movdx,port
outdx,al
movdx,port_c
moval,cmd_init
;seforteaza0pestrob
andal,NOTstrob
outdx,al
movdx,port_s
et2:inal,dx
testal,ack;activpe0
jnzet2
movdx,port_c
moval,cmd_init
;seforteaza1pestrob
oral,stb
outdx,al
movdx,port_s
loopet1
movax,4c00h
int21h
endstart
451
ACCESULLARESURSEPRIN ACCESULLARESURSEPRIN NTRERUPERIBIOS NTRERUPERIBIOS
Existdoutipuridentreruperi:
ntreruperihardware semnaleelectricegeneratedeinterfeelaapariiaunui
eveniment(ex:recepiaunuicaracter,citireaunuisectordedisc,eroarede
transmisiepeunportserial,etc.)
ntreruperisoftware porideacces laresurseprinrutine(funcii)BIOS
fiecaretipderesurs(interfaa)arerezervatunniveldentrerupere
seapeleazprininstruciuneaINTn (unencorespundeniveluluintreruperii
asociatinterfeeirespective)
laapelulacesteintreruperiseexecutorutindetratarespecific
sistemuluideintrare/ieire
transferuldedatentreresurseiprogramsefacepriintermediulregistrelor
procesorului
redirectare toatentreruperileBIOSpotfiredirectate
obiectiv:rescriereaunorfunciialeS.O.referitorlaoanumitresurs
modderealizare:senlocuietentabelavectorilordentreruperiadresarutinei
vechicuadresanoiirutinedetratare(cevaconinenouldriveralresursei);la
terminareaaplicaieiserefacevecheaadres
452
CITIREAUNUISECTORDEDISCPRIN CITIREAUNUISECTORDEDISCPRIN NTRERUPEREBIOS NTRERUPEREBIOS
.data
buf db512dup(?)
.code
start:
movax,@data
movds,ax
moves,ax
;initializareparametriideapel
movah,02 ;funciadecitire
moval,1 ;nr.desectoare
movcl,5 ;nrsector
movch,0 ;nr.pista
movdl,0 ;nr.disc
movdh,0 ;nr.cap
movbx,offsetbuf
int13h
jc err
....
err: ;codpt.eroare
endstart
Rutina denterupere BIOS INT13h
453
IMPRIMAREAUNUITEXTLAIMPRIMANT IMPRIMAREAUNUITEXTLAIMPRIMANT
.model small
.stack16
.data
msg db 'Helloworld!',0dh,0ah,' directprinting',0dh,0ah,'$'
MSG_LENdw $msg1
.code ;defineste segmentul decod
mov ax,@data
mov ds,ax
call print
print procnear
mov ah,01h ;Serviciul 01="Initializeaza portul deimprimanta"
mov dx,00h ;Portul deimprimanta 0
int 17h ;Apel deintrerupere initializare port
mov si,offsetmsg ;Incarca AEamesajului inSI
mov cx,MSG_LEN ;Incarca inCXlungimea sirului
again: mov ah,00h ;Functia 00="Imprimacaracter"
mov al,byteptr [si] ;caracter detrimis pusinAL
int 17h ;Apel rutina imprimare caracter
cmp ah,01h ;Caracter neimprimat AH=1
jnz next
jmp exit
next:inc si ;adresa urmatorului caracter
loop again ;Trimite caracterul urmator laimprimanta
exit:ret
print endp
end
Rutina denterupere BIOS INT17h
454
ACCESULRESURSEPRINAPELURISISTEM(SYSTEMCALLS) ACCESULRESURSEPRINAPELURISISTEM(SYSTEMCALLS)
Sefolosescconceptemaiabstracte:
fiier pt.accesulladispozitiveledestocare
canal pt.dispozitiveledetransmisieadatelor
dispozitivstandarddeintrare
dispozitivstandarddeieire
Moduldeacces:
seseteazanumiiparametrinregistreleprocesorului
indicativulfuncieisistemapelate sencarcntotdeaunanregistrulAH
seconstruiescanumitestructuridedatept.acces(handler)
seapeleazntrerupereaINT21h
setesteazcorectitudineaefecturiioperaiei
datelesunttransferatentreprogramiresurselesistemuluiprinintermediul
registrelorgeneralealeprocesorului
455
EXEMPLEDEFUNC EXEMPLEDEFUNCf fIISISTEM IISISTEM
01h citireatastaturiicuecou
02h afiareaunuicaracter
05h tiprireaunuicaracter
08h citireatastaturiifrecou
09h afiareaunuiirdecaracterelaconsoladeieire(ecran)
14h citireasecvenialcuFCB
15h scriereasecvenialcuFCB
3Fh citireaunuifiier
40h scriereaunuifiier
31h revenireanprocesulprintecupstrareaalocriimemoriei
4Ch revenireansistemuldeoperare
456
EXEMPLEDEFUNC EXEMPLEDEFUNCf fIISISTEM IISISTEM
;Tiparireaunuicaracter
moval,x
movah,05h
int21h
;Citireaunuicaracterdeladisp.deintrarestandard
movah,01h
int21h
;nALvafimemoratcodulasciialcaracteruluicitit
;Ieireadintrunprocescupstrareaalocriimemoriei
movah,31h
moval,cod_retur
movdx,dimensiune
int21h
;dimensiuneamemorieirezervatesednparagrafede16octei
REPREZENTAREABINARAINFORMA REPREZENTAREABINARAINFORMAf fIEI IEI
458
PROGRAMAREAMICROPROCECSOARELOR PROGRAMAREAMICROPROCECSOARELOR
Reprezentareabinarainformaiei
Sistemedenumeraieiregulideconversie
Reprezentareanumerelorcusemn
Coduridereprezentare.Coddirect.Codinvers(C1)
Codulcomplementfade2(C2)
Reprezentareanumerelorreale.Virgulfix
Reprezentareanvirgulflotant
459
TI TIPURIDEINFORMA PURIDEINFORMAf fIIREPREZENTATEINTERN IIREPREZENTATEINTERN
Datenumerice:valorintregi,fracionare,numerereale,pozitivesaunegative
valorinumericefolositecaoperanzinumericincalcule
valorinumericecarereprezintoperaiicodificatenbinar(instruciuni)sau
valoribinarececodificadrese.
Datealfanumerice:caractere,text
caractere,textisemnegraficefolositedeobiceipentrulegturaculumea
exterioar(afiare,tiprire,introduceredate,etc.)
Datelogice(booleane)
Datemultimedia:audio,imagine,video
460
REPREZENTAREABINARAINFORMA REPREZENTAREABINARAINFORMAf fIEI IEI
nsistemelenumericedecalculactualeinformaiavehiculat,indiferentc
reprezintinstruciuni(specificeprocesorului),adresesauoperanzi,estedetipbinar
Reprezentareasefaceprincodificareainformaiilor
Codificareainformaiilorsefacefolosindsistemedenumeraie :
setdesimboluri
setderegulidereprezentare
baza=numruldesimbolurifolosite
Princodificare,sefaceocorespondenntreelementeleuneimulimideinformaii
cuNelementeielementelemulimiibinareB={0,1},astfelnctfiecruielement
informaionalsicorespundosecvendeelementedinmulimeabinar
PentruacodificaceleNelementealemulimiiIestenecesarosecvendenbii,
relaiantreniNfiind:
N 2n
461
SISTEMEDENUMERA SISTEMEDENUMERAf fIE IE
Regulidereprezentare:
X
b
x
m
x
m1
x
m2
....x
0
x
1
x
2
....x
n
0 x
i
<b,i=n..m
x
m
!=0,x
n
!=0
X
b
=x
m
*b
m
+x
m1
*b
m1
+....x
0
*b
0
+x
1
*b
1
+ x
2
*b
2
...x
n
*b
n
Tipuri:
sistemulbinar(b=2):puinereguli,multecifre
sistemulzecimal(b=10):multereguli,maipuinecifre
sistemulhexazecimal(b=16):sistemintermediarntrebinarizecimal
Regulideconversie(ex.binar hexazecimal):
1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 0
2 B A C
462
CONVERSIIBINAR CONVERSIIBINAR ZECIMAL ZECIMAL HEXAZECIMAL HEXAZECIMAL
Regulideconversie:
463
CONVERSIANUMERELORRA CONVERSIANUMERELORRAf fIONALE IONALE
Conversiapriintregiserealizeazprindivizaresuccesivcunouabaz
exempludinbaza10nbaza2:
3030
10
=11110
2
0,480,48
10
=0,0111...
2
150 0,960
71 1,831
31 1,661
11 1,321
Conversiapariifracionareserealizeazprinnmuliresuccesivcunouabaz
atenie !!! conversianuesteprecis(univoc)
464
REPREZENTAREADATELORNUMERICE REPREZENTAREADATELORNUMERICE
Moduldereprezentareadatelenumericentruncalculatorareinfluendirecti
depindedirectde:
structuraUCP
dimensiunearegistrelordeuzgenerallocale
dimensiuneamagistraleiinterne
complexitateaunitiideexecuie
nfunciedepoziiavirgulei,reprezentrilepotfi:
reprezentarenvirgulfix :pentrunumerentregisausubunitare
reprezentarenvirgulmobil :pentrunumerereale
Virgulanusereprezintfizicnicierinregistrelecalculatoruluidarpoziiasaeste
cunoscut(stabilit)pentrufiecaredintremoduriledereprezentare
465
VIRGULAFIX VIRGULAFIX VIRGULMOBIL VIRGULMOBIL
Reprezentareanvirgulfix virgulfixestefolositdetoatecalculatoarelenumericedeuz
general
Majoritateaprocesoarelordeuzgenerallucreazcunumerentreginvirgul
fix,datoritavantajelornceeaceprivetestructurahardwareacircuitelor
pentruoperaiiaritmeticeilogice
Reprezentareanvirgulfixcunumeresubunitareareavantajedinpunctulde
vederealoperaiilordenmulire,pentrucaceastoperaienuvaducela
depireacapacitiidereprezentarepentruprodus
Reprezentareanvirgulmobil virgulmobil sefacepentrunumerereale
Nutoatecalculatoareleconinnssuportulhardwarenecesarpentruaritmetica
nvirgulmobil(8086arenevoiedecoprocesorulmatematic8087)
Operaiilecunumerenvirgulmobilsepotefectuapeprocesoarenvirgul
fix,prinemulare(interpretare)cuajutorulunorprogramedeemulare
466
FORMATEBINAREDEREPREZENTAREADATELORNUMERICE FORMATEBINAREDEREPREZENTAREADATELORNUMERICE
Bit(binarydigit):
unitateaelementardeinformaie
stareaunuibistabilsauauneiceluleelementaredememorie
Octet(byte) grupde8bii :
unitateaelementardeadresarelacelemaimultecalculatoareactuale
poatereprezenta:ovaloarenumeric,uncaracter(codASCII)
bitul7 MSB(celmaisemnifiativbit)
bitul0 LSB(celmaipuinsemnificativbit)
Cuvnt(word) 16bii:
folositpentrureprezentareantregilor
Dublucuvnt(doubleword) 32debii:
reprezentareanumerelornvirgulfixsaunvirgulflotantsimplprecizie
Cuadruplucuvnt(quadword) 64debii:
numerenvirgulfixsaunvirgulflotantdublprecizie
467
FORMATEBINAREDEREPREZENTAREADATELORNUMERICE FORMATEBINAREDEREPREZENTAREADATELORNUMERICE
Cuvnt(word) 16bii:
folositpentrureprezentareantregilor,simplprecizie
Dublucuvnt(doubleword) 32debii:
folositpentrureprezentareanumerelornvirgulfix(dublprecizielasistemele
pe16bii)saunvirgulflotant
Cuadruplucuvnt(quadword) 64debii:
folositpentrureprezentareanumerelornvirgulfix(dublprecizielasistemele
pe32bii)saunvirgulflotant
Formateextinse 80debii:
folositpentrureprezentareanumerelornvirgulflotantdublprecizie
468
REPREZENTAREANUMERELORCUSEMN REPREZENTAREANUMERELORCUSEMN
Sefolosesctreitipuridecoduribinare:
coddirect (numiticodmrime/modulisemn,notatpescurtMS MS)
codinvers (numiticodcomplementfade1,notatpescurtC1 C1)
codcomplementar (numiticodcomplementfa codcomplementfa de de2 2,notatpescurtC2 C2)
Pentrutoateceletreitipuridecodurireprezentareanumerelorpozitiveesteidentic
ndescriereacodurilorvomconsideractoatecuvinteleaulungimeadenbii
469
REPREZENTAREANUMERELOR REPREZENTAREANUMERELOR NMRIME NMRIMEb bISEMN ISEMN
Codare:
MSBeste1pentrunumerenegative 10000110:6
MSBeste0pentrunumerepozitive 00000110:6
restulbiilorcodificmodulul(mrimea)numruluiiesteacelaipentrunumere
pozitiveinegative
Domeniudereprezentare:
numerentregi: (2
n1
1) N 2
n1
1
numeresubunitare: (12
n1
) N 12
n1
Dezavantaje :
Algoritmirelativcomplecipentruuneleoperaiiaritmetice(adunareiscdere)
Existdoureprezentripentrunumrulzero:
00000...0 i 10000...0
470
C1 C1 CODCOMPLEMENTFA CODCOMPLEMENTFAf fDE DE1 1
Codare:
pentrunumerenegativesecomplementeaztoibiiidinreprezentareaMS,iar
bituldesemneste1
formuldecalculpartentreag: (N)
C1
=2
8
|N| 1
Exemplu:
N=6 00000110
N=6 11111001
Acelaidomeniudereprezentarecancazulcoduluidirect
Avantaje:
codarefoartesimpl
domeniusimetricalnumerelorreprezentate
Dezavantaje:
algoritmirelativcomplecipentruoperaiilearitmeticeelementare
reprezentaredublpentrunumrulzero:
00000...0i 11111...1
471
C2 C2 CODCOMPLEMENTFA CODCOMPLEMENTFAf fDE DE2 2
Codificare:Pentrunumerelenegative,codulsepoatededucentreimoduri:
ExempluN=6 :
C1 11111001+
1
11111010
Domeniudereprezentare:
numerentregi: (2
n1
1) N 2
n1
1
numeresubunitare: 1 N 12
n1
parteantreag parteafrancionar
din(N)
C1
(N)
C2
=(N)
C1
+1 (N
f
)
C2
=(N
f
)
C1
+1/(2
n1
)
din|N| (N)
C2
=2
n
|N| (N)
C2
=2
n
|N
f
|
Folosind reprezentarea modulului numrului negativ, secomplementeaz
toibiiimaipuinprimulbit1porninddelaLSB.
472
C2 C2 CODCOMPLEMENTFA CODCOMPLEMENTFAf fDE DE2 2
Reprezentareancodcomplementaranumerelornegativesageneralizatla
procesoareleactuale,datoritavantajelor avantajelorurmtoare:
Scdereaunuinumrdinaltnumresteechivalentmatematiccuadunarea
complementuluidedoiascztoruluiladesczut(seimplementeazdoar
operaiadeadunare)
CodificareanC2printruncircuitelectronicestefoarteuorderealizat
C2areosingurreprezentarepentruzero(000...0),(rezultuncodnplus,la
acelainumrdebii,pentrureprezentareaaltuinumr)
UnntregnreprezentareaC2poatefiuorextinslaunformatmaimare(numr
maimaredebii)frschimbareavaloriisaleestenecesardoarcabitulde
semnsfierepetatntoatepoziiilebinaredeordinsuperior(extensiedesemn)
16b: snnnnnnnnnnnnnnn
32b: ssssssssssssssss snnnnnnnnnnnnnnn
Principaluldezavantaj dezavantaj alcoduluicomplementarlconstituiealgoritmiipentru
nmulireimprire,maicomplecidectceicorespunztoricoduluiMS
473
C2 C2 CODCOMPLEMENTFA CODCOMPLEMENTFAf fDE DE2 2
Exempledecoduripe8biipentrunumerecusemn:
OperaiiaritmeticeinC2:
adunare 7+4
711111001+
400000100
311111101
scdere 7 4
711111001 711111001+
400000100 411111100
1311110101
N MS C1 C2
6
6
00000110 00000110 00000110
10000110 11111001 11111010
474
REPREZENTAREANUMERELOR REPREZENTAREANUMERELOR NVIRGULMOBIL NVIRGULMOBIL
Sefolosetepentrustocareaiprelucrareanumerelorreale ncalculator
Denumireaprovinedelafaptulcvirgulanuareopoziiefixfadeiruldebiice
reprezintvaloareanumrului
Poziiavirguleisepoatemodificafiecaspermitefectuareadeoperaiiaritmeticei
logicecunumerereale,fiepentrureprezentareastandardizat,nvirgulmobil,a
numerelorreale
Reprezentarenumrreal:
N= Mx B
E
M M = =mantisa mantisa,reprezentatcaunnumrbinarsubunitarcusemn;
E E = =exponentul exponentul,reprezentatcaunnumrntregcusemn;
B B = =baza baza,este2sauoputerealui2
475
REPREZENTAREANUMERELOR REPREZENTAREANUMERELOR NVIRGULMOBIL NVIRGULMOBIL
Reprezentareanumerelorncalculatorsefaceprincuvintebinareculungimeegal
culungimearegistrelordestocare
Preciziadereprezentareaunuinumrrealestedatnprimulrnddenumrulde
biifolosiipentrureprezentareaMantisei
DomeniulmaximdereprezentareestedeterminatdevaloareaadoptatpentruBaz
idenumruldebiifolosiipentruareprezentaExponentul
Bazanuestereprezentatncalculatorulnumeric,darseinecontdevaloareaei
atuncicndseefectueazoperaiiaritmetice
Launanumitcalculatornumericvaloareabazeiesteaceeaipentrutoatenumerele
realereprezentate
Spredeosebiredenumerelentregi,numerelerealesereprezintcuoanumit
aproximaiencalculator,determinatdenumruldebii.Eroareadereprezentare
depindededistanadintredounumeresuccesivereprezentabilecuceinbii
476
REPREZENTAREANUMERELOR REPREZENTAREANUMERELOR NVIRGULMOBIL NVIRGULMOBIL
Pentrureprezentareamantiseinumerelornvirgulmobilsefoloseteforma forma
normalizat normalizat ncare,pentrureprezentareanmrimeisemn,primapoziiebinar
dupvirgulestediferitdezero
Normalizarearestrngemrimeavaloriiabsoluteamantiseibinareladomeniul:
M < 1
Normalizareanbinaresteuordefcut,prindeplasareamantiseictredreaptasau
stngaiincrementarearespectivdecrementareacorespunztoareaexponentului
Deexemplu,numrulcumantisanormalizat0.11011000 2
10
poatefiscris:
0.11011000 2
10
=0.011011000 2
11
=0.0011011000 2
12
477
SCARADEREPREZENTAREANUMERELORREALE SCARADEREPREZENTAREANUMERELORREALE
Reprezentareanvirgulflotantestediscret;numodeleazcompleticontinuu
mulimeanumerelorreale
Reprezentaresimplprecizie(32debii):
1 1 bitdesemn bitdesemn
8 8 bi bi iexponent iexponent
23bi 23bi imantis imantis
Limiteledereprezentareanumerelorrealepe32debii(simplprecizie):
-
+
-N
max
-N
min
0 N
min
N
max
N
min
= 0,1000...0 x 2
127
+N
max
=+0,1111...1x2
+127
exponent
pe8bii
23debii1
mrime
1bitde
semn
22debii0
mrime
478
REPREZENTAREANUMERELOR REPREZENTAREANUMERELOR NVIRGULMOBIL NVIRGULMOBIL
Dacnurmaefecturiioperaieiaritmeticerezultatule [N
MAX
,+N
MAX
]sespunecs
aprodusodepireacapacitiidereprezentare
Programulncareseproducedepireasentrerupe,iarevenimentulestetratatdeo
rutin(deservireacazuluideexcepie"depire"),carevatransmiteunmesajctre
utilizator
Dacansrezultatulsencadreaznintervalulcunumerepreamicipentruafi
reprezentatecumantisenormalizate[N
MIN
,+N
MIN
]numrulesteaproximat,de
obicei,cuzero
Reprezentarealuizeropuneuneleprobleme,pentrucmantisapoaterezultazero
(nenormalizat)darexponentulsupoateaveaoricevaloare
Dinpunctuldevedereacircuitelorcaretesteazdacunnumresteegalcuzero,ar
fiavantajoscasavemaceeaireprezentarepentrunumril0calantregi
(succesiunenumaidebii0ntoatecmpurile:semn,exponent,mantis)
Valoareazeroesteconsiderataficeacarecorespundelaexponentulmaximnegativ
(127nexempluldemaisus)
479
REPREZENTAREANUMERELOR REPREZENTAREANUMERELOR NVIRGULMOBIL NVIRGULMOBIL
Deasemenea,puneproblemedereprezentarefaptulcestenecesarssereprezinte
dousemnepentrufiecarenumr(semnulmantiseiisemnulexponentului)
Ocalederezolvareaproblemeireprezentriinumruluizeroestefolosirea
exponentuluideplasat exponentuluideplasat (saucaracteristic caracteristic,notatncontinuarecuC)cuvaloarea
constantK :
Deplasarea,pentrureprezentarepe8biiaexponentuluisepoatefacecu
C C = =E E + +K K , K =127(2
n1
1)
Astfelcvaloareacaracteristicii sencadreaznintervalul[0,254]
Caracteristica Caracteristica Mantisa Mantisa S S
3130 2423 0
480
REPREZENTAREANUMERELOR REPREZENTAREANUMERELOR NVIRGULMOBIL NVIRGULMOBIL
Dacmantisaestereprezentatncoddirectiestenormalizat,primulbit al
acesteiaeste1pentrutoatenumerele
Acestprimbitpoatesnumaifiereprezentat(bitascuns,"hiddenbit HB)
Caurmare,nformatulpe32debii,mantisapoatefireprezentatpe24debii(23
biireprezentaiefectiv+1HB)preciziadereprezentarecrescnddedouori
Deasemenea,faptulcbitul1esteascuns,permitenumerelorpozitivefoartemici
(+0,1*2
127
,reprezentatcuHB)saibnumaizerouripetoicei32debii,deci
reprezentareanumruluizeroesteidenticcuceadelareprezentareantregilor,
putndusefolosiaceleaitipuridecircuitededeteciearezultatuluinul
Caurmare,laefectuareaoperaieidenormalizare,virgulamobilestemutatpn
cndnstngasasegseteunbit1,iarceilalibiisegsescndreaptavirgulei
481
REPREZENTAREANUMERELOR REPREZENTAREANUMERELOR NVIRGULMOBIL NVIRGULMOBIL
FormatuldereprezentarenvirgulmobilestabilitprinstandardulIEEE754,aprut
n1980icompletatulterior:
32bii(simplprecizie) reallung (float)
64bii(dublprecizie) reallung(double)
noricaredintreformate,standardulimpunefolosirea
E exponentuluideplasat
E formanormalizatpentrumantis
E bitulascuns
E bazaBesteconsideratafiegalcu2
Bitulascunsnusereprezintnformatulbinarnvirgulmobil,dardevaloareasase
inecontatuncicndselucreazcunumerele(unitilearitmeticeilogiceincont
debitulascuns)
482
REPREZENTAREANUMERELOR REPREZENTAREANUMERELOR NVIRGULMOBIL NVIRGULMOBIL
41C80000h=01000001110010000...0 =1,52625 2
4
=25
C F S
caracteristica : C=83h=E+127 E=4
mantisa : M=1F=1100100000...0= 1 1 +
1 0,5 +
0 0,25 +
0 0,125 +
1 0,0625+
0 0,03125+...
1,52625
6,1875=1,546875 2
2
=01000000110001100...0 =40C60000h
C F S
caracteristica : E=2 C=E+127=129=81h
mantisa : M=1,546875(sescadsuccesivvalorilelui1/2
m
,cum=23n,unde
n esterangulbinaralmantisei;seia1acoloundescdereaeste
posibili0 nrestpentruconstruireamantisei)
483
CODULALFANUMERIC CODULALFANUMERIC ASCII ASCII
Suntcoduricarestabilescocorespondenantremulimeaformatdinlitere,cifrei
semnespeciale,denumitengeneralcaractereimulimeabinarB={0,1}.
Celmaiutilizatcodalfanumericfolositnprezent,estecodulASCII(American
StandardCodeforInformationInterchange)
Iniialafostuncodde7bii, 2
7
caractere. n prezent se folosete codul ASCII
extins,cu8bii,apelatadeseadoarprinnumeledecodASCII
Primele32decaractereASCIIcodificcoduridecontrol isuntutilizatepentrua
transmitediferitecaracteredecontrolprivindmesaje
AceastapentrucASCIIafostdezvoltatiniialpentrutransmisiadatelor(deexemplu
caracteruldecontrol^D,EOT=EndOfTransmission,esteutilizatpentruaindica
sfritulunuifluxdedate)
nafaracodurilordecontrol,existcoduripentru64litereicifrei196caracterede
control,semnedepunctuaie,caracteregraficeialtecaractere
484
CODULALFANUMERIC CODULALFANUMERIC ASCII ASCII
ScopulprincipalalcoduluiASCIIestereprezentareatextului
Dateledetiptextsunt,deregul,referitecadatedetipASCII
OsecvenadecaracterereprezentateprincodurilelorASCII,enumitirde
caractere("string")
birulpoatesafievid(niciuncaracter)saupoatecuprindeofraz,paragraf,sau
chiarunblocntregdecaractere(deaceealungimeairuluitrebuiecunoscut)
Exemple
literemari : A 41h,B 42h,C 43h,...
literemici: a 61h,b 62h,c 63h,...
cifre: 0 30h,1 31h,2 32h,...
altele: spaiu 20h,tab 09h,LF 0Ah,CR 0Dh,...
CodificareaASCIIfaciliteazconversiidegenul:
cifrzecimal codalfanumeric:adunare/scdere30h saubIlogic0Fh
literemari literemici:set/resetbit5 (1 literemici,0 literemari)

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