Documente Academic
Documente Profesional
Documente Cultură
Introducere
Microprocessor. Definiie
O unitate central de procesare (CPU) realizat pe unul sau mai multe cipuri, coninnd elemente
pentru calcul aritmetic i lo!ic ct i elemente de control ale calculatorului. "oate acestea sunt
incluse pentru prelucrarea datelor#
Microcontroler. Definiie
Un sistem de calcul incorporate pe un sin!ur cip coninnd o unitate central de procesare,
memorie, porturi de intrare$ieire i adesea numrtoare, timere, con%ertor analo! di!ital, oscilator i
altele. "oate aceste periferice sunt utilizate pentru aplicaii de control.
Pro!ramarea microcontrolerelor se realizeaza &n lim'a(ul de asam'lare specific tipului de
dispoziti% sau &n lim'a(ul C la care sunt incluse 'i'lioteci i instruciuni adaptate dispoziti%ului.
Pro!ramarea &n lim'a(ul C este cea mai indicat deoarece instruciunile nu difer mult de la o familie
de microcontrolere la alta. )n prezenta lucrare sunt descrise pe scurt microprocesoarele, asemnrile
i deose'irile dintre ele ct i medii de pro!ramare i de simulare ale aplicaiilor cu acestea.
Datorit numrului mare de microprocesoare i microcontrolere e*istente pe pia, pentru o mai
'un &ntele!ere a modului de lucru cu aceste dispoziti%e s+au ales spre prezentare cele cu ar,itecturi
simple cu simulatoare complete care ruleaz su' -indo.s.
Microprocesorul /0/1 este descris pe scurt &n aceast lucrare iar pentru simularea aplicaiilor se
utilizeaz emulatorul 2mu/0/1. )n afar de aplicaiile care se pot e*ecuta i simula pe acest
simulator, e*ist un set de pro!rame demo. Pro!ramele sunt testate practic pe placutele 34 care au un
microprocesor /04/1 ce lucreaza in timp real. 5iecare capitol al crii &ncepe cu o descriere teoretic
i continu cu aplicaii prezentate su' form de lucrri de la'orator.
6e tie c toate sistemele de microcalculator au aceleai componente tipice, funciile de 'az sunt
aceleai, indiferent de firma productoare i de !eneraia de circuite. 7ceste componente de calcul
sunt utilizate cu precdere &n aplicaii industriale moti% pentru care prezenta lucrare se a*eaz &n
principal pe aplicaii ale microprocesoarelor i microcontrolerelor tocmai pentru a fundamenta
principalele aspecte le!ate de structura constructi% i pro!ramele implementate &n acestea. 8a
sistemele cu microprocesoare i microcontrolere, un element caracteristic este reprezentat de ctre
cele doua elemente intercondiionate+proiectarea structurii constructi%e+hardware i proiectarea
pro!ramelor+software. Datorit le!aturii foarte stranse dintre structurile ,ard.are si soft.are, cele
dou componente ale proiectarii interacioneaza permanent. Pentru o 'un &nele!ere i aprofundare a
acestora sunt a'ordate ar,itecturi simple care sunt 'aza de &nceput a altora mai sofisticate, iar softul
este realizat &n lim'a( de asam'lare specific dispoziti%ului.
Microprocesoare
Microprocesoare Intel - Descriere i aplicaii
este primul procesor 9ntel care poate e*ecuta toate softurile scrise pentru predecesorii si. 7ceast
compati'ilitate soft rmne o caracteristic a familiei de microprocesoare 9ntel. )n mai puin de 1 ani,
;@ milioane de calculatoare personale 'azate pe >/1 fac &ncon(urul lumii. Microprocesorul 9ntel 4/1,
caracterizat de >=@.000 de tranzistoare, de ;00 de ori mai multe dect primul ?00? apare &n ;</@.
2ste realizat pe 4> 'ii cu posi'ilitatea de a e*ecuta mai multe sarcini &n paralel. )n ;0/<, apare
microprocesorul ?/1, primul care ofer posi'ilitatea construirii unui coprocesor matematic, care duce
la creterea %itezei de calcul, deoarece opereaz &n paralel cu procesorul principal. Microprocesoarele
9ntel Pentium aprute &n ;<<4, permit calculatoarelor s &ncorporeze mai uor date din lumea real#
caC sunet, %or'ire, ima!ini foto. Proiectat s fie utilizat &n aplicaii ca ser%ere i staii de lucru, 9ntel
Pentium Pro pe 4> 'ii, apare &n ;<<@. Pentrium Pro realizat cu @,@ milioane de tranzistoare, este
&mpac,etat &mpreun cu memoria cac,e, ceea ce crete %iteza de calcul. Bealizat din =,@ milioane de
tranzistoare, 9ntel Pentium 99, &n ;<<=, &ncorporeaz te,nolo!ia MMG, este special proiectat pentru
eficientizarea prelucrilor datelor %ideo, audio i !rafice. Dup numai un an este proiectat
microprocesorul 9ntel Pentium 99 Geon, realizat ca s se &ntlnesc performanele cerute de inter%alul
ridicat de inteli!en i de ser%erele i staiile de lucru.2ste realizat &n principal pentru aplicaii de
afaceri. Continund strate!ia 9ntel de dez%olatre a procesoarelor pentru se!mentul specific de pia,
6e proiecteaz &n ;<<<, procesorul 9ntel Celeron. 7cesta furnizeaz consumatorilor performane mari
la un pre 'un, a%nd performane e*celente pentru utilizarea ca softuri pentru (ocuri sau educaional.
"ot &n acelai an apare 9ntel Pentium 999 caracterizat de cele =0 de instruciuni noi E e*tensie 69MD E
aceasta &m'untete performanele aplicaiilor &n ima!ini 4+D, %ideo, audio, recunoaterea %or'irii.
7 fost proiectat s &m'unteasc comunicarea pe 9nternet. Microprocesorul 9ntel Pentium ? apare
&n anul >000, utilizatorii acestuia se pot 'ucura de profesionalism pri%ind calitatea filmelorD se poate%
distri'ui "H ca %ideo %ia 9nternetD se poate comunica %ideo i prin %oce &n timp realD se crete
calitatea codrii muzicii pentru MP4 i simultan pot e*ecuta simulta mai multe aplicaii multimedia.
Procesorul de'uteaz cu ?> milioane de tranzistoare, la frec%ena de lucru de ;,@IJz. O platform
care ofer clienilor posi'ilitatea de ale!ere a sistemului de operare i aplicaiilor, cu performane
ridicatela la preuri foarte 'une este 9ntel Geon, aprut &n anul >00;. Performanele acestuia sunt
crescute de la 40 pn la <0 procente peste caracteristicile sistemelor realizate cu 9ntel Pentium 999
Geon, depinznd de aplicaie i confi!urare. Procesorul se 'azeaz pe ar,itectura 9ntel :etFurst,
proiectat s realizeze puterea de prelucrare necesar pentru aplicaiiC %ideo i audio, te,nolo!ii
9nternet a%ansate i !rafic 4D comple*. "ot &n anul >00; este introdus pe pia, 9ntel 9tanium,
primul procesor pe 1? 'ii produs de 9ntel. Proiectat pentru a fi utilizat ca ser%er i staie de lucru &n
&ntreprinderi, noua ar,itectur a acestuia este 'azat pe te,nolo!ia de proiecatre a 2*ecuiei
9nstruciunilor &n Paralel (2P9C). Microprocesoarele 9ntel Pentium M, familia 9ntel /@@ i
conec*iunea reelei 9ntel Pro$-ireless >;00 sunt toate trei componente ale te,nolo!iei 9ntel Centrino
(>004). "e,nolo!ia procesorul 9ntel Centrino este proiectat &n special pentru calcul porta'il, cu
construcie &n capacitate 87: fra fir i performane mo'ile, permite creterea timpului de %ia a
'ateriei.
O ierar,izare a microprocesoarelor i principalele lor caracteristici sunt prezentate &n "a'elul
C;.9.
Microprocesoare Intel - Descriere i aplicaii
controller, care &l a(ut s funcioneze la fel de eficient ca un sin!ur procesor. "otui, deoarece &n
aceast ar,itectur, sunt le!ate &mpreun dou procesoare, ele pot realiza operaii de dou ori mai
repede dect un sin!ur procesor.
C1.1. Microprocesorul Intel $%$
Beneralit+i
Microprocesorul 9ntel /0/1, lansat &n ;<=/, este primul mem'ru al familiei de procesoare */1
intrnd &n cate!oria microprocesoarelor C96C. Bealizat &ntr+o te,nolo!ie JMO6 &ncapsulat &ntr+un
circuit inte!rat cu ?0 pini, este compus din circa ><000 tranzistoare. 8a scurt timp a fost urmat de
familia de componenteC Intel />/? + !enerator de tactD Intel />// + controler de ma!istraleD Intel /0/=
+ coprocesor aritmeticD Intel /0/< + coprocesor de intrare+iesire .)n ;<=< apare microprocesorul Intel
/0// care pstreaz caracteristicile lui /0/1 dar cu ma!istrala de date e*tern este de / 'ii.
Caracteristici ale microprocesorului 9ntel /0/1 sunt urmtoareleC ar,itectur pe ;1 'ii, re!istre
interne pe ;1 'ii, ma!istrala de date pe ;1 'ii, ma!istrala de adrese pe >0 'ii (;Mo de memorie
fizic), re!istre inde* pe ;1 'ii, multiple*area &n timp a ma!istralelor de date, adrese si stri, pentru
pstrarea capsulei de ?0 de piniD o sin!ur tensiune de alimentare C L @ HccD frec%ena semnalului de
tactC ? MJz, @ MJz sau / MJz, &n funcie de %ariantD compati'ilitate cu lim'a(ul de asam'lare al
microprocesorului 9ntel+/0/0 si 9ntel+/0/@. 6etul de instruciuni conine <? de tipuri de instructiuni,
inclusi% operaii aritmetice &n cod FCD i operaii de &nmulire, &mprireD opereaz cu di!ii (cod
FCD, ? 'ii$di!it sau / 'ii$di!it), cu octei ('Mte), cu cu%inte de ;1 'i (.ord), cu cu%inte du'le de 4>
de 'i (dou'le .ord), siruri de caractere de / 'i (strin!) si 'locuri de date. 7coper o !am lar! de
aplicaii datorit celor dou moduri de lucruC mo#ul minim pentru aplicaii simple, &n care procesorul
!enereaz el &nsui semnalele electrice necesare transferului de date cu memoria i porturile de
intrare$ieire i mo#ul maxim, pentru aplicaii comple*e, inclusi% sisteme multiprocesor, &n care
semnalele de comand pentru memorie si porturi sunt !enerate de un circuit specializat, />//
(controler de ma!istrale).
6paiul de memorie adresa'il efecti% este de 1?No, pentru a adresa un spaiu mai mare se folosete
re!istre se!ment E acestea specific locaia de memorie pentru cod, sti% sau date i apoi se!mentul
de 1?No. Deoarece codul, datele sau sti%a au ne%oie de mai mult de 1?No de memorie, se utilizeaz
mai multe moduri de adresare i compilatoarele /0/1 includ ase modele de memorie diferiteC tin&,
small, compact, me#ium, large i huge.
8imitarea adresrii directe a 1?No a fost eliminat, la procesorul 9ntel /04/1, prin introducerea
modului prote(at pe 4> 'ii.
6etul de instruciuni a microprocesorului 9ntel /0/1, include cte%a instruciuni foarte puternice.
De e*emplu cnd aceste instruciuni sunt prefi*ate de instruciunea B2P (repet), CPU %a realiza
operaii &n 'loc ca mutarea unui 'loc de date, comparare a 'locuri de date, etc. 9ntel /0/1 este un
suport pentru coprocesorul numeric 9ntel /0/=.
Microprocesoare Intel - Descriere i aplicaii
Figura '1.1 Fereastra #in care se alege formatul fiierului( )n cazul )n care se realizeaz$ un proiect nou
2ditarea pro!ramului. )n acest mod se pot crea$modifica pro!rame surs scrise &n lim'a(ul de asam'lare
al microprocesorului 9:"28 /0/1, sau orice alte te*te 76C99.
Principalele comenzi de editare sunt aceleai ca la orice editor simplu de te*t (5i!ura 8;.>).
Figura '1. Fereastra #e e#itare a programului )n asam*lor
Salvarea fi1ierului surs+ se permite scrierea pe disc a fisierului aflat &n editare. Pro!ramul solicit
numele su' care %a fi sal%at fisierul te*t. Daca nu se introduce e*tensia &n mod e*plicit, fisierului i se
%a atri'ui implicit e*tensia ASM.
Citirea fisierului surs+ se realizeaz ca la orice editor de te*t utiliznd Open, introducndu+l &n
'uffer+ul de editare.
>istare fisier te*t. Dup asam'larea fiierului poate fi %izualizat 8istin!ul din fereastra 7ssem'ler
status se apas 'utonul Hie. i se ale!e 8istin!. Permite %izualizarea coninutului unui fiier, octet
cu octet, att &n %alori ,e*azecimale ct si &n caractere 76C99.
Compilarea 1i asamblarea pro:ramelor scrise 2n limba8ul asamblor $%$
Microprocesoare Intel - Descriere i aplicaii
6e scrie pro!ramul surs &n aria de te*t dedicat i se apas cu mouseul pe 'utonul Compile sau
se apas tasta 5@. 6e %a desc,ide fereastra prin care suntei intre'ai calea unde se %a sal%a fiierul
compilat i numele lui. Dup compilare &n codul main toate %aria'ilele sunt &nlocuite automat cu
offetul lor. Dac este &ncrcat fiierul COM, re!istrele D6 i C6 %or a%ea aceeai %aloare.
Cnd se sal%eaz un fiier asam'lor, compilatorul sal%eaz deasemenea dou alte fiiere. 7cestea
sunt utilizate de emulator pentru a arta codul surs ori!inal, &n timpul e*ecuiei pro!ramului 'inar,
marc,ndu+se linia &n curs de e*ecuie. 5oarte des pro!ramul ori!inal difer de pro!ramul
dezasam'lat deoarece nu e*ist comentarii, se!mente i nici %aria'ile declarate. Directi%a de
compilare nu produce un pro!ram &n 'inar, dar totul este con%ertit &n cod main pur.
2*tensii ale fiierelor sal%ate pe ,ard discC
H.asm E conine codul surs ori!inal, acesta este utilizat pentru a se realiza un fiier e*ecuta'ilD
H.debu: E conine codul ori!inal care este prezentat &n timpul e*ecuiei pro!ramului, fiind
marcat linia &n curs de e*ecuieD
H.s@mbol E conine ta'loul de sim'oluri. 5iierul prezint fereastra cu %aria'ile, este un fiier te*t,
se poate desc,ide cu editoare de te*t (inclusi% &n editorul surs emu/0/1)D
H.binf E acest fiier 76C99 conine informaii utilizate de emulator pentru sal%area fiierelor F9:
la locaia specificat i pentru setarea %alorile re!istrelor care sunt prioritare &n e*ecuieD (creat doar
dac un e*ecuta'il este un fiier F9:).
+,!-.I!/
Compilatorul nu este sensi'il la modul de scriere, litere mici sau mari.
)n lista memoriei, prima linie conine un offset, a doua linie conine o %aloare ,e*azecimal, a
treia o %aloare zecimal iar ultima este %aloarea 76C99 a unui caracter.
Dup compilare se apas pe 'utonul 2mulate pentru a se &ncrca fiierul compilat &n emulator.
6e poate face rularea direct, cu comanda <un din su'meniul 2*ecuie sau cu 'utonul . :u se
recomand &ns aceasta comanda dect atunci cnd pro!ramul nou creat este suficient de 'ine pus la
punct pentru a nu 'loca sistemul. )n fazele iniiale ale dez%oltrii pro!ramului se recomand testarea
i depanarea cu comanda 2mulate.
Modul de utili-are al emulatorului (De'u!!er)
2mulatorul poate fi utlizat c,iar dac pro!ramul nu este scris &n 2ditor. Din meniul 2mulator
selectai 6,o. 2mulator. 6e &ncarc un fiier e*ecuta'il apasnd pe 'utonul 8oad din emulator
(5i!ura 8;.4).
Microprocesoare Intel - Descriere i aplicaii
Figura '1.0 Fereastra emulatorului. 1unt in#icate2 *utonul #e )nc$rcare a fiierului executa*il(
lista memoriei i co#ul main$ #ezasam*lat
Moduri de e*ecuie ale pro!ramelorC
;. Q1ingle 1tepR E e*ecuia instruciunilor pas cu pas. 8ucrnd &n acest mod se pot %izualiza
modificrile care sunt realizate &n interiorul microprocesorului dup e*ecuia instruciunii.
>. QRunR E e*ecuia instruciunilor una dup alta cu o &ntrziere &ntre ele setat prin 6tep delaM.
odul de lucru !n "mulator#
"oate modificrile realizate &n interiorul microprocesorului &n timpul rulrii pas cu pas al
pro!ramului &n 2mu/0/1 se pot o'ser%a i %erifica cu a(utorul acestui emulator.
Dai du'lu clic pe fereastra registrelor i se %a desc,ide fereastra KE*tended /ie0erK cu %alori
ale re!istrelor con%ertite &n ,e*a. Halorile re!istrelor se pot modifica direct &n fereastr.
Du'lu clic pe lista memoriei desc,ide KE*tended /ie0erK cu %alori -OBD &ncrcate din lista
memoriei, din locaia selectat. Cel mai puin semnificati% octet este la adresa mai puin
semnificati%. Halorile din locaiile de memorie pot fi modificate direct &n fereastra KE*tended
/ie0erK.
Futonul Q5la:sR permite %izualizarea i modificarea fla!urilor &n timpul e*ecuiei.
/ariabilele sunt locaii de memorie. Pentru un pro!ramator este mai uor sa ai' %alori stocate &n
%aria'ile numite %aria'ila;# dect prin apel la adresa @7=4C>4@F, &n special cnd are ;0 sau mai
multe %aria'ile. Compilatorul supoart > tipuri de %aria'ile octet i cu%nt.
Haria'ilele care se re!sesc &n pro!ramul e*ecutat pot fi %izualizate selectnd K/ariablesK din
meniul K/ie0K al emulatorului.
6inta* !eneralC
Microprocesoare Intel - Descriere i aplicaii
nume DG valoare
nume DI valoare
-ot$C DF define 'Mte
D- define .ord
.ume poate fi orice com'inaie de litere sau cifre cu condiia ca primul caracter s fie o liter.
Haloare poate fi orice %aloare numeric suportat &n una din 'azele de numeraie (,e*a, 'inar,
zecimal) sau S# sim'ol pentru %aria'ilele neiniializate.
Compilatorul este informat despre tipul datei utiliznd unul din prefi*eleC
b@te ptr + pentru octet
0ord ptr + pentru cu%nt.
!xempluC
'Mte ptr QFGR D acces octet
sau
.ord ptr QFGR D acces cu%nt.
7sam'lorul suport prefi*e scurte caC
b. + pentru b@te ptr
0. + pentru 0ord ptr
)n anumite cazuri asam'lorul poate calcula tipul datei automat.
Constantele sunt la fel ca %aria'ilele, acestea e*istnd &ns doar pn pro!ramul este compilat
(asam'lat). Dup definirea unei constante %aloarea ei nu poate fi sc,im'at. Pentru definirea
constantei se utilizeaz directi%a 2PU.
6inta*a !eneralC
nume EE9 J orice e*presie K
!xempluC
N eTu >
Mo% 7G,N
Codul de mai sus este identic cu Mo% 7G,>.
Microprocesoare Intel - Descriere i aplicaii
6e compileaz pro!ramul i se &ncarc &n emulator. Dup compilare, &n codul main, toate
%aria'ilele sunt &nlocuite automat cu offsetul lor. Dac este &ncrcat fiierul COM, re!istrele D6 i
C6 %or a%ea aceeai %aloare.
)n lista memoriei, prima linie conine un offset, a doua linie conine o %aloare ,e*azecimal, a
treia o %aloare zecimal iar ultima este %aloarea 76C99 a unui caracter.
Compilatorul nu este sensi'il la modul de scriere, litere mici sau mari.
Considernd offsetul %aria'ilei H7B; este 0;0/, i adresa &ntrea! este 0F@1C0;0/ iar al
%aria'ilei H7B> este 0;0<, iar adresa &ntrea! este 0F@1C0;0<. 7ceast %aria'il este un cu%nt
(-OBD) deci %a ocupa > octei. De e*emplu, octetul cel mai puin semnificati% care conine
%aloarea 4?, este memorat la adresa 0<,. Dup instruciunea B2", mai sunt i alte instruciuni,
aceasta se &ntmpl deoarece dezasam'lorul nu cunoate data de &nceput, el prelucreaz %aloarea din
memorie i le &nelel!e ca instruciuni %alide.
Bealizarea aceluiai pro!ram scris doar cu directi%a DFC
OBI ;00,
DF 070,
DF 0/,
DF 0;,
DF /F,
DF ;2,
DF 0<,
DF 0;,
DF 0C4,
DF =
DF 4?,
DF ;>,
6e %a copia acest cod surs &n editor, apoi se compileaz (5@) i se &ncarc &n emulator. 6e %a
o'ser%a c se o'ine acelai cod dezasam'lat i aceleai funcionaliti. Compilatorul, &n acest caz,
doar con%ertete pro!ramul surs &n octei, acest set se numete cod main. Procesorul &nele!e
codul main i &l e*ecut.
C<B 1%%; este o directi% a compilatorului. Prin aceasta se %a spune compilatorului unde s
plaseze codul surs &n memorie. 7ceast directi%e este important cnd se lucreaz cu %aria'ile.
6pune compilatorului c fiierele e*ecuta'ile s fie &ncrcate la offset ;00, (>@1 octei), deci
compilatorul tre'uie s calculeze adresa corect pentru toate %aria'ilele, cnd se &nlocuiete numele
%aria'ilei cu ofsetul ei. Directi%ele nu %or fi con%ertite niciodat &n cod main.
5iierele e*ecuta'ile sunt &ncrcate de la adresa ;00, deoarece sistemul de operare stoc,eaz
cte%a date &n primii >@1 octei ai se!mentului indicat de C6 (se!ment de cod) ca de e*emplu
Microprocesoare Intel - Descriere i aplicaii
parametrii liniei de comand i altele. 7ceasta este %ala'il doar pentru fiiere COM, fiierele 2G2
sunt &ncrcate la ofset 0000, i &n !eneral utilizeaz se!mente speciale pentru %aria'ile.
Ce este un tablou (arra@!F
O arie poate fi %zut ca un ir de %aria'ile. Un caracter te*t este un e*emplu de arie de octei,
fiecare caracter este prezentat ca o %aloare de cod 76C99 (0V>@@).
!xempluC
a DF ?/,, 1@,, 1C,, 1C,, 15,, 00,
' DF WJelloW, 0
* este o copie a matricii a, cnd compilatorul a(un!e la un c,aracter acesta este con%ertit automat
&ntrun set de octei. Jarta din 5i!ura 8;.@ arat o parte a memoriei unde aceast matrice este
declarat .
Figura '1.4. !xemplu #e arie #e octei
5iecare %aloare a matricei poate fi accesat folosind paranteze ptrate, ca de e*mpluC
MOH 78, aQ4R
De asemenea se pot utiliza oricare din re!istrele inde* G?& SI& DI& G), de e*empluC
MOH 69, 4
MOH 78, aQ69R
Dac se dorete utilizarea unei matrici lr!ite, se folosete operatorul DUP.
6inta* !eneralC
num$r D56 7 "aloare7s% %
num$r + numr de duplicate
"alue + e*presia pe care DUP o %a duplica.
!xempluC
c DF @ DUP(<) este o alternati% a declarriiC c DF <, <, <, <, <
d DF @ DUP(;, >) este o alternati% a declarriiC d DF ;, >, ;, >, ;, >, ;, >, ;, >.
6e poate utiliza D- sau DF dac se cere reinerea %alorilor mai mari ca >@@ sau mai mici ca ;>/.
D- nu poate fi utilizat sa declare caractere.
Cbinerea adresei de offset a variabilelor se poate realize prin utilizarea instruciunii 827 (8oad
2ffecti%e 7ddress) sau operatorul O5562". 827 este mai puternic deoarece permite o'inerea
adresei unor %aria'ile inde*. O'inerea adreselor %aria'ilelor este folositoare &n unele situaii, ca de
e*emplu pentru utilizarea parametrilor &ntro procedur.
!xempleC
Microprocesoare Intel - Descriere i aplicaii
;. OBI ;00,
MOH 78, H7B;D %erificarea %alorii lui H7B; mutnd+o &n 78
827 FG, H7B;D o'inerea adresei lui H7B; &n FG
MOH FX"2 P"B QFGR, ??,D modificarea coninutului lui H7B;
MOH 78, H7B;D %erificarea %alorii lui H7B; mutnd+o &n 78
B2"
H7B; DF >>,
2:D
>. 6e utilizeaz C55SET &n loc de >EAC
OBI ;00,
MOH 78, H7B;D %erificarea %alorii lui H7B; mutnd+o &n 78
MOH FG, O5562" H7B;D o'inerea adresei lui H7B; &n FG
MOH FX"2 P"B QFGR, ??,D modificarea coninutului lui H7B;
MOH 78, H7B;D %erificarea %alorii lui H7B; mutnd+o &n 78
B2"
H7B; DF >>,
2:D
Cele dou e*emple au aceeai funcionalitate.
Urmtoarele liniiC
827 FG, H7B;
MOH FG, O5562" H7B; sunt compilate &n acelai cod mainC MOH FG, num
num este o %aloare pe ;1 'ii a %aria'ilei offset.
.ot+C Be!istrele care pot fi utilizate &ntre paranteze ptrate suntC G?& SI& DI& G)
8;.?. Desf+1urarea lucr+rii
6e desc,ide un proiect nou &n care fiierul s fie de tip COM D
6e editeaz te*tul surs de mai (osD
6e sal%eaz te*tul pe disc cu numele test;.asm D
6e compileaz pro!ramul i se &ncarc &n emulatorD
6e e*ecut pas cu pas D
6e o'ser% adresa de &nceput la care este plasat pro!ramul &n memoria codD
6e o'ser% codul ,e*a al pro!ramului sal%at &n memorie i adresa curentD
6e o'ser%, prin desc,iderea ferestrei /ars, %aria'ilele i constantele definite &n pro!ramD
6e o'ser% modificrile care au loc &n re!istre D
6e o'ser% modul de lucru i de stocare a %aria'ilelor &n memoria de date prin accesarea 'utonului
Memor@ din 'utonul de meniu Au*.
6e %a compila pro!ramul utiliznd 'utonul Compile apoi se apas 'utonul Close din fereastra care
apare dup compilare. "ot &n aceast fereastr putem s identificam numarul de erori sau atenionri
i tipul lor i liniile de pro!ram care le produc. Dup compilare dac se dorete e*ecuia
pro!ramului pas cu pas, pentru a %izualiza modificrile care se produc, se apas 'utonul 2mulate.
Din fereastra emulatorului se %a apsa 'utonul 6in!le 6tep prin care se e*ecut pro!ramul pas cu
pas.
Microprocesoare Intel - Descriere i aplicaii
"est;.asm
OBI ;00, D directi% cerut pentru pro!rame COM
MOH 7G, 07C0<, D iniializare re!istrul 7G cu %aloarea ,e*azecimal 7C0<,.
MOH D6, 7G D copie %aloarea din 7G &n D6.
MOH C8, W7W D iniializare re!istru C8 cu codul 76C99 a lui W7W, adic ?;,.
MOH CJ, 0;0;00;;' D inializeaz re!istrul CJ cu %aloarea 'inar
MOH FG, ;=D, D iniializeaz FG cu ;=D,
MOH QFGR, CG D copiaz coninutul re!istului CG &n memorie la adresa F/00C0;=D
MOH H7B6;,Y>4,D
MOH 78, H7B;D sal%are %aria'il H7B; &n 78
B2" D return
C(. Structura intern+ a microprocesorului Intel $%$
Caracteristici te;nice principale ale microprocesorului I.TE> $%$ C
multiple*area &n timp a ma!istralelor de date, adrese i stri, pentru pstrarea capsulei de ?0
de piniD
ma!istrala de adrese de >0 de 'ii, ceea ce permite adresarea unei memorii de capacitate
ma*im de ; MFD
sin!ura tensiune de alimentare C L @ HccD
frec%ena semnalului de tactC ? MJz, @ MJz sau / MJz, &n funcie de %ariantD
compati'ilitate cu lim'a(ul de asam'lare al microprocesorului 9ntel+/0/0 si 9ntel+/0/@.
setul de instruciuni conine <? de tipuri de instructiuni, inclusi%e operaii aritmetice &n cod
FCD si operaii de &nmulire, &mprireD
opereaz cu di!ii (cod FCD, ? 'iZi$di!it sau / 'iZi$di!it), cu octei ('Mte), cu cu%inte de ;1
'ii (.ord), cu cu%inte du'le de 4> de 'iiD
(dou'le .ord), siruri de caractere de / 'ii (strin!) si 'locuri de date.
are dou moduri de lucruC modul minim pentru aplicaii simple, &n care procesorul !enereaz el
&nsui semnalele electrice necesare transferului de date cu memoria i porturile de intrare$iesire si
modul ma*im, pentru aplicaii comple*e, inclusi% sisteme multiprocesor, &n care semnalele de
comand pentru memorie si porturi sunt !enerate de un circuit
specializat, />// (controler de ma!istrale).
Structura intern+
Microprocesorul 9ntel+/0/1 este realizat din dou uniti funcionale distincte care lucreaz asincron
i independent una fa de altaC Unitatea de e*ecuie 2U (!xecution 5nit), efectueaz operaiile
specificate prin instruciuni i Unitatea de interfa cu ma!istralele (8us Interface 5nit), care aduce
instruciunile din memoria pro!ram i transfer operanzii &ntre unitatea central de e*ecuie i
memorie sau porturi.
Microprocesoare Intel - Descriere i aplicaii
Principalele re!istre care se afl &n interiorul CPU sunt prezentate &n 5i!ura C>.1. 7cestea se pot
clasifica &n re!istre de uz !eneral, re!istrele de se!ment , re!istrul pointerului de instruciuni,
indicatorii de condiie.
Figura C.:. Registrele #in 5nitatea Centrala #e 6rocesare
<e:istre :enerale ($&1&3(biti!
-r.
*ii
01 14
;
<
!+= >>. += &' &( +cumulator
!8= >>. 8= B' B( Registru #e
*az$
!C= >>. C= C' C( Registru
num$r$tor
!D= >>. D= )' )( Registru #e
#ate
<e:istrele de se:ment
6unt reprezentate pe > octei, acetia conin adresa de 'az a unui se!ment de memorie. Memoria
direct adresa'il de ; MF necesit o ma!istral de adrese de >0 'ii.
Be!istrele interne ale procesorului fiind de ;1 'ii, memoria este di%izat din punct de %edere lo!ic &n
se!mente de 1? AF, fiecare se!ment fiind astfel adresa'il cu ;1 'ii. Procesorul poate s utilizeze
simultan attea se!mente de memorie cte re!istre de se!ment posed.
7dresele de &nceput (de 'az) ale celor ? se!mente sunt coninute &n cele ? re!istre de se!ment (Cod,
Date, 6ti% si de Date suplimentar).
Registrul C1 conine adresa de &nceput a se!mentului de cod. Pentru a adresa o instruciune,
Microprocesoare Intel - Descriere i aplicaii
C5P (@"erflo9 Flag) indicator de depsireD se acti%eaz (&n WW;WW lo!ic) cnd apare depasirea
capacitii re!istrului ce conine rezultatul, ca urmare a unei operaii aritmetice cu operanzi cu semnD
%a fi WW;WW cnd apare transport sau &mprumut &n$din ran!ul de semn.
T5P (,rap Flag) indicator pentru modul de lucru WWpas cu pasWWD dac este poziionat &n WW;WW lo!ic,
microprocesorul nu mai lucreaz la %iteza dat de semnalul de tact ci &n ritmul impus de utilizator.
7cest mod de lucru este deose'it de util la depanarea pro!ramelor.
I5P (Interrupt Flag) indicator pentru controlul &ntreruperilorD dac este poziionat &n WW;WW lo!ic (prin
instrucZiunea corespunztoare), sunt %alidate cererile de &ntrerupere de tip 9:"B (masca'ile)D
in%alidarea acestora se face prin poziionarea lui 95 &n WW0WW, caz &n care cererile 9:"B nu %or fi luate &n
consideraie.
D5P (Direction Flag) indicator de WWdirecieK, are efect &n operaiile cu siruri. Dac este poziionat &n
WW;WW, dup fiecare transfer, adresa operandului din sir se incrementeaz (creste cu ;) iar dac este
poziionat &n WW0WW adresa se decrementeaz.
CbservaieP indicatorii D5, 95 si C5 pot fi poziionai &n WW0WW sau WW;WW prin instruciunile de control
specificeC
C>C ( Clear Carr& )C C5 [ 0 STC ( 1et Carr& )C C5 [ ;
C>D ( Clear Direction )C D5 [ 0 STD ( 1et Direction )C D5 [ ;
C>I ( Clear Interrupt )C 95 [ 0 STI ( 1et Interrupt )C 95 [;
5ormatul instructiunilor
9nformatiile din memoria B7M pot fiC
+ date in 'inar, in %ir!ule flotanta, in zecimal si pe diferite lun!imi
- instructiuni de diferite lun!imi
9nstructiunile care se folosesc determina cum se interpreteaza acele informatii.
)n lim'a( de asam'lare nu e*ista tipuri de date declarate i se poate da doar lun!imea.
Dac o %aria'ile in H5 se adreseaza cu o instructiune 'inara %aloarea este impre%izi'ila.
Daca re!istrul 9P (9nstruction Pointer) se incarca cu o adresa de date, datele se interpreteaza ca
intructiune si se pot face distru!eri in pro!ram. 8a incarcarea unui pro!ram se ster!e toata memoria
pentru a nu ramane reziduri din %ec,ile pro!ramme.
Datele pot fi C locale in se:ment specificate prin adresa relati%e la care se adau!a QD6R
comune mai multor se:mente (e*t) spec.prin adr.rel. si se adau!a Q26R
temporare care se pastreaza in sti%e in se!mentul de sti%a adr. Q6PRL Q66R
6etul de instructiuni al calculatorului cuprindeC
instructiuni de transfer, aritmetice si lo!ice realizate in dispoziti%ul aritmeticD
instructiuni pentru prelucrare siruri de caractere (te*te)D
instructiuni de control a pro!ramului (salturi conditionate)D
instructiuni de calcul in Hir!ula 5lotanta (H5) realizate in coprocessorD
instructiuni de calcul in zecimal realizate in coprocessor
Structura instructiunilor I$*$
C
*)
- instructiune pe un octet M@A +'(8'
Microprocesoare Intel - Descriere i aplicaii
C
*)
adr+rel -instr. pe 0 octeti( a#resare #irecta +DD 8=(alfa
C
*)
operand
,
- instr. pe sau 0 octeti B instr. ime#iata M@A 1I(44
C
*)
adr+rel operand
,
- instr.pe 3 sau 4 oct M@A =(4<<
9nstructiunile care fac referire la memorie contin o e*tensie de cod notata Mod r$m care specifica
modul de adresare folosit (re!+re!, 'azata, indirecta,inde*ata) si are structuraC
C
*)
od
r/m
deplasam
ent
opera
nd,
- instr : octeti M@A =C1ID(40<
9n toate cazurile de mai sus implicit la adresa relati%a se aduna continutul re!. D6.
Daca se doreste sa se specifice alt re!istru se!ment decat cel implicit D6 sau 66 pentru sti%a, se
adau!a in fata un octet suplimentar care specifica re!.se!ment e*plicit.
MOH7G,26 C QFGL@000Roperandul se ia din se!mentul indicat de 26
Codul instructiei este pe ; octet si are structura de 'aza C
i Cod
instr
d w iE1 B instructiune ime#iata
#E1 B rezultatul in registru #E< Brezultatul in memorie
9E1 - operan# pe 1:*iti 9E< - operan# pe ; *iti
Pentru a se e*ecuta o instruciune, au loc urmtoarele e%enimenteC microprocesorul depune pe
ma!istrala de date %aloarea din re!istrul 9P i depune pe ma!istrala de comenzi comanda citete din
memorieD memoria intern preia de pe ma!istrala de date %aloarea : care a fost stocat &n re!istrul
9P, caut adresa :, preia %aloarea 9 coninut &n aceast locaie, depune pe ma!istrala de date
%aloarea 9 i pe ma!istrala de comenzi comanda am terminat citireaD dup ce recepioneaz aceast
comand, microprocesorul citete de pe ma!istrala de date %aloarea 9 i e*ecut instruciunea
codificat prin aceast %aloareD %aloarea din re!istrul 9P este incrementat cu o unitate (de%ine :L;).
6etul de instructiuni al microprocesorului 9:"28 /0/1 se poate clasifica &nC
instruciuni de transfer, aritmetice si lo!ice realizate &n dispoziti%ul aritmeticD
instruciuni pentru prelucrare iruri de caractere (te*te)D
instruciuni de control a pro!ramului (salturi conditionate)D
instruciuni de calcul in Hir!ula 5lotanta (H5) realizate &n coprocessorD
instruciuni de calcul in zecimal realizate &n coprocessor
Microprocesoare Intel - Descriere i aplicaii
=
>
0
;
;
> > >
-
i
-
-
i
i
* * Ac
(;)
Domeniul &n care poate lua %alori esteC +(>
:+;
) ] >
:+;
E;
"a'elul 8;.; Con%enii de reprezetare 'inar &n complement fa de > a numerelor pe / 'iiC
Beprezentare
'inar
Haloare O'ser%aii
0;;;;;;; ;>= Cea mai mare %aloare reprezenta'il
0;;;;;;0 ;>1
V V V
00000000 0 Primul 0 indic numar poziti%
;;;;;;;; +; Cea mai mare %aloare ne!ati%
;;;;;;;0 +>
;;;;;;0; +4
V V V
;000000; +;>=
;0000000 +;>/ Cea mai mic %aloare ne!ati%
-ntregi far semn de / sau ;1 'itiD
=
=
;
0
>
-
i
i
i fs
* A
(>)
Unde '
i
E 'itul din poziia i.
DefiniiiP
Microprocesoare Intel - Descriere i aplicaii
.ointerC numere pe 4> de 'ii indicnd o adresaD ele sunt compuse din dou entiti pe ;1 'iiC un
selector care definete numrul se!mentului i un offset indicnd deplasamantul &n cadrul se!mentuluiD
/iruriC sec%ene de octei cu lun!imea de la ; octet la 1?NoD
*cteti &0C--C octei care contin codul 76C99 al unui caracterD
1umere !n format BC)C
FCD ne&mpac,etatC octei reprezentnd o sin!ur cifr zecimalD
FCD &mpac,etatC octei &n care se memoreaz dou cifre zecimale, fiecare &n cte un spaiu de ?
'ii.
!xempluC Beprezentarea numarului @><; in
FCD ne&mpac,etat 00000;0;^000000;0^0000;00;^0000000;
FCD &mpac,etat 0;0;^00;0^;00;^000;
(. Memoriu de instruciuni
Con%eniiC
sC sursD
dC destinaieD
A>SA?C acumulatorul implicit de / sau de ;1 'iiD
memC coninutul unei locaii de memorie sau coninutul a dou locaii de memorie succesi%e,
adresate cu unul dintre modurile de adresare permise pentru memoria de date, cu e*cepia adresrii
imediateD
mem1C coninutul a dou locaii de memorie succesi%e adresate cu unul dintre modurile de
adresare permise pentru memoria de date, cu e*cepia adresrii imediateD
mem3(C coninutul a patru locaii de memorie succesi%e adresate cu unul dintre modurile de
adresare permise pentru memoria de date, cu e*cepia adresrii imediateD
r S r
i
S r
8
C un re!istru oarecare de / sau de ;1 'ii, e*ceptnd re!istrele se!mentD
r$C un re!istru de / 'iiD
r1C un re!istru de ;1 'ii, e*ceptnd re!istrele se!mentD
rsC un re!istru se!ment (CS, SS, DS, ES)D
dataC un operand de / sau ;1 'ii care face parte din formatul instruciunii (adresare imediat)D
data$C un operand de / 'ii care face parte din formatul instruciunii (adresare imediat)D
data1C un operand de ;1 'ii care face parte din formatul instruciunii (adresare imediat)D
disp$C deplasament pe / 'ii (face parte din formatul instruciunii)D
disp1C deplasament pe ;1 'ii (face parte din formatul instruciunii)D
adrC o adres complet (pe ;1 'ii)D
adr$C o adres scurt (pe / 'ii)D
adr3(C o adres lo!ic e*primat pe patru octei succesi%iD
portC adresa (numrul de ordine) unui port de intrare$ieire, pe / 'iiD
AEC adresa efecti%.
Pentru fanioaneC
* C fanionul se sc,im' &n conformitate cu rezultatul operaiuniiD
Microprocesoare Intel - Descriere i aplicaii
9nstruciunile de transfer realizeaz transferul datelor &ntre re!istre, &ntre re!istre i memorie, &ntre
re!istre i sti%a. "ransferurile se pot e*ecuta intre re:istre de aceea1i lun:ime& iar la transferul &ntre
re!istre i memorie lun!imea este dat de re!istrul folosit.
Instruciunile de mutare nu modific+ indicatorii de condiie. Toate transferurile se pot face pe
1&(&4 sau $ octei.
MC/ d& s + unde ca ar!umente putem a%ea com'inaiileC
Copiaz sursa O5 D5 95 "5 65 35 75 P5 C5
MOV d,s
la destinaie
Descrierea formal a semanticii, &n !eneralC (d) (s).
re:&re: + transfer intre re!istre pe 1& (& 4 octei
re:&const + &ncrcare imediata constanta intr+un re!istru
mem& const + &ncrcare imediata constanta intr+o adresa de memorie
re:&mem + &ncrcare coninut adres de memorie &ntr+un re!istru
mem&re: + memorare coninut re!istru &ntr+o locaie de memorie
mem,mem + __ este o com'inaie interzis fiindc nu pot fi doua adrese &n instruciune
Operanzi 2*emple Descrierea formal+ a semanticii
r, data MOV BX,ALFA
(BX) ALFA "ransfer imediat a unei
date &n re!istru
mem, data MOV [BP+DI],55H
((SS)0H + (BP) + (DI)) 55H "ransfer imediat a unei
date &ntr+o adres de
memorie
AL|AX, mem MOV AX,[SI]
(AL) ((DS)0H + (SI)),
(AH) ((DS)0H + (SI) + 1)
"ransfer coninut adres
de memorie &ntr+un
re!istru acumulador de
/,;1 'ii
mem, AL|AX MOV
[BX+SI+10H],AL
((DS)0H + (BX) + (SI) + 10H) (AL) Memorare coninut
re!istru acumulator (pe /
sau ;1 'ii) &ntr+o locaie
de memorie
r
1
, r
2
MOV AX,SP
(AX) (SP) "ransfer &ntre dou
re!istre
r, mem MOV BH,
[BX+1000H]
(BH) ((DS)0H + (BX) + 1000H) Memorare coninut
adres de memorie &n
re!istru
mem, r MOV [2000H],DL
((DS)0H + 2000H) (DL) Memorare coninut
re!istru &n memorie
rs*, r1 MOV !S,"X
(ES) (CX) "ransfer date &ntre
re!ister pe > octei i
re!istru se!ment
rs*, mem1 MOV SS,[DI]
(SS) ((DS)0H +(DI)+1)
((DS)0H + (DI))
"ransfer coninut
memorie pe > octei &ntr+
un re!istru pe > octei
r1, rs MOV "X,"S
(CX) (CS) "ransfer coninut re!istru
se!ment &ntr+un re!istru
Microprocesoare Intel - Descriere i aplicaii
pe > octei
mem1, rs MOV [SI],DS
((DS)0H +(SI)+1) ((DS)0H+
(SI)) (DS)
"ransfer coninut re!istru
se!ment &n memorie pe >
octei
` re!istrul se!ment nu poate fi C6
Adresarea stivei ()9S, 1i )C)!
6ti%a este o zon de memorie temporar care este adresat prin re!istrul 6P care indic elementul
din %rful sti%ei (top). )n sti% se ia din %rful sti%ei i apoi se incrementeaz 6P iar cnd se pune &n
sti% se decrementeaz 6P.
Pentru lucru cu sti%a sunt dedicate dou re!ister 6P i 66. )n 66 se indic se!mental de memorie
unde este definit sti%a iar 6P pointeaz pe adresa 'ezei sti%ei unde a fost depus ultimul octet. Pentru
a &ncrca sti%a cu o %aloare reprezentat pe doi octei, cel mai semnificati% octet este sal%at la adresa
mai mare iar cellalt la cea mai mic. )n acest caz 6P se %a decrementa cu > deoarece sti%a crete &n
(os.
"ransfer &n sti% O5 D5 95 "5 65 35 75 P5 C5
PUSH s
de la surs
Descrierea formal a semanticii, &n !eneralC (SP) (SP) - 2
((SS)0H + (SP) + 1) (s)
h
((SS)0H + (SP)) (s)
2*empluC
Pus, 7GD 7G[@1=?
Pus, 27GD 27G\ @1=?;255
+#res$ memorie #e
#ate
Coninut sti"$ 86
<3<< <3<<<
<0FF 4:
<0F! F3 <0F! 7#ac$ se
lucreaz$ cu +=%
<0FD 1!
<0FC FF <0FC 7#ac$ se
lucreaz$ cu !+=%
>>..
<<<<
1,
IA+
<
651G 8= 16E16- si 8= C16D
6@6 8= C16D 8= si 16E16H
Microprocesoare Intel - Descriere i aplicaii
Instruciunea )C)
Bealizeaz operaia in%ers instruciunii Pus,. Pentru e*tra!erea datelor din sti% sal%ate cu a(utorul
instruciunii Pus,, se utilizeaz instrucinea Pop &n sens in%ers depunerii lor. Un este posi'il
adresarea imediat a instruciunii Pop.
"ransfer din sti% O5 D5 95 "5 65 35 75 P5 C5
POP d
la destinaie
Descrierea formal a semanticii, &n !eneralC (d)
((SS)0H + (SP))
(d)
h
((SS)0H + (SP) + 1)
(SP) (SP) + 2
Operanzi 2*emple Descrierea formal+ a semanticii
r1 POP "X
(CL) ((SS)0H + (SP))
(CH) ((SS)0H + (SP) + 1)
(SP) (SP) + 2
6al%eaz &n re!istru
de > octei coninutul
sti%ei de la adresa
indicat de 6P
mem1 POP [F0F0H]
((DS)0H +F0F0H) ((SS)0H + (SP))
((DS)0H +F0F1H) ((SS)0H + (SP) + 1)
(SP) (SP) + 2
6al%eaz &n memorie
coninutul sti%ei (pe >
octei)
rs $%&
"S'
POP SS
(SS) ((SS)0H+(SP)+1) ((SS)0H+(SP))
(SP) (SP) + 2
6al%eaz &n re!istrul
se!ment coninutul
Microprocesoare Intel - Descriere i aplicaii
sti%ei
"ransfer din sti% O5 D5 95 "5 65 35 75 P5 C5
POPF re!istrul de x x x x x x x x x
fanioane
Descrierea formal a semanticiiC(F)
((SS)0H + (SP))
(F)
h
((SS)0H + (SP) + 1)
(SP) (SP) + 2
I!s"#$%&i$!i d' "#(!s)'# sp'%i('
GCJI+ se poate sc,im'a coninutul unui re!istru cu al altui re!istru sau cu o locaie de memorie. Un
este posi'il sc,im'ri &ntre dou locaii de meorie i nici utilizarea re!istrelor se!ment.
"ransfer sursa la O5 D5 95 "5 65 35 75 P5 C5
XCHG d,s destinaie i
destinaia la surs
Descrierea formal a semanticii, &n !eneralC (d) (s)
Operanzi 2*emple Descrierea formal+ a semanticii
r1 X"H( DX
X"H( AX este )OP
(AX) (DX)
(AX) (AX) *+P
6c,im'ri &ntre
re!istre de > octei
r
1
, r
2
X"H( "H,"L
(CH) (CL) 6c,im'ri &ntre
acelai re!istru partea
,i!, cu partea lo.
r, mem X"H( BX,[BX+DI]
(BL) ((DS)0H + (BX) + (DI))
(BH) ((DS)0H + (BX) + (DI) + 1)
6c,im'ri &ntre
memorie i re!istre
Instruciunea ?>AT
"ranslarea unor coduri ,e*a &n alte coduri ,e*a."ransalrea se realizeaz utilizando o ta'el de
coduri.7dresa de &nceput a ta'elei tre'uie depus &n FG iar primul cod &n 78. 7ceast instruciune
nu are operand i lucrez doar cu re!istrele 78 i FG. Ca aplicaie se poate utiliza instruciunea
pentru con%ersia codului FCD &n codul FCD = se!mente.
O5 D5 95 "5 65 35 75 P5 C5
XLAT "ranslateaz
Descrierea formal a semanticiiC(AL) ((DS)0H + (BX) + (AL))
I!s"#$%&i$!i' LAHF ,i SAHF
Microprocesoare Intel - Descriere i aplicaii
9nstruciunile 87J5 i 67J5 sunt folosite pentru a prelua indicatorii de condiie din coprocesor i ai
testa &n procesor folosind instruciunile de salt condiionat a3. )n coprocesor nu e*ista instruciuni de
salt.
)ncarc(7J)cu octetul O5 D5 95 "5 65 35 75 P5 C5
LAHF inferior al
re!istrului 5
Descrierea formal a semanticiiC(AH) (F)
(AH)
Instruciunile I. 1i C9T
8ucreaz cu porturile. "ransfer date de la acumulator la port sau in%ers.
"ransferul unui O5 D5 95 "5 65 35 75 P5 C5
IN d,s octet sau cu%nt de
la un port &n acumulator
Descrierea formal a semanticii, &n !eneralC (AL) | (AX) (s).
Operanzi 2*emple Descrierea formal+ a semanticii
AL|AX, *+rt I) AL,0FH
(AL) (0FH)
AL|AX, DX I) AX,DX
(AX) ((DX) + 1) ((DX))
"ransferul unui O5 D5 95 "5 65 35 75 P5 C5
OUT d,s octet sau cu%nt
din acumulator la un port
Descrierea formal a semanticii, &n !eneralC (d) (AL) | (AX).
Operanzi 2*emple Descrierea formal+ a semanticii
*+rt, AL|AX O#, 10H,AL
(10H) (AL)
DX, AL|AX O#, DX,AX
((DX) + 1) ((DX)) (AX)
Onc+rcarea adresei effective 1i a re:istrelor de se:ment
5orma :eneral+P
8** re!,mem
**C reprezint unul dintre re!istrele D6, 66, 26
re!C re!istre !enerale
memC o adresare a memoriei
A. Instruciunea >DS
6e &ncarc re!istrul D6 cu adresa de se!ment i cel din operand cu offsetul furnizat de al doilea
operand. Cu instruciunea 8D6 se poate accesa o memorie mai mare de ;Mo.
)ncarc un re!istru O5 D5 95 "5 65 35 75 P5 C5
Microprocesoare Intel - Descriere i aplicaii
(DS) (-'-.2)
h
Operanzi 2*emple Descrierea formal+ a semanticii
r1, mem-2 LDS SI,[10H]
(SI) ((DS)0H + 11H) ((DS)0H + 10H)
(DS) ((DS)0H+1.H) ((DS)0H + 12H)
B/ I!s"#$%&i$!'( LES
2ste specific numai procesoarelor pe 4> 'ii, &ncarc re!istrele se!ment cu date pe > octei, iar cei
din instruciune cu date pe > sau ? octei, funcie de tipul re!istrului.
)ncarc un re!istru O5 D5 95 "5 65 35 75 P5 C5
LES d,s de ;1 'ii i
re!istrul 26
Descrierea formal a semanticii, &n !eneralC (#16) (-'-.2)
(ES) (-'-.2)
h
Operanzi 2*emple Descrierea formal+ a semanticii
r1, mem-2 L!S DI,[DI]
(DI) ((DS)0H +(DI) +1) ((DS)0H +(DI))
(ES) ((DS)0H+(DI)+.)((DS)0H+(DI)+2)
C. Instruciunea >EA
Prin aceast instruciune &ncrcarea adresei efecti%e se realizeaz prin sal%area &ntr+un re!istru de ;1
'ii a offsetului specificat de operand.
)ncarc un re!istru O5 D5 95 "5 65 35 75 P5 C5
LEA d,s de ;1 'ii cu o
adres efecti%a
Descrierea formal a semanticii, &n !eneralC (#16) AE
( 0%(&i'i -'-0#i'i
Operanzi 2*emple Descrierea formal+ a semanticii
r1, mem1 L!A BX,[BX+DI+10H]
(BX) (BX) + (DI) + 10H
adresa fizicC AF = (DS)0H +(BX) +(DI) +10H
adresa efecti%C AE = (BX) +(DI) +10H
:otC 6in!urele instruciuni care afecteaz fanioanele sunt P+PF i LAHF.
2*C 827 7G,QFGL69L;@R + adresa operandului este memorata in 7G
2ste ec,i%alenta cuC MOH 7G,offset adresa offset [ adresa relati%a calculata
8a coprocesor nu e*ista dispoziti% de calcul al adresei si se poate folosi 827
>DSre:1&d0pointer + re!;1[offset adresa D6[ adresa se!ment
Microprocesoare Intel - Descriere i aplicaii
>ESre:1&d0pointer
)ncarc re!istrul se!ment D6 sau 26 si re!istrul !eneral de la o adresa de ? octei unde se
!sete adresa relati%a a operandului si adresa se!mentului din care face parte. 6e folosete la
comunicarea intre se!mente pentru pre!tirea re!istrelor de se!ment.
dwpoint
er
ofsset &dresa &dresa segment 'D1
1I(#9pointer
0- )0 sau"0
3. Directive de asamblare 1i cuvinte re-ervate 2n EM9$%$
Definiie
Directi%ele sunt de fapt pseudoinstruciuni care transmit informaii asam'lorului pri%ind
modalitile de asam'lare.
5orma !eneral a unei directi%eC
.ume Directiv+ >ist+ date
b +12 XASSIB. >CCATIC. CC9.TE<Y D9B2C"9Hc 6inta*aC +12 (d#.
2fectC instruciunea urmtoare %a fi plasat la adresa (d#.
b DB XDE5I.E GMTEY D9B2C"9Hc
6inta*aC 3si-405 DB d("(,3d("(,3d("(,/////55.
2fectC rezer% spaiu, su' forma de 'Mte, &n memorie pentru date. Si-40, dac e*ist, %a a%ea ca
%aloare adresa la care a fost plasat primul 'Mte.
b D6 XDE5I.E IC<DY D9B2C"9Hc
6inta*aC 3si-405 D6 d("(,3d("(,3d("(,////55.
2fectC rezer% spaiu, su' form de .ord, &n memorie pentru date. Si-40, dac e*ist, %a a%ea
ca %aloare adresa la care a fost plasat primul .ord.
b E78 XC<EATE SMMGC>Y D9B2C"9Hc
6inta*aC si-40 E78 '9p#'si'
2fectC asam'lorul atri'uie lui simbol %aloarea o'inut prin e%aluarea '9p#'si'i. E9p#'si'
poate fi o d("(, sau o com'inaie de data prin semnele N si -. Odat folosit E78 pentru un sim'ol,
acest sim'ol nu mai poate fi modificat &n cursul pro!ramului.
b +FFSE: XC55SET C5 E?)<ESSIC.Y OP2B7"OB
6inta*aC +FFSE: si-40.
2fectC o'ine adresa pentru si-40.
b B;:E P:1 XC,A.BE TM)E C5 /A<IAG>EY OP2B7"OB
Microprocesoare Intel - Descriere i aplicaii
2lemente de o'ser%at pentru fiecare dintre urmtoarele instruciuni (&n 75D se recomand fi*area
<0!'i d0i de afiare a memoriei la adresa DS=12>)C
Hezi 7G , 6P i sti%a.
Hezi fanioanele.
III. Aplicaii cu instruciuni de transfer speciale
4. 6e copiaz &n 2mu/0/1 urmtorul pro!ram i se e*ecut pas cu pas.
OBI ;00,
MOH FG,C6 Dseteaza se!mentul de date
MOH D6,FG De!al cu se!mentul de cod
MOH 7G, /0/<,D
MOH FG, ;>4?,D
GCJI 7G,FGD se intersc,im' coninuturile celor dou re!istre
GCJI FJ,F8
GCJI 7G,QFGR
87J5Dincarca in 7J fanioanele
67J5Dincarca fanioanele cu continutul lui 7J
2:D
Hezi re!istrele FG, 7G, FJ, F8, 5.
Microprocesoare Intel - Descriere i aplicaii
C3 Moduri de adresare
7dresa efecti% poate fi definit utiliznd mai multe moduri (termeni), funcie de acetia se definesc
urmtoarele moduri de adresareC
1. Adresare imediat+ la memorieP
)n adresa efecti% se specific numai deplasamentul, care constituie c,iar adresa efecti%. 6e
specific re!istrul de se!ment, deci se %a scrie de fapt o adresa lo!ic.
MOH 7G,66CQ@?R D)ncarc &n 78 coninutul locaiei sti%ei cu adresa efecti% @? din se!mentul
de date, iar &n 7J coninutul locaiei urmtoare
MOH D6CQ?25@R,D8 D)ncarc &n locaia cu adresa efecti% 47C> din e*trase!ment coninutul
re!istrului de / 'ii D8
7dresa efecti% poate fi specificat i printr+o etic;et+ (&n paranteze drepte i cu specificarea unui
se!ment sau a unui re!istru !eneral) care a fost declarat anterior.
2tic,eta este declaratC
2tic,eta; 2PU numr;
2tic,eta; [ numr;
MOH 78,D6CQadresa;RD )ncarc &n 78 continutul locaiei de memorie de la adresa >0,
Ddin cadrul se!mentului de date
(. Adresarea direct
)n caz c se utilizeaz numele unei locaii declarate &n cadrul se!mentului de date. 7dresa de
se!ment este coninut implicit &n D6, dac este specificat &n alt mod. 7cest mod de adresare este
utilizat pentru se!mentul de date. Pnetru rezer%area unei locaii de memorie se %or utiliza directi%eleC
DF i D-.
2*emplu
Date d. --,//,55, 0Sta.12e3te adresa 2a 4%5e*&t&2 se6me%t&2&1
de date
MOV AL,date+2 07%5ar58 4% AL +5tet&2 de 2a date 02 d1% DS
MOV -09, AL0sa2:ea;8 4% 2+5a<1a -09 5+%<1%&t&2 2&1 AL
3.Adresare indirect+ la memorie prin re:istru.
6e specific &n instruciune re!istrul din care se %a lua adresa efecti%D re!istrul este unul din
urmtoareleC FG,FP,69,D9.
Microprocesoare Intel - Descriere i aplicaii
!xemplu2
MOH 78, QFPRD)ncarc &n 78 coninutul locaiei de memorie sti% a carei adresa efecti% este
coninut &n FP i adresa de se!ment coninut &n re!istrul implicit C6.
Dac nu se specific &n adresa i un registru #e segment( acesta "a fi cel implicit, specificat de
ta'elul C4.;
4.Adresare indirect+ la memorie prin re:istru cu deplasare.
)n instruciune se specific re!istrul i deplasamentul. 7dresa efecti% este dat de suma
re!istrului i deplasamentului specificate de instruciune. )n cazul &n care se refer la se!ment de
date, adresa de se!ment %a fi dat de D6, iar dac se folosete re!istrul FP adresa de se!ment este
dat de 66.
2*empluC
MOH 78,QD9L4=R D "ransfer &n 78 coninutul locaiei a carei adresa este dat de coninutul lui
D9 la care se adun 4=, iar adresa de se!ment este dat de D6.
MOH QFPL;224,R,CGD "ransfer pe C8 &n locaia a carei adresa este dat de coninutul lui FP la
care se aduna ;224,, iar adresa de se!ment este dat de 66, iar CJ &n locaia urmtoare.
sau
MOH 78,4=QD9RD MOH ;224QFPR,CG
Modul de adresare prin re!istru cu deplasare se recomand pentru adresarea elementelor irurilor
i ta'elelor.
2*empluC
"7F 2PU ;>00
7DD FG, "7FQ69RD se poate adresa elementul de ta'el cu numrul coninut &n re!istrul 69
6.Adresare indirect+ la memorie prin ( re:istre
7dresa efecti% este dat de suma a dou re!istre specificate de instruciune (una din cele ?
%ariante posi'ile conform e*presiei !enerale).
Be!istrul de se!ment implicit este D6 cu e*ceptia cazului cnd este menionat FP, &n care caz
se!mentul este cel de sti%, cu adresa coninut &n 66.
Modul de adresare prin re!istru cu deplasare se recomand pentru adresarea elementelor irurilor
i ta'elelor. De e*emplu, dac s+a incrcat anterior constanta numeric "7F &ntr+un re!istru de 'aza
( de e*emplu MOH FG,>;00) se poate adresa elementul de ta'el cu numrul coninut &n re!istrul 69
printr+o instruciune de !enul MOH CG,QFGL69R.
2*emplul
MOH C8,QFPL69R sau MOH C8,QFPRQ69R
6FF DG,QFGLD9R sau 6FF DG,QFGRQD9R
.Adresare indirect+ la memorie prin ( re:istre cu deplasare
7dresa efecti% este dat de suma a dou re!istre i un deplasament, toate elementele fiind
specificate de instruciune.
Be!istrul de se!ment implicit este D6 cu e*ceptia cazului cnd este menionat FP, &n care caz
se!mentul este cel de sti%, cu adresa coninut &n 66.
Microprocesoare Intel - Descriere i aplicaii
!xemplul 0.1<2
MOV "X,[BX+SI+2"]
S#B DX,[BP+SI+2/55]
Modul de adresare prin > re!istre cu deplasare se recomand pentru adresarea elementelor
matricelor.
2*empluC
M7" eTu >;00
D FP conine numrul unei linii &nmulit cu numrul total de coloane
D69 conine numrul de coloan
7DD FG,M7"QFPRQ69RD
ec,i%alent cu
7DD FG,QFPL69L>;00R
Microprocesoare Intel - Descriere i aplicaii
(SP) (SP) - 2
((SS)0H + (SP) + 1) ((SS)0H + (SP)) (F)
(IF) 0
(:F) 0
(SP) (SP) - 2
((SS)0H + (SP) + 1) ((SS)0H + (SP)) (CS)
(CS) (0000.H) (00002H)
(SP) (SP) - 2
((SS)0H + (SP) + 1) ((SS)0H + (SP)) (IP)
(IP) (00001H) (00000H)
else (AL) (AX) diC (s)
(AH) (AX) -0d (s) ,
iar pentru operaia pe ;1 'iiC
if (DX)(AX) diC (s) @ FFFF t,en
(SP) (SP) - 2
((SS)0H + (SP) + 1) ((SS)0H + (SP)) (F)
(IF) 0
(:F) 0
(SP) (SP) - 2
((SS)0H + (SP) + 1) ((SS)0H + (SP)) (CS)
(CS) (0000.H) (00002H)
(SP) (SP) - 2
((SS)0H + (SP) + 1) ((SS)0H + (SP)) (IP)
(IP) (00001H) (00000H)
else (AX) (DX)(AX) diC (s)
(DX) (DX)(AX) -0d (s) .
Operanzi 2*emple Descrierea formal+ a semanticii
r? DIV "L
(AL) (AX) diC (CL)
(AH) (AX) -0d (CL)
r1 DIV BX
(AX) (DX)(AX) diC (BX)
(DX) (DX)(AX) -0d (BX)
mem? DIV [BP+50H]
(AL) (AX) diC ((SS)0H + (BP) + 50H)
(AH) (AX) -0d ((SS)0H + (BP) + 50H)
mem1 DIV [DI+/1H]
(AX) (DX)(AX) diC ((DS)0H+(DI)+>2H)
((DS)0H+(DI)+>1H)
(DX)(DX)(AX) -0d ((DS)0H+(DI)+>2H)
((DS)0H+(DI)+>1H)
Microprocesoare Intel - Descriere i aplicaii
O5 D5 95 "5 65 35 75 P5 C5
IDIV s
)mprire cu semn
? ? ? ? ? ?
Descrierea formal a semanticii este similar cu cea de la instruciunea precedent, cu e*cepia
comparaiei iniiale care, pentru &ntre!ii cu semn, esteC
pentru &mprirea pe / 'iiC
if (AX) diC (s) @ 0 and (AX) diC (s) @ FF or
(AX) diC (s) D 0 and (AX) diC (s) D 0-FF-1 t,en ... ,
iar pentru &mprirea pe ;1 'iiC
if (DX)(AX) diC (s) @ 0 and (DX)(AX) diC (s) @ FFFF or
(DX)(AX) diC (s) D 0 and (DX)(AX) diC (s) D 0-FFFF-1 t,en ...
Operanzi 2*emple Descrierea formal+ a semanticii
=? DIV BL
(AL) (AX) diC (BL)
(AH) (AX) -0d (BL)
=1 DIV "X
(AX) (DX)(AX) diC (CX)
(DX) (DX)(AX) -0d (CX)
mem? DIV [BX+SI]
(AL) (AX) diC ((DS)0H + (BX) + (SI))
(AH) (AX) -0d ((DS)0H + (BX) + (SI))
mem1 DIV [BP]
(AX) (DX)(AX) diC ((SS)0H +(BP) +1)
((SS)0H +(BP))
(DX) (DX)(AX) -0d ((SS)0H +(BP) +1)
((SS)0H +(BP))
7(ustare 76C99 pt. O5 D5 95 "5 65 35 75 P5 C5
AAD &mprire (&nainte ? x x ? x ?
de &mprire)
Descrierea formal a semanticiiC
(AL) (AH) B 0AH + (AL)
(AH) 0H .
2*tindere (cu semn) O5 D5 95 "5 65 35 75 P5 C5
CB a unui octet la un
cu%nt
Descrierea formal a semanticiiCif (AL) D 80H t,en
(AH) 00H
else (AH) FFH.
2*tindere (cu semn) O5 D5 95 "5 65 35 75 P5 C5
CD a unui cu%nt la un
cu%nt du'lu
Descrierea formal a semanticiiCif (AX) D 8000H t,en
Microprocesoare Intel - Descriere i aplicaii
(DX) 0000H
else (DX) FFFFH.
O'ser%aie
8a &mprire tre'uie s a%em de2mp+ritul J 2mp+ritorul %zute ca numere subunitare fiindc
rezultatul tre'uie s fie su'unitar. )n caz contrar a%em dep+1ire.
E*empluP
5ie numerele ;$?>@0 d ;$4@ &n acest caz nu apare depire. Bestul are semnul de&mpritului.
8a &mprire numrul din 7G tre'uie e*tins spre stn!a &n DG, prin copierea 'itului de semn.
Desf+1urarea lucr+rii
)ro:ramul 1.
7plicaie pentru e*emplificarea modului de utilizare a instruciunilor de prelucrare iruri de
caractere.
W -------------------------------------
OBI ;00,
Dst;C MOH FG,C6 Dseteaza se!mentul de date
D MOH D6,FG De!al cu se!mentul de cod
D "ranslateaz zona de memorie
D +++++++++++++++++++++++++++++++++++++
Mo% C*,n D lun!ime sir
Mo% 6i,offset sir; D sa%eaz &n 69 adres de &nceput al sirului sir;
Mo% Di,offset sir> D sa%eaz &n 69 adres de &nceput al sirului sir;
Cld D D5[0 directie stin!a spre dreapta
Bep Mo%s' D mutare sir
D 6ter!e zona de lun!ime >0
D +++++++++++++++++++++++++++++++++++++
Mo% 78,WFW D se sal%eaz F
Mo% D9,offset zona D adresa inceput zona
Mo% CG,>0 D lun!ime zona
Bep 6tos' D &ncrcare coninut re!istru 78 &n zona
D "ranslatie zona spre dreapta
Microprocesoare Intel - Descriere i aplicaii
D +++++++++++++++++++++++++++++++++++++
6td D D5[; directie dreapta spre stin!a
Mo% CG,;1 D lun!ime sir
Mo% 69,offset sir>L;@ D adresa ultimului octet din sir
Mo% D9,offset sir>L>1 D adresa ultimului octet destinatie
Bep Mo%s' D mutare sir dreapta spre stin!a
D Comparatie siruriC sir; cu sir4
D +++++++++++++++++++++++++++++++++++++
Mo% 69,offset sir; D adresa sir sursa
Mo% D9,offset sir4 D adresa sir destinatie
Mo% CG,;1 D lun!ime de comparatie
C8D D D5[0 directie stin!a spre dreapta
Bepe Cmps' D repeta att timp ct octeii sunt e!ali
a8loop D sir; d sir4 ( primul octet diferit)
Mo% DG,offset sir4 D afiare sir4
aMP s,ort c>
loopC Mo% DG,offset sir; D afiare sir;
c>C Mo% 7J,< D functie afiare
int >;,
n eTu >@
sir; d' Wma numesc fW
sir> d' 40 dup(>0,)
sir4 d' Waanine fW
zona d' @0 dup(WFW),WfW
)ro:ram (
5ie dou tT'louri 7 i F, elementele fiind reprezentate pe cte > octei, 6e adun elementele
ta'lourilor iar rezultatul se depune &n C.
6e consider fiecare ta'lou format din ;0 elemente plasate la adresele 7 la D6C0, F la D6C>0 i C la
D6C40.
C(9)[7(9)LF(9)
MOH69,0 D inde* 9[; Ere!istrul de se!ment implicit este D6
MOHCG,/ D contor pentru cicluri (numr de elemente ta'lou)
etic,etaC MOH7G,Q69L0R D7G[7(9)
7DD7G,Q69L>0RD7G[7(9)LF(9) >0 numrul de locaii pe care sunt reprezentate elementele
Dta'loului
MOHQ69L40R,7G D memorare rezultat la C(9)
7DD69,> D incrementare inde* pentru rndul urmtor(9[9L;)
8OOP etic,eta D salt pentru CG Y 0 i face CG[CG+;
9:" 4
Microprocesoare Intel - Descriere i aplicaii
)o:ram 3
6 se &nmuleasc 04, cu /0,.
MOH 78, 04,
MOH F8, /0,
MU8 F8
6 se &nmuleasc 4 cu ;>/ (numere fr semn) se %a o'ine &n 7G 4/? [ 0;/0,
mo% al, 04,
mo% 'l, /0,
imul 'l
Dac se &nmultete 4 cu +;>/ (numere cu semn) i se o'ine &n 7G +4/? [ 052/0,.
7(ustare zecimal &n urma unei operaii de adunareC se adun == cu @@, se %a plasa == &n 78 si @@ &n
F8 &n format &mpac,etat.
MOH 78, ==J D 9ncarca == si @@ ca numere &mpac,etate
MOH F8, @@J
7DD 78, F8 D 7duna == cu @@ si o'tine 0CC,
D77 D 7(usteaza 0CC, la ;4> numar FCD &mpac,etat ; &n indicatorul de transport (C5) si 4> &n 78
)ro:ramul 4
6e %a utiliza operaia de scdere (6FF)
Pro!ramul urmtor conine un sin!ur se!ment mi*t codeLdateLsti%a.
W ---------------------------------------------------
W 5ie un tablou a c+ror elemente de lun:ime n sunt sc+-ute
W ---------------------------------------------------
pro:ram1 se:ment
assume csPpro:ram1&dsPpro:ram1&ssPpro:ram1Wse definete un sin!ur se!ment mi*t
st;C
mo% a*,pro!ram; D initializare re!istre se!ment
mo% ds,a*
mo% ss,a*
mo% sp,offset sti%a D iniializare pointer sti%a
mo% c*,? D numar cifre zecimale
mo% si,4 D inde* ultima cifra
et;C
mo% al,aQsiR
s'' al,'QsiR Dscdere elemente de la adresa curent indicat de 69 i D9
das D corecie zecimala pt.scadere
mo% cQsiR,al D memorare octet rezultat
dec si D inde* octet urmator
loop et; D ciclu pina CG e 0
int 4 D re%enire in afd (terminare)
W -ona memorie pentru date
Microprocesoare Intel - Descriere i aplicaii
D +++++++++++++++++++++++++++++++++++++
a d' 4;,,;@,,4=,, Delemente ta'lou desczut
' d' >1,,;;,,1@,, Delemente ta'lou scaztor
c d' ? dup(0) D se aloc un spaiu de ? octei din memorie pentru sal%are rezultat
W Qona pentru stiva
D +++++++++++++++++++++++++++++++++++++
d' >@ dup(S) D rezer%are spaiu sti%a de >@ octei
sti%a eTu f D %rful initial al sti%ei + f este adresa curenta contor amplasare
pro:ram1 ends
end st1 W adresa lansare pro:ram
)ro:ramul 6
6a se realizeze &mprirea numrelor >4?, la 41,. 6 se a(usteze zecimal rezultatul.
>4. Instruciuni lo:ice de salt condiionat 1i necondiionat& de deplasare 1i rotaie.
8ucrarea de la'orator a fost structurat &n dou pri. )n prima parte sunt prezentate etapele de
scriere i de e*ecuie a unui pro!ram editat &n asam'lor iar &n a doua parte sunt prezentate
instruciunile lo!ice, de salt condiionat i necondiionat, de deplasare i rotaie.
8a sfritul acestei lucrri, studenii %or a%ea noiuni de realizare a unor 'ucle condiionate sau nu de
'iii re!istrului de fanione (5) ct i de realizare a unor operaii lo!ice i de deplasare. pro!ramare &n
asam'lor.
6tudenii tre'uie s cunoasc pentru efectuarea acestui la'oratorC
+ modul de reprezentare a numerelor &n memorieC &ntre!i cu sau fr semn, 3CF &mpac,etat,
76C99, cu %ir!ul fi* (pentru reprezentarea numerelor fracionare)D
+ s fac estimarea mrimii rezultatelor i operatorilor, pentru a se putea ale!e lun!imea locaiilor
de memorie necesar pentru stocarea lorD
+ s se cunoasc foarte 'ine modul de afectare a fanioanelor &n urma unei operaii, deoarece
salturile condiionate se fac relati% la acestea i, &n plus, fanioanele ne pot da indicaii asupra
corectitudinii e*ecuiei.
>4.1. Etapele de scriere 1i prelucrarea ale unui pro:ram
>4.1.1.)ro:ramele de asamblarea
Pro!ramele scrise &n asam'lor se compun dinC mnemonici E instruciuni, directi%e care descriu
datele i pentru controlul pro!ramului, funcii DO6 utilizate &n &ntreruperi i macroinstruciuni.
Microprocesoare Intel - Descriere i aplicaii
Pro!ramele e*ecuta'ile .e*e a(un! &n aceast faz &n urma compilrii unui pro!ram asam'lor (&n
cazul acesta). Pro!ramul e*ecuta'il este transformat &n pro!ram 'inar pentru a putea fi implementat
pe microprocesor.
Figura C3.1. Reprezentarea etapelor #e transformare a unui fiier scris )n asam*lor )n fiier *inar
Asamblorul prelucreaz un fiier te*t surs (Pro!.asm), scris cu un editor de te*te i !enereaz un
modul o'iect (Pro!.o'() care conine instruciuni i date ce sunt plasate de la adresa 000. Dup etapa
de asam'lare se !enereaz i un fiier list care conine comentarii asupra pro!ramului. Utiliznd
directi%a include se copiaz &n pro!ramul curent i alte pro!rame e%entual li'rrii la care se face
referire. Modulele o'iect nu sunt e*ecuta'ile dar pot fi depuse &n 'i'lioteci (Fi'l.li').
2ditorul de le!turi (89:N) transform modulele o'iect, o'inute prin compilare &n 'i'lioteci.
Dup acest etep se o'in pro!rame de tip .e*e. )n aceast etap se face le!tura ntre adresele
modulelor i adresele relati%e dintre instruciuni. 7dresele din instruciuni se recalculeaz relati% la
&nceputul se!mentului innd cont de adresa modulului &n se!ment. Un pro!ram poate conine mai
multe se!mente. 7dresele sim'olice definite &n alt modul tre'uie scrise ca 2G"2B: iar cele care sun
referite din e*terior declarate cu PUF89C. 7sam'lorul %a !enera cte un ta'el cu etic,etele referite
&n e*terior (2G"B:) i unul cu etic,etele care pot fi referite din e*terior (PUF89C), &n care se
specific adresa lor din modul. )n fiierul Pro!.map se !sesc noile adrese ale modulelor i ale
etic,etelor definite ca e*terne.
)ro:ramul e*ecutabil (Pro!.e*e) poate fi lansat ca o comand DO6, care prelucreaz
datele i se o'in rezultatele. Prin pro!ramul F9: se poate o'ine o %ariant a pro!ramului asam'lor
&n Pro!.com.
>4.1.(.Directive de control pro:ram
)roceduri
O procedur este o sec%en de instruciuni care e*ecut un al:oritm pe 'aza unei descrieri
formale. 7%anta(ul procedurilor este c ele sunt reutili-abile. )n lim'a( de asam'lare e*ist
proceduri (nu e*ist funcii), definite cu directi%a )<CC i terminate cu E.D). Be%enirea din
procedur &n pro!ramul c,emtor se face cu instruciunea <ET.
Forma general$#
numeVproc )<CC near sau far D inceput de procedur
..........
<ET Zn[ Diere din procedur cu eli'erare sti%
numeVproc E.D) D sfrit de procedur
E.D start D directi%a de sfrit de asam'lare care d adresa de lansare pro!ra
Atenie 2:D se pune dup ultimul modul din pro!ram.
Microprocesoare Intel - Descriere i aplicaii
Complementare O5 D5 95 "5 65 35 75 P5 C5
NOT d fa de ;
a destinaiei
Descrierea formal a semanticii, &n !eneralC (d) FFH - (d) ,
pentru operand pe / 'ii,
sau (d) FFFFH - (d) pentru operand pe ;1 'ii.
2*mple pentru instruciunea :O"
Operanzi 2*emple Descrierea formal+ a semanticii
= )O, AX
(AX) FFFFH - (AX)
mem )O, [0!!FFH]
((DS)0H +EEFFH) FFH -
- ((DS)0H+EEFFH)
9nstruciunea 7:D E realizeaz U9 &ntre doi operanzi scrii &n 'inar, memorai &n re!istre sau
memorie sau &ntre o constant i un operand.
O5 D5 95 "5 65 35 75 P5 C5
AND d,s U9 lo!ic ! x x ? x !
Descrierea formal a semanticii, &n !eneralC (d) (d) ? (s) .
Operanzi 2*emple Descrierea formal+ a semanticii
AL|AX,
data
A)D AX,0FFH
(AX) (AX) ? 00..H
=, data A)D "X,10H
(CX) (CX) ? 0010H
mem, data A)D [DI],0AAAAH
((DS)0H +(DI) +1) ((DS)0H +(DI))
((DS)0H +(DI) +1) ((DS)0H +(DI)) ?
? AAAAH
=
1
, r
2
A)D "L,DL
(CL) (CL) ? (DL)
=, mem A)D DX,[BP]
(DX) (DX) ? ((SS)0H + (BP) + 1H)
((SS)0H + (BP))
mem, r A)D [BX+DI],"L
((DS)0H+(BX)+(DI))
((DS)0H+(BX)+(DI)) ? (CL)
"$emplu#
1<<1 +-D H 0: 3 H F; L: 111
1H
-
1
11<< - D1 3 H FF 13 311
1
-
1
3444 Rez1 1 <F 55 Rez
M<
- F< ++ Rez
N<
131
1<
-
O5 D5 95 "5 65 35 75 P5 C5
XOR d,s 67U e*clusi% ! x x ? x !
Descrierea formal a semanticii, &n !eneralC (d) (d) (s) .
Operanzi 2*emple Descrierea formal+ a semanticii
AL|AX, data XO= AX,---H
(AX) (AX) 0...H
r, data XO= BP,2/5H
(BP) (BP) 02>5H
mem, data XO= [DI],@@??H
((DS)0H +(DI) +1H) ((DS)0H +(DI))
((DS)0H +(DI) +1H) ((DS)0H +(DI))
EE88H
r
1
, r
2
XO= DX,SI
(DX) (DX) (SI)
r, mem XO= "X,[BX+SI]
(CX) (CX) ((DS)0H +(BX) +(SI) +1H)
((DS)0H +(BX) +(SI))
mem, r XO= [DI+0AAH],BL
((DS)0H +(DI) +AAH)
((DS)0H +(DI) +AAH) (BL)
>4.3. Deplas+ri 1i rotaii
9nstruciuni de deplasare spre dreapta (678, 6J8) aritmetice sau lo!ice. :umrul de 'ii cu care se
realizeaz deplasarea este scis &n nrce.
Deplasare stn!a O5 D5 95 "5 65 35 75 P5 C5
SAL | SHL lo!ic sau x x x ? x x
s,"#$%&
aritmetic
Descrierea formal a semanticiiC
.,ile !#%' 0 do
(CF) (s)
-s4
(s) (s) B 2
(s)
s4
0
!#%' !#%' - 1
if !#%' = 1 t,en
if (s)
-s4
(CF) t,en
(+F) 1
else (+F) 0
else (+F) nedeterminat .
9nstruciunea 6JB de deplasare spre stn!a lo!ic sau aritmetic cu un numr de 'ii indicat de nrcel.
Operanzi 2*emple
r, 1 SHL BX,1
r, "L SAL DX,"L
mem, 1 SHL [BX+SI],1
mem, "L SHL [DI+10H],"L
Microprocesoare Intel - Descriere i aplicaii
.,ile !#%' 0 do
(s) (s) B 2
(CF) (s)
-s4
(s)
s4
(s)
-s4
!#%' !#%' - 1
if !#%' = 1 t,en
if (s)
-s4
(CF) t,en
(+F) 1
else (+F) 0
else (+F) nedeterminat .
9nstruciunea BOB de rotire a unui operand spre dreapta. :umrul de rotaii este indicat &n nrcel.
O5 D5 95 "5 65 35 75 P5 C5
ROR s,
"#$%&
Botaie dreapta x x
Descrierea formal a semanticiiC
.,ile !#%' 0 do
(s) (s) diC 2
(s)
-s4
(s)
s4
(CF) (s)
s4
!#%' !#%' - 1
if !#%' = 1 t,en
if (s)
-s4
(s)
-s4-1
t,en
(+F) 1
else (+F) 0
else (+F) nedeterminat .
9nstruciunea BC8 de rotaie stn!a cu transport. :umrul de rotaii este indicat &n nrcel.
Botaie stn!a O5 D5 95 "5 65 35 75 P5 C5
RCL s, cu transport x x
Operanzi 2*emple
r, 1 =OL SI,1
r, "L =OL DX,"L
mem, 1 =OL [BX+DI],1
mem, "L =OL [BP+100H],"L
Operanzi 2*emple
r, 1 =O= AX,1
r, "L =O= DX,"L
mem, 1 =O= [BP],1
mem, "L =O= [1000H],"L
Microprocesoare Intel - Descriere i aplicaii
"#$%&
Descrierea formal a semanticii este
asemntoare cu rotaia stn!a simpl.
9nstruciunea BC8 de rotaie dreapta cu transport. :umrul de rotaii este indicat &n nrcel.
Botaie dreapta O5 D5 95 "5 65 35 75 P5 C5
RCR
s,"#$%&
cu transport x x
Descrierea formal a semanticii este
asemntoare cu a celorlalte rotaii.
>4.4. Salturi propriu--ise necondiionate
9nstruciunea aMP E este o instruciune de salt necondiionat, saltul const &n memorarea adresei de
destinaie a saltului &n re!. 9P (9nstruction Pointer).
6alt propriu+zis, O5 D5 95 "5 65 35 75 P5 C5
'MP (d# neconditionat
Descrierea formal a semanticii, &n funcie de modul de adresare folositC
a! 6alt cu adresare a'solut (direct) interse:mentC
FGP (d#.2 H (CS) (d#.2
h
Operanzi 2*emple
r, 1 ="L "X,1
r, "L ="L AL,"L
mem, 1 ="L [SI],1
mem, "L ="L [BX+DI],"L
Operanzi 2*emple
r, 1 ="= AX,1
r, "L ="= BX,"L
mem, 1 ="= [BP+DI],1
mem, "L ="= [BX],"L
Microprocesoare Intel - Descriere i aplicaii
(IP) (d#.2
.
6au, punnd &n e%iden faptul c adresa complet face parte din formatul instruciuniiC
(CS) ((CS)0H+(IP)+>) ((CS)0H+(IP)+.)
(IP) ((CS)0H+(IP)+2) ((CS)0H+(IP)+1).
5ar _mp + salt &n afara se!mentului curent i tre'uie modificat 9P i re!. C6. Deplasamentul este
reprezentat pe ? octei.
b! 6alt cu adresare relati%C
FGP disp8|disp16 H (IP) (IP) + disp8|disp16
Deplasamentul face parte din formatul instruciunii curente.
S;ort _mp + salt scurt cu L;>= pn la +;>= fa de 9P (instruciunea curent). Deplasament este
reprezentata pe ; octet.
c! 6alt cu adresare &n re!istru sau indirect in memorie, intrase:mentC
FGP #16 | -'-16 H (IP) (#16) | (-'-16)
.ear _mp + salt &n se!mentul curent cu +4>N pn la L4>N fa de 9P. Deplasament este reprezentat
pe > octei.
d! 6alt cu adresare indirect &n memorie, interse:mentC
FGP -'-.2 H (CS) (-'-.2)
h
(IP) (-'-.2)
6altul de tip far (&ndeprtat) se face &ntre se!mente i se modifica att 9P ct i re!istrul de se!ment
C6 &n care se sal%eaz adresa se!mentului care conine etic,eta destinaie.
Operanzi 2*emple Descrierea formal+ a semanticii
adr-2 AMP !,BI)BAL,BS!(
(CS) ((CS)0H+(IP)+>) ((CS)0H+(IP)+.)
(IP) ((CS)0H+(IP)+2) ((CS)0H+(IP)+1)
d1s*1 AMP !,BI)BS!(
(IP) (IP) +
+ ((CS)0H+(IP)+2) ((CS)0H+(IP)+1)
d1s*? AMP FOA=,!BAP=OAP!
(IP) (IP) + ((CS)0H+(IP)+1)
r1 AMP BX
(IP) (BX)
mem* AMP [BX]
(IP) ((DS)0H+(BX)+1) ((DS)0H+(BX))
mem** AMP [DI]
(CS) ((DS)0H+(DI)+.) ((DS)0H+(DI)+2)
(IP) ((DS)0H+(DI)+1) ((DS)0H+(DI))
` salt cu adresare indirect definit cu directi% de asam'lare ca salt intra+se!mentD
`` salt cu adresare indirect definit cu directi% de asam'lare ca salt inter+se!ment.
(.6. Salturi condiionate
Microprocesoare Intel - Descriere i aplicaii
Instruciunile de salt sunt de tip S,C<T (N1(# la -1(#! sau .EA< (pentru procesoarele pe 4>
de 'ii). )n acest caz etic,etele pot referi adrese &n se!mentul curent. 2le nu pot referi etic,ete din alt
se!ment.
5orma !eneral a instruciunii esteC
_cond etic;et+
Dac condiia este &ndeplinit atunci se &ncarc &n re!istrul 9P %aloarea adresei unde se %a
realiza saltul.
9nstruciunile aritmetice i lo!ice poziioneaz indicatorii de condiie funcie de %aloarea
rezultatului. )n instruciunile de salt condiionat pot testa indicatorii de fanioane, ca dee*empluC
Bez d 0 6[;
Bez e0 6[0 si 3[0
Bez[0 3[;
"ransport C[;
Paritate para P[; + numrul 'iilor de ; este par
Depire O[;
6alt propriu+zis, O5 D5 95 "5 65 35 75 P5 C5
'xx
d)s*+
neconditionat
Descrierea formal a semanticiiC
if %0!dii' t,en
(IP) (IP) + disp8 , sau, detaliatC
(IP) (IP) + ((CS)0H+(IP)+1)
7dunarea se face prin e*tensie cu semn la un numr de;1 'ii.
Mnemonica Cond. testat 9nterpretare
'A | 'NBE $"F'sa&$CF'D0 6alt dac KpesteK | dac Knu su' sau e!alK
'AE|'NB|'NC $"F'D0 6alt dac Kpeste sau e!alK|dac Knu su'K|dac
Knu e*ist transportK
'B|'NAE|'C $"F'D1 6alt dac Ksu'# | dac Knu peste sau e!al# |
dac e*ist transportK
'BE | 'NA $"F'sa&$CF'D1 6alt dac Ksu' sau e6a2K| dac Knu pesteK
'E | 'Z $CF'D1 6alt dac Ke!alK | dac K zeroK
'G | 'NLE
$$SF'$OF''sa&$CF'D0 6alt dac Kmai mareK| dac Knu mai mic sau
e!alK
'GE | 'NL
$SF'$OF'D0 6alt dac Kmai mare sau e!al K| dac Knu mai
micK
'L | 'NGE
$SF'$OF'D1 6alt dac Kmai micK | dac Knu mai mare sau
e!alK
'LE | 'NG
$$SF'$OF''sa&$CF'D1 6alt dac Kmai mic sau e!al K| dac Knu mai
mare K
'NE | 'NZ $CF'D0 6alt dac Kne+e!alK | dac Knon+zeroK
Microprocesoare Intel - Descriere i aplicaii
m+: 52,?
sa2 aG,52
m+: 52,?
s9r dG,52
add 2re;,aG
ad5 9re;,0
add 9re;,dG
m+: a2,.Fte *tr +*2+1
m&2 .Fte *tr +*1
m+: dG,aG
m+: 52,?
s92 aG,52
m+: 52,?
s9r dG,52
add 2re;,aG
ad5 9re;,0
add 9re;,dG
m+: a2,.Fte *tr +*1
m&2 .Fte *tr +*2
add 2re;,aG
ad5 9re;,0
m+: aG,2re;
m+: dG,9re;
m+: aG,+*1
m&2 +*2
1%t 209
+*1E dH -00
+*2E dH 200
2re;E dH I
9re;E dH Is
e%d
Bealizai or!ani!rama dup care a fost construit pro!ramul.
)ro:ram 4
)n pro!ramul urmtor, pentru a uura rularea pas cu pas, dup fiecare salt condiionat se re%ine la
instruciunea imediat urmtoare, cu a(utorul unui salt necondiionat indirect prin BX. De aceea, se
poate o'ser%a &n pro!ram c, &nainte de salturile condiionate, se pre!tete re!istrul BX.
or! ;00,
Microprocesoare Intel - Descriere i aplicaii
(mp start
startC mo% a*,cs
mo% ds,a*
D 678"UB9 CO:D9"9O:7"2
mo% al,op;
lea'*,adr;
cmp al,op> Din functie de starea fanioanelor
Ddupa CMP se estimeaza, mai intii,
(a fin Defectul celor doua instructiuni
Da7 si aI, iar apoi se %erifica
adr;C (! fin
mo% al,op> Din functie de starea fanioanelor
lea'*,adr> Ddupa CMP se estimeaza, mai intii,
cmp al,op; Defectul celor doua instructiuni
(' fin D aF si a8, iar apoi se %erifica
adr>C (l fin
lea'*,adr4
cmp al,op>
(z fin
adr4C lea'*,adr?
and al,0fe,
(np fin
adr?C (p fin
(mp ies D 678" :2CO:D9"9O:7"
finC (mp '* D 678" 9:D9B2C"
iesC int >0,
op; d' 0fe, D %aloare fara semn >@4 %aloare cu semn +>
op> d' 4
end
O'ser%aiiC
)n pro!ramele scrise &n lim'a( de asam'lare, datele se declar &n !eneral la sfrit. Dac se fac
declaraiile la &nceput, procesorul %a interpreta aceste date ca pe nite instruciuni. 2fectul acestora
este !reu de pre%zut. Pentru a e%ita acest lucru este necesar ca pro!ramul s &nceap cu un salt
necondiionat la prima instruciune.
Microprocesoare Intel - Descriere i aplicaii
2ste un salt intrase!ment, dar se o'ser% c, spre deose'ire de salturile propriu+zise, deplasamentul
este admis numai pe ;1 'ii (deci el %a ocupa doi octei &n formatul instruciunii curente de apel).
c! 7pel de su'pro!ram cu adresare indirect &n memorie, interse:mentC
CALL -'-.2 H
(SP) (SP) - 2
((SS)0H +(SP)+1) ((SS)0H +(SP)) (CS)
(CS) (-'-.2)
h
(SP) (SP) - 2
((SS)0H +(SP)+1) ((SS)0H +(SP)) (IP)
(IP) (-'-.2)
.
d! .ear CA>> + pune &n sti% 9P. 6altul se realizeaz &n se!mentul curent cu +4>N pn la L4>N
fa de 9P.
7pel de su'pro!ram cu adresare &n re!istru sau indirect &n memorie, intrase:mentC
CALL #16|-'-16 H
(SP) (SP) - 2
((SS)0H +(SP)+1) ((SS)0H +(SP)) (IP)
(IP) (#16) | (-'-16) .
Operanzi 2*emple Descrierea formal+ a semanticii
adr-2 "ALL P=O"S!(M
(SP) (SP) - 2
((SS)0H+(SP)+1) ((SS)0H+(SP)) (CS)
(CS) ((CS)0H+(IP)+>) ((CS)0H+(IP)+.)
(SP) (SP) - 2
((SS)0H+(SP) +1) ((SS)0H+(SP)) (IP)
(IP) ((CS)0H+(IP)+2) ((CS)0H+(IP)+1)
d1s*1 "ALL SO=,A=!
(SP) (SP) - 2
((SS)0H +(SP)+1) ((SS)0H +(SP)) (IP)
(IP) (IP) +
+ ((CS)0H+(IP)+2) ((CS)0H+(IP)+1)
r1 "ALL BX
(SP) (SP) - 2
((SS)0H +(SP)+1) ((SS)0H +(SP)) (IP)
(IP) (BX)
mem* "ALL [BX]
(SP) (SP) - 2
((SS)0H +(SP)+1) ((SS)0H +(SP)) (IP)
(IP) ((DS)0H+(BX)+1) ((DS)0H+(BX))
mem** "ALL [DI]
(SP) (SP) - 2
((SS)0H+(SP)+1) ((SS)0H+(SP)) (CS)
(CS) ((DS)0H+(DI)+.) ((DS)0H+(DI)+2)
(SP) (SP) - 2
((SS)0H+(SP) +1) ((SS)0H+(SP)) (IP)
(IP) ((DS)0H+(DI)+1) ((DS)0H+(DI))
` apelare de su'pro!ram cu adresare indirect definit cu directi% de asam'lare ca
Microprocesoare Intel - Descriere i aplicaii
apelare intra+se!mentD
`` apelare de su'pro!ram cu adresare indirect definit cu directi% de asam'lare ca
apelare inter+se!ment.
9nstruciunea B2" : E instruciune de re%enire din su'pro!ram &n pro!ramul principal, : este
%aloarea cu care se incrementeaz 6P. 8a re%enirea &n pro!ramul principal tre'uie ca sti%a s fie
!oal adic s ai' aceeai poziie ca la apelul procedurii.
Be&ntoarcere din O5 D5 95 "5 65 35 75 P5 C5
RET ,d(-(1./ su'pro!ram
Descrierea formal a semanticii, &n funcie de modul de adresare folositC
1E: 3d("(165 H
(IP) ((SS)0H +(SP)+1) ((SS)0H +(SP))
(SP) (SP) + 2
3(CS) ((SS)0H +(SP)+1) ((SS)0H +(SP))
(SP) (SP) + 25
3(SP) (SP) + d("(165 .
6e o'ser% c re%enirea se poate face fie interse:ment fie intrase:mentD aceast decizie, transpa+
rent pro!ramatorului, este determinat de tipul apelului de su'pro!ram folosit &n preala'il. )n plus,
e*ist posi'ilitatea de a se rezer%a, opional, un spaiu &n sti% prin folosirea operandului d("(16.
Operanzi 2*emple Descrierea formal+ a semanticii
=!, 01%traBse6me%t
(IP) ((SS)0H +(SP)+1) ((SS)0H +(SP))
(SP) (SP) + 2
data1 =!, /01%traB
se6me%t
(IP) ((SS)0H +(SP)+1) ((SS)0H +(SP))
(SP) (SP) + 2
(SP) (SP) + 0>H
=!, 01%terBse6me%t
(IP) ((SS)0H +(SP)+1) ((SS)0H +(SP))
(SP) (SP) + 2
(CS) ((SS)0H+(SP)+1) ((SS)0H +(SP))
(SP) (SP) + 2
data1 =!, 201%terB
se6me%t
(IP) ((SS)0H +(SP)+1) ((SS)0H +(SP))
(SP) (SP) + 2
(CS) ((SS)0H+(SP)+1) ((SS)0H +(SP))
(SP) (SP) + 2
(SP) (SP) + 02H
>6.3. Controlul iteraiilor
Microprocesoare Intel - Descriere i aplicaii
9nstruciunea >oop E e*ecut necondiionat un pro!ram atta timp ct coninutul re!istrului CG este
diferit de zero.
Cicleaz O5 D5 95 "5 65 35 75 P5 C5
LOOP
d)s*+
necondiionat
Descrierea formal a semanticiiC
(CX) (CX) - 1
if (CX) 0 t,en (IP) (IP) + disp8/
9nstruciunea 8OOP2$8OOP3 E instruciune de ciclare pn cnd este coninutul re!istrului CG e!al
cu zero i c&t timp fla!ul 35 este setat. Cnd condiiile sunt &ndeplinitre, &n re!istrul 9P se %a aduna
adresa deplasamentului
Cicleaz ct timp O5 D5 95 "5 65 35 75 P5 C5
LOOPE|
LOOPZ
Ke!alK sau KzeroK
d)s*+
Descrierea formal a semanticiiC
(CX) (CX) - 1
if (IF)=1 and (CX)0 t,en (IP)(IP)+disp8.
7ceast instruciune permite un ciclu condiionatD ciclarea se realizeaz pn la epuizarea
contorului numai dac &n tot acest timp (IF)=1 (cicleaz Kct timp este zeroK sau Kct timp este
e!alK, ceea ce &nseamn c se poate ine seama de e!alitatea a doi operanzi sau de orice alt operaie
care are drept urmare setarea fanionului IF). Orice resetare a fanionului IF duce la ieirea forat
din ciclu.
Operanzi 2*emple
d1s*? LOOP B#"LA
Operanzi 2*emple
d1s*? LOOP! "I"L#
Microprocesoare Intel - Descriere i aplicaii
b prin sti%D
b prin ta'ele de dateD
b prin intermediul fanioanelor.
>6.6. Modul de lucru recomandat
)n lucrare sunt prezentate trei pro!rame de aplicaii care rezol% pro'leme reale, pentru care s+a
specificat att pro'lema de rezol%at ct i al!oritmul folosit.
Pro!ramele se %or edita, omindu+se comentariile, i se %or e*ecuta pas cu pas, urmrindu+se
modificrile &n re!istre i memorie, conform comentariilor.
Desf+1urarea lucr+rii
@.;. 6e lanseaz 2MU/0/1 i se editeaz te*tul pro!ramului nr.;, fr a scrie i comentariile.
@.>. 6e emuleaz pro!ramul apsnd pe 'utonul 2umulate.
@.4. 6e %izualizeaz lista de sim'oluri (S) i se noteaz adresele sim'olurilor folosite.
@.?. 6e seteaz zona > de afiare a memoriei la adresa sim'olului SI< .
@.@ 6e e*ecut pro!ramul pas cu pas, urmrindu+se &n paralel re!istrele i memoria, conform
comentariilor.
@.1 6e repet punctele @.;. + @.@ pentru pro!ramele > i 4.
)ro:ramul 1
Utilizarea instruciunii C788 C
)roblema 1
6 se scrie o procedur de !sire a ma*imului &ntr+un ir de numere &ntre!i cu semn,
reprezentate pe cte un octet.
6e impunC
Date de intrareC
+ re!istrul BX %a conine adresa de &nceput a iruluiD
+ re!istrul CX %a conine lun!imea irului.
Date de ieireC
+ re!istrul AL %a conine octetul ma*im din RirD
+ re!istrul DX %a conine adresa octetului ma*im.
Be!istre afectateC AL i DX.
Pentru a %erifica procedura, se %a scrie un pro!ram &n care se %or defini datele, se %or iniializa
re!istrele i se %a apela procedura de !sire a ma*imului.
7l!oritmC
Microprocesoare Intel - Descriere i aplicaii
6e iniializeaz re!istrul AL cu cel mai mic &ntre! cu semn reprezenta'il pe un octet ($%;).
)ncepnd cu primul octet din ir, se face o comparaie cu coninutul re!istrului AL. Dac
octetul din ir este mai mare dect coninutul re!istrului AL, se face transferul octetului &n
AL i a adresei octetului &n DX. 6e continu parcur!erea irului cu elementul urmtor, pn la
epuizarea tuturor octeilor din ir.
Te*tul pro:ramuluiP
or! ;00,
mo% a*,cs
mo% ds,a*
(mp start Dsalt la prima instructiune
sir d' 0f0,,0f4,,0@,,=1,,/<,,=1,,/@,,<4,
start mo% '*,offset sir Dincarca in FG adresa sirului.
mo% c*,offset start+offset sir
Dincarca in CG lun!imea
Dsirului
call !etma* Dapelare rutina de ma*im.
int >0, Dre%enire in DO6.
!etma* pus, '* Dconser%a re!istrele
pus, c* DFG, CG si fanioanele.
pus,f
mo% al,/0, Dincarca in 78 cel mai mic numar
Dcu semn de un octet
adr; cmp al,Q'*R Dcompara 78 cu un octet din sir
(l adr4 Ddaca 78doctet salt la iadr4\
adr> inc '* Dtrece la octetul urmator
Dal sirului.
loop adr; Drepeta de la adresa iadr;\
Dpana la sfirsitul sirului.
popf Dreface re!istrele FG, CG
pop c* Dsi fanioanele.
pop '*
ret Dre%enire in pro!ramul
Dapelant.
adr4 mo% al,Q'*R Dinacarca in 78 octetul cu
Dadresa in FG.
mo% d*,'* Dincarca in DG adresa octetului.
(mp adr> Dsalt la iadr>\.
)ro:ramul (
Microprocesoare Intel - Descriere i aplicaii
Pro'lemaC
6 se ordoneze &n ordine descresctoare sau cresctoare un ir de cu%inte (de cte > octei).
7l!oritmC
6e parcur!e irul &n ordine, comparndu+se elementul i cu elementul i+1. Dac cele dou
elemente nu sunt &n ordinea dorit, se %or in%ersa. Dac a a%ut loc o in%ersare de elemente, se
reia parcur!erea irului cu primul element, altfel se continu parcur!erea irului cu elementul
urmtor.
Descriere pro!ramC
6e folosesc dou proceduri C<DC. i BETC<D.
Procedura C<DC. ordoneaz irul &n ordinea dorit.
Date de intrareC
+ re!istrul BX = 0 pentru ordonare descresctoareD
BX = FF pentru ordonare cresctoareD
+ re!istrul G) = adresa de 2nceput a 1irului.
Date de ieireC
+ zona de memorie de la adresa irului.
Procedura BETC<D !sete relaia dintre dou elemente succesi%e ale irului.
Date de intrareC
+ re!istrul BX indic tipul ordonriiD
+ re!istrul BP conine adresa de &nceput a iruluiD
+ re!istrul SI conine inde*ul elementului curent.
Date de ieireC
+ fanionul CF = 0 ordinea este 'unD
CF = 1 ordinea este in%ers.
Te*tul pro:ramului
+r6 1009
m+: aG,5s
m+: ds,aG
Jm* start 0sa2t 2a *r1ma 1%str&5t1&%e
s1r dH 20-29,20-@9,20-19,20--9,20-59,20-9,20-/9
2&%6s1r dH I 02&%61mea s1r&2&1
start m+: .*,+KKset s1r
m+: s1,0
m+: [2&%6s1r],$+KKset 2&%6s1r'B$+KKset s1r'B2
r+r 2&%6s1r,1
des5 m+: .2,00 0+rd+%ea;a s1r&2 1%
Microprocesoare Intel - Descriere i aplicaii
Descriere pro!ramC
6e folosesc trei proceduriC CA>CAD, CCM) i SC,IMG.
Procedura CA>CAD calculeaz adresa irului cu numrul dat de coninutul re!istrului AL.
Date de intrareC
+ re!istrul A> conine numrul irului pentru care se calculeaz adresaD
+ zona de memorie de la adresa SI<.
Date de ieireC
+ re!istrul G? adresa irului specificatD
Be!istre afectateC G?.
Procedura CCM) compar dou iruri.
Date de intrareC
+ re!istrele G? i D? conin adresele celor dou iruriD
+ zona de memorie de la adresele date de re!istrele G? i D?.
Date de ieireC
+ fanionul SF = 1 dac ordinea nu corespunde.
Be!istre afectateC nici unul.
Procedura SC,IMG plaseaz irul care &ncepe la adresa dat de re!istrul G? la sfitul zonei de
date.
Date de intrareC
+ re!istrul G? conine adresa sirului de transferatD
+ zona de memorie de la adresa dat de re!istrul G? pn la sfritul zonei de date.
Date de ieireC
+ zona de memorie de la adresa specificat pn la sfritul zonei de date.
Be!istre afectateC SI i DI.
Te*tul pro:ramului
or! ;00,
mo% a*,cs
mo% ds,a*
(mp start Dsalt la prima instructiune
nrsir d. < Dcu%ant care contine numarul de
Dsiruri, incepand cu 0
sir d' Wpro!ramW,0 Ddefinire siruri alfanumerice
Dterminate cu octet zero
d' WdeW,0
d' WordonareW,0
d' WpentruW,0
d' WsiruriW,0
d' WalfanumericeW,0
d' WterminateW,0
Microprocesoare Intel - Descriere i aplicaii
d' WcuW,0
d' WoctetW,0
d' WzeroW,0
start mo% c*,nrsir Daici incepe pro!ramul cu
Dincarcarea in CG a numarului de
D siruri (numarul de iteratii).
'ucla mo% al,'Mte ptr nrsir
su' al,cl Dincarca in 78 numarul sirului curent 78[:B69B+ C8.
call calcad Dcalculeaza adresa de inceput
Da sirului curent (adresa in FG)
mo% d*,'* Dsi stoc,eaza adresa in DG
inc al
call calcad Dcalculeaza adresa de inceput a
Dsirului curentL; (adresa in FG)
call comp Dcompara sirurile de la adresele
Dcontinute in FG si DG
(! adr; Ddaca ordinea este 'una
Dface salt la iadr;\
call sc,im' Daltfel apeleaza 6CJ9MF
mo% c*,nrsir Dsi pre!ateste CG pentru
Dreluare iteratii de la inceput
inc c*
adr; loop 'ucla Drepeta pro!ramul pina la ultimul sir
int >0, Dre%enire in DO6
calcad pus, c* Dconser%a re!istrele CG
pus, a* Dsi 7G.
mo% '*,offset sir Dincarca in FG adresa primului sir
and al,al Ddaca 78 este 0
(z adr? Dsalt la iadr?\ (in FG este adresa sirului 0).
mo% cl,al Dpune in CG numarul sirului
mo% c,,0 Ddin 78
*or al,al Dface 78[0 (referinta de comparatie).
adr> cmp Q'*R,al Dcompara cu 0 continutul locatiei de
Dmemorie cu adresa data de FG.
(e adr4 Ddaca e!alitate salt la iadr4\
inc '* Daltfel trece la urmatorul
(mp adr> Delement al sirului
adr4 inc '* Din FG adresa de inceput a
Dunui sir
loop adr> Ddaca nu este cel dorit repeta de la iadr>\
adr? pop a* Dreface re!istrele 7G si CG
pop c*
ret Dre%ine in pro!ramul apelant
Microprocesoare Intel - Descriere i aplicaii
2*ecuia unui tasA nu cere &ncrcarea &n memoria B7M a tuturor pa!inilor de cod i date. 8a
e*ecuia simultan a mai multor tasA+uri toate pa!inile curente sunt &ncrcate &n B7M fiind astfel
posi'il comutarea rapid a e*ecuiei de la un tasA la altul.
Unitatea de interfa cu ma!istralele !enereaz semnalele electrice pentru citire$scriere memorie,
citire$scriere porturi, sta'ilirea dimensiunii i sensului de transfer pentru ma!istrala de date,
ar'itrarea ma!istralelor (cedarea, preluarea). "oate aceste operaii sunt !estionate de UCP.
3. <e:istrele microprocesorului Intel 3$
Be!istrele de uz !eneral sunt aceleasi ca la 9ntel /0/1, dar pe 4> de 'ii, cu posi'iliti de operare pe
/, ;1, 4> acestea au denumirile 27G, 2FG, 2CG, 2DG, 269, 2D9, 2FP, 26P
(!xten#e# 7G, . . . ).
Urmtoarele re!iste sunt &n plus fa de 9ntel /0/1C
56 si I6 + re!istre pentru selectori de se!mente de date curente (au aceeai funcii ca D6, 26)D
CB> + utilizat &n mecanismul pa!inrii, conine adresa liniar de 4> de 'ii a instruciunii care a
cauzat eroarea de !sire a pa!iniiD informaii suplimentare referitoare la acest e%eniment se afl &n
codul de eroare &ncrcat &n sti%a de tratare a erorilor de pa!inD
CB4 + conine 'aza adresei fizice a ta'elei directorilor de pa!inD aceast ta'el este &ntotdeauna
aliniat la inter%ale de ? AF [ >;>F, cei ;> 'ii mai puin semnificati%i tre'uie s fie &ntotdeauna
zeroD
Microprocesoare Intel - Descriere i aplicaii
"B + re!istrul se!ment al strii tasA + ului (,11 - ,asP 1tatus 1egment) conine selectorul
descriptorului "66 &mpreun cu adresa liniar, limitele i atri'utele descriptorului respecti% si este
utilizat &n mecanismele de protecie, &n modul de lucru prote(atD
DB0 + DB= + re!istre pentru depanarea pro!ramelorD primele ? re!istre sunt destinate memorrii
adreselor liniare ale punctelor de oprire (*reaPpoints) inserate &n pro!ram &n procesul depanrii.
"B1, "B= + re!istre de test folosite &n testarea memorieiD
"B1 + re!istrul comenzilor de test iar "B= este folosit ca re!istru de date.
Din moti%e de compati'ilitate cu procesoarele %iitoare, anumite
re!istre sunt rezer%ate (desi e*ist fizic, ele nu pot fi utilizate). )n fi!ura 4 sunt marcate prin ,asurare.
?. Indicatorii de condiii
9ntel /04/1 are &n plus fa de /0/1 urmtorii indicatori C
Microprocesoare Intel - Descriere i aplicaii
HM + Modul %irtual /0/1 (Airtual ;<;: Mo#e) + setarea acestui indicator o'li! procesorul s
lucreze &n modul de lucru prote(at, se trece &n modul %irtual /0/1, adic procesorul lucreaz cu
se!mentele de memorie ca /0/1 dar pstreaz toate proteciile de acces la memorie.
B5 + 9ndicator de reluare (Resume Flag) + utilizat &n &ntreruperi &nre!istrate &n 'iii DB0 + DB4D
indicatorul este testat &nainte de procesarea oricrei pause iar dac este !sit &n ;, %a fi i!norat orice
eroare !enerat de instruciunea urmtoare. 9ndicatorul este resetat automat la &nc,eierea cu succes a
tuturor instruciunilor, cu e*cepia instruciunilor 9B2", POP5, aMP, C788 si 9:", care produc o
comutare a tasA + ului.
8itul <2 in#icatorul #e transport C5 (CarrM 5la!). 7re %aloarea ; dac &n e*ecuia unei
instruciuni aritmetice care poziioneaz acest indicator a aprut un transport sau s+a fcut
un &mprumut la ran!ul cel mai semnificati%. De asemenea, instruciunile de rotire a
coninutului unui re!istru pot aciona asupra acestui indicator.
8itul 2 in#icatorul #e paritate P5 (ParitM 5la!). 9a %aloarea ; dac din e*ecuia unei
instruciuni care poziioneaz acest indicator s+a o'inut un rezultat coninnd un numr
par de 'ii cu %aloarea ;.
8itul 32 in#icatorul #e transport auxiliar 75 (7u*iliarM CarrM 5la!). 7re %aloarea ; dac &n
e*ecuia unei instruciuni ce &l influeneaz a aprut un transport de la ran!ul 4 spre ran!ul
? (sau a fost e*ecutat un &mprumut din ran!ul ? spre ran!ul 4). 7cest indicator este intens
utilizat pentru implementarea operaiilor aritmetice cu numere codificate &n FCD.
8itul :2 in#icatorul #e zero 35 (3ero 5la!). 7re %aloarea ; dac, &n urma e*ecuiei unei
instruciuni ce are efect asupra sa, rezultatul o'inut este nul.
8itul F2 in#icatorul #e semn 65 (6i!n 5la!). 7cest 'it ia %aloarea ; dac &n urma unei
operaii aritmetice s+a o'inut un rezultat ne!ati% (pentru care, conform con%eniei, 'itul cel
mai semnificati% este de asemenea ;). Practic, &n acest caz, 65 este o copie a 'itului de semn
asociat rezultatului.
8itul ;2 *itul #e #epanare "5 ("rap 5la!). 7cest fanion de control este utilizat pentru
e*ecuia pro!ramelor &n re!im pas cu pas, &n scopul testrii lor amnunite. Dac acest
indicator este setat la %aloarea ; de ctre utilizator, dup e*ecuia fiecrei instruciuni se %a
!enera un semnal de &ntrerupere intern (pe ni%elul ;).
8itul L2 *itul #e acti"areQ#ezacti"are a sistemului #e )ntreruperi 95 (9nterrupt 5la!). Prin
%alorile date de ctre utilizator, acest fanion determin acceptarea (dac 95[;) sau
respin!erea (dac 95[;) semnalelor asociate &ntreruperilor e*terne. Fine&neles, indicatorul
nu are influen asupra &ntreruperilor nemasca'ile.
8itul 1<2 *itul in#icator al #ireciei #e parcurgere a irurilor D5 (Direction 5la!). 7%nd
semnificaie doar &n cazul instruciunilor de prelucrare a irurilor, %aloarea 0 (zero) a acestui
fla! indic parcur!erea irurilor de la adrese mici spre adrese mai mari, &n timp ce %aloarea ;
determin in%ersarea sensului de tratare a acestora.
8itul 112 in#icatorul #e #ep$ire la calcule efectuate )n "irgul$ fix$ O5 (O%erflo. 5la!). 7cest
'it ia %aloarea ; dac din e*ecuia unei instruciuni aritmetice s+a o'inut un rezultat ce
depete capacitatea de reprezentare a destinaiei precizate implicit sau e*plicit (numrul
de 'ii ai acesteia).
Odat cu apariia microprocesoarelor 9ntel /0>/1, capa'ile de a e*ecuta simultan mai
multe sec%ene de cod (tasA+uri), re!istrul de fla!s a fost completat cu urmtorii 'iiC
8iii 1-102 in#icatorul ni"elului pri"ilegiat #e acces la operaiile #e intrareQieire 9OP8
(9nput$Output Pri%ile!e 8e%el). Haloarea celor doi 'ii asociai afecteaz comportarea
Microprocesoare Intel - Descriere i aplicaii
3. Instruciuni de 2ntrerupere
O alt con%eie care se utilizeaz &n acest la'orator esteC
"ipC un operand de / 'ii care indic tipul unei &ntreruperi i face parte din formatul instruciunii
(adresare imediat).
Cerere de O5 D5 95 "5 65 35 75 P5 C5
I.T Ztip[ &ntrerupere % %
soft.are
Descrierea formal a semanticii, &n !eneralC
(SP) (SP) - 2
((SS) 0H + (SP) +1) ((SS) 0H + (SP)) (F)
(IF) 0
(:F) 0
(SP) (SP) - 2
((SS) 0H + (SP) +1) ((SS) 0H + (SP)) (CS)
if "ip t,en
(CS) (> "ip + .) (> "ip + 2)
else
(CS) (0000FH) (0000EH)
(SP) (SP) - 2
((SS) 0H + (SP) +1) ((SS) 0H + (SP)) (IP)
if "ip t,en
(IP) (> "ip + 1) (> "ip)
else
(IP) (0000DH) (0000CH)
Operanzi 2*emple Descrierea formal+ a semanticii
I),
(SP) (SP) - 2
((SS)0H + (SP)+1) ((SS)0H + (SP)) (F)
(IF) 0
(:F) 0
(SP) (SP) - 2
((SS)0H +(SP)+1) ((SS)0H+(SP)) (CS)
(CS) (0000FH) (0000EH)
(SP) (SP) - 2
((SS)0H +(SP) +1) ((SS)0H+(SP)) (IP)
(IP) (0000DH) (0000CH)
t1* $t1* -'
I), 10H
(SP) (SP) - 2
((SS)0H + (SP)+1) ((SS)0H + (SP)) (F) (IF)
0
(:F) 0
(SP) (SP) - 2
((SS)0H +(SP)+1) ((SS)0H+(SP)) (CS)
(CS) (000>.H) (000>2H)
(SP) (SP) - 2
Microprocesoare Intel - Descriere i aplicaii
int ;0,
') I.T 1%; $ A, a %C; + sc,im'a culoarea pentru un sin!ur pi*el.
mo% al, ;4J
mo% a,, 0
int ;0,D !rafic sta'ilit modul %ideo.
mo% al, ;;00'
mo% c*, ;0
mo% d*, >0
mo% a,, 0c,
int ;0,D set de pi*eli.
c) I.T 1%; $ A, a 13,
mo% al, ;
mo% ',, 0
mo% 'l, 00;;j;0;;'
mo% c*, ms!;end + offset ms!;D calcula mesa( dimensiune.
mo% dl, ;0
DJ mo%, =
&mpin!e cs
pop es
mo% FP, compensate ms!;
mo% a,, ;4J
int ;0,
(mp ms!;end
ms!; d' KJello, -orld_K
ms!;endC
I.T 11, E afieaz lista de ec,ipamente.
)ntoarcere2
A? [ lista ec,ipamente F9O6, returneaz coninutul de la 00?0,C00;0,.
2*empluC
Fit domenii pentru F9O6+detectate de ,ard.are instalateC
'it (s) Descriere
:umrul de ;@+;? paralel dispoziti%e.
;4 sunt rezer%ate.
;> Iame port instalat.
;;.< :umrul de dispoziti%e de ordine.
/ rezer%ate.
Microprocesoare Intel - Descriere i aplicaii
Primete + AH 01H
)ntoarce + AL caracterul primit de la intrarea standard
7teapt s citeasc un caracter de la dispoziti%ul de intrare standard. )ntoarce acest caracter ctre
dispoziti%ul standard de ieire. Dac Ctrl-GreaA este detectat, este e*ecutat I*: 2.H.
Citirea codurilor speciale pentru taste ca 51-51(, ):9p, cursorV necesit un apel repetat al
acestei &ntreruperi. 8a primul apel se %a &ntoarce &n AL 0H, iar la al doilea codul e*tins 76C99.
e*empluC
mo% a,, ;
int >;,
5uncia DCS 02H - Xafi1a8Y
Primete + AH
DL
%(,
caracterul trimis la ieirea standard
J!"0(#%'
+
"rimite caracterul aflat &n DL la dispoziti%ul standard de ieire. Pentru caracterul bacAspace
(76C99 8) mut cursorul cu o poziie la stn!a.
Dac Ctrl-GreaA este detectat, se e*ecut I*: 2.H.
5uncia DCS %, - Xintrare'ie1ire consol+Y
Primete + AH
DL
06H
0//0FEH caracterul trimis la ieirea standard
0FFH ateapt caracter de la intrarea standard
)ntoarce E IF
AL
0 dac caracterul este din AL este %alid caracterul citit,
dac IF=0
Dac &n DL este plasat codul 0FFH, se realizeaz o citire de tip #no .ait# a consolei, &ntorcndu+
se IF=1 dac nu este %alid caracterul i, &n caz contrar, IF=0 (caracterul ce tocmai a fost citit este
plasat &n AL).
Dac &n DL se afl un cod diferit de 0FFH, el este trimis ctre dispoziti%ul standard de ieire.
:u se face %erificare pentru Ctrl-GreaA. 6e face un apel de dou ori al acestui ser%iciu pentru
citirea codurilor 76C99 e*tinse.
e*empluC
mo% a,, >
mo% dl, W%W
int >;,
5uncia DCS 0AH - Xafi1ea-+ 1irY
Microprocesoare Intel - Descriere i aplicaii
Primete + AH
DS=DX
0AH
adresa unui ir terminat cu if\(76C99 2>)
J!"0(#%'
+
Uirul ce se termin cu caracterul\f\ este trimis la dispoziti%ul standard de ieRire. Pentru caracterul
bacAspace se procedeaz similar cu funcia DO6 02H (se mut cursorul stn!a cu o poziie).
Procedura normal de afiare a unei linii noi este s se insereze o perec,e C<'>5 (76C99 1.
urmat de 76C99 0A) &n ir.
Uirurile ce conin if\ poate fi tiprite cu funcia >0H (BX=0).
5uncia DCS 0AH - Xcitire 1ir 2n -on+ de memorie-tamponY
Primete + AH
DS=DX
0AH
adresa unei memorii+tampon de intrare
)ntoarce irul de intrare plasat &n memorie, cu sim'ol terminal C<
(76C99 13)
8a intrare &n su'rutina de tratare a &ntreruperii, zona de memorie de la DS=DX tre'uie s fie
confi!urat astfelC
|0(x| ? | ? ? ? ? ?
unde, 0(x este intrarea ma*im accepta'il (domeniuC ; .. >@?)
8a ieirea din su'rutina de tratare a &ntreruperii, zona de memorie de la tre'uie s fie confi!urat
astfelC |0(x|&%"| T E X T !DH
unde, &%" este lun!imea actuat a intrrii, mai puin sim'olul terminal C< (&n e*emplul dat este ?).
Caracterele sunt citite de la dispoziti%ul standard de intrare pn cnd este &ntlnit C< (76C99 1.)
sau atta timp ct numrul lor nu depete 0(x11. Dac %aloarea 0(x11 este depit, se d un
semnal sonor de a%ertizare pentru fiecare caracter ce este tastat, pn cnd este citit C< (76C99 1.).
7l doilea octet din memorie este umplut cu lun!imea actuala a intrrii, mai puin sim'olul
terminal C<. Caracterul final din memoria+tampon este &ntotdeauna C< (care nu este numrat &n
octetul de lun!ime).
Dac este detectat Ctrl-GreaA, se e*ecut I*: 2.H i zona de memorie rmne nesc,im'at.
e*empluC
or! ;00,
mo% d*, offset mesa(
mo% a,, <
int >;,
ret
mesa( d' K6unt 6tudent fK
Microprocesoare Intel - Descriere i aplicaii
mo% 7J, 0>,
mo% D8, W7W
int >;,
E*emplul (
5uncia 00, a &ntreruperii ;0, permite sc,im'area modului de lucru din mod te*t &n mod !rafic
precum i a rezoluiei ecranului. )ntreruperea ateapt &n re!istrul 7J codul funciei (00,), iar &n
re!istrul 78 noul mod de lucru cu ecranul.
mo% 7J, 00,
mo% 78, ;>,
int ;0,
2fectul acestui !rup de instruciuni este sc,im'area modului de lucru &n mod !rafic, la o rezoluie de
1?0*?/0 de pi*eli i mod de lucru cu ;1 culori.
E*emplul 3
6 se citeasc de la tastatur numele unui fiier. S se afieze acest fiier pe ecran
assume csCcode, dsCdata
data se:ment
ms! db W:umele fisieruluiC fW
ma*5ile:ame db ;>
l5ile:ame db F
file:ame db ;> dup (F!
'uffer db ;00 dup (F!, WfW
open2rrorMs! db W5isierul nu e*ista.fW
read2rrorMs! db W:u se poate citii din fisier.fW
data ends
code se:ment
startC
mo% a*, data
mo% ds, a*
D afim mesa(ul cu funcia 0<,, int >;,
mo% a,, 0<,
mo% d*, offset ms!
int >;,
D citim de la tastatur numele fiierului cu a(utorul funciei 0a,, int >;,
Microprocesoare Intel - Descriere i aplicaii
;iliografie
1.http-<<===.htl-ste>r.ac.at<?morg<pcinfo<hard=are<interrupts<inte1at0.htm
!. http-<<spi@e.scu.edu.au<?arr><interrupts.html
3. http-<<heim.ifi.uio.no<?stanisls<helppc<idxAinterrupt.html
Microprocesoare Intel - Descriere i aplicaii