Sunteți pe pagina 1din 106

Microprocesoare Intel - Descriere i aplicaii

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

C1. Microprocesor. 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#.
5irma american 9:"28 a introdus &n ;<=> termenul de microprocesor, realiznd primul
microprocesor pe ? 'ii, &n anul ;<=;. 2%oluia procesoarelor pe /, ;1, 4> 'ii a fost rapid, numrul
componentelor pe cip crescnd de peste @00 de ori iar frec%ena de lucru de peste ;00 ori. )n esen
capacitatea !lo'al a acestora s+a ma(orat cu peste trei ordine de mrime. Un criteriu important de
e%aluare i selecie a microprocesoarelor este mrimea cu%ntului de date al acestora. Odat cu
e%oluia microprocesoarelor a crescut sensi'il si capacitatea de adresare a lor i numarul de moduri
au*iliare de adresare. 6e realizeaz circuite specializate pentru controlul si coordonarea functionarii
memoriei sistemului. "otodata, firme ca 9:"28 includ in circuitul microprocesorului si functiile de
protectie a accesului si control al memoriei. Utilizarea memoriei %irtuale permite adresarea unor
spatii de ordinul !i!aoctetilor find posi'il e*ecuia pro!ramelor foarte mari sau e*ecuia mai multor
pro!rame &n paralel (multitasAin!) i a lucrul mai multor utilizatori (multiuser).
Un concept deasemenea utilizat din ce &n ce mai des este memorie cac,e, relati% mai redusa
%olumic, dar de %iteze foarte mari, &n care se &nma!azineaza pro!ramul sau datele, e*trase din
memoria sistemului, sau de pe disc, mrind sensi'il, %iteza de lucru a sistemului, si deci
performanele acestuia.
Be%oluia microprocesoarelor este !enerat de tendina de a reduce numrul de cipuri utilizate
&ntr+un calculator. Orice calculator, indiferent de marime, &ncorporeaz trei componente de 'azC
unitatea central de prelucrare, coninnd elementele de calcul aritmetice, lo!ice i funciile de
controlD memoria (B7M + pentru citire$scriere, si BOM + doar citire), i interfeele de intrare$ieire
pentru controlul periferiei calculatorului. Odat cu e%oluia microprocesoarelor tot mai multe
componente pot fi inte!rate pe acelasi circuit inte!rat. Un microcalculator com'in un microprocesor
cu memorie i capaciti de intrare$ieire pe unul sau mai multe cipuri (5i!ura ;). Comunicarea &n
interiorul i cu e*teriorul microprocesorului se realizeaz cu ma!istrale deC adrese (unidirecionale),
date ('idirecionale) i control (unidirecionale)
Microprocesoare Intel - Descriere i aplicaii

Figura C1.1. Reprezentarea arhitecturii unui microcalculator corelat cu perifericele externe


8a ma!istralele de date i de comenzi pot fi cuplate circuite de intrare$ieire (9nput$Output + 9$O)
care realizeaz le!tura cu e*teriorul. 8imea unei ma!istrale reprezint numrul de trasee de cupru
care o compun. :umrul de locaii de memorie care pot fi adresate direct de procesor depinde de
limea ma!istralei de adrese.
Ma(oritatea operaiilor se realizeaz &n unitatea central de prelucrare (CPU)
Microcalculatoarele pe un sin!ur cip constituie un su'set important al microprocesoarelor, &n care
toate funciile, inclusi% memoria, sunt implementate pe acelasi circuit inte!rat.
6e remarc e*trema di%ersitate de aspecte ridicate de caracterizare a circuitelor microprocesor
e*istente.
Evoluia microprocesoarelor. Scurt istoric
)n ;<=; a aprut primul microprocesor 9ntel ?00?. Microprocesorul /00/, de dou ori mai
puternic ca cel dinainte a aprut &n ;<=>. Utiliznd acest microprocessor s+a realizat dispoziti%ul
MarA E / cunoscut ca primul calculator pentru acas. Creierul primului calculator personal, denumit
7ltair, a fost microprocesorul /0/0, aprut &n ;<=?. )n anul ;<=/, apar micorprocesoarele /0/1 i
/0//, realizate de noua ec,ip de calculatoare personale de la 9FM. Microprocesorul /0// este
considerat creirul noului calculator 9FM. Cunoscut ca /0>/1, microprocesorul >/1, aprut &n ;</>,
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

Tabel C1.I. Evoluia microprocesoarelor. Caracteristici specifice


Ienerai
e
7nul
apariiei
"ip Microprocesor 6paiul adresa'il
liniar $fizic
Caracteristici
1 (IA-1! 1"#
$
Intel $%$& Intel
$%$$
1-bii ' (%-bii
(segmentat!
)rimul microprocesor *$& frecven+
$M,-& %&$MI)S
( 1"$
(
Intel $%1$& Intel
$%1$$& .EC /(%
,ard0are specific pentru calcul rapid
al adresei 1i al operaiilor de
2nmulire'2mp+rire
Intel $%($ 1-bit (3%-bii
virtual! ' (4-bit
(segmentat!
5recven+ de lucru 1(&6M,-& spaiu de
adres+ de 1Mo& (&# 7I)S& lucru 2n mod
prote8at pentru spaiu adresabil mare
3 (IA-3(! 1"$
6
Intel 3$& AMD
Am3$
3(-bit (4-bii
virtual! ' 3(-bit
Set de instruciuni pe 3(-bii& MM9 cu
pa:inare& (%M,- frecvena de lucru&
MI)S
4 1"$
"
Intel 4$ Ar;itectura <ISC-pipeline& 5)9
inte:rat& memorie cac;e pe cip $=o >1&
frecvena de lucru de (6M,-
6 1""
3
)entium& )entium
MM?
superscalar& bus de date pe 3( bii& 5)9
rapid+& MM?& frecen+ de lucru la %M,-&
memorie cac;e de 1=o >1
6' 1""

C@ri* *$& C@ri*


MII
<e:istre redenumite& e*ecuie
speculativ+
1""
6
)entium )ro& AMD
=6& .*6$ (1""4!
Ca mai sus'
5i-ic ()AE! pe 3(-
bii
1($ re:istre
SIMD 5)
Translarea micro-operaiilor& cac;e
inte:rat de 1=o>1 1i 61( =o >(& frecvena
de lucru la (%%M,-& 44%MI)S
1""
#
AMD ='-('3&
)entium II'III
memorie cac;e de 3( =o >1 1i 61(Mo
>(& frecvena de (M,- '6%%M,-&
1%%%MI)S
# 1""
"
At;lon& At;lon ?) superscalar 5)9& desi:n m+rit (mai
mult de trei *$ instr.'clocA!
(%%
%
)entium 4 pipeline mare& frecven+ mai mare de
1Bo& memorie cac;e de 3( =o >1 1i 61(Mo
>(& 1#%% MI)S
-M'#-M (%%
3
)entium M& Intel
Core
Cptimi-at pentru putere mic+
$ (*$-4! At;lon 4& Cpteron 4-bii ' 6(-bii Set instruciuni *$ de 4& controller de
memorie& ;@pertransport
(%%
4
)entium 4 )rescott pipeline foarte adDnc& frecven+ foarte
2nalt+& SSE3
" (%%

Intel Core ( )utere 8oas+& multi-core& frecven+ de


ceas sc+-ut+& SSE4 ()enr@n!
1% (%%
#
AMD );enom Ca mai sus /
44-bii fizici
pentru Beckton
Core i7
Euad-core monolitic& 5)9 pe 1($ bii&
desi:n modular
F (%%
$
Intel Atom& Intel
Core i#
)utere foarte sc+-ut+ controller
memorie
11 (%1
%
Intel Sand@ Grid:e&
AMD Gulldo-er
SSE6'A/?& desi:n modular
Figura C1.. !"oluia microprocesoarelor funcie #e num$rul #e tranzistoare
Un microprocesor cu #ou$ inimi (#ual-core% este o unitate central de prelucrare cu dou procesoare
sau Kcentre de e*ecuieK &ncapsulate &n acelai circuit inte!rat. Procesorul are propriul c,ac,e i
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

>1. Introducere 2n mediul de de-volatre emu$%$


>1.1. Scopul lucr+rii
5amiliarizarea cu posi'ilitile de editare, asam'lare i rulare a pro!ramelor scrise &n lim'a(ul de
asam'lare ale microprocesoarelor 9ntel funcionnd &n modul real#, cu a(utorul asam'lorului i
emulatorului emu/0/1.
>1.(. )re-entare :eneral+ emu$%$
2mu/0/1 este un emulator al microprocesorului /0/1 (compati'il 9ntel i 7MD) cu asam'lor
/0/1 inte!rat i tutoriale pentru &nceptori. 2mulatorul e*ecut pro!rame ca i microprocesoarele
reale &n modul pas cu pas. Pe interfaa sa se pot %izualiza re!istrele, memoria, sti%a, %aria'ile i
fla!uri. "oate %alorile de memorie pot fi in%esti!ate i editate printr+un du'lu clic. 9nstruciunile pot
fi e*ecutate &n direcia &nainte sau &napoi. 2mulatorul poate crea un sistem de operare foarte scurt
(tinM) i scrie codul 'inar pe un floopM disc 'oota'il.
7cest pac,et soft include cte%a dispoziti%e %irtuale e*terneC ro'ot, motor pas cu pas, afior cu
82D+uri i o intersecie luminat. "oat comunicarea dintre microprocesor i dispoziti%e este trecut
prin fiierul cCOemu/0/1.io, emularea instruciunilor de intrare$ieire cere sc,im'area octeilor
corespunztori &n acest fiier 'inar.
Dup lansarea pro!ramului emu/0/1, pe ecranul calculatorului apare interfaa cu meniuri din care
se poate ale!e tipul de fiierC :e., Code e*amples, PuicA start tutor, Becent files.
Bealizarea unui pro!ram nou impune desc,iderea unui fiier nou cu 'utonul :e., care desc,ide
fereastra din care se ale!e formatul fiierului. Pentru aplicaiile, simple, de la'orator &n care
pro!ramul nu depete 1?No se 'ifeaz .COM (5i!ura 8;.;).
2mulatorul ruleaz su' -indo.s i are incluse urmtoarele unelte pentru uurarea pro!ramriiC
;. e*ecuia pro!ramului pas cu pasD
>. ta'el coduri 76C99D
4. calculator pentru realizarea de calcule &n 'inar, octal, zecimal i ,e*azecimalD
?. con%ertor de %aria'ile &n 'azele de numeraie zecimal, ,e*azecimal, 'inarD
@. 'uton de apelare a pro!ramelor demonstrati%e realizate de furnizorul emu/0/1.
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

Fig. '1.3 Fereastra #e "izualizare a constantelor i "aria*ilelor utilizate )ntr-un program


Haria'ilele pot fi o'ser%ate &n orice 'az de numeraieC
,E? + ,e*azecimal ('aza ;1).
GI. + 'inar ('aza >).
CCT + octal ('aza /).
SIB.ED E zecimal cu semn ('aza ;0).
9.SIB.ED E zecimal fr semn ('aza ;0).
C,A< E cod caracter 76C99 (sunt >@1 sim'oluri, cte%a sim'oluri sunt in%izi'ile).
;. :umerele pot fi introduse &n orice 'az de numeraie prin sufi*ul K;K ,e*a, KbK 'inar, KoK octal,
numerele zecimale nu au ne%oie de sufi*.
>. Uirurile de caractere pot fi introduse &n urmtorul modC
L;ello 0orldL& % (acest ir se termin prin 0).
4. Matrice poate fi introdus astfelC
1& (& 3& 4& 6 (Matricea poate fi de octei sau cu%inte, depinde de modul cum sunt setate %aria'ilele
iniiale GMTE sau IC<D).
?. 2*presiile sunt con%ertite automat, de e*emplu, dac se scrie e*presiaC 6 N ( dup enter %a fi
con%ertit &n # etc...
>1.4. 9tili-area mediului de de-voltare Emu$%$
6e %a copia urmtorul cod surs &n editorul de pro!rame.
OBI ;00,
MOH 78, %ar;
MOH FG, %ar>
B2" D stops t,e pro!ram.
H7B; DF =
%ar> D- ;>4?,
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

Figura C.1. 1chema *loc a !5 i 8I5( mo#ul #e interconectare


(.1. 9nitatea de interfa+ cu ma:istralele (GI9!. 5uncii
Bealizeaz conectarea microprocesorului cu e*teriorul prin intermediul ma!istralelor de
adrese (>0 de linii) si de date (;1 linii)D
2*ecut toate ciclurile de ma!istrala 7rea#( 9rite( )ntrerupere), fie la cererea unitii de
e*ecuie, fie pentru umplerea cozii de instruciuni (coada de instruciuni este un re!istru de tip
595O, instruciunile ateptnd aici intrarea &n e*ecuie)D
Ienereaz semnalele de comand pentru realizarea operaiile de citire si scriere cu memoria
sau cu porturileD
9niiaz ciclu masin de e*tra!ere &n a%ans a unei instruciunilor din memorie, de la adresa
urmtoare. 6e cti! timp prin suprapunerea e*ecuiei cu e*tra!erea instruciunilorD
Calculeaz adresa fizic a operanzilor din memorie &n funcie de modul de adresare
comandat i !enereaz semnalele de comand pentru transferul operandului ctre unitatea de
e*ecuieD
9nstruciunile de salt pot modifica succesiunea normal prin comutarea e*ecuiei la o adres
WWde saltWWD &n aceast situaie, unitatea F9U iniializeaz fiierul prin ter!erea instruciunilor
e*istente i &l &ncarc cu o nou sec%en de instruciuni e*trase &ncepnd cu adresa de salt.
(.(. 9nitatea de e*ecuie E9 ("$ecution %nit!. 5uncii
Bealizeaz e*tra!erea instruciunilor din fiierul de instruciuni, le decodific pe 'aza unui
micropro!ram rezident i le e*ecut prin intermediul re!istrelor de uz !eneral si unitii
aritmetice si lo!ice (U78) D
7ctualizeaz re!istrul de fla!uri &n funcie de rezultatul fiecrei operaii e*ecutateD
5urnizez date i adrese ctre unitatea de interfa cu ma!istrala dup e*ecuia instruciuniiD
Calculeaz adresele efecti%e ale operanzilor conform modului de adresareD
7tenioneaz F9U printr+o adres ce %a fi utilizat pentru operaiile de transfer dac pentru
e*ecuia unei instruciuni tre'uie accesat memoria sau porturile D
)i coordoneaz funcionarea prin intermediul unui 'loc de comand care conine o memorie
BOM &n care se stoc,eaz microcodul de interpretare i e*ecuie pentru fiecare instruciune.
Microprocesoare Intel - Descriere i aplicaii

Figura C.. 1tructura intern$ a 5nitatea #e !xecutie i5nitatea #e Interfata cu Magistrala


Unitatea lo!ico+aritmetic realizeaz diferite calcule aritmetice i lo!ice (7rit,metic and 8o!ic
Unit + 78U).
C(.(. On interiorul unit+ii centrale de procesare (C)9!
Be!istrele reprezint componenta principal dintr+un microcalculator. Microprocesorul conine un
numr de re!istre. )nsui circuitele de memorie pot fi considerate niste matrici de re!istre. Un
re!istru consta dintr+un ir de 'ista'ile i este utilizat pentru a memora informaie 'inar (temporar
sau permanent). O operatie frec%enta intr+un microprocesor este transferul paralel al datelor &ntre
dou re!istre.
Microprocesoare Intel - Descriere i aplicaii

Figura C.0. Registru #e tip latch


Figura C.3.Registru cu ieiri tri-state
C.4. ,ransferul serial al #atelor )ntre #ou$ registre
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

microprocesorul com'in coninutul re!istrului se!ment de cod C6 cu al re!istrului indicator de


adres, 9P, o'innd o adres fizic de >0 'ii .
Registrul D1 conine adresa de &nceput a se!mentului de date D
Registrul 11 conine adresa de &nceput a se!mentului sti% D
Registrul 26 conine adresa de &nceput a unui se!ment de date suplimentar. 6e!mentul de cod
conine instruciuni iar ultimele trei se!mente de memorie sunt dedicate operanzilor (date).
<e:istrele pentru accesul 2n interiorul unui se:ment
)mpreun cu re!istrele de date, reprezint re!istrele !eneraleD 6P i FP sunt re!istre indicator iar 69 i
D9 sunt re!istre inde*.
Be!istrele indicator conin adresa relati% fa de 'aza se!mentului la care se afl un operand &n
cadrul se!mentului sti%D 6P indic adresa relati% a %rfului sti%ei &n raport cu coninutul re!istrului
66 ('aza sti%ei), iar FP indic adresa relati% a unui operand &n cadrul se!mentului sti%.
Be!istrele inde* conin adresa relati% fa de 'aza se!mentului la care se afl un operand &n cadrul
se!mentelor de date sau de date suplimentar, deci &n raport D6 sau 26D 69 si D9 se utilizeaz &n
!eneral &n cazul operaiilor cu siruri de date, 69 indicnd adresa operandului surs iar D9 adresa
operandului destinaie.
<e:istrul indicator de adres I) (Instruction 6ointer)
2ste similar re!istrului de adres PC (6rogram Counter) de la 9ntel
/0/0 sau 3ilo! 3/0, indicnd adresa instrucZiunii ce se e*tra!e din
se!mentul de cod. 6pre deose'ire de PC, 9P nu conZine adresa fizic a
instrucZiunii ci adresa relati% faZ de 'aza se!mentului de cod. ConZinutul
lui 9P se com'in cu cel al lui C6 si astfel se o'Zine adresa fizic a
instrucZiunii. Dup transferul fiecrui octet &n fisierul de instrucZiuni,
conZinutul lui 9P creste cu o unitateC 9P [ 9P L ;, fiind astfel pre!tit
pentru adresarea octetului urmtor din se!mentul de cod.
<e:istrul de stare sau al indicatorilor de condiii 5 (Flags)
7cest re!istru face parte din unitatea aritmetic si lo!ic U78 (sau 78U + +rithmetic an# 'ogic
5nit). Desi este un re!istru de ;1 'ii, doar < sunt semnificati%i, reprezentnd indicatorii de condiii
ai procesorului /0/1.
9ndicatorii se poziioneaz &n WW0WW sau WW;WW dup efectuarea unei operaii aritmetice, lo!ice sau dup o
instruciune de controlD pot fi testai prin intermediul instruciunilor condiionale si se pot lua decizii
&n funcie de %aloare lor.
C5P (Carr& Flag) indicatorul de transportD se acti%eaz (&n WW;WW lo!ic) la apariia unui 'it de transport
(depsirea lun!imii normale a rezultatului) la adunare sau de &mprumut la scdereD este asociat
rezultatului unei operaii aritmetice sau lo!ice i se comport ca al noulea 'it ('/) al acestuia.
)5P (6arit& Flag) indicator de paritateD se acti%eaz (&n WW;WW lo!ic) cnd rezultatul unei operaii
aritmetice sau lo!ice este un octet cu numr par de uniti.
A5P (+uxiliar& Flag) indicator de transport la (umtateD se acti%eaz cnd apare transport sau
&mprumut &n operaiile aritmetice si lo!ice &ntre 'iii 4 si ?.
Q5P (?ero Flag) indicator de zeroD se acti%eaz (&n WW;WW lo!ic) dac rezultatul unei operaZii aritmetice
sau lo!ice este zero.
S5P (1ign Flag) indicator de semnD conine 'itul cel mai semnificati% al rezultatului, deci copiaz
'itul de semnD %a fi WW;WW pentru rezultat ne!ati% si WW0WW pentru un rezultat poziti%.
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

>(. I.ST<9CRI9.I DE T<A.S5E< A> DATE>C<


)E.T<9 MIC<C)<CCESCA<E>E I.TE>
>(.1. Scopul lucr+rii
6copul prezentei lucrri este familiarizarea cu operaiile &n 'inar, modurile de adresare, cu
instruciunile de transfer de date elementare i structurate specifice microprocesoarelor 9ntel
funcionnd &n modul real# (particulariznd pentru /0/1), precum i prezentarea unor directi%e de
asam'lare.
Tipuri de repre-ent+ri binare
-ntregi cu semn, de / sau ;1 'itiD numerele ne!ati%e sunt reprezentate in complement fata de >(c\>)D
cnd se utilizeaza coprocesorul matematic, lor li se adau! &ntre!i cu semn pe 4> sau 1? de 'ii
!xempluC %aloarea unui &ntre! reprezentat pe : 'ii &n c\> esteC

=
>
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

1 C fanionul este setat necondiionatD


% C fanionul este resetat necondiionatD
F C fanionul este afectat impredicti'ilD
blancC fanionul nu este afectat.
Pentru calculul numrului de stri C
cAE + timpul de calcul al adresei efecti%e, i anume
+ adresare directC AE=disp8|disp16 + 1 striD
+ adresare inde*atC AE=(SI)|(DI)+ disp8|disp16 + < striD
+ adresare indirect implicitC
AE=(SI)|(DI) - @ striD
+ adresare relati% la 'az direct, fr deplasamentC
AE=(BX) + @ striD
+ adresare relati% la 'az direct, cu deplasamentC
AE=(BX)+disp8|disp16 - < striD
+ adresare relati% la 'az inde*atC
AE=(BX)+(SI)|(DI)+disp8|disp16 + ;> striD
+ adresare relati% la 'az implicitC
AE=(BX)+(SI)|(DI) + / striD
+ adresare &n sti% direct, fr deplasamentC
AE=(BP) + @ striD
+ adresare &n sti% direct, cu deplasamentC
AE=(BP)+disp8|disp16 - < striD
+ adresare &n sti% inde*atC
AE=(BP)+(SI)|(DI)+disp8|disp16 + ;> striD
+ adresare &n sti% implicitC
AE=(BP)+(SI)|(DI) + / striD
+ pentru redirecionarea se!mentului se mai adau! > stri.
Elemente ale limba8ului de asamblare
Pro!ramul surs este format dintr+un numr de linii, care pot fiC
Directi%e de asam'lare
2tic,ete i declaraii de sim'oluri
Comentarii
8inii de instruciuni
O linie de instruciune a pro!ramului surs are urmtoarea structurC
TEtic;et+PUVMnemonicVT)refi*UVCperand1T&T)refi*UVCperand(UVTWComentariuU
Comentariul este opional i tre'uie precedat de semnul D# . "ot ceea ce urmeaz pe o linie dup
acest semn este i!norat de asm'lor.
Instruciuni de transfer de date
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

16 8= ,op "Irful sti"ei


+lpha
- J
Operanzi 2*emple Descrierea formal+ a semanticii
r1 P#SH BP
(SP) (SP) - 2
((SS)0H+(SP)+1) ((SS)0H+(SP)) (BP)
6al%are coninut re!istru
reprezentat pe > octei &n
sti%
mem1 P#SH
[DI+100H]
(SP) (SP) - 2
((SS)0H+(SP)+1) ((DS)0H +(DI) +101H)
((SS)0H + (SP)) ((DS)0H +(DI) +100H)
6al%are coninut memorie
&n sti%
rs P#SH SS
(SP) (SP) - 2
((SS)0H+(SP)+1) ((SS)0H+(SP)) (SS)
6al%are coninut re!istu
se!met &n sti%
"ransfer &n sti% O5 D5 95 "5 65 35 75 P5 C5
PUSHF
re!istrul de
fanioane
Descrierea formal a semanticiiC(SP) (SP) - 2
((SS)0H + (SP) + 1) (F)
h
((SS)0H + (SP)) (F)

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)

)ncarc octetul in+ O5 D5 95 "5 65 35 75 P5 C5


SAHF ferior al re!istru+ x x x x x
lui 5 cu (7J)
Descrierea formal a semanticiiC(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

LDS d,s de ;1 'ii i re!.


se!ment de date
Descrierea formal a semanticii, &n !eneralC (#16) (-'-.2)

(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

6inta*aC B;:E P:1 si-40


2fectC con%ertete si-40 &n tip 'Mte.
b 6+1D P:1 XC,A.BE TM)E C5 /A<IAG>E X OP2B7"OB
6inta*aC 6+1D P:1 si-40
2fectC con%ertete si-40 &n tip .ord.
Tipuri de constante
G 'inare
, ,e*azecimale
C octale
D zecimal
Directive pentru definire date. <e-umat
DG Define FMte D definire a %aria'ilei pe un octet
DI Define -ord D definire a %aria'ilei pe >octei
DD Define Dou'le .ordD definire a %aria'ilei pe ? octei
DE Define Puad.ord D definire a %aria'ilei pe / octei
DT Define "en FMte D definire a %aria'ilei pe ? octei
EE9constanta D definete o constant
C<Badresa D indic adresa efecti% unde se %a plasa pro!ramul
A>IB. n D unde n[;,>,?,/,;1 aliniere contor amplasare la multiplu
I.C>9DEfisier.asm D copiaz &n acel loc o sec%en de pro!ram (su'pro!ram)
6. Mod de lucru recomandat
I. 9tili-area instruciunii MC/
;. Copiai pro!ramul de mai (os &n 2mu/0/1 i compilai+l (5@) i apoi emulai+l.
OBI ;00, D directi% cerut de un pro!ram COM
MOH 7G, 0F=<0, D &ncarc &n 7G %aloarea F=<0,
MOH D6, 7G D copiaz %aloarea din 7G &n D6
MOH C8, W7W D sal%eaz &n C8 codul 76C99 al lui W7W, adic ?;,.
MOH CJ, 0;0;;;;;' D sal%eaz &n CJ %aloarea 'inar 0;0;;;;;
MOH FG, ;@2, D seteaz FG cu ;@2,.
MOH QFGR, CG D copiaz coninutul lui CG &n memorie la adresa indicat de D6 i FG
MOH 69, ;0,D &ncarc &n 69 %aloarea ;0,
MOHQFGL69L;0JR,78D &ncarc din 78 %aloarea la adresa indicat de FGL69L;0J
MOH D8, Q;40JRD &ncarc la adresa ;40, coninutul lui D8
MOH DG, ;40, D &ncarc &n D8 %aloarea ;40,
MOH.ord ptr cu%,4?@1,Dincarca in locatiile de memorie cu adresele cu%# si cu%#L;,
octetii 04?, si 0@1,, adresare imediata
MOH7G,%ar Ddin memorie in acumulator
MOH7G,Q%arR Dadresare directa
MOH '*,offset %ar Dincarca in FG adresa lui %ar
Microprocesoare Intel - Descriere i aplicaii

B2"D re%enire la sistemul de operare


cu% d' 0
;.a. O'ser%ai modificrile care se realizeaz &n re!ister i &n memoria de date.
;.'. 9dentificai adresele la care sunt scrise instruciunile i codul fiecrei instruciuni
II. Aplicaii cu instruciunile )us; 1i )op
>. Copiai &n 2ditorul simulatorului 2MU/0/1 urmtorul pro!ram. Compilati+l i apoi cu a(utorul
emulatorului e*ecutai+l 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, @1=/,
PU6J 7G Dsa%eaz &n sti% coninutul lui 7G
MOH 7G, =/=1, Dmodificai coninutul lui 7G
POP 7G D refacei coninutul lui 7G cu %aloarea inial
C8C Dse actioneaza asupra fanionului C5[0
6"CD C5[;
CMCD complementare C5
B2"
2:D
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

>3. I.ST<9CRI9.I DE )<E>9C<A<E A DATE>C< 7I I.ST<9CRI9.I DE


CC.T<C> A> )<CB<AM9>9I
Scopul lucr+rii
8ucrarea de fa &i propune familiarizarea cu instruciunile de transferuri de iruri de prelucrare a
datelor specifice microprocesoarelor 9ntel funcionnd &n Modul Beal#.
>3.1. Cperaii de transferuri de 1iruri
Pentru aceste instruciuni sursa i destinaia se !sesc implicit astfelC
sursa + &n se!mentul format cu DS, cu adresa efecti% SID
destinaia + &n se!mentul format cu ES, cu adresa efecti% DI.
Instruciuni pentru control ciclic
9nstruciunile pe iruri pot fi repetate atta timp ct CG este diferit de 0. Din 'ucl se poate iei cnd
CG[0 sau dup o condiie pus pentru %aloarea indicatorului 3.
Bepet necondiio+ O5 D5 95 "5 65 35 75 P5 C5
REP nat primiti%a de
operaie cu iruri pe care o
precede
9nstruciunea B2P nu se aplic la instruciunile aritmetice i lo!ice.
Operanzi :r.de stri Octei 2*emple
< ; =!P MOVSB
Bepet ct timp O5 D5 95 "5 65 35 75 P5 C5
REPE |
REPZ
Ke!alK ^ ct timp KzeroK
primiti%a CMP6 sau 6C76
Operanzi :r.de stri Octei 2*emple
< ; =!P! "MPSB
Bepet ct timp O5 D5 95 "5 65 35 75 P5 C5
REPNE|
REPNZ
Knee!alK^ ct timp
Knon+zeroK primiti+%a CMP6
sau 6C76
Operanzi :r.de stri Octei 2*emple
< ; =!P)! S"AS>
Microprocesoare Intel - Descriere i aplicaii

Primiti%ele operaiilor de transferuri de iruri suntC


"ransfer o compo+ O5 D5 95 "5 65 35 75 P5 C5
MOVS nent a irului
surs &n irul destinaie
Operanzi :r.de stri Octei 2*emple
;/ ; MOVSB D pe octei
;/ ; MOVS> D pe cu%inte
O's.C Primiti%a MOH6 poate fi &nsoit de prefi*ul de repeta'ilitate B2PD acesta adau! < stri.
Descrierea formal a semanticiiC
((ES)0H + (DI)) ((DS)0H + (SI))
3((ES)0H + (DI) + 1) ((DS)0H + (SI) + 1)5
if (DF) = 0 t,en
(DI) (DI) + *
(SI) (SI) + *
else
(DI) (DI) - *
(SI) (SI) - * cu *=1 pentru octet
i *=2 pentru cu%nt.
)ncarc componen+ O5 D5 95 "5 65 35 75 P5 C5
LODS tele unui ir
&n acumulator
Operanzi :r.de stri Octei 2*emple
;> ; LODSB D pe octei
;> ; LODS> D pe cu%inte
>CDS (8oad 6trin!) sal%eaz un element de la adresa D6C69 &n 78, 7G, sau 27G i
incrementeaz (D[0) sau decrementeaz (D[;) re!istrul inde* 69.
>3.(. Instruciuni aritmetice
>3.(.1. Cperaii de adunare 1i sc+dere
6e %a acorda o atenie deose'it modului &n care sunt afectate fanioanele. 8a con%eniile amintite se
adau!C
+ !#%'C numrul de celule cu care se poate face deplasarea sau rotaia unui operand.
9nstruciunea 7DD E instrucinea de adunare a doi operanzi.

O5 D5 95 "5 65 35 75 P5 C5
ADD d,s
Ad$!(#'
x x x x x x
Descrierea formal a semanticii, &n !eneralC (d) (d) + (s).
Microprocesoare Intel - Descriere i aplicaii

Operanzi 2*emple Descrierea formal+ a semanticii


AL|AX, data ADD AL,--H
(AL) (AL) + ..H
r, data ADD "H,10H
(CH) (CH) + 10H
mem, data ADD [BP],ALFA
((SS)0H+(BP)) ((SS)0H+(BP)) + ALFA
r
1
, r
2
ADD "L,"H
(CL) (CL) + (CH)
r, mem ADD SI,[SI+22H]
(SI) (SI) + ((DS)0H + (SI) + 2.H)
((DS)0H + (SI) + 22H )
mem, r ADD [BX],BX
((DS)0H+(BX)+1) ((DS)0H+(BX))
((DS)0H+(BX)+1) ((DS)0H+(BX)) +
+ (BX)
9nstruciunea 7DC de adunare cu transport.
Ad$!(#' O5 D5 95 "5 65 35 75 P5 C5
ADC d,s cu transport x x x x x x
Descrierea formal a semanticii, &n !eneralC (d) (d) + (s) + (CF).
Operanzi 2*emple Descrierea formal+ a semanticii
AL|AX, data AD" AL,15H
(AL) (AL) + 15H + (CF)
r, data AD" BX,0100H
(BX) (BX) + 100H + (CF)
mem, data AD" [DI],12-/H
((DS)0H+(DI)+1) ((DS)0H+(DI))
((DS)0H+(DI)+1) ((DS)0H+(DI)) +
+ 12.>H +(CF)
r
1
, r
2
AD" AX,DI
(AX) (AX) + (DI) + (CF)
r, mem AD" DX,[BX]
(DX) (DX) +((DS)0H + (BX) + 1)
((DS)0H + (BX)) + (CF)
mem, r AD" [BX+DI+12H],DX
((DS)0H + (BX) + (DI) + 1.H)
((DS)0H + (BX) + (DI) +12H)
((DS)0H + (BX) + (DI) + 1.H)
((DS)0H + (BX) + (DI) +12H) +
+ (DX) + (CF)
9nstruciunea 9:C de incrementare cu ; a unui operand scris &n re!istrul destinaie.
9ncrementarea O5 D5 95 "5 65 35 75 P5 C5
INC d destinaiei x x x x x
Descrierea formal a semanticii, &n !eneralC (d) (d) + 1.
Operanzi 2*emple Descrierea formal+ a semanticii
r1 I)" BX
(BX) (BX) + 1
r? I)" AL
(AL) (AL) + 1
mem I)" [BP+DI]
((SS)0H + (BP) + (DI))
((SS)0H + (BP) + (DI)) + 1
9nstruciunea 777 de a(ustare 76C99 a unui numr scris &n ,e*azecimal
Microprocesoare Intel - Descriere i aplicaii

7(ustare 76C99 O5 D5 95 "5 65 35 75 P5 C5


AAA pentru adunare ? ? ? x ? x
Descrierea formal a semanticiiCif (AL) ? 0F @ A or (AF) = 1 t,en
(AL) (AL) + 6
(AH) (AH) + 1
(AF) 1
(CF) (AF)
(AL) (AL) ? 0F/
9nstruciunea D77 de a(ustare zecimal a unui numr scris &n ,e*azecimal.
7(ustare zecimal O5 D5 95 "5 65 35 75 P5 C5
DAA pentru adunare ? x x x x x
Descrierea formal a semanticiiC if (AL) ? 0F @ A or (AF) = 1 t,en
(AL) (AL) + 06H
(AF) 1
if (AL) @ AF or (CF) = 1 t,en
(AL) (AL) + 60H
O5 D5 95 "5 65 35 75 P5 C5
SUB d,s 6cdere x x x x x x
Descrierea formal a semanticii, &n !eneralC (d) (d) - (s).
Operanzi 2*emple Descrierea formal+ a semanticii
AL|AX, data S#B AL,20H
(AL) (AL) - 20H
r, data S#B BX,55H
(BX) (BX) - 5566H
mem, data S#B [BP+25H],///H
((SS)0H+(BP)+26H)
((SS)0H+(BP)+25H)
((SS)0H+(BP)+26H)
((SS)0H+(BP)+25H) -
- 0>>>H
r
1
, r
2
S#B DX,DI
(DX) (DX) - (DI)
r, mem S#B SI,[BX+100H]
(SI) (SI) - ((DS)0H + (BX) + 101H)
((DS)0H + (BX) + 100H)
mem, r S#B [BP+50H],AX
((SS)0H + (BP) + 51H)
((SS)0H + (BP) + 50H)
((SS)0H + (BP) + 51H)
((SS)0H + (BP) + 50H) - (AX)
O5 D5 95 "5 65 35 75 P5 C5
SBB d,s 6cdere cu &mprumut x x x x x x
Descrierea formal a semanticii, &n !eneralC (d) (d) - (s) - (CF).
Microprocesoare Intel - Descriere i aplicaii

Operanzi 2*emple Descrierea formal+ a semanticii


AL|AX, data SBB AX,1000H
(AX) (AX) - 1000H - (CF)
=, data SBB DI,2-H
(DI) (DI) - 002.H - (CF)
mem, data SBB [BX+DI],--H
((DS)0H+(BX)+(DI)) ((DS)0H+(BX)+(DI))-
- ..H - (CF)
=
1
, r
2
SBB AL,BL
(AL) (AL) - (BL) - (CF)
=, mem SBB AH,[DI+55H]
(AH) (AH) - ((DS)0H + (DI) + 55H) - (CF)
mem, r SBB [BX],DL
((DS)0H + (BX)) ((DS)0H + (BX)) -
- (DL) - (CF)
Decrementarea O5 D5 95 "5 65 35 75 P5 C5
DEC d destinaiei x x x x x
Descrierea formal a semanticii, &n !eneralC (d) (d) - 1.
Operanzi 2*emple Descrierea formal+ a semanticii
=1 D!" AX
(AX) (AX) - 1
=? D!" DH
(DH) (DH) - 1
mem D!" [BP+12H]
((SS)0H + (BP) + 12H)
((SS)0H + (BP) + 12H) - 1
Complementare O5 D5 95 "5 65 35 75 P5 C5
NEG d fa de > x x x x x 1*
a destinaiei
Descrierea formal a semanticii, &n !eneralC (d) 0H - (d).
Operanzi 2*emple Descrierea formal+ a semanticii
= )!( AX
(AX) 0H - (AX)
mem )!( [DI]
((DS)0H + (DI)) 0H - ((DS)0H + (DI))
H (CF) = 0 dac (d) = 0H
C0-p(#(#'( O5 D5 95 "5 65 35 75 P5 C5
CMP s1,s2 prin scdere x x x x x x
a doi operanzi
Descrierea formal a semanticii, &n !eneralC (s
1
) - (s
2
).
Operanzi 2*emple Descrierea formal+ a semanticii
AL|AX, data "MP AX,0FFFFH (AX) - FFFFH
=, data "MP BX,10H
(BX) - 0010H
mem, data "MP [BP+SI+5H],0ABH
((SS)0H + (BP) + (SI) + 5H) - ABH
=
1
, r
2
"MP AL,"L (AL) - (CL)
=, mem "MP BH,[100H]
(BH) - ((DS)0H + 100H)
mem, r "MP [BX+SI+/5H],DX
((DS)0H + (BX) + (SI) + >6H)
((DS)0H + (BX) + (SI) + >5H) - (DX)
7(ustare 76C99 O5 D5 95 "5 65 35 75 P5 C5
AAS pentru scdere ? ? ? x ? x
Microprocesoare Intel - Descriere i aplicaii

Descrierea formal a semanticiiC if (AL) ? 0F @ A or (AF) = 1 t,en


(AL) (AL) - 6, (AH) (AH) - 1
(AF) 1
(CF) (AF)
(AL) (AL) ? 0F/
7(ustare zecimal O5 D5 95 "5 65 35 75 P5 C5
DAS pentru scdere ? x x x x x
Descrierea formal a semanticiiC if (AL) ? 0F @ A or (AF) = 1 t,en
(AL) (AL) - 06H
(AF) 1
if (AL) @ AF or (CF) = 1 t,en
(AL) (AL) - 60H
(CF) 1
E*empluP
;. 6e realizeaz adunarea dintre ?@,L/=,[0CC,, se %a face corecia zecimal utiliznd instruciunea
D77D
)&&
operanzi 8CD 34
H
;F
Rezultat *inar
Corecie
Hauxcarr&
CC
H
: :
Rezultat zecimal 2 ,
>. 6e realizeaz adunarea dintre 4?,L4/,[0CC,, se %a face corecia 76C99 utiliznd instruciunea
777.
&&&
operanzi
+1CII
03
H
0;
corecie
:C
:
Foreaz$ < si
CE1
<
H
0<
Rezultat +1CII
afia*il
2,
Pentru am'ele e*emple se %or urmri descrierile formale ale instruciunilor.
Microprocesoare Intel - Descriere i aplicaii

CbservaieP Toate instruciunile aritmetice 1i lo:ice po-iionea-+ indicatorii de condiie funcie


de valoarea re-ultatului. <e-ultatul poate fi salvat 1i 2n memorie.
3[; rezultat[0 sau operanzii sunt e!ali la comparaie
6[; rezultatd0
6[0 si 3[0 rezultate0 + :U zero si :U ne!ati%
C[; transport din ran!ul cel mai semnificati%. 8a instruciunile lo!ice C[0
O[; rezultatul depete spaiul alocat
P[; numrul 'iilor de ; din acumulator este par
9nstruciunile lo!ice se fac 'it cu 'it iar indicatorii se poziioneaz funcie de &ntre!ul rezultat. Pentru
a selecta un 'it sau un !rup de 'ii din rezultat se folosete o masc.
:u &ntotdeauna C[; &nseamn depire. Depirea poate s apar la adunarea numerelor de acelai
semn i 6 difer de acest semn. C[; la adunarea numerelor ne!ati%e, fr a fi depire.
>3.(.(. Cperaiile aritmetice de 2nmulire 1i 2mp+rire
O5 D5 95 "5 65 35 75 P5 C5
MUL s )nmulire x ? ? ? ? x
Descrierea formal a semanticii, &n !eneralC
pentru operaia pe / 'iiC
(AX) (AL) B (s) if (AH) = 0 t,en
(CF) 0
else (CF) 1
(+F) (CF) ,
iar pentru operaia pe ;1 'iiC
(DX)(AX) (AX) B (s) if (DX) = 0 t,en
(CF) 0
else (CF) 1
(+F) (CF).
Operanzi 2*emple Descrierea formal+ a semanticii
r? M#L DL
(AX) (AL) B (DL)
r1 M#L BX
(DX)(AX) (AX) B (BX)
mem? M#L [BP+DI]
(AX) (AL) B ((SS)0H + (BP) + (DI))
mem1 M#L [12?H]
(DX)(AX) (AX) B ((DS)0H + 126AH)
((DS)0H + 1268H)
Knmulire cu semn
O5 D5 95 "5 65 35 75 P5 C5
IMUL s )nmulire cu semn x ? ? ? ? x
Descrierea formal a semanticii, &n !eneralC
Microprocesoare Intel - Descriere i aplicaii

pentru operaia pe / 'itiC


(AX) (AL) B (s)
if (AH) = 0 or (AH) = FF t,en
(CF) 0
else (CF) 1
(+F) (CF) ,
iar pentru operaia pe ;1 'iiC
(DX)(AX) (AX) B (s)
if (DX) = 0 or (DX) = FFFF t,en
(CF) 0
else (CF) 1
(+F) (CF).
Operanzi 2*emple Descrierea formal+ a semanticii
r? IM#L DL
(AX) (AL) B (DL)
r1 IM#L "X
(DX)(AX) (AX) B (CX)
mem? IM#L [0AB"DH]
(AX) (AL) B ((DS)0H + ABCDH)
mem1 IM#L [BX+550H]
(DX)(AX) (AX) B ((DS)0H+(BX)+551H)
((DS)0H+(BX)+550H)
!xemplu2
2*emplificarea oeraiei de &nmulire cu semn pentru numere &ntre!i sau zecimale
7(ustare 76C99 O5 D5 95 "5 65 35 75 P5 C5
AAM pentru &nmulire ? x x ? x ?
(dup &nmuire)
Descrierea formal a semanticiiC (AH) (AL) diC 0A
(AL) (AL) -0d 0A .
O5 D5 95 "5 65 35 75 P5 C5
DIV s )mprire ? ? ? ? ? ?
Descrierea formal a semanticii, &n !eneralC
pentru operaia pe / 'iiC
if (AX) diC (s) @ FF t,en
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

Declararea unei %aria'ile ca e*tern


Forma general$2
)9G>IC var1&var(&.. D declarare %aria'ile ca definiii e*terne
E?T<.simbol1Pt@pe1& simbol(Pt@pe(&.. D declarare referine e*terne spre alte module
unde t@pe estede tip octet, cu%nt, cu%nt du'lu, specificnd lun!imea
"ipul permite asam'lorului s !enereze instruciuni pe lun!imi corecte. Menionm c &n lim'a(
de asam'lare nu e*ist tipuri &ntre!i, reale, lo!ice, caracter ca &n alte lim'a(e.
+ near 1i far pentru etic,ete apelate prin aump sau Call
Etic;et+ >AGE> far sau near W definire e*plicit etic,ete locale (near) sau e*terne (far), care
se pot apela din e*terior.
Etic;etele locale \ near se pot specifica urmate de dou puncte(C)
Definire se:mente
Forma general$2
numeVse: SEBME.T Zali:n[&Zcombinare[&Z]clasa][
^^^^^^^^^.
numeVse: E.DS
ali:n - pa:e + se!mentul &ncepe la multiplu de >@1
- para + multiplu de ;1 (para!raf)
- 0ord + multiplu de >
- b@te + multiplu de ;
Combinarea cu alte se!menteC
- none +implicit
- public
- common + se!mente care se &ncarc &n paralel &n aceeai zon de memorie
+ memor@ +se!mente tratate &mpreun de editor i plasate la sfritul memoriei
- AT adresa + specific adresa la care se &ncarc se!mentul
- stacA + se!ment definit ca sti% i tratat ca pu'lic ( 'azat cu 66)
ASS9ME CSPse:1&DSPse:(&ESPse:3&SSPse:4 precizeaz re!istrele se!ment utilizate la adresarea
datelor din fiecare se!ment.
>4.(. Cperaii lo:ice
9nstruciunea :O" este o instruciune prin care se complementeaz 'iii unui operand scris &n 'inar.
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<
-

1<<< Masca CE1 1E1 CE1


1<<< Rez O
<
nu
#epasire
Depasire
transfer spre
1
si
nu
#ep
$ire
Microprocesoare Intel - Descriere i aplicaii

9nstruciunea "26" E compar doi operanzi utiliznd operaia lo!ic U9.


C0-p(#(#'( O5 D5 95 "5 65 35 75 P5 C5
TEST s1,
s2
prin U9 lo!ic ! x x ? x !
nedistructi%
Descrierea formal a semanticii, &n !eneralC (s
1
) ? (s
2
) .
Operanzi 2*emple Descrierea formal+ a semanticii
AL|AX,
data
,!S, AL,55H
(AL) ? 55H
r, data ,!S, DI,12-/H
(DI) ? 12.>H
mem, data ,!S,
[SI],00101100B
((DS)0H + (SI)) ? 00101100B
r
1
, r
2
,!S, DI,BX
(DI) ? (BX)
r, mem ,!S, "L,[SI]
(CL) ? ((DS)0H + (SI))
9nstruciunea OB (67U) E realizeaz operaia lo!ic 67U &ntre doi operanzi
O5 D5 95 "5 65 35 75 P5 C5
OR d,s 67U lo!ic ! x x ? x !
Descrierea formal a semanticii, &n !eneralC (d) (d) (s) .
!xemplu2
Operanzi 2*emple Descrierea formal+ a semanticii
AL|AX, data O= AL,22H
(AL) (AL) 22H
r, data O= DX,1FFFH
(DX) (DX) 1FFFH
mem, data O= [BP+SI],1
((SS)0H +(BP) + (SI))
((SS)0H +(BP) + (SI)) 01H
r
1
, r
2
O= "L,BL
(CL) (CL) (BL)
r, mem O= BX,[SI]
(BX) (BX) ((DS)0H + (SI) + 1H)
((DS)0H + (SI))
mem, r O= [BP+DI],"X
((SS)0H +(BP) +(DI) +1)
((SS)0H +(BP) +(DI))
((SS)0H +(BP) +(DI) +1)
((SS)0H +(BP) +(DI))
(CX)
9nstruciunea GOB (67U 2GC8U69H) E realizeaz operaia lo!ic GOB &ntre doi operanzi.
Microprocesoare Intel - Descriere i aplicaii

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

Deplasare dreapta O5 D5 95 "5 65 35 75 P5 C5


SHR s,
"#$%&
lo!ic x x x ? x x
Descrierea formal a semanticiiC
.,ile !#%' 0 do
(s)
-s4
0
(s) (s) diC 2
(CF) (s)
s4
!#%' !#%' - 1
if !#%' = 1 t,en
if (s)
-s4
(s)
-s4-1
t,en
(+F) 1
else (+F) 0
else (+F) nedeterminat .
Deplasare dreapta O5 D5 95 "5 65 35 75 P5 C5
SAR s,
"#$%&
aritmetic x x x ? x x
Descrierea formal a semanticii este
similar cu cea a instruciunii
precedente (sin!ura deose'ire fiind c -s4 tre'uie s fie pstrat, iar +F este resetat dac !#%'
1).
9nstruciunea BO8 de rotire a unui operand spre stn!a. :umrul de rotaii este indicat &n nrcel.
O5 D5 95 "5 65 35 75 P5 C5
ROL s,
"#$%&
Botaie stn!a x x
Descrierea formal a semanticiiC
Operanzi 2*emple
r, 1 SH= DL,1
r, "L SH= BX,"L
mem, 1 SH= [DI],1
mem, "L SH= [BP+SI+/H],"L
Operanzi 2*emple
r, 1 SA= BH,1
r, "L SA= AX,"L
mem, 1 SA= [BX],1
mem, "L SA= [BP+SI],"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

'NO $OF'D0 6alt dac Knu e*ist depireK


'NP | 'PO $PF'D0 6alt dac K non+ paritateK| dac KimparK
'NS $SF'D0 6alt dac Knon+semnK | dac Kpoziti%K
'O $OF'D1 6alt dac Ke*ist depaireK
'P | 'PE $PF'D1 6alt dac Ke*ist paritateK| dac KparK
'S $SF'D1 6alt dac Ke*ist semnK
:O"cC + condiiile care se traduc cu Kmai mareK sau Kmai micK se refer la operaii asupra unor
numere cu semnD
+ e*primrile Ksu*K sau KpesteK se aplic operaiilor asupra unor numere f+r+ semn.
>4.6. Modul de lucru recomandat
Pro!ramele prezentate &n acest la'orator, %or fi copiate &n simulatorul 2mu/0/1 i e*ecutate pas
cu pas, urmrindu+se modificrile realizate &n memorie i re!istre dup e*ecuia fiecrei instruciuni.
8a instruciunile de salt se %a urmri coninutul re!istrului 9P respecti% al re!istrulului C6,
determinnd tipul de salt.
)ro:ramul 1
Utilizarea instruciunilor lo!ice i de salt condiionat.
Dac pro!ramul conine numai cte un se!ment de fiecare tip se poate simplifica scrirea
specificnd unde &ncepe se!mentulde code .CCDEde date DATA i sti% .STAC=. Bezer%area
spaiului pentru sti% se face pe lun!imea dat i automat se &ncarc re!.66.
Modulul de date se numete implicit `DATA referit pentru &ncrcare re!istru se!ment D6. Dac
se scriu pro!rame comple*e cu multe se!mente de diferite tipuri tre'uie s se utilizeze se!mentarea
e*plicit prin definire se!mente cu nume cu directi%a 62IM2:".
D .model small D model pe cu se!mente de 1?No
.stacA>@1 D rezer%are >@1 octeti pentru sti%a
D 6e!mentul de date
D +++++++++++++++++++++++++++++++++++++
.data
7 d. >4?@,,027D2,,02522,
:7 d' 4 dup(0) D nr 'iti elemente ta' 7
: eTu 4 D numar elemente ta'lou 7
D 6e!mentul de code al pro!ramului
D +++++++++++++++++++++++++++++++++++++
.code
st;C mo% a*,gdata D initializare re!istrul se!ment de date D6
mo% ds,a* D
mo% si,0 D inde* in ta'loul 7
mo% di,0 D inde* in ta'loul :7
mo% d,,: D nr. elemente ta'lou
D Ciclu pentru numarare 'iti element 7(9)
c;C mo% a*,7QsiR D incarcare element 7(9)
Microprocesoare Intel - Descriere i aplicaii

mo% '*,7Q69RD incarcare element 7Q9R in re! FG


and ',,'l
or ',,'l
*or ',,',
rol ',,4
mo% c*,;1 D numar ran!uri 'inare
c>C s,la*,; D deplasare stin!a cu un ran!
(nc c4 D 'itul este zero
inc :7QdiR D 'itul este ;
c4C loop c> D urmatorul ran!
add si,> D adresa urmatorului element din 7(9)
inc di
dec d, D %erificare sfirsit ta'lou G
mo% a*,7QsiR D incarcare element 7(9)
(nz c;
int 4 D terminare pro!ram
end st; D adresa lansare pro!ram
Utilizarea salturilor intere!ment i intrase!ment sunt e*emplificate &n pro!ramul urmtor
)ro:ram (
5ie un numr zecimal 76C99 introdus de la tastatur. 6 se realizeze con%ersia 'inar pe doi octei.
.model small
.stacA 1%%
.data
z; d' ;0,0,;0 dup (40,),;0,;4,WfW D nr zecimal
-ece d0 1%
n d' 0 D numar cifre zecimale
d. ;=4<? D pentru %erificare rezultat
'in d. 0 D numar 'inar rezultat
m; d' ;4,;0,W9ntroduceti un numar de @ cifreCW,;4,;0,WfW
.code
st;C mo% a*,gdata
mo% ds,a*
mo% d*,offset m; D afisare mesa( dialo!
mo% a,,<
int >;,
mo% d*,offset z;D adresa numar zecimal
mo% a,,;0 D asteptare numar
int >;,
mo% '*,offset z;L>D adresa prima cifra
mo% c*,0
mo% cl,z;L; D numar de cifre numar zecimal
Microprocesoare Intel - Descriere i aplicaii

call cz' D procedura con%ersie zec+'in


mo% 'in,a* D memorare numar 'inar
int3
W -----------------------------------------
D Procedura con%ersie zecimal 76C99 +'inar > octeti
D + intrare FG [ adresa numar zecimal, CG [ numar cifre zecimale
D + iesire 7G [ numar 'inar
W -----------------------------------------
c-b proc
*or a*,a* D 7G [ 0
mo% si,a* D inde* prima cifra
mo% n,cl D numar cifre zecimale
c4C mo% cl,Q'*LsiR D incarcare cifra 76C99
and cl,0f, D anulare primii ? 'iti
mul zece D : [ :`;0
add a*,c* D : [ :`;0 L cifra
inc si D urmatoarea cifra
dec n
(nz c4
ret
c-b endp
end st;
)ro:ramul 3
Pro!ramul simuleaz o &nmulire pe ;1 'ii din &nmuliri pe / 'ii. Bezultatul, care poate a%ea
ma*imum 4> de 'ii, se memoreaz &n cu%intele de memorie W;re-W i Wlre-W.
7l!oritmul de calcul este urmtorulC
Un numr de ;1 'ii se poate reprezenta astfelC
?MQT; a ?Mh(6 N QT
(?M este coninutul octetului K,i!,K iar QT este coninutul octetului Klo.K).
7tunciC
AGCD;h?MQT;aAGh?Mh(6h(6 N (AGhQTN?MhCD!h(6 N CDhQT.
Operaiile de &nmulire cu puteri ale lui doi se fac prin deplasri. 8a sfritul pro!ramului se face
direct &nmulirea pe ;1 'ii a celor doi operanzi, pentru a putea %erifica corectitudinea
al!oritmului.
+r6 1009
startE m+: a2,.Fte *tr +*1+1
m&2 .Fte *tr [+*2+1]
m+: 9re;,aG
m+: a2,.Fte *tr +*1+1
m&2 .Fte *tr +*2
m+: dG,aG
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

>6. I.ST<9CRI9.I DE CC.T<C> A> )<CB<AM9>9I (C9 E?CE)RIA


SA>T9<I>C< )<C)<I9-QISE! )E.T<9 MIC<C)<CCESCA<E>E I.TE>
>6.1. Scopul lucr+rii
8ucrarea de fa &i propune familiarizarea cu instruciunile de control al pro!ramului, e*ceptnd
salturile propriu+zise, precum i cu cte%a te,nici de pro!ramare &n asam'lor specifice
microprocesoarelor 9ntel funcionnd &n modul real#.
Subpro:ram. Definiie. Definirea unui su'pro!ram se face formal pe 'aza unui al:oritm care
primete %aria'ile formale de intrare, acestea sunt prelucrate iar rezultatele prelucrrii sunt
%aria'ilele de ieire. 8a c,emarea su'pro!ramului sunt transmise %alorilor parametrilor efecti%i de
intrare i prelucrate rezultatele transmise prin parametrii de ieire. Parametrii de intrare pot fi
e*presii de acelai tip cu parametrii formali de intrare (&n cazul parametrilor formali). :U este %izi'il
pro!ramatorului modul de trasfer al parametrilor &ntre pro!ram i su'pro!rame. )n lim'a( de
asam'lare transmiterea parametrilor spre su'pro!rame este mai complicat fiindc nu e*ist tipuri
definite de date ci numai date de o anumit lun!ime. "ipul datelor este dat de instruciunile care se
aplic asupra lor.
6u'pro!ramele pot fiC
.ormale pot c,ema alte su'pro!rame dar nu se pot c,ema pe ele &nsele
<ecursive care se pot c,ema pe ele &nsele direct sau indirect (:_[:`(:L;)_)
<eentrante care pot fi folosite simultan de mai muli utilizatori (editare te*te)
Parametrii se pot transmite spre su'pro!rameC
prin /aloare caz &n care %aloare parametrului se transmite su'pro!ramului
prin Adres+ cnd sunt ta'ele cu multe elemente i adresa ta'elului se transmite
su'pro!ramului, care %a folosi metode de adresare indirect sau$i inde*at.
"ransmiterea parametrilor spre su'pro!rame se poate face prinC re!istre E cnd sunt puini
parametrii i de lun!ime redusD zon de memorie cu structur cunoscut i a crei adres se d &ntr+
un re!istruD sti%D ta'el de adrese E metoda este cea mai eficient dar nu poate fi folosit la
procesoarele 9ntel care nu au adresare indirect prin adres de memorie.
>6.(. Instruciuni de apelare 1i revenire de'din proceduri
9n lim'a( de asam'lare c,emarea unei proceduri se face cu instruciunea CA>>. Parametrii
procedurii se plaseaz &naintea c,emrii &n re!istre, &ntr+o zon de memorie sau &n sti%. 8a scrierea
procedurii se sta'ilete modul de transmitere a parametrilor. Parametrii pot fi transmii prin %aloare
sau prin adres.
Microprocesoare Intel - Descriere i aplicaii

9nstruciunea CA>> E c,eam un su'pro!ram. Paii realizai la e*ecuia instruciunii suntC se


pune adresa de re%enire (9P) &n sti% i se sare la prima instruciune din procedur (9P[offset
su'pro!ram), &n procedur se e*ecut sec%ena de instruciuni pn la instruciunea B2", care
&ncarc &n 9P adresa din %rful sti%ei re%enind la adresa instruciunii urmtoare dup C788 (9P[osset
pro!ram principal).
9nstruciunea C788 se deose'ete de aMP prin faptul c depune &n sti%, re!istrul de
instruciuni 9P i e%entual coninutul re!istrului C6 dac saltul este &ntr+un alt se!ment (salt de tip
57B).
8a c,emarea unei proceduri de tip 57B, care poate fi &n alt se!ment, instruciunea C788 are
adresa pe ? octei i depune &n sti% att 9P ct i C6 i &ncarc din adresa instruciunii noile %alori
pentru 9P i C6.
O procedur de tip 57B se deose'ete de una de tip :27B doar prin faptul c instruciunea
B2" incarc din sti% att adresa de re%enire &n 9P ct i adresa se!mentului &n C6. 6e recomand ca
procedurile s+ fie :lobale (de tip 57B) pentru a putea fi pstrate &n orice se!ment i s poat fi
apelate din oricare se!ment de pro!ram.
7pelarea unui O5 D5 95 "5 65 35 75 P5 C5
CA>> adr su'pro!ram
Descrierea formal a semanticii, &n funcie de modul de adresare folositC
a! 5ar CA>> + pune &n sti% 9P i C6. 6altul se realizeaz &n afara se!mentului curent i
tre'uie modificat 9P i re!. C6
7pel de su'pro!ram cu adresare a'solut (direct) interse:ment C
CALL (d#.2 H
(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).
)n descrierea formal a semanticii am inut seama c adresa complet (d#.2, care este o a#res$
logic$, face parte din formatul instruciunii.
b! 7pel de su'pro!ram cu adresare relati%C
CALL disp16 H
(SP) (SP) - 2
((SS)0H +(SP)+1) ((SS)0H +(SP)) (IP)
(IP) (IP) + disp16 .
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

9nstruciunea 8OOP:2$8OOP:3 E condiia este in%ers dect la instruciunea dinainte.


Cicleaz ct timp O5 D5 95 "5 65 35 75 P5 C5
LOOPNE| Kne+e!alK sau
| LOOPNZ
d)s*+
Knon+zeroK
Descrierea formal a semanticiiC
(CX) (CX) - 1
if (IF)=0 and (CX)0 t,en (IP)(IP)+disp8 .
Condiia de meninere a ciclului este in%ers fa de instruciunea precedentC cicleaz Kct timp
diferit de zeroK sau Kct timp nu e e!alK.
9nstruciunea aCG3 disp/ E se st &n 'ucl ct timp coninutul re!istrului CG este diferit de zero.
Cnd acesta de%ine zero se adau! la coninutul re!istrului 9P o %aloare numit deplasament.
O5 D5 95 "5 65 35 75 P5 C5
'CXZ d)s*+ 6alt dac (CG) [ 0
Descrierea formal a semanticiiC
if (CX) = 0 t,en (IP) (IP) + disp8 .
Operanzi 2*emple
d1s*? LOOP)C =!P!,A
Operanzi 2*emple
d1s*? A"XC S,OP
Microprocesoare Intel - Descriere i aplicaii

>6.4. CDteva elemente privind te;nica de utili-are a atributelor de ar;itectur+ ale


microprocesorului
Cnd se proiecteaz un pro!ram &n lim'a( de asam'lare, pentru a controla e*act e%oluia
pro!ramului sau pentru a+l optimiza, tre'uie a%ute &n %edere atri'utele de ar,itectur ale
microprocesorului, cte%a elemente care in de modul su de lucru, caracteristicile asam'lorului sau
sistemului de operare.
7stfelC
+ Pe prima linie a pro!ramului se introduce directi%a C<B 1%%; necesar deoarece sistemul de
operare DO6 &ncarc i e*ecut pro!ramele e*ecuta'ile de tip CCM de la adresa ;00,.
+ 6e recomand ca la &nceputul pro!ramului s se fac suprapunerea se!mentului de date (definit
cu DS) cu se!mentul de cod (definit cu CS), de e*emplu prin sec%ena de instruciuniC
-0C (9,%s
-0C ds,(9 .
+ Ultima instruciune pe care o e*ecut pro!ramul tre'uie s fie I.T (%;, dac se dorete
re%enirea &n sistemul de operare DO6 (sau &n pro!ramul apelant).
+ 6e recomand ca datele declarate prin directi%e DG (define 'Mte), DI (define .ord), EE9
(eTualitM), s fie plasate !rupat la &nceputul sau sfritul pro!ramuluiD dac declararea se face la
&nceputul pro!ramului, se %a plasa &naintea zonei de date un salt necondiionat la prima instruciune a
pro!ramului, iar dac declararea se face la sfritul pro!ramului, zona de date se %a plasa dup
instruciunea de re&ntoarcere &n sistemul de operare, I.T (%;.
+ Cnd se folosesc su'pro!rame (proceduri), tre'uie a%ut &n %edere pro'lema conser%rii unor
re!istre prin plasarea de instruciuni )9S, la &nceputul su'pro!ramului pentru sal%area &n sti% a
re!istrelor dorite, iar la sfritul su'pro!ramului, instruciuni )C) pentru refacerea acestora.
+ )n corpul unui su'pro!ram se pot face apelri de alte su'pro!rame, &ns tre'uie o'ser%at c
pentru fiecare apel se face automat o sal%are &n sti% (poate aprea depirea spaiului alocat pentru
sti%).
Transferul de date c+tre subpro:rame se poate faceP
b prin re!istre, dac numrul datelor este micD
b &n memorie, prin intermediul sti%eiD &n pro!ramul apelant se plaseaz instruciuni PU6J iar &n
su'rutin instruciuni POPD
b &n memorie, su' forma unor ta'ele de date, prin transferarea adreselor acestora folosind
re!istre.
Transferul de date de la subpro:rame se poate faceP
b prin re!istreD
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

5a22 +rd+% 0+rd1%e des5res5at+are



5res5 m+: .2,0KK9 0+rd+%ea;a s1r&2 1%
5a22 +rd+% 0+rd1%e 5res5at+are 1%t 209 0re:e%1re
1% *r+6ram&2 a*e2a%t
+rd+% m+: s1,0 0setea;a SI 2a 1%5e*&t&2 s1r&2&1
m+: 5G,2&%6s1r 01%5ar5a 1% "X %rL de 1terat11
.&52a 5a22 6et+rd 059eama *r+5ed&ra (!,O=D$setea;a sa& %& "F'
J5 1%:ers 0da5a +rd1%ea %& este .&%a, sa2t
1%5 s1 0setea;a SI *e%tr& e2eme%t&2
1%5 s1 0&rmat+r
2++* .&52a 0re*eta de 2a B#"LA ret
1%:ers m+: aG,[.*+s1] 01%ters591m. 1%tre 2+5at112e
G596 aG,[.*+s1+2] 0de mem+r1e BP+SI s1 BP+SI+2
G596 aG,[.*+s1] 0K+2+s1%d re61str&2 AX 5a
0re61str& tem*+rarL
m+: s1,00 0setea;a SI 2a 1%5e*&t&2 s1r&2&1
m+: 5G,2&%6s1r 01%5ar5a "X 5& %rL de 1terat11
Jm* .&52a
6et+rd m+: aG,[.*+s1] 05+m*ara e2eme%te2e s&55es1:e
0de 1%deG SI s1 SI+2
5m* aG,[.*+s1+2]
2a9K 01%5ar5a Ka%1+a%e2e 1%
0re61str&2 AH s1 setea;a
G+r a9,.2 05+%K+rm 2&1 BL
r+2 a9,1 0*re6ateste 5+%t1%&t&2 2&1
0AH *e%tr& tra%Ker
sa9K 01% Ka%1+a%e
ret
)ro:ramul 3
Pro'lemaC
Dndu+se ;0 iruri de caractere, fiecare de ma*imum >@@ octei, a%nd ultimul octet 0, s se
ordoneze &n ordine alfa'etic, &n aceeai zon de memorie.
7l!oritmC
6e consider irurile pe rnd, &ncepnd cu primul, i se compar cu irul urmtor. Dac ordinea &n
care se afl nu este 'un, irul curent este mutat la sfritul zonei de date i se reia procesul de la
primul ir. 7ltfel, se trece la urmtorul ir i se face o nou comparaie.

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

comp pus, a* Dconser%a re!istrele 7G si FG


pus, '*
mo% si,d* Dpune in 69 adresa de inceput
Da unui sir de comparat
reia lods' Dpune in 78 un octet al sirului
cmp Q'*R,al Dcompara un octet al celui
Dde+al doilea sir de comparat
Dcu 78 setand fanioanele
(e e!al Ddaca e!alitate salt la
Die!al\
pop '* Dreface re!istrele FG si 7G
pop a*
ret Dre%ine in pro!ramul apelant
e!al inc '* Dtrece la elementul urmator
(mp reia Dal sirurilor.
sc,im' pus, a* Dconser%a re!istrele 7G si CG
pus, c*
reit mo% si,d* Dincarca in 69 si D9 adresa
mo% di,d* Dsirului de transferat
lods' Dincarca in 78 octetul
Dde la adresa 69
mo% c*,offset start+;
su' c*,d* Dincarca pe CG cu diferenta
Ddintre inceputul sirului
Dsi sfarsitul zonei de date
repnz mo%s' Dtransfera toti octetii din aceasta zona
stos' Dpune in ultima locatie a zonei
Dde date octetul din 78
cmp al,0 Dcompara daca s+a a(uns la sfarsitul sirului.
(e ies Ddaca da, salt la iies\
(mp reit Daltfel salt la ireit\ (reluare).
ies pop c* Dreface re!istrele CG si 7G.
pop a*
ret Dre%enire in pro!ramul apelant.
Microprocesoare Intel - Descriere i aplicaii

>. MIC<C)<CCESCA<E )E 3( DE GIRI $%3$


1. Scopul lucr+rii
6copul lucrrii+studenii se %or familiariza cu structura intern a procesorului 4/1 i %or o'ser%a
e%oluia care este de la /0/1 la /04/1. Deasemenea %or studia re!istrele interne, setul de instruciuni
i modurile de funcionare ale procesorului /04/1 pe platforma 9P26.
(. Introducere 2n microprocesorul $%3$
Microprocesorul /04/1 este un procesor cu ma!istrale de adrese pe 4> 'ii or!anizat ca i
9ntel /0/1 &n urmtoarele 'locuriC unitatea central de procesare, unitatea de !estionare a memoriei i
unitatea de interfa cu ma!istralele. Unitatea central de procesare este compus din unitatea de
e*ecuie i unitatea de instruciuni. Unitatea de e*ecuie conine / re!istre !enerale or!anizate pe 4>
'ii utilizate &mpreun cu unitatea lo!ico+aritmetic i un re!istru de deplasare pe 1? 'ii. 78U pe 4>
de 'ii permite ela'orarea datelor mai rapid cnd adresarea pe 4> permite adresarea a ?IF de
memorie. 2ste indicat s lucreze pe mai multe funcii (multi+tasAin!), mana!ementul memoriilor i
circuitele de protecie fiind &m'untite. Unitatea de instruciuni e*tra!e instruciunile din memorie
i le plaseaz &ntr+un fiier de ateptare (coad de instruciuni). 7cestea sunt decodificate cu a(utorul
unitii de decodare care sta'ilete tipul operaiei, numrul de operanzi, modul de acces la operanzi,
numrul de octei din instruciune, etc). Unitatea de e*ecuie preia comenzile rezultate &n urma
transformrii instruciunilor.
Unitatea de !estionare a memoriei conine unitatea de se!mentare i de pa!inare. Cu a(utorul primei
uniti, memoria este or!anizat &n se!mente de lun!ime %aria'il de ma*im ?IF. 6e!mentele au
associate atri'ute care indic adresa de &nceput i lun!imea de octei, tipul de sti%, cod, date i
accesul la ele. Un pro!ram poate folosi ma*im 1 se!mente simultan dar poate accesa ;14/?
se!mente de ma*im ?I' fiecare. 7plicaiile i sistemul de operare sunt prote(ate reciproc cu a(utorul
a patru ni%ele de protecie furnizate de unitatea de se!mentare. Unitatea de pa!inare &mparte
memoria &n uniti de lun!ime fi* de ? AF, &n mod independent fa de di%izarea &n se!mente.
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

procesorului la detectarea apelurilor de tip intrare$ieire.


:" (:ested "asA) + in#icatorul #e tasP im*ricat Haloarea 0 (zero) a acestui 'it
indic faptul c tasA+ul curent este independent, re%enirea din acesta fiind realizat &n mod
normal. )n caz contrar (:"[;) este semnalat e*istena unui tasA im'ricat, re%enirea la
tasA+ul ce anterior cedase controlul fiind posi'il prin apelul instruciunii de ieire din
&ntrerupere (9B2").
8a intrarea &n scen a microprocesoarelor pe 4> de 'ii, re!istrul indicatorilor de
condiii a fost completat cu dou fanioane de sistem i un nou fla! de control, acesta fiindC
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. )n funcie de %aloarea acestuia, &n etapa de depanare a pro!ramelor se poate
acti%a sau in,i'a !enerarea aa+numitelor excepii la e*ecuia pas cu pas, influennd re%enirea la
firul de e*ecuie normal.
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.
HM B5 O :" 9OP8 9OP8 O5 D5 95 "5 65 X5 + 75 + P
5
+ C5
;= ;1 ;@ ;? ;4 ;> ;; ;0 < / = 1 @ ? 4 > ; 0
Microprocesoare Intel - Descriere i aplicaii

>. O.T<E<9)E<I>E >A MIC<C)<CCESCA<E>E I.TE>


1. Scopul lucr+rii
6copul lucrrii + studenii se %or familiariza cu modurile de apelare ale diferitelor &ntreruperi care
asi!ur accesul la dispoziti%ele de intrare$ieire sau alte periferice, specifice microprocesoarelor 9ntel
funcionnd &n modul real#.
(. Memoriu de instruciuni
O &ntrerupere este de fapt o atenionare transmis sitemului de calcul care anun apariia unui
e%eniment. 8a microprocesoarele 9ntel /0/1 pot e*ista ma*im >@1 &ntreruperi. 8a semnalarea unei
&ntreruperi se sare din pro!ramul principal la o adres unde se afl o Butin de "ratare a )ntreruperii
(B"9) specific cererii. :u e*ist rutine asociate cu cele >@1 de &ntreruperi.
Pentru memorarea celor >@1 rutine de &ntrerupere sunt folosite adresele de memorie de la
0000,C0000, [e0000, C 0?00,(e*clusi%).
5i!ura 1.;. "a'ela %ectorilor de &ntrerupere, fiecare %ector dispune de patru octei care includ offsetul i se!mentul. Deci
sunt rezer%ai ;0>? octei sau ;NF pentru ta'ela %ectorilor de )ntrerupere &n Mod Beal
Microprocesoare Intel - Descriere i aplicaii

5i!ura 1.>. Modul de sal%are &n sti% a re!istrelor 9P i C6


2tapele parcurse la apariia unei cereri de &ntreruperiC
a) oprirea pro!ramului principal dup e*ecuia instruciunii &n cursD
') salt la rutina de tratare a &ntreruperii (dup ce s+a sal%at &n sti% adresa de unde s+a fcut saltul,
iar re!istrele de adrese au fost &ncrcate cu adresa de &nceput a rutinei)D
c) e*ecuia rutineiD
d) re%enire &n pro!ramul principal.
)ntreruperile se pot clasifica (funcie de cauza care !enereaz &ntreruperea)C
1. Kntruperi externe microprocesorului2 -MI( I-,R( etc.
2*C + afia(
+ intrare$ieire consol

. Kntreruperi interne microprocesorului I-, x2
2*C 9:" 0 + &mprirea la zero
9:" ; E trasare pas cu pas
9:" 4 E 'reaApointer
9:" ? E apelat de 9:" 0 dac O5[0 :OP, dac O5[; se e*ecut 9:" ?
+ tentati%a de adresare a unei zone de memorie care nu e*ist
+ tentati%a de e*ecutarea a unei instruciuni care are cod ine*istent
8a apariia unei &ntreruperi interne, pro!ramul curent &n curs de e*ecuie se termin i controlul este
transmis sistemului de operare.

O alt clasificare a &ntreruperilor funcie de ni%elul la care sunt definite &ntreruperileC

a) Ontreruperi ;ard. Butinele sunt scrise de furnizori

') Ontreruperi GICS. Butinele sunt scrise de proiectanii F9O6+ului calculatorului.
2*C
+ &ntreruperea ;0, + lucrul cu ecranul &n mod !raficD
+ &ntreruperea ;;, + ofer informaii despre ec,ipamentele instalate &n sistem.
c) Ontreruperi DCS. Butinele sunt scrie de proiectanii sistemului de operare.
2*C
+ &ntreruperea >0, + terminarea unui pro!ram.
+ &ntreruperea 44, + lucrul cu mouseul

d) Ontreruperi definite de pro:ramatori.

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

((SS)0H +(SP) +1) ((SS)0H+(SP)) (IP)


(IP) (000>1H) (000>0H)
Cerere de O5 D5 95 "5 65 35 75 P5 C5
INTO &ntrerupere % %
soft.are de tip ?
Descrierea formal a semanticiiC
if (+F) = 1 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) (0001.H) (00012H)
(SP) (SP) - 2
((SS) 0H + (SP) +1) ((SS) 0H + (SP)) (IP)
(IP) (00011H) (00010H)
Be%enire din O5 D5 95 "5 65 35 75 P5 C5
IRET rutina de deser%ire * * * * * * * * *
a unei &ntreruperi
Beface re!istru indicatori sal%at &n sti% i sal%eaz %alorile re!istrelor 9P i C6.
CbservaiiP
2c,i%alene &ntre instruciuniC
CA>> bI.T
<ET b I<ET
:r CA>> I.T
;. 6e sare la orice locaie &n
inter%alul de adresare de ;MF
6are la o adres fi*ata&n ta'elul
%ectorilor de &ntrerupere
>. Utilizat de pro!ramator &n
sec%ene de instruciuni de
pro!ram
)ntrerupere e*tern acti%at e*tern,
poate apare &n orice moment
4. :u poate fi mascat I.T< poate fi mascat
?. 6e sal%eaz automat &n C6C 9P
adresa noii instruciuni
)n plus fa de C6C9P, re!istrul de
fanioane poate fi sal%at
@. <ET este ultima instruciune I<ET face acelai lucru ca POP pentru
5, C6C9P
3.1. Ontreruperi elementare.
Microprocesoare Intel - Descriere i aplicaii

GICS \ ansam'lu de su'rutine de tratare a intreruperilor ce asi!ur ser%icii de 'az.


Qona de lucru re-ervat+
+ rezer%area se realizeaz la iniializarea calculatoruluiD
+ structura de date este pentru confi!uraia ma*im permisD
+ unele date sunt iniializate la pornirea PC+ului.
Detalirea instruciunilor
7pelul unei &ntreruperi presupune o pre!tire anterioar a unor date &n re!istrele folosite de rutina
de tratare a acelei &ntreruperi. )n !eneral, tre'uie parcurse urmtoarele etapeC
se plaseaz un cod specific &n AHD
se &ncarc alte re!istre (aa cum se %a %edea &n descrierea sumarului funciei dorite), se
pre!tesc zonele de memorie tampon, irurile de caractere 76C99, etc. D
se in%oc I*: "ipD
se urmresc indicatorii de eroare adui din rutina de deser%ire a &ntreruperii atunci cnd este
cazul (de e*emplu fanionul CF) i se folosesc datele rezultate din e*ecutarea rutinei, acolo
unde ele e*ist.
3.1.1. I*: 10H - X0ervicii 6ideo7
intrare2
A, [ modul %ideo dorit
iar alte re!istre utilizate sunt 78, CG, DG,
8ista de ser%iciilor %ideo asi!urat de BOM+F9O6 este urmtoareaC
&' 8uncia
44' impune mo#ul "i#eo( 3<x4. 1: culori. ; pagini
43' impune m$rimeaQforma cursorului
4,' impune poziia cursorului
)' E rIn#.
)( E coloana.
B' E num$r pagin$ 7< .. F%.
42' citete poziia cursorului(
44' citete Rlight penS
49' selecteaz$ pagina acti"$ a afiaTului
45' mic$ RfereastraS afiat$ )n sus 7sau terge RfereastraS%
47' mic$ RfereastraS afiat$ )n Tos citete caracter sau atri*ut
4:' scrie caracter sau atri*ut
4&' scrie caracter
4B' selecteaz$ paleta #e culori sau chenarul
4C' scrie un pixel )n mo#ul grafic
4)' citete un pixel )n mo#ul grafic
Microprocesoare Intel - Descriere i aplicaii

intrare2 C; E coloan( ); E rIn#.


iesire2 &( E pixel #e culoare
4"' scrie caracter )n mo#ul R,,JS
+' - caracter
48' citete mo#ul "i#eo
34' impune paleta
33' generator caractere
3,' funcii speciale
32' scrie ir caractere 7RstringS%
intrare2
&( E Mo# #e scriere2
bit 4# actualizare cursorU
bit 3# atri*te .string
B' E num$rul paginii.
B( E #ac$ irul conine numai caractere
C; E num$rul #e caractere )n ir .
)(< )' Epoziie coloan$( rIn# scriere ir.
"0# B.- ir #e puncte pentru a fi tip$rite.
34' )ncarc$ tipuri #e caractere R'CDS
39' )ncarc$ parametrii afiaTului
4=' 7con"erti*ili 6C%
3&' cereQimpune co#uri afiaT
3B' cere stareQfuncie
3C' sal"eaz$Qa#uce starea "i#eo
&; > 3442h - comuta intensitate Q sclipitoare

2*empleC
a) I.T 1%; $ A, a %1;
Cnd 'itul @ din CJ este % lo:ic& cursorul este %izi'il iar cnd este ;, cursorul nu este %izi'il.
D 7scunde cursorul te*tul clipeteC
mo% c,, 4>
mo% a,, ;
int ;0,
D Cursor 6tandard, clipete te*tC
mo% c,, 1
mo% cl, =
mo% a,, ;
int ;0,
D 7fieaz caseta &n form de te*t cursorul clipeteC
mo% c,, 0
mo% cl, =
mo% a,, ;
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

=.1 :umrul de floppM disA (minus ;)C


00 sin!ur disc,etD
0; dou disc,eteD
;0 trei disc,eteD
;; patru disc,ete.
@+? iniial modul %ideoC
00 2I7, HI7, PI7, sau cu alte on+'oard %ideo F9O6D
0; ?0*>@ CI7 culoare.
;0 /0*>@ CI7 culoare (emulator implicit).
;; /0*>@ mono te*t.
4 rezer%ate.
> P6 $ > mouse+ul este instalat.
; Mat, coprocessor instalat.
0 6etare cnd 'ootat de pe disc,et.


I.T 1(; E mrime memorie floppM
)ntoarcere2
A? [ acest apel returneaz coninutul de cu%nt la 00?0,C 00;4,.
5lopp@ drive sunt imitat& folosind F'@66JV< 7.. 0% de fi1iere.

I*: 20H - ?@ermin .rogram7
7ceast instruciune este folosit pentru a iei din pro!ram i pentru a reda controlul procesului
printe (&n mod curent command.com, interpretorul de comenzi DO6). Bestaureaz %alorile din
%ectorii de control DO6C I*: 22H, I*: 2.H, I*: 2>H. 2li'ereaz toate memoriile+tampon de
fiiere (fiierele tre'uie s fie &nc,ise mai &nti dac au sc,im'ri &n lun!ime).
I*: 21H - ?8uncii )*07
3
Paii parcuri pentru a accesa o funcie DO6C
A, knumrul funciei DO6D
+ 78 k numr su'funcie DO6 (dac e*ist)D
se &ncarc re!istrele aa cum este descris &n sumarul funciei DO6, se pre!tesc zonele
de memorie+tampon, iruri de caractere 76C99D
se in%oc I*: 21HD
se urmresc indicatorii de eroare adui din DO6 (spre e*emplu fanionul CF)
DO6 pstreaz toate %alorile e*istente &n re!istre &n momentul apelului cu e*cepia re!istrelor
folosite pentru &ntoarcerea informaiei.
5uncia DCS 01H - Xcite1te Tastatur+Y
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

5uncia DCS >0H - Xscrie 2n fi1ier via identificatorY


P#i-',"' K
AH
BX
DS=DX
CX
>0H
identificator fiier
adresa &n memorie din care se %or scrie datele
numrul octeilor pentru scriere
:otC 0000H specific s se trunc,eze fiierul
)ntoarce+ AX un cod de eroare dac CF este setat,
altfel, numrul octeilor scrii actualmente
Datele cuprinse &n numrul de octei specificai prin CX sunt scrise &n fiierul sau dispoziti%ul cu
identificatorul din BX. Datele sunt luate &ncepnd de la adresa dat de DS=DX. Datele sunt scrise &n
poziia curent a pointerului de citire$scriere al fiierului.
2ste folosit funcia DO6 >2H (8seeA#) pentru a poziona pointerul de citire$scriere &nainte de
apel atunci cnd este necesar (OP2: seteaz pointerul de citire$scriere la 0). Pointerul de
citire$scriere este actualizat ca su'sec%en a accesului sec%enial.
6e poate compara Qntotdeauna %aloarea &ntoars &n AX (numrul de octei scrii efecti%) cu CX
(dimensiunea impus a fi scris). Dac sunt e!ale scrierea s+a fcut cu succes, altfel, (dac AX D CX)
a inter%enit o eroare (cel mai adesea pentru scrierea pe disc este mesa(ul idisA full\).
Pentru DO6 4.>L, dac la apel CX=0, fiierul este trunc,iat la poziia curent a pointerului de
fiier.
5uncia DCS >CH - Xtermin+ pro:ram \ E?ITY
)rime1te \A, A> >CH
codul de ieire
J!"0(#%'
+
)ntoarce codul procesului copil# ctre procesul printe# i seteaz o %aloare a codului de ieire
care poate fi cerut de funcia DO6 >DH (-ait#).
Desf+1urarea lucr+rii
E*emplul 1

5unctia 0>, a &ntreruperii >;, permite afiarea unui caracter pe ecran. )ntreruperea ateapt &n
re!istrul 7J codul funciei (0>,) iar &n re!istrul D8, codul 76C99 al caracterului pe care dorim s &l
afim. Modul de apel esteC
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

mo% a,, 0a,


mo% d*, offset ma*5ile:ame
int >;,
D &n urma citirii la adresa ma*5ile:ame L > [ file:ame se memoreaz numele fiierului citit
D la adresa ma*5ile:ame L ; [ l5ile:ame se memoreaz dimensiunea irului de caractere care
reprezint numele fiierului

D transformm numele fiierului &ntr+un ir 76C993
mo% al, l5ile:ame
*or a,, a,
mo% si, a*
mo% file:ameQsiR, 0

D desc,idem fiierul cu funcia 4d,, int >;,
mo% a,, 4d,
mo% al, 0 ; deschidem fiierul pentru citire
mo% d*, offset file:ame
int >;,
(c open2rror D eroare la desc,iderea fiierului dac C5 e setat
mo% '*, a* D sal%m identificatorul fiierului &n re!istrul '*

D ct timp nu e sfrit de fiier citim din fiier i afim pe ecran
!oOnC
mo% a,, 4f,
mo% d*, offset 'uffer
mo% c*, ;00 ; citim maxim 100 de caractere
int >;,
(c read2rror

D &n caz de succes funcia 4d, &ntoarce &n a* numrul de octei citii
D sal%m numrul octeilor citii i pre!tim irul pentru afiare
mo% si, a*
mo% 'ufferQsiR, WfW

D afim ce am citit
mo% a,, 0<,
int >;,

cmp si, ;00
(e !oOn D dac am citit ;00 de octei &nseamn c nu am terminat de citit

(mp endPr! D srim peste tratarea e%entualelor erori

open2rrorC
mo% a,, 0<,
Microprocesoare Intel - Descriere i aplicaii

mo% d*, offset open2rrorMs!


int >;,
(mp endPr!

read2rrorC
mo% a,, 0<,
mo% d*, offset read2rrorMs!
int >;,

endPr!C
mo% a*,?c00,
int >;,
code ends
end start
)robleme )ropuse
Urmtoarele pro'leme se %or rezol%a &n lim'a( de asam'lareC

1. S se tipreasc coninutul registrilor i suma primilor 4 ii ai lor.

!. S se citeasc c"te un caracter de la tastatur# fr ecou. $ac este cifr# s se tipreasc pe ecran# dac
este caracterul %&%# se termin programul# 'n orice alt situaie se adaug caracterul 'ntr-un uffer care se (a
tipri 'n final pe ecran.

3. $ac unitatea implicit este cea citit de la tastatura )*+# atunci s se selecteze ca i unitate implicita
unitatea ,-# 'n caz contrar# s se selecteze unitatea *-. .rice situaie de eroare (a fi semnalat.

4. S se afieze data curent i ziua curent din sptam"n )'n litere+.

/. S se afiseze ora sistem curent su forma hh-mm i s se specifice cu sirul %,0% sau %10% dac este
antemeridian sau postmeridian.

2. S se afieze spatiul lier de pe o dischet.

3. S se afieze spatiul ocupat pe o dischet.

4. S se stearg un fiier al crui nume (a fi introdus de la tastatur. .rice situaie de eroare (a fi semnalat
printr-un mesa5 corespunzator.

6. S se afieze numele i coninutul directorului curent.

10. S se afieze atriutele unui fisier al crui nume (a fi introdus de la tastatur.

11. S se poziioneze atriutele unui fisier al crui nume (a fi introdus de la tastatur. 7oile atriute (or fi
determinate 'n urma unui dialog cu utilizatorul de la tastatur.

1!. S se citeac de la tastatur dou nume de fiiere. S se copieze primul fiier 'n cel de al doilea. Se (a
semnala orice situatie de eroare.

Microprocesoare Intel - Descriere i aplicaii

13. S se citeasc de la tastatur un nume de fiier i un nume de director. S se afiseze un mesa5


corespunztor dac fiierul exist sau nu 'n directorul dat.

14. S se citeasc de la tastatur un cu("nt i un nume de fiier. S se afieze dac cu("ntul exist sau nu 'n
fiierul dat.

1/. S se citeasc de la tastatur un dou nume de directoare dir1 i dir!. S se creeze directorul dir18dir!.

12. S se citeasc de la tastatur numele unui fiier. S se (erifice dac dimensiunea fiierului este multiplu
de 13# i 'n caz negati( s se completeze fiierul cu un numr minim de octei 0 astfel 'nc"t dimensiunea
fiierului s de(in multiplu de 13.

,nexa 9aorator 2
:aela (ectorilor de 'ntrerupere )dat de catalog+
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

Microprocesoare Intel - Descriere i aplicaii

Microprocesoare Intel - Descriere i aplicaii

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