Sunteți pe pagina 1din 60

Sursa de alimentare: +-5V, +-12V, +-3,3V , +5V regimul standby PFC po er !

!a"tor "orre"tion #egimul a"ti$ lu"rea%& pe "ir"uite ele"troni"e automate' regimul pasi$ "ondensatori, indu"tori( so!t are: 1( sisteme opera)ionale *+,S, ,S#, -inu., /ni., 0indo s1 2( programe apli"ati$e *2i"roso!t 0ord, 3."el, et"1 Componente prin"ipale ale "al"ulatorului: 1( 4lo"ul de sistem 2( 2onitorul 3( 5astiera 4lo"ul de sistem: 1( PS/ 2( 24*mot6erboard1 3( F++ *!loppy dis7 dri$e1 8( 9++ *6ard dis7 dri$e1 5( C+ *C+-#,2 *"ite:te, nu ;ns"rie1, C+-# *de ;ns"riere, o dat&1, C+-#01 <( +V+ *+V+-#,2, +V+-#=2, +V+-#, +V+-#01 >( dis"uri 2, ?( di!u%or @( streamer 2ot6er 4oard: 1( CP/ *"entral pro"essing unit1 2( "ipset 3( #=2 *#andom =""ess 2emory1 8( #,2 *#ead ,nly 2emory1 5( memoria "a"6e <( "one"toarele magistralelor *PCA, PCA-3.press, =BP, /S4, Fire ire*13@s1, 0i-Fi, A#+=, 4luetoot61 >( "ontrolere *+2=, #=2, (((1 ?( C,2 port @( -P5 1C( "one"toare PS2 *mouse, 7eyboard1 CP/ - Antel, =2+ 4A,S *4asi" Anput-,utput System1: 1( Fun")iile standarte de intrare-ie:ire 2( Programul de instalare :i restabilire a parametrilor "al"ulatorului *setup1 3( Programul de autotestare a "al"ulatorului la "one"tare *P,S5 po er on sel! test1 8( Programul de ;n"&r"are a sistemului opera)ional $aloarea DCE FG2,8 V $aloarea D1E 2,8+-5V Controlerele dispo%iti$elor, "ontrolerele de intrerupere

A#H interrupt reIuest sunt 25< ni$ele de intrerupere AS# Anterrupt Ser$i"e #outine' pun"tul de intrare in AS# $e"torul intreruperii Fie"are $e"tor de intrerupere are 8 bytes( An total sunt 25<.8G1 74yte( Fie"are intrerupere are urmatoarele prin"ipii: 1( Anainte de e.e"utarea intreruperii memori%ea%a situatia pro"esorului pina la intrerupere 2( Se indepplineste intreruperea 3( ,ri"e intrerupere se termina "u "omanda A#35 Anterrupt #eturn Antreruperile in "al"ulatoarea se impart in 8 "ategorii: 1( Antreruperile pro$enite de la e"6ipament *mas"abile1 2( Antreruperi de la program *programate1 3( Antreruperi de la pro"esor 8( Antreruperi nemas"ate *ne"esita indeplinirea urgenta1 de la 6ard 5oate intreruperile de la 6ard sunt diriJate de "atre "ontrollerul programabil al intreruperilor PAC *Programmable Anterrupt Controller1 1( Antreruperea de la 6ard prin intermediul "ontrollerului sau este transmisa la PAC1 sau PAC2( 2( Controllerul PAC1 sau PAC2 transmite semnalul de intrerupere "atre pro"esor prin intermediul liniei AK5#( 3( An "a%ul "ind 2P nu e.e"uta instru"tiuni, el permite prin intermediul liniei AK5= "atre PAC1 sau PAC2 e.e"utarea A#H( 8( PAC1 sau PAC2 prin intermediul magistralei transmite mi"ropro"esorului numarul intreruperii( 5( CP/ se adresea%a in tabela $e"torilor, determina unde se a!la programul intreruperii date si e.e"uta a"easta intrerupere( An "a%ul "ind CP/ e.e"uta un program si primeste A#H, el "ontinuie un timp oare"are sa e.e"ute instru"tiunile din registrele sale( <( +upa a"easta memori%ea%a situatia data pina la intrerupere si e.e"uta intreruperea( >( +upa a"easta CP/ se adresea%a in memorie, "iteste situatia de pina la intrerupere si "ontiunie e.e"utarea programului( Antreruperile au urmatoarele proprietati: 1( A#H C,1 2( A#H ?-15 2( A#H 3-> A#HC timerul de sistem A#H1 tastiera A#H2 "one"tarea in "as"ada PAC1-PAC2 A#H3 portul serial C,22 A#H8 portul serial C,21 A#H5 portul paralel -P52 A#H< "ontrollerul F++ A#H> portul -P51 A#H? "eas de tip real A#H@, 1C,11, 12 libere

A#H13 "opro"esorul matemati" A#H18 A+31 A#H15 A+32 5ipuri de memorie: 1( memoria semipermanenta *KV-#=2 *non-$olatile #=21, #5C *real time "ontroller1, C2,S *"omplemetary metal-o.id semi"ondu"tor11 2( memoria permanenta #,2 *#,2, P#,2 *programmable #,21, 3P#,2 *3rasable P#,21, /V-3P#,2 *ultra-$iolet 3P#,21, Flas61' #,2 e de <-? ori mai lenta de"it #=2( 3( 2emoria #=2 *++# S+#=2 *133, 1<< 29%1, ++# AA S+#=2 *2CC, 2<<, 333, 8CC 29%1, ++# AAA S+#=2 *8CC, 533, <<>, ?CC 29%1 2emoria #=2 este "ontruita din: 1( 42 *basi" memory1 2( /2= *uni$ersal memory area1 3( 92= *6ig6 memory area1 8( L2S *e.tended memory1 A+3 *integrated +ri$e 3le"troni"s1 =5= *=d$an"ed 5e"6nology =tta"6ment1 P=5= *Parallel =5=1 S=5= *Serial =5=1 SCSA *Small Computer System Anter!a"e1 S=S *Small =tta"6ed SCSA1 /S4 */ni$ersal Serial 4us1 5oate "al"ulatoarele ele"troni"e "ontemporane ne spun atit de parti"ularitati generale, "it si de parti"ularitati proprii( Parti"ularitatile proprii sunt "ara"teristi"e pentru un anumit model de "al"ulatoare si anume ele il !a" sa se deosebeas"a de alte modele mai $e"6i sau mai noi( Parti"ulatiratile generale proprii tuturor "al"ulatoarelor ele"troni"e se datorea%a !aptului "a maJoritatea "al"ulatoarelor "ontemporane sunt "lasi!i"ate la "al"ulatoarele de ar6ite"tura !on Keimann( -a a"este "ara"teristi"e generale se atribuie un prin"ipiu al programului memorat, "on!orm "aruia "odul programului si datele lui sunt pastrate in unul si a"elasi spatiu de adrese in memoria operati$a( =l doilea prin"ipiu este prin"ipiul de mi"roprogramare( Sensul a"estui prin"ipiu "onsta in !aptul "a limbaJul intern al "al"ulatorului in"a nu repre%inta a"ea ultima substanta "are pune in a"tiune pro"esele !i%i"e in sistemul de "al"ul( ="est lu"ru este reali%a de un dispo%iti$ integrat in mi"ropro"esor "are poarta denumirea de Dblo"ul de "ontrol mi"roprogramE, "are pentru !ie"are "al"ulator ele"troni" dispune de o totalitate de semnale "are urmea%a sa !ie generate pentru e.e"utarea unei anumite instru"tiuni interne a "al"ulatorului( =l treilea prin"ipiu organi%area lineara a memoriei( 2emoria "al"ulatorului este !ormata dintr-o "onse"uti$itate de lo"atii de memorie "arora li se atribuie numere !i%i"e C,1,2,((( =l patrulea prin"ipiu e.e"utarea "onse"uti$a a instru"itunilor programului( Con!orm a"estui prin"ipiu, mi"ropro"esorul sele"tea%a din memoria operati$a instru"tiunile intr-o ordine stri"t se"$entiala( ,rdinea instru"tiunilor poate !i s"6imbata, !olosind anumite

miJloa"e din "are !a" parte instru"tiunile de salt ne"onditionat si "onditionat si instru"tiunile de apel si re$enire in pro"edura( =l V-lea prin"ipiu prin"ipiul di!erentei din pun"t de $edere al 2P intre date si instru"tiuni( =tit instru"tiunile "it si datele sunt amplasate in memorie in a"elasi spatiu de adrese( 3.e"utind "ontinutul unor anumite "onseuti$itati de lo"atii de memorie, pro"esorul in"ear"a sa le trate%e "a instru"tiuni *sa le e.e"ute1( +a"a a"est lu"ru este imposibil, atun"i a"este instru"tiuni sunt arun"ate din dispo%iti$ul aritmeti"o-logi" si are lo" terminarea a$ariata a programului( +e a"eea este important sa in program sa !ie separate datele de instru"tiuni( =l VA-lea prin"ipiu indi!erenta din pun"t de $edere a pro"esorului !ta de s"opul !inal al datelor prelu"rate( An"epind "u pro"esoarele Antel ?C8?< in ar6ite"tura 2P a !ost introdus un element nou "are poarta denumirea de linie de asamblare sau "on$eier si "are are drept s"op sporirea "apa"itatii de "al"ul a "al"ulatoarelor( -inia de asamblare dispune de 5 trepte "are impart pro"esul de e.e"utie a instru"tiunii in 5 etape: 1( Sele"tarea instru"tiuni din memoria operati$aM"a"6e 2( +e"odi!i"area instru"tiunii 3( Benerarea adreselor dupa "are sunt determinate adresele operan%ilor din memorie 8( 3.e"utarea operatiei respe"ti$e de "atre dispo%iti$ul aritmeti"o-logi" 5( 2emori%area re%ultatului -o"ul unde $a !i memori%at re%ultatul depinde de algoritmul de e.e"utie al instru"tiunii "on"rete( Sensul !olosirii liniilor de asamblare "onsta in !aptul "a !ie"are treapta a "on$eierului este o"upata o anumita portiune de timp( +upa eliberare, ea poate tre"e la etapa respe"ti$a a altei instru"tiuni( Pro"esoarele "u linii de asamblare poarta denumirea de pro"esoare s"alare( Pro"esoarele "u mai multe linii de asamblare poarta denumirea de pro"esoare super s"alare( 2odelul de program al 2P "ontine 32 registre "are, intr-o masura mai mare sau mai mi"a pot !i a""esate de "atre programator si ele pot !i impartite in 2 grupuri mari: A( 1< registre registrele utili%atorului AA( 1< registre registre de sistem Pe par"ursul programarii in limbaJ de sasmblare registrele se !oloses" !oarte intens, uneori !olosirea lor este obligatorie, maJoritatea registrelor a$ind o destinatie !un"tionala proprie( An regimul real de lu"ru al 2P, in prealabil se !oloses" registrele utili%atorului( #egistrele de sistem sunt !olosite in primul rind pentru mentinerea regimului proteJat de lu"ru al 2P( =""esul utili%atorului la a"este registre este limitat( #egistrele utili%atorului se impart in 3 "ategorii: A( Categoria registrelor generate din "are !a" parte ? registre a "ite 32 biti !ie"are AA( < registre de segment a "ite 1< biti !ie"are AAA( 2 registre de stare si "ontrol de dimensiunea 32biti

#egistrele generale permit adresarea la Jumatatile lor in!erioare sau la registru in intregime( +eoare"e a"este registre sunt integrate in dispo%iti$ul aritmeti"o-logi" ele deseori mai sunt numite registre ale dispo%iti$ului aritmeti"o-logi"( Fie"are din a"este registre are o anumita spe"iali%are in pro"esul de e.e"utare a instru"tiunilor( +e multe ori, !olosirea lor este obligatorie( Numatatile superioare ale a"estor registre nu pot !i a""esate "a obie"te aparte( 3=LM=LM=9M=- - registrul a"umulator este !olosit pentru pastrarea datelor intermediare( Pentru unele instru"tiuni, !olosirea registrului =L este obligatorie, de multe ori ea este impli"ita( 34LM4LM49M4- registru ba%a, se !oloseste pentru pastrarea adresei de ba%a a unui obie"t de memorie( 3CLMCLMC9MC- registru "ontor, se !oloseste in instru"tiunile "are e.e"uta anumite operatii "u "ara"ter iterati$' pentru unele instru"tiuni !olosirea registrului este impli"ita si as"unsa *instru"tiunea loop1( 3+LM+LM+9M+- registrul de date, se !oloseste "a si registrul 3=LM=LM=9M=- pentru pastrarea datelor intermediare' in unele "a%uri, !olosirea a"estui registru e obligatorie, in alte "a%uri impli"ita( /rmatoarele 2 registre sunt !olosite in operatii pe siruri( ,peratiile pe siruri sunt operatiile "are se e.e"uta asupra unor "onse"uti$itati de elemente de lungime !i.a de ?, 1<, 32 biti( 3SAMSA sour"e inde. register' in operatiile pe siruri a"est registru pastrea%a adresa elementului "urent in sirul sursa( 3+AM+A destination inde. register' in a"est registru se pastrea%a adresa elementului "urent in sirul destinatie pentru operatiile pe siruri( Pentru lu"rul "u sti$a: 3SPMSP sta"7 pointer register' pastrea%a adresa $ir!ului sti$ei in segmentul "urent de sti$a( 34PM4P base pointer register' registrul indi"atorului ba%ei "adrului de sti$a, are drept s"op !olosirea a""esului aleator la datele din sti$a( +esi !ie"are din a"este registre au o spe"iali%are !un"tionala, pentru maJoritatea instru"tiunilor, a"easta spe"iali%are nu este o piedi"a pentru a le !olosi in alte s"opuri(

#egistrele de segment 2P Antel "ontine < registre de segment de dimensiune 1< biti( ="este registre sunt: CS, SS,+S,3S, BS si FS( Pre%enta a"estor registre de segment in ar6ite"tura 2P este "onditionata de spe"i!i"ul organi%arii memoriei operati$e si utili%arii ei de "atre 2P( ="est spe"i!i" "onsta in !aptul "a la ni$el de 6ard, 2P poate opera "u programe organi%ate dub

!orma a 3 parti numite segmente( #espe"ti$, modul de organi%are al memoriei in a"est "a% poarta denumirea de memorie segmentata( -ogi"a e."utarii !ie"arei instru"tiuni interne este "onstruita ast!el in"it pentru alegerea instru"tiunii *a""esul datelor sau a""esarea sti$ei1 se !oloses" adrese "are sint apelate in anumite registre de segment( 2P Antel poate opera "u urmatoarele tipuri de segmente: A( Segmentul de "od( ="est segment "ontine instru"tiunile programului( Pentru a""esarea segmentului de "od este !olosit CS *"ode segment register1( 3l pastrea%a adresa segmentului de memorie unde sunt amplasate instru"tiunile progrmului "are sint e.e"utate de 2P( =nume din a"est segment sint sele"tate instru"tiunile "are urmea%a sa !ie transmite la intrarea liniei de asamblare a 2P( AA( Segmentul de date( Pastrea%a datele "are urmea%a sa !ie prelu"rate de program( Pentru a""esarea segmentului de date ser$este +S *data segment register1( 3l pastrea%a adresa segmentului de date al programului "urent( AAA( Segmentul de sti$a( #epre%inta o %ona de memorie "are este !olosita de "atre 2P pentru pastrarea temporara a datelor si transmiterea parametrilor in memorie( -u"rul "u a"easta %ona de memorie este organi%at dupa prin"ipiul: ultimul element ins"ris este e.tras primul( Pentru a""esarea segmentului de sti$a se !oloseste SS *sta"7 segment register1 "are pastrea%a adresa segmentului de sti$a( AV( Segmentele suplimentare de date *e.tra segmentele de date1( An mod impli"it, programul prelu"rea%a datele din segmentul de date adresa "aruia este pastrata in registrul +A( An unele "a%uri este insu!i"ient un singur segment de date( An a"este "a%uri pot !i !olosite suplimentar de la 1-3 segmente suplimentare de date( =dresele a"estor segmente suplimentare de date sunt indi"ate in registrele 3S, BS, FS( Spre deosebire de "a%ul !olosirii unui singur registru +S, adresa "aruia e utili%ata impli"it, in "a%ul !olosirii segmentelor suplimentare de date, adresele segmentelor suplimentare urmea%a sa !ie indi"ate in mod e.pli"it !olosind anumite pre!i.e de reorientare a segmentelor in instru"tiune( #egistrele de "ontor si stare -a "ategoria a"easta sunt atribuite 2 registre: A( #egistrul 3F-=BSMF-=BS AA( #egistrul indi"ator de instru"tiune 3APMAP

#egistrul 3APMAP are dimensiunea 32M<8 biti si poarta denumirea de registru indi"ator de instru"tiune *instru"tion pointer1( ="este registru pastrea%a plasamentul urmatoarei instru"tiuni de indeplinit( #e!eritor la "ontinutul registrului CS in "adrul segmentului "urent de "od, a"est registru nu este a""esibil in mod e.pli"it programatorului si modi!i"area "ontinutului a"estui registru du"e la modi!i"area ordinii e.e"utarii instru"tiunilor din program( ="est lu"ru poate !i !a"ut prin intermediul instru"tiunilor de salt ne"onditionatM"onditionat si a instru"tiunilor de apel si re$enire in pro"edura( An "a%ul aparitiei intreruperilor se du"e la modi!i"area "ontinutului registrului(

#egistrul !anioanelor 3F-=BSMF-=BS #egistrul 3F-=BSMF-=BS are dimensiunea 32M1< biti si pentru pro"esoarele 32 biti partea interioara a registrului 3F-=BS "oin"ide "u registrul F-=BS al pro"esoarelor pe 1< biti( #eiesind din parti"ularitatile de !olosire, !anioanele registrului 3F-=BSMF-=BS pot !i impartite in 3 "ategorii *!anioanele sint anumiti biti aparte ai a"estui registru "are au destinatie !un"tionala tri"t determinata1: A( ? !anioane de stare( ="este !anioane au proprietatea de a-si s"6imba starea in re%ultatul e.e"utarii unor operatii aritmeti"eMlogi"e( ="est lu"ru permite programatorului sa anali%e%e starea pro"esului de "al"ul si sa rea%tione%e in "a% de ne"esitate asupra lui prin intermediul instru"tiunilor de salt "onditionatMne"onditionat si a instru"tiunilor de apel de pro"edura( ="este !anioane sunt numite !anioanele aritmeti"e( AA( Fanionul de "ontrol +F *dire"tory !lag1 "are este !olosit in instru"tiunile de prelu"rare a sirurilor de elemente pentru indi"area dire"tiei de par"urgere a sirurilor *primul -O ultimul,ultimul -O primul1 AAA( 5 !anioane de sistem "are gestionea%a pro"esele de intrareMiesire, intreruperile mas"abile, pro"esul de depanare "u mutarea intre di!erite progrmeMprobleme si regimul $irtual al 2P ?C?<( Programelor apli"ati$e le este "ontraindi"at sa modi!i"e !ara ne"esitate starea a"estor !anioane deoare"e a"est lu"ru, in maJoritatea "a%urilor du"e la intreruperea e.e"utiei programului si arun"area lui din memorie( Fanioanele de stare: 1( Primul !anion o"upa bitul C *CF "arry !lag1( Aa $aloarea 1 da"a in re%ultatul unei operatii aritmeti"e a a$ut lo" un tras!er in bitul superior al re%ultatului( 4itul superior al re%ultatului >, 15, 31( 2( Parity !lag !anionul de paritate( ="est !anion se re!era doar la primii ? biti in!oriori ai operan%ilor( Aa $aloarea 1 da"a da"a in a"esti ? biti in!eriori se "ontine un nr par de biti setati pe 1 si este setat pe C da"a ? biti in!eriori ai re%ultatului "ontin un nr impar de biti setati pe 1( 3( =u.iliary !lag *!anionul au.iliar de trans!er1( ="est !anion este luat in "onsideratie doar in operatiile "u numere de !ormat 4C+( ="est !anion !i.ea%a !aptul imprumutului sau tras!erului dinMin bitul superior sau in$ers si este po%itionat pe C da"a nu au a$ut lo" trans!eruri( 8( PF %ero !lag *!anionul de C1( 3ste po%itionat pe 1 da"a re%ultatul obtinul e C si pe C da"a re%ultatul obtinut e di!erit de C( 5( Sign !lag !anionul de semn( ="est !anion re!le"ta starea bitului superior al re%ultatului, adi"a bitul >, 15, 31( +a"a bitul superior este 1, atun"i sign !lag ia $aloarea 1l da"a bitul superior este C, atun"i sign !lag ia $aloarea C(

<( ,F !anionul de suprain"ar"are( 3ste !olosit pentru !i.area !aptului pierderii bitului superior in re%ultatul e!e"tuarii unor operatii artmeti"e( 3ste po%itionat pe 1 da"a in re%ultatul e!e"tuarii unor operatii aritmeti"e are lo" un trans!erMimprumut inMdin bitul superior al re%ultatului in "a%ul operatiilor "u semn si e po%itionat pe C da"a in re%ultatul unei operatii aritmeti"e nu a a$ut lo" un trans!erMimprumut inMdin bitul superior de semn al re%ultatului( >( A,P- input output pri$ilege le$el( ="est !anion este !olosit in regimul proteJat de lu"ru al 2P pentru "ontrolul a""esului la instru"tiunile de intrareMiesire in dependenta de proritatea programului( ?( Kested test a"est !anion este !olosit in regimul proteJat de lu"ru al 2P pentru !i.area !aptului "a o problema e impli"ata in alta( Fanioanele de sistem 1(5ra"e !lag este !olosit pentru tre"erea 2P in regim de e.e"utie a instru"tiunilor pas "u pas( ="est regim poate !i !olosit in "a%ul depanarii programulor deoare"e dupa e.e"utia !ie"arei instru"tiuni este generata instreruperea "u nr( 1( Aa $aloarea 1 "ind 2P e in regimul pas "u pas, C - "ind e in regim normal( 2( Anterrupt !lag ="est !anion este !olosit pentru permitereaMinter%i"erea intreruperilor de 6ard( Po%itionat pe 1 intreruperile sunt admise, "ind e po%itionat pe C intreruperile sunt inter%ise( 3( #esume !lag !anionul de reinnoire( ="est !anion este !olosit pentru prelu"rarea intreruperilor de la registrele de depanare( 8( Virtual ?C?< mode !aionul pro"esorului $irtual ?C?<( 3 po%itionat pe 1 "ind 2P se a!la in regimul de lu"ru al ?C?<( 3 po%itionat pe C da"a lu"rea%a in regim real sau proteJat( 5, =llignment "6e"7 e !olosit pentru permiterea "ontrolului alinierii in "a%ul adresarii la memorie( 3l este !olosit impreuna "u un anumit bit *=21 al registrului de sistem C#( ,rgani%area memoriei 3.ista mai multe modele de organi%are a memoriei pentru 2P Antel( 2emoria !i%i"a pe "are o poate a""esa 2P prin magistrala de adrese poarta denumirea de memoriea operati"a( -a "el mai Jos ni$el, memoria operati$a a "al"ulatorului ele"troni" repre%inta un masi$ de biti *binary digit1( 4itul este o "elula elementara de memorie "are poate a$ea una din 2 stari stabile si una din a"este stari este "onsiderata drept C, iar alta stare 1( Pentru reali%area !i%i"a a bitilor si lu"rul "u ei sint !olosite s"6emele logi"e( 2P este "onstituit ast!el in"it el nu poate gestiona memoria operati$a a "al"ulatorului la ni$el de $iti, de a"eea memoria operati$a este organi%ata "a o "onse"uti$itate de lo"atii in memorie, !ie"are "ontinind ? biti "onse"uti$i *o"tetiMbytes1( Fie"arui o"tet ii "orespunde o adresa uni"a "are "orespunde "u nr a"estui o"tet si poarta denumirea de adresa !i%i"a( +iapa%onul adreselor !i%i"e "are pot !i adresate de "atre 2P la magistrala di!era de la model la altul si depinde de nr de linii sau

dimensiunea magistralei de adrese( Pentru 2P pe ?2 biti, a"est diapa%on de adrese os"ilea%a in limitele C *2Q32 -11 "e "onstituie 8 Bb de memorie operati$a( 2e"anismul de gestionare a memoriei este automat si implementat la "el mai Jos ni$el al 2P, din "are !apt programele nu-si pot singure !orma adresa !i%i"a pe maistrala de adrese si sint impuse sa a""epte regulile de Jo" upa "are lu"rea%a 2P( 2e"anismul de adresare al memoriei !i%i"a implementat in 2P intel asigura urmatoarele lu"ruri: 1( Pastrarea "ompa"ta a adreselor in "adrul instru"tiunii 2( Fle.ibilitatea me"anismului de adresare a memoriei 3( Prote"tia spatiilor de adrese a programelor in sistemele de multiprogram( 8( Posibilitatea organi%arii memoriei $irtuale Printre modelele de memorie mentinute de "atre 2P, "el mai des sunt !olosite 2 si anume: 1( 2odelul memoriei segmentate 2( 2odelul memoriei pe pagini An modelul memoriei segmentate, intregul $olum de memorie operati$a se imparte in domenii "ontinui de memorie *segment1( Ansasi programele pot adresa doar datele "are sint amplasate in "adrul a"estor segmente( 2odelul memoriei paginate repre%inta o suprastru"tura "onstruita in ba%a modelului memoriei segmentate in "are memoria operati$a este interpretata "a o "onse"uti$itate de blo"uri de dimensiune !i.a de memorie a "ite 8Rb !ie"are( Prin"ipala utili%are a modelului memoriei paginateeste organi%area memoriei $irtuale "are permite sistemului de operare sa !oloseas"a pentru lu"rul programelor un $olum de memorie mult mai mare de"it $olumul memoriei !i%i"e reale( Pentru 2P de 32 biti $olumul memoriei $irtuale posibile e de 8 5b( Parti"ularitatile de reali%are si utili%are a"estor modele depind de regimul de lu"ru al 2P( 2P "ontemporane au 3 regimuri de lu"ru: 1( #egimul real *regimul adreselor reale1 este regimul in "are lu"ra pro"esorul original ?C?<( Pre%enta a"estui regim in 2P "ontemporane e "onditionat de !aptul "a !irma Antel tinde sa pastre%e "ompatibilitatea programelor s"rise pentru ele( 2( #egimul proteJat de lu"ru al 2P( =pare pentru prima data in modelul Antel ?C2?<( =nume aparitia regimului proteJat de lu"ru a permis reali%area ma.imala a ideilor ar6ite"turale implementate de Antel in pro"esoarele sale in"epind "u modelul ?C2?<( Programele s"rise pentru regim real nu pot !i e.e"utat in regimul proteJat de lu"ru din moti$ul me"anismului de!irit de !ormate a adreselor !i%i"e in a"este 2 regimuri( 3( #egimul pro"esorului $irtual ?C?<( 5re"erea n regimul $irtual a ?C?< este posiila numai da"a 2P se a!la deJa in regimul proteJat de lu"ru( Prin"ipala parti"ularitate a regimului $irtual ?C?< este posibilitatea e.e"utarii simultane a mai multor programe elaborate pentru regimul real ?C?<( Ke"atind la !aptul "a 2P se a!la in regim proteJat de lu"ru, me"anismul de !ormare a adreselor !i%i"e este a"elasi "a si pentru regimul real de lu"ru( 2odelul memoriei segmentate: Segmentarea memoriei repre%inta un me"anism de adresare a memoriei !i%i"e "e asigura pre%enta "on"omitenta a mai multor spatii independente de adrese atit in "adrul unui

program, "it si in "adrul sistemului de "al"ul in intregime o!losit pentru prote"tia programelor de in!luenta re"ipro"a( -a ba%a me"anismului de segmentare sta notiunea de segment de memorie "are repre%inta un blo" de memorie independent "are este gestionat de "atre 2P la ni$el de 6ard *"el mai Jos ni$el1( Pentru 2P Antel este !olosita o abordare deosebita a me"anismului de gestionare a memoriei( Pentru a"easta, se o!loses" registrele de segment( An "a% general, un program poate !i "onstituit dintr-un nr arbitrar de segment, dar nemiJlo"it el poate a""esa doar 3 "on"omitent: segmentul "urent de "od, segmentul "urent de date si segmentul "urent de sti$a( =dresele de in"eput a a"estor segmente sunt amplasate respe"ti$ in registrele CS, +S si SS( Programul ni"iodata nu "unoaste adresele dupa "are $or !i amplasate in memorie segmentele sale( ="est lu"ru este prerogati$a sistemului de operare( Sistemul de operare amplasea%a segmentele programului in memoria operati$a in"epind "u anumite adrese, $alorile "arora sunt amplasate in anumite lo"uri( ="este lo"uri sunt determinate de regimul de lu"ru al 2P si anume in regimul real, ele sunt amplasate in registrele respe"ti$e de segment, iar in regimul proteJat de lu"ru ele sunt elementele unui tael spe"ial numit tael al des"riptorilor de sistem( An interiorul segmentului, programul se adresea%a la lo"atiile de memorie din segment in mod linear *in"epind "u adresa C -O s!irsitul segmentului1( ="easta adresa relati$a sau deplasament in "adrul segmentului !olosit de "tre 2P pentru a""esarea datelor in interiorul segmentului poarta denumirea de adresa e!e"ti$a( Prin adresa "riti"a se are in $edere adresa transmisa spre magistrala de adrese( , alta denumire a a"estei adrese adresa lineara( ="easta dualitate in denumire e "onditionata de !aptul "a mai e.ista si modelul de organi%are a memoriei pe pagini( ="este 2 denumiri sunt sinonime doar in "a%ul "ind e de"one"tat regimul memoriei paginte *"ind 2P lu"rea%a in regim real1( An regimul real de !un"tionare al 2P, me"anismul de adresare al memoriei !i%i"e are urmatoarele "ara"teristi"i: 1( diapa%onul de adrese pe "are il poate adresa 2P se a!la in limitele C -O 1 2b *C -O 2Q2C -11( ="east limita este "onitionata de !aptul "a magistrala de adrese a 2P Antel i?C?< are 2C linii( 2( dimensiunea ma.ima a segmentului e de <8 7b *C -O 2Q1< -11( 3( pentru adresarea unei adrese !i%i"e "on"rete a memoriei operati$e sunt ne"esare 2 adrese: adresa de in"eput a segmentului si deplasamentu in "adrul segmentului respe"ti$( 5inind "ont de !aptul "a "omponenta de segment a adresei *ba%a de segment1 "onstituie o $aloare pe 1< biti "are e amplasata intr-unul din registrele de segment aJungem la "on"lu%ia "a putem adresa doar 2Q1< -1 o"teti( 5inind "ont de a"est !apt, apare intrearea "um poate !i adresat un spatiu de memorie mai mare de <8 7b pina la 12b in"lusi$, tinind "ont de !altul "a dimensiunea ma.imala e de <8 7b( ="easta problrma a !ost solutionata in !elu urmator in registrul respe"ti$ de segment se pastrea%a doar 1< biti superiori ai adresei !i%i"e a in"eputului segmentului( Cielalti 8 biti in!eriori "are nu aJung pina la o adresa pe 2C biti se obtin prin deplasarea $alorii in registrul de segment in stinga "u 8 iti la "are se adauga o adresa *deplasament1 "are poate !i "apatat din instru"tiune dintr-un registru de a%a sau dintr-un registru indi"ator( An re%ultat obtinem o adresa pe 2C biti "are si repre%int adresa reala "e "orespunde in"eputului segmentului( ="est lu"ru este reali%at automat de "atre 2P si este absolut transparent pentru programe( =nume a"est me"amism asigura portabilitatea programelor, adi"a posibilitatea de a e.e"uta programele

pe di!erite modele de "al"ulatoare si operea%a sub gestiunea sistemelor de operare din a"eeasi !amilie( An dependenta de !aptul unde se a!la a doua "omponenta "are parti"ipa la !ormarea adresei pe 2C biti pot !i e$identiate mai multe moduri de adresare *prin registre, ba%ata, et"1( -a maJoritatea modelelor de 2P, indi!erent de !aptul "a ele sint pe 1< sau 32 biti, atita timp "it 2P se a!la in regimul real de lu"ru, adresa !i%i"a se !ormea%a dupa a"elasi me"anism, adi"a la pro"esoarele pe 32 biti in regimul real de lu"ru, 12 linii superioare ale magistralei sunt blo"ate( +esi e.ista posibilitatea a""esarii in anumite "onditii a unui segment de <8 7b de memorie amplasati imediat dupa primul 2b de memorie( 2odelul memoriei segmentate are urmatoarele neaJunsuri: 1( Segmentele se amplasea%a in memorie in mod arbitrar pe adrese multiple ale 1<, prin urmare programele se pot adresa la adrese arbitrare, in"lusi$ si la adrese ine.istente( 2( +imensiunea segmentului e limitata la <8 Rb( 3( Segmentele se pot inter"ala intre ele( =nume a"este neaJunsuri au !ost li"6idate in regimul proteJat de lu"ru al 2P "are apare pentru prima data la 2P Antel ?C2?<(

5ipuri de date: Kotiunea de tip de date pentru 2P Antel are "ara"ter dual( +in pun"t de $edere al dimensiunii registrelor 2P la ni$el !i%i" sunt intretinute urmatoarele tipuri de date: 1( o"tetul ? biti "onse"uti$i numrotati de la C la >( itul C poarta denumirea de bitul in!erior al o"tetului, bitul > bitul superior( 2( "u$intul 2 o"teti "onse"uti$i bitii "aror sunt numerotati de la C la 15( ,"tetul "are "ontine bitul "u nr C poarta denumirea de o"tet in!erior al "u$intului( ,"tetul "are "ontine bitul "u nr 15 poarta denumirea de o"tet superior al "u$intului( =dresa "u$intului e "onsiderata adresa o"tetului in!erior( 3( "u$intul dublu o "onse"uti$itate de 8 o"teti, numerotati de la C la 31( Cu$intul "are "ontine bitul C "u$int in!erior al "u$intului dublu, "el "are "ontine bitul "u nr 31 "u$int superior( Cu$intul in!erior adresa in!erioara( Cu$intul superior adresa superioara( =dresa "u$intului dublu adresa "u$intului in!erior( =dresa "u$intului superior poate !i !olosita pentru adresarea Jumatatii superioare a "u$intului dublu( 8( Cu$intul "uadruplu o "onse"uti$itate de ? o"teti, bitii "arora sunt numerotati de la C -O<3( Cu$intul sublu "are "ontine bitul C G "u$intul sublu in!erior al "u$intului "uadruplu( Cu$intul dulu "are "ontine bitul <3 G "u$intul duble superior al "u$intului "uadruplu( =dresa "u$intului "uadruplu G adresa "u$intului sau dublu in!erior( =dresa "u$intului dulu superior poate !i !olosita pentru adresarea Jumatatii superioare a "u$intului "uadruplu( ="este tipuri de date au o tratare logi"a( -a ni$el logi", 2P poate opera "u urmatoarele tipuri de date: 1(Kr intreg "u semn *?, 1<, 32 biti1( Pentru a"est tip de date, bitul superior este "onsiderat it de semn( +a"a bitul superior ia $aloarea C se "onsidera "a nr( binat respe"ti$ e po%iti$' da"a bitul superior ia $aloarea 1, atun"i nr binat respe"ti$ negati$( +iapa%oanele de $alor

"are pot !i repre%entate in a"est "a% sunt: -12? -O +12> * pe ? biti1, -32><? -O +32><> * pe 1< biti1, -*2Q311 -O *+2Q311 -1 *pe 32 biti1( 2( Kr intregi !ara semn *?, 1<, 32 biti1( +iapa%onul de $alori: C -O255 *pe ? biti1, C -O <5535 * pe 1< biti1, C -O 2Q32 -1 *pe 32 biti1( 3( Andi"atorii *pointeri1 "are pot !i de 2 tipuri: - apropiat * repre%inta o $aloare logi"a pe 32 biti "e repre%inta un deplasament relati$ in o"teti !ata de in"eputul segmentului1' - indepartat *repre%inta o adresa logi"a pe 8? biti "are "onsta din 2 "omponente: "omponenta de segment pe 1< biti *sele"tor1 si deplasamentul in "adrul segmentului relati$ la in"eputul segmentului *32 biti1' 8( Sirul "onse"uti$itate arbitrara de o"teti, "u$inte sau "u$inte duble de lungime ma.ima 8Bb( 5( Cimpul de biti "onse"uti$itate neintrerupta de biti in "are !ie"are bit este independent si poate !i interpretat "a o $ariabila aparte( Cimpul de biti poate in"epe "u ori"e bit a unui o"tet si are lungimea ma.imala de 32 biti( <( 4C+ *inary "oded de"imal1 neimpa"6etat, "are !oloseste un o"tet pentru repre%entarea "i!relor %e"imale de la C la @( Kr 4C+ neimpa"6etate se pastrea%a "a nr !ara semn pre%entate pe 1 o"tet in tetrada in!erioara a a"estuia *primii 8 biti in!eriori ai o"tetului1( >( 4C+ impa"6etat repre%inta pastrarea a 2 "i!re %e"imale de la C la @( Fie"are "i!ra se pastrea%a in tetrada sa, "i!ra in!erioara se pastrea%a in tetrada C -O3, iar "i!ra superioara in tetrada bitilor 8-O>(

Formatul instru"tiunilor( 2odurile de indi"are a operan%ilor( Programarea la ni$elul instru"tiunilor interne este ni$elul minimal la "are mai poate !i programat un "al"ulator( Sistemul de instru"tiuni interne este "on"eput ast!el in"it el sa !ie su!i"ient pentru a reali%a a"tiunile ne"esare, indi"ind partii 6ard a "al"ulatorului semnalele si indi"atiile ne"esare( Fie"are instru"tiune interna a 2P "onsta din 2 parti: partea operationala, "are determina "e a"tiune sa !ie e.e"utata si a doua parte: partea operan%ilor "are indi"a obie"tele asupra "arora a"easta a"tiune urmea%a sa !ie e.e"utata( 5oata a"easta in!oratie urmea%a sa !ie "odi!i"ata in !ormati%ata intr-un anumit mod( An instru"tiunile interne ale 2P, in mod e.pli"it sau impli"it intra urmatoarele elemente: 1( "impul pre!i.elor *pre!i. un element al instru"tiunii "are pre"i%ea%a sau modi!i"a a"tiunea instru"tiunii sub urmatoarele aspe"te: - inlo"uirea segmentului a"a din anumite "onsiderente nu ne satis!a"e segmentul impli"it' - modi!i"a dimensiunea adresei' - modi!i"a dimensiunea operan%ilor' - indi"a la ne"esitatea repetarii instru"tiunii date'

2( "impul "odului operatiei: a"est element determina a"tiunea instru"tiunii date( /na si a"eeasi instru"tiune poate a$ea mai multe "oduri ale operatiei in dependenta de operan%ii sai( 3( "impul operan%ilor poate "ontine C,1,2 elemente( , parti"ularitate importanta a instru"tiunilor interne a 2P este !aptul "a ele nu pot opera "on"omitent "u 2 operan%i in memoria operati$a( ="easta inseamna "a in instru"tiune in "alitate de operan%i poate !i !olosit un registru sau 1 registru si 1 operand "are poate !i ori o $aloare imediata sau un operand a!lat in memorie( +in a"est "onsiderent e posibila urmatoarea "ombinare a operan%ilor: - registru-registru - registru-memorie - memorie-registru - operand imediat-registru - operand imediat-memorie Anstru"tiunile interne ale "al"ulatorului repre%inta stru"turi "odi!i"ate intr-un anumit mod pentru 2P destinate e.e"utarii unei anumite operatiiMa"tiuni din partea a"estuia( ,ri"e instru"tiune "ontine un sir de elemente "are determina: 1( "e a"tiune urmea%a sa !ie e.e"utata de 2P( #aspunsul la a"easta intrebare ne indi"a "odul operatiei' 2( obie"tele asupra "are urmea%a sa !ie e.e"utata operatia sau a"tiunea *operan%i1' 3( modalitatea e.e"utarii operatieiMa"tiunii( ="est lu"ru e spe"i!i"at de tipul operan%ilor "are, de regula, este impli"it( -ungimea ma.imala a unei instru"tiuni interne e de 15 o"teti( An realitate, instru"tiunea poate "ontine un nr mult mai mi" de o"teti si poate "onsta dintr-un singur element *"odul operatiei1(

Pre!i.ele Pre!i.ele sunt elemente neobligatorii ale instru"tiunilor "are, in "a% "a e.ista, o"upa un o"tet( An memoria "al"ulatorului, pre!i.ele sunt amplasate inaintea instru"tiunilor( S"opul pre!i.elor este modi!i"area operatiei e.e"utate de instru"tiune( Pot !i utili%ate urmatoarele tipuri de pre!i.e: 1( Pre!i.ul de onlo"uire a segmentelor( Pre%enta a"estui pre!i. in mod e.pli"it indi"a "are anume registru de segment $a !i !olosit in instru"tiunea data pentru adresarea datelor si a sti$ei( ="est pre!i. anulea%a !olosirea de "atre instru"tiune a registrelor impli"ite( Pre!i.ele de inlo"uire a segmentelor au urmatoarele $alori: - 2e6 inlo"uirea segmentului impli"it CS - 3<6 inlo"uirea segmentului impli"it SS - 3e6 - inlo"uirea segmentului impli"it +S - 2<6 - inlo"uirea segmentului 3S - <86 - inlo"uirea segmentului FS - <56 - inlo"uirea segmentului BS

2( Pre!i.ul de dimensiune a adresei( ="est tip de pre!i. "on"reti%ea%a dimensiunea adresei *32 sau 1< biti1( Fie"arei instru"tiuni "are !oloseste un operand adresa i se pune in "orespondenta dimensiunea adresei a"estui operand *1< sau 32 biti1( +a"a dimensiunea adresei pentru instru"tiunea data e indi"ata "a !iind de 1< biti, a"easta insteamna "a instru"tiunea "ontine un deplasament pe 1< biti "are "orespunde unui deplasament pe 1< biti al operandului adresa relati$ "u in"eputul unui oare"are segment de memorie( +a"a dimensiunea adresei e de 32 bti, atun"i instru"tiunea "ontine un deplasament pe 32 biti al operandului adresa relati$ "u in"eputul unui segment si in ba%a $alorii aestui deplasament se "al"ulea%a deplasamentul in "adrul segmentului( Cu aJutorul pre!i.ului de dimensiune a adresei poate !i modi!i"at regimul de adresare impli"it si a"easta modi!i"are $a a!e"ta doar a"ea instru"tiune "are e pre"edata de a"est pre!i.( 3( Pre!i.ul de dimensiune a operan%ilor( ="est pre!i. este similar pre!i.ului de dimensiune a adresei, dar indi"a dimensiunea operan%ilor de 32 sau 1< ti "u "are $a opera instru"tiunea( 3.ista anumite reguli "on!orm "arora sunt stabilite $alorile impli"ite ale dimensiunii adreselor si operan%ilor in mod impli"it( An regimul real si in regimul $irtual ?C?< $aloarea impli"ita e de 1< biti( An regimul proteJat de lu"ru, $aloarea a"estor atribut depinde de starea bitului + in des"riptorii segmentelor e.e"utabile( +a"a a"est bit e C, atun"i $aloarea atributelor impli"ite e de 1< biti, da"a insa a"est bit este egal "u 1, atun"i se "onsidera dimensiunea de 32 biti( Valorile respe"ti$e ale atributului de dimensiune sint pentru dimemsiunea operandului <<6, iar pentru lu"rul 2P poate !i !olosit regimul de adresare pe 32 biti, ar se tine "ont de !aptul "a dimensiunea segmentelor e limitata la <8 Rb( 8( Pre!i.ul de repetare( Pre%enta a"stui tip de pre!i. in instru"tiune indi"a instru"tiunii "a ea trebuie sa-si repete a"tiunea pentru mai multe elemente sau toate elementele unui sir( Sistemul de instru"tiuni al 2P Antel "ontine 2 tipuri de pre!i.e de repetare ne"onditionata: - #3P C!36 * impune instru"tiunea sa se repete un anumit nr de ori1' - #3P3M#3PP C!26 *in momentul repetariiMe.e"utarii operatieiMinstru"tiunii $eri!i"a starea anumitor !anioane, in re%ultatul "areia e posibila iesirea pre"o"e din "i"lu1' Codul operatiei Codul operatiei e un element obligatoriu al ori"arei instru"tiuni si anume el des"rie operatia e.e"utata de instru"tiuni( 2ai multe instru"tiuni au "ite$a "oduri ale operatiei, !ie"are din a"este "oduri determina anumite nuante de e.e"utare a operatiei( Codul operatiei o"upa unul sau 2 o"teti( /rmatoarele "impuri ale instru"tiunii determina lo"ul operan%ilor "are parti"ipa la operatie si parti"ularitatile e.e"utarii lor: - ,"tetul regimului de adresare mod rMm ="est "imp nu este obligatoriu, iar in "a%ul "ind e pre%ent o"upa 1 o"tet( Valoarea a"estui "imp determina !orma de adresare a operan%ilor(,peran%ii pot !i amplasati in memorie in 1 sau 2 registre( +a"a operandul se a!la in memorie, atun"i a"est o"tet dettermina "omponentele ne"esare pentru "al"ularea adresei e!e"ti$e a operandului *deplasamentul registrul ba%a si registrul indi"ator1( ="est o"tet are urmatoarele "impuri *elemente1: 1( bitii C-O3 rMm 2( "impul al doilea regM"op o"upa bitii 3,8,5

3( mod <-O> Cimpul regM"op determina ori un registru "are se a!la in instru"tiune pe lo"ul primului operand ori o e.tindere posibila a "odului operatiei( Cimpul rMm este !olosit impreuna "u "impul mod si determina ori un registru *pe lo"ul A-lui operand1 ori este !olosit pentru "al"ularea adresei e!e"ti$e impreuna "u "impul deplasament in instru"tiune( /rmatorul element al instru"tiunii e o"tetul SA4, "are nu e obligatoriu' in "a% "a e.ista o"upa 1 o"tet( ="est o"tet e !olosit in instru"tiune pentru e.tinderea posibilitatilor de adresare a operan%ilor( Pre%enta a"estui o"tet in instru"tiune e indi"ata de $aloarea C1 sau 1C a "impului mod in o"tetul regimului de adresare si a $alorii "impului rMm in a"est o"tet 1CC( ,"tetul SA4 "onsta din 3 "impuri: "impul base "are o"upa bitii C,1,2' "impul inde% "are o"upa bitii 3,8,5 si "impul SS "are o"upa bitii <,>( Cimpul base se !oloseste pentru pastrarea nr registrului ba%a "are $a !i !olosit pentru "al"ularea adresei e!e"ti$e a operandului( An "alitate de registru ba%a sau regigstru indi"ator poate !i !olosit ori"are din regigstrele generale( Cimpul inde. se !oloseste pentru pastrarea nr registrului indi"ator, "are se !oloseste pentru "al"ularea adresei e!e"ti$e a operandului( An "impul SS *de s"alabilitate1 este amplasat un "oe!i"ient de multipli"are pentru "omponenta inde. din itii 3,8,5( An a"est timp poate !i pastrata una din urmatoarele $alori: 1,2,8,?( ="este $alori sunt !olosite la "al"ularea adresei e!e"ti$e, anume "u una din a"este $alori se $a inmulti "ontinutul registrului indi"ator( 2odurile de indi"are a operan%ilor in instru"tiuni *regimuri de adresare1: 1( =dresarea dire"ta 2( =dresarea ba%ata indire"ta *prin registre1 3( =dresarea ba%ata indire"ta *prin registre1 "u deplasament 8( =dresarea indire"ta inde.ata "u deplasament 5( =dresarea indire"ta ba%ata inde.ata <( =dresarea indire"ta ba%ata inde.ata "u deplasament An a!ara de "impurile "er"etate mai sus in instru"tiune mai pot !i pre%ente urmatoarele elemente*"impuri1: 1( Cimpul deplasamentului in instru"tiune "are, da"a e pre%ent, o"upa 1, 2, sau 8 o"teti' "ontine un deplsasment pe ?, 1<, sau 32 biti "e e.prima in intregime sau partial $aloarea adresei e!e"ti$e a operandului( 2( Cimpul operandului nemiJlo"it *imediat1 "are, "ind e pre%ent, poate o"upa 1, 2 sau 8 o"teti si in "a% "a e.ista, e.prima o $aloare nemiJlo"ita pe ?, 1<, sau 32 biti( Pre%enta a"estui "imp in instru"tiune e re!le"tata in o"tetul mod rMm( +e !ie"are data, la anali%a instru"tiunilor, in$oluntar apare problema amplasarii operan%ilor( =nume lo"ul amplasarii operan%ilor si se re!le"ta asupra "elorlaltor "ompuri ale instru"tiunii( 3.ista urmatoarele modaliitati de amplasare a operan%ilor:

1( ,perandul e indi"at in mod impli"it la ni$el de mi"ro"od( An a"est "a%, instru"tiunea nu soli"ita indi"area operan%ilor( =lgoritmul de e.e"utare a instru"tiunii in a"est "a% !oloseste anumite obie"te *registrele sau !anioanele registrului !anioanelor 3F-=BSMF-=BS1 3.emplu: Anstru"tiunile C-A, S5A sau instru"tiunea L-=5( Primele 2 instru"tiuni impli"it lu"rea%a "u !anionul AF iar instru"tiunea L-=5 impli"it se adresea%a in registrul =- si la n sir de simboluri din memorie, adresa "aruia e determinata de o pere"6e de registre +L, 4L( 2( ,perandul e indi"at in insusi instru"tiune( An a"est "a%, operandul se a!la in instru"tiune, adi"a e o parte "omponenta a ei( Pentru pastrarea unui asemenea operand in instru"tiune se re%er$ea%a un "imp de memorie de lungime ma.ima 32 biti( ,perandul nemiJlo"it poate !i doar operandul de pe lo"ul 2( 3( ,perandul poate !i amplasat in unul din registre( An a"est "a%, operan%ii sunt repre%entati de numele registrelor respe"ti$e utili%ate( An "alitate de operan%i, in registre pot !i !olosite urmatoarele registre: ? registre de ? biti *=9, =-, 49, 4-, C9, C-, +9, +-1, registrele pe 1< iti *=L, 4L, CL, +L, SA, +A, SP, 4P1 si registrele pe 32 biti * 3=L, 34L, 3+L, 3SA, 3SP, 34P1 + < registre de segment * CS, +S, SS, 3S, FS, BS1( 8( ,perandul e amplasat in memorie( Plasarea operandului in memorie este "ea mai "ompli"ata si "ea mai !le.iila metoda de indi"are a operan%ilor( ="easta metoda permit reali%area a 2 tipuri prin"ipale de adresare: adresarea dire"ta si adresarea indire"ta( =dresarea indire"ta are urmatoarele modi!i"ari: adresarea indire"ta ba%ata, adresarea indire"ta ba%ata pe deplasament, adresarea indire"ta ba%ata inde.ata, adresarea indire"ta ba%ata inde.ata "u deplasament( 5( ,perandul se a!la in unul din portul de intrare-iesire( An a!ara de memoria operati$a, 2P mai poate adresa un spatiu de memorie in $olum de <8 Rb "are poarta demunirea de spatiu de adrese de intrare-iesire( , $aloare "on"reta a unei adrese in a"est spatiu de memorie poarta denumirea de port de intrare-iesire( -a ni$el !i%i", !ie"arui port de intrareiesire ii "orespunde un registru !i%i" "are poate !i a""esat "u AK sau ,/5( #egistrele "are pot !i adresate prin intermediul porturilor de intrare-iesire au dimensiunea respe"ti$a de ?, 1<, 32 biti, dar pentru un anumit port "on"ret, dimensiunea portului este !i.ata( <( ,perandul se a!la in sti$a( Anstru"tiunile pot a$ea 1,2 sau ni"i un operand( 2aJoritatea instru"tiunilor ne"esita indi"area a 2 operan%i, dintre "are 1 este numit operand-sursa, iar altul operand-destinatie( Pentru maJoritatea instru"tiunilor, primul operand e operandul destinatie( /nul din a"esti 2 operan%i poate !i amplasat intr-un registre sau in memorie, iar al doilea poate !i amplasat intr-un registru sau poate !i un operandnemiJlo"it( An "alitate de opernad nemiJlo"it apar doar "onstantele "are se a!la pe lo"ul operandului sursa( An unele "a%uri, pentru un sir de instru"tiuni, operandul impli"it este amplasat in sti$a( ="estea sunt instru"tiunile de operareMmanipulare "u sti$a, "um ar !i sal$area in sti$a si re!a"erea in sti$a( An primul "a%, sti$a apare "a operand-destinatie, in al doilea "a% "a opernad-sursa( #eiesing din "ele e.puse, in instru"tiunile "u 2 operan%i sunt posibile urmatoarele "ombinari ale operan%ilor: registru-registru, registru-memorie, memorieregistru, operand imediat registru, opernad imediat memorie( Pentur a"easta restri"tie a$em urmatoarele e."eptii:

1( Anstru"tiunile de prelu"rare a sirului "are pot trans!era datele dintr-o %ona de memorie in alta( 2( Anstru"tiunile de manipulare "u sti$a "are pot trans!era datele din memorie in sti$a, sti$a !iind si ea o %ona de memorie( 3( Anstru"tiunile de tipu inmultirii si impartirii, "are soli"ita indi"area unui singur operand, dar operea%a "u 2 operan%i, unul parti"ipind in mod impli"it la operatie( +in toate a"este moduri de amplasare a operan%ilor, "ele mai !re"$ent sunt "ombinatiile registru-memorie si memorie-registru( =dresarea dire"ta =dresarea dire"ta este "ea mai simpla modalitate de adresare a operandului in memorie, deoare"e adresa e!e"ti$a in a"est "a% se "ontine in instru"tiune si pentru !ormarea ei nu se "ere utili%area unor surse sau registre suplimentare( An a"est "a%, adresa e!e"ti$a este preluata nemiJlo"it din "impul deplasament in instru"tiune( ="easta $aloare *pe ?, 1<, 32 biti1 determina in mod uni$or o"tetul, "u$intul sau "u$intul dublu din segmentul de date( =dresatea dire"ta, la rindul ei, poate !i de 2 tipuri: 1( adresarea dire"ta relati$a' 2( adresarea dire"ta absoluta' =dresarea dire"ta relati$a este !olosita pentur instru"tiunile de trans!er "onditionat pentur indi"area adresei relati$e d salt( #elati$itatea a"estei adrese se datorea%a !aptului "a in "impul deplasament in instru"tiune se "ontine o $aloare pe ?, 1< sau 32 biti "are mai apoi, in re%ultatul e.e"utarii algoritmului instru"tiunii $a !i sumata "u "ontinutul registrului indi"ator de instru"tiune 3APMAP( An re%ultatul unei asemenea adunari se obtine adresa la "are $a !i re%li%at trans!erul "ontrolului( =dresarea dire"ta absoluta presupune "a adresa e!e"ti$a este o parte a instru"tiunii( ="easta adresa se !ormea%a doar din $aloarea "impului deplasament in instru"tiune( Pentru !ormarea adresei !i%i"e a operandului, 2P sumea%a a"easta $aloare "u $aloarea respe"ti$a a registrului de segment deplasata "u 8 biti in stinga( ="easta adresare e utili%ata mult mai rar de"it prima modalitate(

=dresarea indire"ta ba%ata *prin registru1 -a adresarea ba%ata indire"ta, adresa e!e"ti$a a operanduluipoate !i amplasata in ori"are din registrele generale in a!ara de registrele SPM3SP si 4PM34P( Sinta"ti", a"est regim de adresare se e.prima in instru"tiune prin amplasare( Spre e.emplu, instru"tiunea 2,V =L, S3CLT amplasea%a in =L un "u$int din segmentul de date "e se a!la pe o adresa din 3CL( +eoare"e "ontinutul registrului poate !i usor modi!i"at pe par"ursul e.e"utarii programului, a"est mod de adresare permite indi"area dinami"a a adresei operandului pentru o instru"tiune opare"are in "a%ul "ind a"est lu"ru e ne"esar( Cea mai !re"$enta utili%are a a"estei posibilitati este organi%area "al"ulelor repetiti$e si in "a%ul "ind apare ne"esitatea prelu"rarii elementelor unor stru"turi de date *tabele, masi$e, et"(1 =dresarea indire"ta ba%ata "u deplasament

="est mod de adresare e o "omplementare de mai departe a adresarii indire"te ba%ate( ="est regim se !oloseste pentru a""esarea datelor "u un deplasament "unos"ut relati$ !ata de o adresa de ba%a( ="easta modalitate de adresare e re"omandata pentru a""esarea elementelor stru"turilor de date "ind deplasamentul elementelor este apriori "unos"ut la etapa reali%arii programului, iar adresa de ba%a a stru"turii urmea%a sa !ie "al"ulata aia la etapa e.e"utarii programului( 2odi!i"area "ontinutului registrului ba%a permite a""esarea elementelor "u a"elasi nume a di!erilor e.emplare de stru"turi de date de a"elasi tip( 2,V =L, S3+L + 36T a"easta instru"tiune amplasea%a in =L un "u$int din %ona de memorie amplasat pe adresa "ontinutului registrului 3+L + 36( An a"est "a%, la "ontinutul registrului 3+L se adauga $aloarea 36( =dresarea indire"ta "u deplasament ="est mod de adresare e similar regimului pre"edent prin !aptul "a ai"i pentru !ormarea adresei e!e"ti$e se !oloseste unul din registrele generale, dar ai"i mai apare o parti"ularitate "are poate !i !oarte "omoda pentru lu"rul "u masi$ele de date( ="easta parti"ularitate e legata de posibilitatea de s"alabilitate a "ontinutului registrului indi"ator( Pentru a"easta e !olosit o"tetul SA4 din !ormatul instru"tiunii( ="est o"tet "ontine 3 "impuri: SC=-, AK+3L, 4=S3( =nume la $aloarea "impului SC=- se inmulteste "ontinutul registrului indi"ator( 2,V =L, 2,SSSAU2T in a"est "a%, adresa e!e"ti$a a operandului al doilea se "al"ulea%a "a re%ultat al "al"ularii $alorii e.presiei 2,S + *SA1U2( +eoare"e limbaJul de asamblare nu dispune de modalitati proprii de organi%are a inde.arii elementelor masi$elor si programatorul este ne$oit sa !a"a a"est lu"ru desinestatator, pre%enta a"estei posibilitati de s"alabilitate ii permite sa solutione%e a"easta problema "u "onditia "a elementele masi$elor $or "onstitui 1,2,8 sau ? o"teti( =dresarea indire"ta ba%ata inde.ata Pentru a"est mod de adresare e "ara"teristi" !aptul "a adresa e!e"ti$a a operandului se !ormea%a "a suma "ontinuturilor a 2 registre generale: ba%a si indi"ator( An "alitate de asemenea registre pot !i !olosite ori"are din "ele generale si !oarte !re"$ent se mai !oloseste si s"alabilitatea "ontinutului registrului indi"ator( 2,V 3=L, S3SATS3+LT in a"est "a%, in registrul 3=L se trimite un "u$int dublu "al"ulat "a suma a doua "omponente S3SAT si S3+LT(

=dresarea ba%ata inde.ata "u deplasament An a"est "a%, adresa e!e"ti$a a operandului se "al"ulea%a "a suma a 3 "omponente: "ontinutulul registrului ba%a, "ontinutul registrului indi"ator si "ontinutul "impului deplasament in instru"tiune( 2,V 3=L, S3SA+5TS3+LT a"easta instru"tiune transmite in 3=L un "u$int dublu amplasat pe adresa D"ontinutul registrului *3SA1 +5+ *3+L1( Clasi!i"area !un"tiuonala a instru"tiunilor interne Sistemul de instru"tiuni al 2P in"lude peste 13C de instru"tiuni' "u aparitia !ie"arui model nou de 2P, nr a"estor instru"tiuni este modi!i"at, de regula in dire"tia "resterii( ="est set

de instru"tiuni al 2P poate !i stru"turat in mai multe grupuri si subgrupuri( Clasi!i"area in grupe a instru"tiunilor 2P ar !i urmatoarea: 1( Anstru"tiuni de trans!er date: - instru"tiunile generale de trans!er - instru"tiuni de operare "u sti$a - instru"tiuni de "on$ertire a tipurilor 2( Anstru"tiuni aritmeti"e: - instru"tiunile aritmeti"o-binare - instru"tiunile aritmeti"e %e"imale 3( Anstru"tiunile logi"e: - instru"tiunile de manipulare pe biti - instru"tiunile de deplasare 8( Anstru"tiunile de trans!er a "ontrolului - de salt ne"onditionat - de salt "onditionat 5( Anstru"tiunile de operare pe siruri <( Anstru"tiunile de gestionare a starii 2P: - de lu"ru "u !anioanele - de operare "u registrele de sistem

1( Anstru"tiunile de trans!er a datelor( 3.ista o serie de instru"tiuni "are pot !i atribuite la "ategoria instru"tiunilor de trans!er de date( +in anumite "onsiderente, insa, a"este instru"tiuni au !ost amplasate in alte grupe de instru"tiuni( KemiJlo"it din "ategoria instru"tiunilor de trans!er date !a" pate instru"tiunile 2,V si LC9B( ="est instru"tiuni soli"ita indi"area a 2 operan%i: 2,V prin"ipala instru"tiuni de trans!er a datelor' e !olosita pentru reali%area "elor mai di$erse tipuri de trans!er a datelor( ,peran%ii a"estei instru"tiuni sunt operandul destinatie si operandul sursa( ="tiunea a"estei instru"tiuni se redu"e la trans!erul "ontinutului operandului sursa in lo"ul operandului destinatie( ="easta instru"tiuni are urmatoarele parti"ularitati: 1( 3a nu poate trans!era datele dintr-o %ona a memoriei in alta %ona a memoriei *ambii operan%i nu pot !i "on"omitent in memorie1( +a"a apare asa ne"esitate, atun"i se !oloseste "a tampon ori"e registru general a""esibil( 2( Antr-un registru de segment nu poate !i in"ar"ata o $aloare nemiJlo"ita din memorie( 2,V =L, V+=5= 2,V +S, =L 3( Cu aJutorul instru"tiunii 2,V nu poate !i trans!erat "ontinutul unui registru de segment in al registru de segment( ="et luu"ru e imposibil din simplul moti$ "a nu e.ista un asemenea

"od de operatie( +a"a apare o ast!el de ne"esitate, atun"i iarasi poate !i !olosit "a intermediar unul din registrele generale libere( 2,V =L, +S 2,V 3S, =L 2ai e.ista o posibilitate de trans!erare de date in alt registru de segment !olosit instru"tiunile din sti$a: P/S9 +S P,P 3S 8( #egistrul de segment +S poate !i modi!i"at prin una din metodele indi"ate, de !ie"are data tinindu-se "ont de segmentul suplimentar de date "u "are urmea%a sa !ie inlo"uit segmentul impli"it +S( 5( #egistrul segment de "od CS nu poate !i !olosit in "alitate de operand destinatie( 2oti$ul "onsta in !aptul "a in pere"6ea de registre CS:AP este pastrata adresa urmatoarei instru"tiuni: modi!i"area "ontinutului registrului +S in a"est "a% ar insemnareali%area unui salt si nu a unei instru"tiuni de trans!er de date( Anstru"tiunea LC9B Fop1O Fop2O An a"est "a%, operan%ii au pra"ti" a"eeasi $aloare( ="easta instru"tiune reali%ea%a un trans!er dire"tional intre 2 operan%i( Conditia "are urmea%a sa !ie respe"tata este !aptul "a operan%ii trebuie sa !ie de a"elasi tip( Pentru a"easta instru"tiune nu se admite "a amii operan%i sa !ie amplasata "on"omitent in memorie( = 2 grupa instru"tiunile de "itire, s"riere, importuri' Fie"are dispo%iti$ de intrare-iesire a sistemei de "al"ul dispune de 1 sau mai ulte registre, a""esul spre "are se reali%ea%a prin intermediul spatiului de adrese de intrare-iesire( ="este registre au dimensiunile de ?, 1< sau 32 iti( =dresele spatiului posturilor de intrareMiesire sunt independente !i%i" de memoria operati$a a sistemului de "al"ul si este limitata la <8 Rb( =st!el, notiunea de port de intrareMiesire poate !i de!inita "a un registru de ?, 1<, 32 biti "are are o adresa anumita in spatiul de adrese de intrareMiesire( 5ot $olumul de lu"ru pe "are il e.e"uta sistemul de "al"ul prin intermediul porturilor de intrareMiesire este reali%at prin intermediul registrului a"umulator =-, =L, 3=L si prin intermediul instru"tiunilor de "itire si s"rieie in porturi( Setul de instru"tiuni dispune doar de 2 instru"tiuni !olosite in a"est s"op: AK *"iteste in registrul a"umulator intr-un port intrareiesire1 si ,/5 *transmite din registrul a"umulator intr-un port de intrare-iesire1( Anstru"tiunea AK poate transmite un o"tet, "u$int sau "u$int dublu dintr-un port de intrareiesire in unul din registrele =-, =L sau 3=L( 3.e"utarea a"estei instru"tiuni nu a!e"tea%a registrul !anioanelor( Anstru"tiunea ,/5 transmite un o"tet, "u$int sau "u$int dublu din =-, =L sau 3=L intr-un port, nr "aruia e indi"at de primul operand( 3.e"utarea a"estei instru"tiuni nu a!e"tea%a registrul !anioanelor(

#emar"aW Anstru"tiunile AK si ,/5 sunt !olosite pentru diriJarea dire"ta a utilaJului "al"ulatorului prin porturile, nr "arora apartin diapa%onului C-255( An "a%ul "ind se !oloseste un port in a!ara a"estui diapa%on, el apriori trebuie transmis in registrul +L( =nume !olosirea registrului +L permite reali%area trans!erurilor dinami"e( Anstrutiunile de lu"ru "u adresele si indi"atorii Pentru lu"rul "u operan%ii a!lati in memorie, limbaJul de asamblare dispune de o "ategorie spe"iala de instru"tiuni din "are !a" parte: 1( Anstru"tiunea -3= destinatie, sursa in"ar"area adresei e!e"ti$e a operandului sursa in operansul destinatie *-3= +L, mesaJ sau 2,V +L, o!!set mesaJ1 2( Anstru"tiunea -+S destinatie, sursa in"ar"area unui indi"ator *pointer1 in registrul segment de date +S( 3( Anstru"tiunea -3S destinatie, sursa in"ar"a un indi"ator in registrul segmentului suplimentar de date 3S( 8( Anstru"tiunea -BS destinatie, sursa in"ar"a un indi"ator in registrul segmentului suplimentar de date BS( 5( Anstru"tiunea -FS destinatie, sursa in"ar"a un indi"ator in registrul segmentului suplimentar de date FS( <( Anstru"tiunea -SS destinatie, sursa in"ar"a un indi"ator in registrul segmentului suplimentar de date SS( ="este instru"tiuni se aseamana "u instru"tiunea 2,V, dar spre deosebire de ea, ele reali%ea%a trans!erul nu a datelor, "i a indi"atorilor( Anstru"tiunile de "on$ertire a datelor 3.ista mai multe instru"tiuni "are pot !i atribuite la a"easta "ate!orie, dar "are au anumite parti"ularitati pe moti$ de "are sunt atribuite la alte "ategorii( KemiJlo"it la a"easta "ategorie e atribuita instru"tiunea L-=5 "are ne"esita indi"area unui singur operand *a adresei tabelului de "on$ertire1( ="easta instru"tiune e interesanta prin !aptul "a a"tiunea ei se redu"e la inlo"uirea unui o"tet din registrul a"umulator =- "u alt o"tet a!lat intr-un tabel de memorie "are nu e alt"e$a de"it un sir de o"teti, adresa e!e"ti$a a "aruia apriori trebuie sa !ie in"ar"ata in registrul 4L *-3= 4L, *tabX"om11( Sirul de o"teti din memorie repre%inta o %ona de memorie de dimensiune 1 -O255 o"teti( Anstru"tiunile de operare "u sti$a Anstru"tiunile de operare "u sti$a repre%inta o "ategorie de instru"tiuni spe"iali%ate "are operea%a "u o %ona de memorie !olosita pentru pastrarea temporara a datelor, organi%ata dupa prin"ipiul ultimul intrat -O primul iesit( Amportanta sti$ei pentru program "onsta in

!aptul "a pentru ea in stru"tura programului e re%er$at un segment aparte( An "a%ul "ind programatorul nu re%er$ea%a spatoi pentru sti$a, in ar6ite"tua 2P sunt re%er$ate 3 registre: 1( SS segment de sti$a' 2( SPM3SP registrul indi"ator de sti$a' 3( 4PM34P registru indi"ator al ba%ei "odului de sti$a' +imensiunea sti$ei depinde de regimul de lu"ru al 2P si se redu"e in regimul real de lu"ru al 2P la <8 Rb si in regim proteJat de lu"ru la 8Bb( +esi pot !i !olosite mai multe segmente de sti$a, in !ie"are moment de timp programul are a""es doar la o singura sti$a, adresa "areia se a!la in registrul SS( ="easta sti$a poarta denumirea de sti$a "urenta( Pentru tre"erea la alta sti$a, "ontinutul registrului SS trebuie sa !ie inlo"uit "u alta adres( #egistrul SS e !olosit impli"it de "atre 2P pentru e.e"utarea tuturor instru"tiunilor legate de sti$a( Parti"ularitatile lu"rului "u sti$a 1( An"ar"area si s"oaterea datelor din sti$a dupa prin"ipiul utlimul intrat e primul( 2( Pe masura in"ar"arii sti$ei, $aloarea indi"atorului $ir!ului sti$ei des"reste in dire"tia adreselor mai mi"i( 3( An "a%ul "ind sunt !olosite registrele 3SPMSP si 34PM4P, asamblorul automat "onsidera "a $alorile pastrate in ele repre%inta deplasamente re!eritor "u in"eputul segmentului de sti$a din registrul SS( #egistrele !olosite pentru lu"rul "u sti$a se !oloses" in "omple. si !ie"are din ele are destinatia sa !un"tionala( #egistrul 3SPMSP tot timpul "ontine $aloarea $ir!ului sti$ei *adi"a deplasamentul in "adrul segmentului de sti$a unde a !ost in"ar"at ultimul element1( Anstru"tiunile de operare "u sti$a !oloses" impli"it a"est registru ast!el "a el tot timpul sa indi"e ultimul element din sti$a( +a"a sti$a este goala, atun"i $aloarea registrului 3SP este egala "u adresa ultimului o"tet al segmentului re%er$at pentru sti$a( -a introdu"erea unui element in sti$a, 2P de"rementea%a $aloarea a"estei adrese( Pentru lu"rul "u sti$a a$em urmatoarele instru"tiuni: 1( P/S9 sursa *sal$area in sti$a a "ontinutului operandului sursa1( =lgoritmul de e.e"utare a a"estei instru"tiuni: 1( $alarea registrului SP e de"rementata "u 2( 2( 5rans!erarea "ontinutului operandului sursa pe adresa indi"ata de pere"6ea de registre SS, SP( 2( P,P destinatie re!a"e $aloarea $ir!ului sti$ei in operandul destinatie( =lgoritmul de e.e"utie: 1( s"rierea $alorii din $ir!ul sti$ei in operandul destinatie' 2( stergerea a"estei $alori din sti$a si in"rementarea $alorii registrului SP "u 2( 3( P/S9= sal$area in grup a "ontinutului registrelor in sti$a in urmatoarea ordine: =L, CL, +L,4L,SP,4P,SA,SA( 8( P/S9=0 a"easta instru"tiune e similara "u P/S9= "u deosebire "a ea tine "ont de regimul de adresare utili%at: use1< sau use32( An "a%ul adresarii pe 1< biti, P/S9=0

lu"rea%a identi" "a P/S9=( Pentru regimul use32, instru"tiunea P/S9= e sensibila la s"6imbarea dimensiunii registrelor, iar P/S9=0 pastrea%a regimul de adresare pe 1< biti in timp "e P/S9= sal$ea%a in sti$a registrele 3=L, 3CL, 3+L, 34L, 3SP, 34P, 3SA, 3+A( 5( P/S9=+ similara "u P/S9=, dar are anumite parti"ularitati la e.e"utare si anume: ea de"rementea%a "ontinutul registrului 3SP "u 32, sal$ea%a in sti$a registrele 3=L, 3CL, 3+L, 34L, 3SP, 34P, 3SA, 3+A' "ontinutul registrului 3+A se a!la in $ir!ul sti$ei, iar $aloarea sal$ata a 3SP e $aloarea "e "orespunde $alorii de pina la e.e"utarea a"estei instru"tiuni, Comanda P/S9=+ nu a!e"tea%a !anioanele( Anstru"tiunile in$erse: P,P=, P,P=0, P,P=+ re!a" registrele respe"ti$e din sti$a( P/S9F sal$area in sti$a a registrului !anioanelor( =lgoritmul de ee"utie al a"estei instru"tiuni depinde de $aloarea atributului de dimensiune a segmentului use1< sau use32( Pentru use1<, in sti$a se ins"rie "ontinutul registrului F-=BS de dimensiunea 2 o"teti( An "a%ul use32, in sti$a e memori%at "ontinutul registrului 3F-=BS de 8 o"teti( P/S9F0 lu"rea%a "a P/S9F in regimul use1<( P/S9F+ sal$ea%a in sti$a ori F-=BS ori 3F-=BS in dependenta de regimul respe"ti$ de adresare( P,PF, P,PF0, P,PF+ instru"tiuni in$erse( =""esarea sti$ei are lo" permanent pe par"ursul e.e"utarii programelor( Prin"ipalele operatii "e apelea%a la ea sunt apelurile de pro"edura, pastrarea temporara a datelor si de!inirea $ariabilelor lo"ale( Anstru"tiuni aritmeti"e 2P poate e.e"uta instru"tiuni aritmeti"e asupra a 2 tipuri de numere: nr pre%entate in !ormatul $irgula !i.a si numere pre%entate in !ormatul $irgula !lotanta( An a"est s"op, ar6ite"tura 2P dispune de 2 blo"uri di!erite: 1( dispo%iti$ul de operare "u nr intregi' 2( dispo%iti$ul de operare "u nr in $irgula !lotanta *"opro"esorul matemati"1( Fie"are din a"este 2 dispo%iti$e are propriul set de instru"tiuni( An "a% general, dispo%iti$ul prin"ipal de "al"ul isi pote asuma "al"ule in $irgula !lotanta *"6eltuieli mari de timp1( Pentru maJoritatea problemelor de "al"ul sunt su!i"iente instru"tiunile de operare "u nr intregi( ="este instru"tiuni pot !i stru"turate in urmatoarele subgrupe: 1( Anstru"tiuni de "on$ertire a tipurilor' 2( Anstru"tiunile aritmeti"i binare' 3( Anstru"tiunile aritmeti"ii %e"imale' 8( Anstru"tiunile aritmeti"e au.iliare' 5( =lte instru"tiuni "u prin"ipiul de a"tiuni similar instru"tiunilor aritmeti"e(

Brupa instru"tiunilor aritmeti"e "u nr intregi poate opera "u 2 tipuri de nr: 1( nr binare intregi *nr "u semn sau !ara semn1( 2( nr %e"imale intregi( Kr binare intregi Kr binare intregi "u $irgula !i.a sunt nr "odi!i"ate in sistemul binar de numeratie( +imesiunea unui nr binar intreg poate !i ?, 1<, 32 biti( Semnul nr intreg binar depinde de !aptul "um e interpretat bitul superior in repre%entarea numarului( ="estia sunt bitii "u >, 15, 31( 2aJoritatea instru"tiunilor ramin indi!erente !ata de $aloarea bitului superior a operan%ilor( An realitate e.ista 2 instru"tiuni "are tin "ont de starea a"estui bit: A2/-, A+AV * inmultire, impartire a nr intregi1( An toate "elelalte "a%uri,, responsabilitatea de pe urma !aptului "um e interpretat bitul superior ramine pe seama programatorului( +iapa%onul $alorilor pentru nr binare este C-255 nr intregi !ara semn' -12? -O 12> pentru nr intregi "u semn( Pe 1< biti: C-O<5535 nr intregi !ara semn, -32><? -O 32><> pentru nr intregi "u semn' pe 32 biti: C-O 82@8@<>2@5 nr intregi !ara semn, -218>8?3<8? -O 218>8?3<8>( Pentru !olosirea a"estor nr, ele urmea%a sa !ie des"rise in program "u aJutorul dire"ti$elor respe"ti$e: de!ine byte, de!ine ord, de!ine double( Kr %e"imale repre%inta un tip spe"ial de pre%entare a in!ormatiei numeri"e la ba%a "areia sta "odi!i"area !ie"arei "i!re %e"imale pe un grup de 8 biti numit tetrada binara( #eiesind din a"easta, !ie"are o"tet de memorie poate pastra 1 sau 2 "i!re %e"imale( ="easta modalitate de repre%entare a "i!relor %e"imale e numita 4C+( 2P pastrea%a nr 4C+ in 2 !ormate: 1( !ormatul neimpa"6etat, "on!orm "aruia !ie"are o"tet "ontine o "i!ra %e"imala in tetrada in!erioara( 4itii superiori au $aloarea C( +iapa%onul de repre%entare in a"est !ormat sunt nr %e"imale de la C -O@( 2( 4C+ impa"6etat, "on!orm "areia !ie"are o"tet "ontine "ite o "i!ra %e"imala in !ie"are tetrada( Ci!ra superioara o"upa tetrada superioara, iar "i!ra in!erioara tetrada in!erioara( +iapa%onul e C-O@@(

,peratii aritmeti"e asupra nr binare intregi 1( =dunarea nr binare intregi !ara semn 2P e.e"uta operatiile de adunare a nr intregi dupa regulile aritmeti"ii intregi( Prolemele apar in "a%ul "ind re%ultatul depaseste limitele de repre%entare a operan%ilor, adi"a in "a%ul adunarii a 2 nr de dimensiunea o"tet se obtine un re%ultat in a!ara limitelor( +a"a apare un asemenea re%ultat in"ore"t, atun"i urmea%a sa !ie e!e"tuata "ore"tia re%ultatului( =paritia re%ultatelor in"ore"te in re%ultatul e.e"utarii e pre$a%uta in ar6ite"tura pro"esorului si pentru a"easta e !olosit registrul F-=BS, "are e!e"tuea%a trans!erurileMimprumuturile de rang superior( Pentru a"easta e CF( An sistemul de instru"tiuni a 2P sunt in"luse 3 instru"tiuni de adunare: 1( AKC operand -O in"rementarea operandului "u 1( 2( =++ operand destinatie, operand sursa -O $aloarea op2 se aduna la op1(

3( =+C operand1, operand2 -O op1Gop1+op2+"!( =dunarea nr binare "u semn 2P nu !a"e deosebire intre nr "u semn si nr !ara semn, in s"6im 2P este in%estrat "u miJloa"e "are pot !i.a anumite situatii "are apar pe par"ursul e!e"tuarii "al"ulelor( /K/l din a"este miJloa"e e "er"etarea !anionului de trans!er CF( Setarea pe 1 a a"estui !anion indi"a !aptul "a a a$ut lo" o depasire a limitelor de repre%entare a operan%ilor( Fi.area $alorii bitului superior al operandului e e!e"tuata de !anionul ,F( 5inind "ont de !aptul "a in memoria "al"ulatorului, nr po%iti$e se pastrea%ain "od dire"t binar, iar nr negati$e in "od "omplementar( =nali%ind starea bitilor superiori ai operan%ilor si starea !anioanelor CF si ,F, se poate !a"e "on"lu%ia despre "ore"titudinea e.e"utarii operan%ilor( -a adunarea nr, in "a%ul nr "u semn se $eri!i"a trans!erul din bitul superior al re%ultatului, iar in "a%ul operatiei de s"adere se $eri!i"a !aptul imprumutului in bitul superior( +a"a nu are lo" un trans!er, atun"i !anionul ,F e setat pe C( +a"a are lo" un trans!er, atun"i ,F e setat pe C( -a !el in "a%ul s"aderii nr, se anali%ea%a starea a"estor 2 !anioane( +a"a a a$ut lo" imprumutul din bitul 15 -O18, atun"i a a$ut lo" o operatie de s"adere si urmea%a sa !ie de"lansat me"anismul de anali%a si "ore"tare a re%ultatului( +eoare"e 2P nu tine "ont de semnul nr, a"est lu"ru trebuie sa !ie anali%at si !inisat de programator( Starea !anioanelor CF si ,F poate !i anali%ata "u aJutorul instru"tiunilor de salt *ba%ate pe starea !anioanelor1: NC, NKC, N,, NK,( Anstru"itunile aritmeti"e in "a% general asupra nr "u semn pra"ti" se e.e"uta identi" si asupra nr !ara semn( S"aderea nr binare !ara semn ,peratia de s"adere poate genera anumite in"omoditati, probleme in "a%ul "ind s"a%atorul e mai mi" de"it des"a%utul( Anstru"tiunile spe"i!i"e s"aderii sunt: 1( +3C operand *de"rementea%a $aloarea operandului "u 1 unitate1( 2( S/4 op1, op2 *s"ade din op2 $aloarea op1, pastrea%a re%ultatul in op11 3( S44 op1, op2 *op1 G op1 op2 CF1( S"aderea nr binare "u semn -a s"aderea nr binare "u semn lu"rurile se "ompli"a din simplul moti$ "a 2P nu dispune de 2 dispo%iti$e di!erite pentru operatia de adunare si operatia de s"adere si in ambele "a%uri este !olosit un singur dispo%iti$, adi"a atit pentru operatia de adunare "it si pentru operatia de s"adere este !olosit dispo%iti$ul de adunare( Pentru s"aderea nr !olosind repre%entarea nr in "od "omplementar trebuies" repre%entate in a"elasi mod atit des"a%utul "it si s"a%atorul, adi"a atit des"a%utul "it si s"a%atorul sunt repre%entate in "od "omplementar( #e%ultatul obtinut tot trebuie interpretat "a o $aloare in "od "omplementar( Compli"atiile "are apar in a"est "a% dunt legate de !aptul "a bitul superior al re%ultatului este interpretat "a bit de semn, de a"eea de !ie"are data se tine "ont de "ontinutul !anionului ,F( +a"a el este po%itionat pe 1, inseamna "a a a$ut lo" supraplinirea mantisei, in "a%ul "ind bitul superior al re%ultatului a modi!i"at bitul de semn( Pentru asemenea "a%uri programatorul trebuie in mod indi$idual sa e!e"tue%e a"tiuni pentru "ore"tia re%ultatului obtinut( Anmultirea nr binare !ara semn

Anstru"tiunea de inmultire are urmatoarea sinta.a: mul FinmultitorO +esi a"easta instru"tiune soli"ita indi"area doar a unui singur operand, la operatie parti"ipa doi operan%i( =lgoritmul de e.e"utare a a"estei instru"tiuni depinde de !ormatul operan%ilor si re%ultatul e.e"utarii a"estei instru"tiuni este ins"ris in registrul a"umulator a. ori in pere"6ea de registre d.:a.( Primul operand in mod obligatoriu este un numar repre%entat pe ?, 1< sau 32 biti in registrul a"umulator al, a., ea. iar al doilea operand este o $aloare repre%entata pe ?, 1< sau 32 biti "are poate !i amplasat in memorie sau intr-un registru de ?, 1< sau 32 biti( Pentru operatia de inmultire, a"tionea%a urmatoarele reguli: da"a inmultitorul indi"at in instru"tiune este un o"tet, atun"i operandul impli"it este amplasat in registrul al( #e%ultatul obtinut are lungimea de 1< biti si este amplasat in registrul a.( +a"a operandul indi"at in instru"tiunea mul are dimensiunea 1< biti, at operandul impli"it este amplasat in registrul a.( #e%ultatul operatiei de inmultire este un nr pe 32 biti amplasat in pere"6ea de registre d.:a.( #egistrul d. apare "a e.tensie pentru registrul a.( Partea in!erioara a re%ultatului se ins"rie in registrul a. iar partea superioara a re%ultatului in registrul d.( +a"a operandul indi"at in instru"tiune are dimensiunea de 32 biti, atun"i operandul impli"it este o $aloare pe 32 biti amplasata in registrul ea.( #e%ultatul obtinut este o $aloare pe <8 biti amplasata in pere"6ea de registre ed.:ea.( #egistrul ed. ser$este "a e.tensie pentru registrul a., partea in!erioara a re%ultatului se ins"rie in registrul ed.( An urma e!e"tuarii operatiei de inmultire are lo" urmatoarea po%itionare a !anioanelor: da"a Jumatatea superioara a re%ultatului este nula, atun"i !anionul ,F este po%itionat pe C si !anionul CF este po%itionat pe C( #estul !anioanelor aritmeti"e nu sunt modi!i"ate( +a"a Jumatatea superioara a re%ultatului este nenula, atun"i !anionul ,F ia $aloarea 1 si !anionul CF ia $aloarea 1( Anmultirea nr binare "u semn imul Foperand1O, Soperand2, Soperand3TT ="easta instru"tiune se e.e"uta analogi" instru"tiunii mul "u urmatoarele parti"ularitati: ="easta instru"tiune tine "ont de me"anismul de !ormare a semnului( +a"a re%ultatul obtinut este su!i"ient de mi" si in"ape intr-un registru, adi"a !anoanele CF si ,F sunt C, atun"i "ontinului registrului al doilea *partii superioare a re%ultatului1 repre%inta sesiunea de semn a re%ultatului, adi"a toti bitii a"estui registru sunt po%itionati in $aloarea bitului de semn al re%ultatului( An "a% "ontrar, da"a CF si ,F sunt G 1, atun"i in "alitate de bit de semn se "onsidera bitul superior al Jumatatii superioare a re%ultatului, iar bitul superior al partii in!erioare a re%ultatului este tratat "a bit semni!i"ati$ al nr binar "e repre%inta re%ultatul( An !ormatul instru"tiunii "u doi operan%i, primul operand determina lo"ul primului operand al operatiei de inmultire( An lo"ul lui, in re%ultat $a !i ins"ris produsul( ,perandul al doilea determina lo"ul operandului al doilea( An "a%ul instru"tiunii imul "u trei operan%i, primul operand determina lo"ul re%ultatului, al doilea operand determina lo"ul primul !a"tor iar operandul al treilea poate !i un operand imediat de dimensiune 1 o"tet, "u$int sau "u$int dublu( Ampartirea nr binare !ara semn

di$ FimpartitorO -o"ul deimpartitului poate !i amplasat in registrul a"umulator pe 1<, 32 biti sau intr-o pere"6e de registre*in dependenta de reminul de adresare in d.:a. sau ed.:ea.1( ,perandul impartitor poate !i amplasat in memorie sau intr-un registru si poate a$ea dimensiunea de ?, 1< sau 32 biti( Pentru operatia de impartire a$em urmatoarele $ariante de amplasare a operan%ilor si a re%ultatului( An "a%ul "ind deimpartitul este un "u$int *1< biti1 at el este amplasat in registrul a"umulator a.( Ampartitorul, in a"est "a%, este un o"tet "are poate !i amplasat intr-un registru sau o lo"atie de memorie( Citul obtinut se ins"rie in registrul al( #estul pre%inta un o"tet "are se ins"rie in registrul a6( An "a%ul "ind deimpartitul este un nr pe 32 biti, atun"i el este amplasat in pere"6ea de registre d.:a., respe"ti$ in d. partea superioara iar in a. partea in!erioara( Ampartitorul este o $aloare pe 1< biti, amplasata intr-un registru sau o lo"atie de memorie( Citul obtinut se ins"rie in registrul a., restul se ins"rie in registrul d.( An "a%ul "ind deimpartitul este un nr pe <8 biti in pere"6ea de registre ed.: ea.( An ea. este amplasata partea superioara a deimpartitului, in ea. partea in!erioara( Ampartitorul este un "u$int dublu pe 32 biti amplasata intr-un registru sau o lo"atie de memorie( Citul obtinut este un "u$int dublu in registrul ea., restul este un "u$int dublu in registrul ed.( +upa e.e"utarea instru"tiunii di$, starea !anioanelor este nedeterminata, dar e posibila aparitia unei intreruperi de ni$el C in "a%ul impartirii la C( Antreruperea de ni$el C *impartirea la C1 poate aparea in urmatoarele situatii: 1( Ampartitorul este egal "u C( 2( Citul obtinut nu in"ape in limitele re%er$ate pentru el( ="est lu"ru e posibil in urmatoarele "a%uri: a1 in "a%ul impartirii unui nr de dimensiune "u$int la un impartitor de dimensiune o"tet si $aloarea deimpartitului din start este mai mare de 25< ori de"it $aloarea impartitorului( b1 in "a%ul impartirii unui nr de dimensiunea "u$int dublu la un impartitor de dimensiunea "u$int si $aloarea deimpartitului este mai mare de"it $aloarea impartitorului mai mult de"it <5 53< ori "1 are lo" impartirea unui nr de dimensiune "u$int "$adruplu la un impartitor de dimensiunea "u$int dublu si $aloare deimpartitului este mai mare de"it $aloarea impartitorului mai mult de"it 8 2@8 @<> 2@< ori( Ampartire nr binare "u semn Pentru impartirea nr binare "u semn se !oloseste idi$ FimpartitorO( ="easta instru"tiune se e.e"uta analogi" instru"tiunii di$ "u uni"a deosebire "a ea are anumite parti"ularitati in "a%ul aparitiei situatiei e."eptionale de impartire la C pentru nr "u semn( Ampartirea la C in "a%ul nr "u semn apare in urmatoarele situatii: 1( Ampartitorul e egal "u C 2( Citul obtinut nu in"ape in limitele re%er$ate pentru el( ="est lu"ru e posibil in urmatoarele "a%uri: a1 in "a%ul impartirii unui nr de dimensiune "u$int la un impartitor de dimensiune o"tet si $aloarea deimpartitului este mai mare de 12? ori de"it $aloarea impartitorului( b1 in "a%ul impartirii unui nr "u semn de dimensiunea "u$int dublu la un impartitor de dimensiunea "u$int "u semn si $aloarea deimpartitului este mai mare de"it $aloarea impartitorului mai mult de"it 32 ><? ori

"1 are lo" impartirea unui nr "u semn de dimensiune "u$int "$adruplu la un impartitor de dimensiunea "u$int dublu "u semn si $aloare deimpartitului este mai mare de"it $aloarea impartitorului mai mult de"it 2 18> 8?3 <8? ori( Anstru"tiuni au.iliare pentru operatiile "u nr intregi 1( Anstru"tiuni de "on$ertire a tipurilor Setul de instru"tiuni al 2P Antel in"lude o serie de instru"tiuni "are !a"ilitea%a programarea algoritmilor "e e!e"tuea%a "al"ule aritmeti"e( Pe par"ursul e!e"tuarii "al"ulelor pot aparea o serie de nuante pentru solutionarea "arora in setul de instru"tiuni au !ost instroduse instru"tiunile de "on$ertire a tipurilor si alte instru"tiuni "are sint ne"esare pe par"ursul e!e"tuarii "a%urilor "riti"e( Anstru"tiunile de "on$ertire a tipurilor sunt ne"esare in "a%ul "ind operan%ii parti"ipanti la operatiile aritmeti"e au dimensiuni di!erite( +a"a operan%ii sunt nr !ara semn, atun"i a"este probleme se o"oles" mult mai simplu de"it in "a%ul nr "u semn(Pentru a"easta e su!i"ient doar sa !ie adusa la dimensiunea operandului mai mare dimensiunea operandului mai mi"( An "a%ul nr "u semn, situatia este mai "ompli"ata, deoare"e a"est lu"ru nu poate !i reali%at in mod dinami"( Pentru a"easta sint !olosite instru"tiunile de "on$ertire a tipurilor( 3le sunt e.trem de utile in "a%ul trans!ormarii nr intregi "u sem, deoare"e ele automat inlo"uies" bitii Jumatatii superioare a noului operand "u $aloarea bitului de semn a operandului original( 3.ista doua tipuri de instru"tiuni de "on$ertire a tipurilor: 1( Anstru"tiunile de "on$ertire !ara operan%i operea%a "u registre indi"ate in mod impli"it( C40 "on$ert byte ord( ="easta instru"tiune "on$erteste un o"tet din al intr-un "u$int in registrul a. prin e.tinderea bitului de semn pe intreg "ontinutul registrului a6( C0+ *"on$ert ord double ord1 in"tru"tiunea de "on$ertire a unui "u$int din a. intr-un "u$int dublu in pere"6ea de registre d.:a. pe "alea e.tinderii bitului de semn pe intreg "ontinutul registrului d.( Anstru"tiunea C0+3 e !olosita pentru "on$ertirea unui "u$int din registrul a. intr-un "u$int dublu in registrul ea. prin raspindirea $alorii bitului superior a registrului a. pe intreaga Jumatate superioara a registrului ea.( C+H "on$ert double to Iuatre ord e !olosita pentru "on$ertirea unui "u$int dublu din registrul 3=L intr-un "u$int "$adruplu in pere"6ea de registre 3+L:3=L prin raspindirea bitului superior al registrului ea. pe toti bitii registrului ed. *"omanda e a""esibila doar pentru pro"esoarele pe 32 biti1 Anstru"tiunile mo$ s., mo$ %. a"este doua instru"tiuni soli"ita indi"area a doi operan%i *destinatie si sursa1 si sint "lasi!i"ate la instru"tiunile !olosite pentru prelu"rarea sirurilor( Anstru"tiunea mo$ s. se !oloseste pentru a trans!era un operand de ? sau 1< biti din sursa intr-o $aloare pe 1< sau 32 biti prin raspindirea bitului de semn( ="easta instru"tiune este !olosita deseori pentru pregatirea operan%ilor "u semn pentru e!e"tuarea operatiilor aritmeti"e asupra lor( Anstru"tiunea mo$ %. este !olosita pentru a e.tinde $aloarea pe ? sau 1< biti a operandului sursa pe 1< sau 32 biti pe "alea implerii "u C a Jumatatii superioare a operandului destinatie( Se !oloseste pentru pregatirea operan%ilor !ara semn pentru parti"iparea la operatiile aritmeti"e( =lte instru"tiuni au.iliare "u prin"ipiul de a"tiune a instru"tiunilor aritmeti"e:

.add destinatie, sursa - adunarea a doi operan%i "u s"6imbarea lo"urilor operan%ilor( ="easta instru"tiune e.e"uta urmatoarele a"tiuni : 1 ( s"6imba "u lo"ul operan%ii sursa si destinatie 2( plasea%a pe lo"ul operandului destinatie suma "ontinutului operan%ilor( Anstru"tiunea neg FoperandO Anstru"tiunea neg e.e"uta operatia negarii "u "omplemetarea pina la 2( An realitate a"easta instru"tiune reali%ea%a di!erenta operandG C operand, adi"a s"ade $aloarea operandului din C( ="easta instru"tiune poate !i !olosita in 2 "a%uri: 1( Pentru s"6imbarea semnului operan%ilor( 2( Pentru a s"adea $aloarea dintr-o "onstanta( Ki"i instru"tiunea sub, ni"i instru"tiunea sbb nu permit s"aderea unei $alori dintr-o "onstanta, deoare"e "onstanta nu poate aparea in "alitate de operand destinatie pentru instru"tiunile de s"adere( +e a"eea, o asemenea operatie de s"adere poate !i reali%ata in !elul urmator: 1( neg =L s"6imbarea semnului "onstantei 2( add a., 38C a. G 38C a. ,peratii aritmeti"e asupra numerelor %e"imale in !ormat 4C+ 3!e"tuarea "al"ulelor in numere binare este "on$enabila doar pentru pro"esor( +a"a a$em ne$oie sa e!e"tuam "al"ule "are tin de un anumit domeniu de a"ti$itate, atun"i $alorilor "are pot !i repre%entate in !ormat binar au un "ara"ter limitat, de a"eea !ormatul binar nu poate !i !olosit in e"onome, "ontabilitate, et"( /n alt neaJuns al operarii "u numere binare sunt greselile obtinute la rotungire( ="est !apt iarasi este inadmisibil in domeniile unde este ne"esara o e$identa stri"ta( =l treilea neaJuns este di!i"ultatea intilnita la repre%entarea unui numar mare de re%ultate sub !orma de simboluri =SCAA( =pare problema "on$ertirii re%ultatelor binare in simboluri =SCAA( Partial, a"este probleme sint solutionate odata "u introdu"erea numerelor in !ormat 4C+( 3!e"tuarea operatiilor aritmeti"e "u a"este numere au anumite parti"ularitati si "er"etarea lor se !a"e paralel "u "er"etarea operatiilor asupra numerelor binare din simplul moti$ "a sistemul de instru"tiuni al 2P nu dispune de instru"tiuni aparte pentru operatii aritmeti"e "u numere in !ormat 4C+( An s"6imb, pentru !ie"are operatie aritmeti"a "u numerel in !ormat 4C+ setul de instru"tiuni al CP/ "ontine instru"tiuni spe"ial de "ore"tie a re%ultatului, "are se !oloses" de !ie"are data "ind se operea%a "u numere 4C+( ,peratiile de "ore"tie au algoritmi spe"iali "are de !ie"are data anali%ea%a starea tetradelor operan%ilor parti"ipanti la operatie, si starea !anioanelor dupa e!e"tuarea operatiilor respe"ti$e( Prima instru"tiune de a"est !el este: === =SCAA =dJustment =ddition Anstru"tiunile de "ore"tie nu soli"ita indi"area operan%ilor( Anstru"tiunea === lu"rea%a impli"it doar "u registrul =-( 3a anali%ea%a starea tetradei in!erioare a a"estui registru( +a"a $aloarea a"estei tetrade e mai mi"a de"it @, atun"i !anionul CF este setat pe C si se tre"e la e.e"utarea urmatoare instru"tiuni( +a"a re%ultatul obtinut in urma este in"ore"t *mai mare "a @1 sau =F are $aloarea 1, atun"i se e!e"tuea%a urmatoarele a"tiuni: $aloarea registrului =- se in"rementea%a "u <( Se sterge $aloarea tetradei superioare a registrului =-( Valoarea registrului =9 se in"rementea%a "u 1( Fanioanele =F si CF se setea%a pe 1(

,peratia de s"adere are urmatoarea instru"tiune de "ore"tie =SCAA ==S *=SCAA =dJustment Substra"tion1 3a nu ne"esita operan%i si operea%a "u registrul =-( =nali%ind tetrada in!erioara a registrului =-, instru"tiunea ==S e!e"tuea%a urmatoarele a"tiuni: da"a tetrada in!erioara a registrului =- este mai mi"a de"it @ sau !anionul =F este 1, atun"i: 1( Anstru"tiunea s"ade din $aloarea registrului =- <( 2( Sterge "ontinutul tetradei superioare a =3( Setea%a !anioanele =F si CF pe 1( An "a% "ontrar, doar setea%a !anioanele =F si CF pe 1( Anstru"tiunea ==S este !olosita pentru "ore"tarea re%ultatului s"aderii a 2 nr( 4C+ neimpa"6etate dupa operatia sub( ,peran%ii pentru instru"tiunea sub trebuie sa !ie 2 nr( 4C+ "ore"te de 1 "i!ra( ,peratia de inmultire !oloseste pentru "ore"tia inmultirii instru"tiunea ==2 *=SCAA =dJustment 2ultiply1( Anstru"tiunea ==2 nu soli"ita indi"area operan%ilor( 3a operea%a "u registrul =L in !elul urmator: 1( Amparte =- la 1C( 2( #e%ultatul impartirii este pastrat in !elul urmator: in registrul =9 este pastrat "itul de la impartire, restul e pastrat in registrul =-( Starea !anioanelor dupa "ore"tie este in"erta( ,peratiile de inmultire "are pot !i "ore"tate "u aJutorul a"este instru"tiuni nu trebuie sa depaseas"a $aloarea re%ultatului de ?1, deoare"e $alorile ma.imalea nr( 4C+ de o "i!ra sunt limitate de @ si @( ,peratia de impartire are instru"tiunea de "ore"tie ==+ *=SCAA =dJustment !or +i$ision1( ="easta "ore"tie se !oloseste pentru pregatirea a 2 nr in !ormat 4C+ neimpa"6etat pentru operatia de impartire( = doua utili%are a a"estei "ore"tii este "on$ertirea unui nr 4C+ neimpa"6etat de 2 "i!re mai mi" de"it @@ in !ormat binar( =lgoritmul de lu"ru al a"estei instru"tiuni este: 1( Anmultirea "ontinutului registrului =9 "u 1C( 2( =daugarea re%ultatului obtinut "u "ontinutul registrului =-( 3( =triburirea re%ultatului obtinut registrului =-( 8( Stergrea "ontinutului registrului =9( +e "ele mai multe ori a"easta instru"tiune de !oloseste simplu pentru a trans!orma un nr 4C+ neimpa"6etat de 2 "i!re in e"6i$alentul sau binar( ,peratii aritmeti"e asupra nr( in !ormat 4C+ impa"6etat( Kr( in !ormat 4C+ impa"6etat pot !i !olosite dire"t doar in operatiile de adunare si s"adere( Pentru parti"iparea lor in alte operatii mai intii ele trebuie trans!ormate in nr( in !ormat 4C+ neimpa"6etat( Kumerele 4C+ in !ormat impa"6etat au o intrbuintare mult mai rara de"it nr( in !ormat 4C+ neimpa"6etat( Pentru operatia de adunare in !ormat 4C+ impa"6etat a$em instru"tiunea de "ore"tie +== *+e"imal =dJust !or =ddition1 "ore"tia re%ultatului adunarii pentru repre%entarea in %e"imal( =lgoritmul de e.e"utare al a"estei instru"tiuni este urmatorul: Anstru"tiunea lu"rea%a doar "u registrul =- si $eri!i"a pre%enta uneia din 2 situatii: 1( An re%ultatul instru"tiunii pre"edente de adunare, !anionul =F este setat pe 1, sau $aloarea tetradei in!erioare a registrului =- este mai mare "a @(

2( An re%ultatul operatiei pre"edente de adunare, !anionul CF este setat pe 1 sau $aloarea registrului =- este mai mare de"it @F6( +a"a are lo" una din a"este 2 situatii, atun"i "ontinutul registrului =- este "ore"tat in !elul urmator: +a"a are lo" situatia 1 at( "ontinutul registrului =- se in"rementea%a "u <( +a"a are lo" situatia 2, at( "ontinutul registrului =- se in"rementea%a "u <C6( +a"a au lo" ambele situatii, atun"i "ore"tia re%ultatului se in"epe "u tetrada in!erioara( +upa e.e"utarea "ore"tiei, da"a au !ost e!e"tuate trans!eruri, atun"i !anionul =F si CF sunt setate pe 1( +a"a n-au !ost e!e"tuatte trans!eruri, at( !anioanele =F si CF sunt setate pe C( Pentru operatia de s"adere a nr( in !ormat 4C+ impa"6etat a$em instru"tiunea +=S *de"imal adJust !or substra"tion1( Comanda +=S operea%a numai "u registrul =- si $eri!i"a pre%enta urmatoarelor 2 situatii: 1( An re%ultatul instru"tiunii pre"edente de adunare, !anionul =F este 1 sau $aloarea tetradei in!erioare a registrului =- este mai mare de"it @( 2( An re%ultatul operatiei pre"edente de adunare, !anionul CF este 1 sau $aloarea registrului =- este mai mare de"it @F6( +a"a are lo" una din a"este situatii, atun"i re%ultatul se "ore"tea%a in !elul urmator: Pentru situatia 1 "ontinutul registrului =- se de"rementea%a "u <( Pentru situatia 2 "ontinutul registrului =- se de"rementea%a "u <C6 +a"a au lo" ambele situatii, "ore"tia se in"epe "u tetrada in!erioara( Starea !anioanelor dupa "ore"tie: in "a% "a au !ost trans!eruri, =F si CF sunt 1, in "a% "a nu au !ost trans!eruri =F si CF sunt C(

Anstru"tiuni logi"e Paralel "u instru"tiunile aritmeti"e, setul de instru"tiuni al 2P Antel dispune de o "lasa intreaga de instru"tiuni logi"e( 4a%a teoreti"a a prelu"rarii logi"e a datelor este logi"a binara *booleana1( -ogi"a booleana se ba%ea%a pe notiunea de a!irmatie( =!irmatia este o propo%itie a!irmati$a indi!erent da"a !aptul a!irmat "orespunde sau nu ade$arului( Cal"ulul propo%itional este "onstituit dintr-un sir de reguli !olosite pentru determinarea $eridi"itatii unor "ombinatii de a!irmatii( Sistemul de pre%entare a in!ormatiei la "el mai Jos ni$el sub !orma de biti permite stabilirea unei relatii uni$o"e intre $alorile de ade$ar si "ele doua stari ale bitilor( 4itul a$ind doar 2 stari *C si 11 permite tratarea a"estor stari in "alitate de $alori de $eridi"itate pentru algebra booleana( Con!orm algebrei booleene, asupra a!irmatiilor *bitilor1 pot !i e!e"tuate urmatoarele operatii logi"e: 1( negatia K,5 2( disJun"tia ,# 3( "onJun"tia =K+ 8( L,# *suma dupa modulul 21

Anstru"tiuni logi"e: 1( =K+ Foperand1O, Foperand2O - reali%ea%a operatia "onJun"tiei sau inmultirii logi"e( 3!e"tuea%a operatia "onJun"tiei logi"e asupra operan%ilor 1 si 2 bit "u bit si ins"rie re%ultatul obtinut in lo"ul operandului 1( ,peran%ii pot !i de dimensiune ?, 1< sau 32 biti(

,perandul 1 poate !i un registru de ?, 1< sau 32 biti sau o lo"atie de memorie de ?, 1< sau 32 biti( ,perandul 2 poate !i un registru pe ?, 1< sau 32 biti, o lo"atie pe ?,1<,sau 32 biti sau un operand imediat pe ?,1<,sau 32 biti( +upa e.e"utarea instru"tiunii, !anioanele ,F si CF se setea%a pe C( 2( ,# Foperand1O, Foperand2O - reali%ea%a operatia disJun"tiei logi"e asupra operan%ilor 1 si 2 bit "u bit( #e%ultatul se memori%ea%a in lo"ul primului operand( +upa e.e"utarea instru"tiunii, !anioanele ,F si CF sunt setate pe C, "elelalte !anioane in dependenta de re%ultat, !anionul =F e nedeterminat( ,perandul al doilea poarta denumirea de operand mas"a, al doilea operand destinatie( 3( L,# Foperand1O, Foperand2O - reali%ea%a operatia disJun"tiei e."lusi$e *suma dupa modulul 21 asupra operan%ilor 1 si 2 bit "u bit( #e%ultatul se ins"rie in lo"ul primului operand( ,peran%ii pot !i : primul registrul pe ?,1<, 32 biti' lo"atie de memorie ?,1<,32 biti( ,perandul al doilea registru pe ?,1<, 32 biti' lo"atie de memorie ?,1<,32 biti sau operand imediat pe ?,1<,32biti( Starea !anioanelor dupa e.e"utare: ,F si CF sunt C, =F nedeterminat, restul in dependenta de re%ultat( 8( 53S5 Foperand1O, Foperand2O - o $arianta a "onJun"tiei logi"e' ea se e.e"uta asupra operan%ilor 1 si 2 bit "u bit' dupa e.e"utarea operatiei $alorile operan%ilor ramin nes"6imbate, in dependenta de re%ultatul obtinut se modi!i"a starea !anioanelor PF, SF si PF( ="est !apt permite anali%a unor anumiti biti !ara modi!i"area operan%ilor( 5( K,5 FoperandO - reali%ea%a operantia negarii logi"e asupra operandului bit "u bit( #e%ultatul obtinut se ins"rie in lo"ul operandului( <( 4SF Foperand1O, Foperand2O - bit s"anning !or ard: a"easta instru"tiune "er"etea%a bitii operandului 2 in"epind "u bitul in!erior spre bitul superior in s"opul gasirii primului bit po%itionat pe 1( +a"a un asemenea bit a !ost gasit, nr( a"estui bit este ins"ris in operandul 1 sub !orma de nr intreg( +a"a operandul 2 nu "ontine ni"i un bit po%itionat pe 1, atun"i !anionul PFse po%itionea%a pe 1, in "a% "ontrar, a"est bit are $aloarea C( >( 4S# Foperand1O, Foperand2O *bit s"anning reset1 s"anarea bitilor in ordine in$ersa( Anstru"tiunea are urmatorul algoritm: ea s"anea%a bitii operandului 2 de la bitul superior spre bitul in!erior in s"opul gasirii primului bit po%itionat pe 1( +a"a un asemenea bit a !os gasit, nr a"estui bit este ins"ris in operandul 1 sub !orma de nr intreg( 3ste ne"esar de mentionat "a indi!erent de dire"tia de par"urgere a bitilor operandului 2, numarul bitului ins"ris in operandul 1 se "al"ulea%a in"epind "u bitul in!erior( +a"a toti bitii operandului 2 sunt C, atun"i !anionul PF este po%itionat pe 1, in "a% "ontrar el e setat pe C( ?( 45FoperandO, Fdeplasament bitO *bit test1 a"easta instru"tiune tran!era $aloarea bitului "u nr indi"at al operandului in !anionul CF( @( 45S FoperandO, Fdeplasament bitO *bit test and set1 instru"tiunea 45S trans!era $aloarea bitului indi"at in !anionul CF apoi setea%a a"est bi pe 1( 1C( 45# FoperandO, Fdeplasament bitO *bit test and reset1 - instru"tiunea 45# trans!era $aloarea bitului indi"at in !anionul CF, apoi setea%a a"est !anion pe C(

11( 45CFoperandO, Fdeplasament bitO*bit test and "ontrol1 - trans!era $aloarea bitului indi"at in !anionul CF, apoi in$ersea%a $aloarea a"estui bit Anstru"tiunile de deplasare Anstru"tiunile de deplasare de asemenea permit manipularea bitilor operan%ilor dar intr-un mod deosebit de"it instru"tiunile logi"e( 5oate instru"tiunile de deplasare deplasea%a bitii in "impul operandului in stinga sau in dreapta in dependenta de "odul operatiei( 5oate instru"tiunile de deplasare au una si a"eeasi stru"tura: "odul operatiei, operand, "ontor deplasare( Contorul de deplasare indi"a nr bitilor "are urmea%a sa !ie deplasati( ="est operand se a!la tot timpul pe lo"ul operandului al doilea si poae !i indi"at in doua moduri: modalitatea stati"a "are presupune indi"area unei $alori !i.e sub !orma de operand imediat' modalitatea dinami"a "are presupune plasarea apriori a "ontorului de deplasare in C- inainte de e.e"utarea instru"tiunii de deplasare( 5inind "ont de dimensiunea registrului C-, teoreti" am putea e!e"tua deplasari in limitele C-255( An realitate insa, 2P ia in "onsideratie numai $aloarea "ontorului pre%entata in primii 5 biti in!eriori ai a"estui registru( #espe"ti$, $aloarea "ontorului de deplasare nu poate depasi diapa%onul C-31( /ltimele modele de 2P in"epind "u pro"esorul Pentium "ontin in setul de instru"tiuni instru"tiuni supimentare de deplasare "are permit reali%area deplasarilor in diapa%onul C-<3( 5oate instru"tiunile de deplasare a!e"tea%a !anionul CF( Pe masura deplasarii bitilor in limitele operandului, a"esti biti mai intii tre" prin !anionul CF, setindu-l in $aloarea bitului deplasat( Soarta de mai departe a a"estui bit depinde de instru"tiunea respe"ti$a de deplasare $aloarea lui ori se pierde, ori e introdusa intr-un operand de partea opusa( +upa prin"ipiul de a"tiune, instru"tiunile de deplasare pot !i impartite in 2 tipuri: 1( Anstru"tiunile de deplasare lineara 2( Anstru"tiunile de deplasare "i"li"a

Anstru"tiunile de deplasare lineara -a "ategoria instru"tiunilor de deplasare lineara sunt atribuite instru"tiunile "are reali%ea%a deplasarea dupa urmatorul algoritm: 1( 4itul deplasat setea%a "u $aloarea sa !anionul CF( 2( +in partea opusa a operandului se introdu"e un bit egal "u C( 3( -a deplasarea urmatorului bit, $aloarea lui tre"e prin !anionul CF, $aloarea bitului pre"edent se pierde( Anstru"tiunile de deplasare lineara la rindul sau pot !i !i "lasi!i"ate in 2 subtipuri: 1( Anstru"tiunile de deplasare lineara logi"a 2( Anstru"tiunile de deplasare lineara aritmeti"a Anstru"tiunile de deplasare lineara logi"a: 1( S9-FoperandO, F"ontor deplasareO *s6i!t logi"al le!t1 "ontinutul operandului se deplasea%ain stinga "u un nr de biti indi"at de operandul "ontor( +in partea dreapta, din po%itia bitului in!erior in operand se introdu" %erouri(

2( S9#FoperandO, F"ontor deplasareO *s6i!t logi"al rig6t1 "ontinutul operandului se deplasea%a in dreapta "u un nr de biti indi"at de operandul "ontor( +in partea dreapta, din po%itia bitului in!erior in operand se introdu" %erouri( Anstru"tiunile de deplasare lineara aritmeti"a Anstru"tiunile de deplasare lineara aritmeti"a se deosebes" de instru"tiunile de deplasare lineara logi"a prin !aptul "a ele prelu"rea%a intr-un anumit mod bitul de semn al operandului( 1( S=- FoperandO, F"ontor deplasareO *s6i!t aryt6meti"al le!t1 "ontinutul operandului se deplasea%a in stinga "u un nr de biti indi"at de operandul "ontor( +in partea dreapta, din po%itia bitului in!erior in operand se introdu" %erouri( Anstru"tiunea S=- nu pastrea%a bitul de semn al operandului, dar in "a% de s"6imbare a semnului setea%a !anionul CF( 2(S=# FoperandO, F"ontor deplasareO *s6i!t aryt6meti"al rig6t1 - "ontinutul operandului se deplasea%a in dreapta "u un nr de biti indi"at de operandul "ontor( +in partea stinga, in operand se introdu" %erouri( +upa deplasarea !ie"arui bit, instru"tiunea S=- restabileste $aloarea bitului de semn( Anstru"tiunile de deplasare "i"li"a -a "ategoria instru"tiunilor de deplasare "i"li"a sunt atribuite instru"tiunile "are sal$ea%a $alorile bitilor deplasati( Se impart in 2 tipuri: 1( Anstru"tiuni de deplasare "i"li"a simpla 2( Anstru"tiuni de deplasare "i"li"a prin intermediul !anionului CF( Anstru"tiuni de deplasare "i"li"a simpla 1( #,- FoperandO, F"ontor deplasareO *rotate le!t1 "ontinutul operandului e deplasat in stinga "u un nr de biti indi"at de operandul "ontor( 4itii deplasati se ins"riu in a"elasi operand din partea dreapta( 2( #,# FoperandO, F"ontor deplasareO *rotate rig6t1 deplasarea "i"li"ain dreapta "ontinutul operandului de deplasat in dreapta "u un nr de biti indi"at de operandul "ontor( 4itii deplasati se ins"riu in a"elasi operand din partea stinga( Anstru"tiuni de deplasare "i"li"a prin intermediul !anionului CF 1( #C-FoperandO, F"ontor deplasareO *rotate "arry le!t1 "ontinutul operandului se deplasea%a in stinga "u un nr de biti indi"at de operandul "ontor( 4itii deplasati "onse"uti$ setea%a !anionul CF( 2( #C# operandO, F"ontor deplasareO *rotate "arry rig6t1 - "ontinutul operandului se deplasea%a in stinga "u un nr de biti indi"at de operandul "ontor( 4itii deplasati "onse"uti$ setea%a !anionul CF( Anstru"tiuni suplimentare de deplasare Anstru"tiunile supllimentare de deplasare au!ost instroduse in setul de instru"tiuni al 2P Antel odata "u aparitia primului pro"esor pe 32 biti i?C3?<( ="este instru"tiuni suplimentare de deplasament poarta denumirea de instru"tiuni de deplasare "u e.a"titate dubla( 1( S9-+ Foperand1O, Foperand2O, F"ontor de deplasareO - deplasarea in stinga "u e.a"titate dubla( ="easta instru"tiune reali%ea%a inlo"uirea bitilor operandului 1 prin deplasare in stinga "u bitii e."lusi din operandul 2 dupa urmatoarea s"6ema: bitul deplasat

din operandul 1 tre"e in !anionul CF( 4itul deplasat din operandul 2 se introdu"e in operandul 1( Kr bitilor deplasati este indi"at de operandul "ontor( 2( S9#+ Foperand1O, Foperand2O, F"ontor de deplasareO - reali%ea%a inlo"uirea bitilor operandului 1 prin deplasare in dreapta inlo"uindu-i "u bitii operandului 2( Kr bitilor deplasati este determinat de operandul "ontor, $aloarea "ontorului pentru ambele instru"tiuni poate !i in limitele C-31( ="easta $aloare poate !i indi"ata dire"t sau in mod dinami" prin intermediul registrului C-( An ambele "a%uri, $aloarea operandului 2 nu e modi!i"ata( Anstru"tiunile de trans!er a "ontrolului Anstru"tiunile de trans!er a "ontrolului permit programarea salturilor sau a rami!i"arilor( 5rans!erul "ontrolului poate !i ne"onditionat sau "onditionat( An "a%ul trans!erului ne"onditionat, in lo"ul respe"ti$ al programului, "ontrolul urmea%a sa !ie transmis in mod obligatoriu nu urmatoarea instru"tiuni din program, dar unei altei instru"tiuni "are poate !i amplasata la o distanta oare"are *sus, Jos, +, -1 !ata de instru"tiunea "urenta( An "a%ul trans!erului "onditionat al "ontrolului, de"i%ia despre trans!erul "ontrolului se !a"e in ba%a anali%ei unor anumite "onditii sau date( An re%ultatul a"estei anali%e, trans!erul "ontrolului poate !i !a"ut prin alta instru"tiune a!lata la o distanta de instru"tiunea "urenta sau poate !i transmis urmatoarei instru"tiuni din program( Programele pre%inta posibilitati de instru"tiuni si date "are o"upa un anumit $olum din memoria operati$a( ="est $olum de memorie poate !i o %ona "ontinua de memorie sau poate !i al"atuita din mai multe !ragmente: "are instru"tiune $a !i e.e"utata urmatoarea, 2P de"ide anali%ind pere"6ea de registre CS:3APMAP unde registrul CS pastrea%a adresa !i%i"a a segmentului "urent de "od, iar registrul 3APMAP este registrul indi"ator de instru"tiune "are pastrea%a o $aloare "e repre%inta deplasamentul in memorie a urmatoarei instru"tiuni de indeplinit *relati$ "u in"eputul segmentului "urent de "od1( Care anume registru $a pastra deplasamentul urmatoarei instru"tiuni de indeplinire 3APMAP depinde de regimul de adresare use32 sau use1<( +a"a se !oloseste adresarea pe 32 biti, atun"i e$ident se !oloseste registrul 3AP, in use1< AP( An "a%ul reali%arii unei instru"tiuni de salt, are lo" modi!i"area "ontinutului registrelor 3APMAP( An unele "a%uri se modi!i"a si "ontinutul registrului CS( ="easta inseamna "a 2P alege pentru e.e"utie nu urmatoarea instru"tiune, "i o alta instru"tiune "are poate !i amplasata in alt lo" al programului( An a"est "a%, are lo" resetarea "ontinutului liniei de asamblare a 2P(

(model small (sto"7 1CC8 (data

mesaJ1 db Y=pasati tasta dorita Z, Cd6, Ca6, Y[Z tabX"on$ db YC12385<>?@=4C+3FZ mesaJ2 db Y are "odul =SCAA Z tasta db 2 dup*\1, Cd6, Ca6, Y[Z ("ode mo$ a., Vdata mo$ ds, a. mo$ a6, C@6 lea d., mesaJ1 int 216 mo$ a6, C16 int 216 mo$ a6, al and al, C!6 lea b., tabX"on$ .lat tabX"on$ mo$ tasta+1, al mo$ al, a6 mo$ "l, 8 s6r al, "l .lat tabX"ont mo$ tasta, al mo$ a6, C@6 lea d., mesaJX2 int 216 mo$ a., 8"oo6 int 216 end

+upa prin"ipiul de a"tiune, instru"tiunile de trans!er a "ontrolului pot !i "lasi!i"ate in 3 grupe:

1( Anstru"tiunile de trans!er ne"onditionat - instru"tiunea de salt ne"onditionat N2P - apelul de pro"edura si re$enirea in pro"edura - apelul de intrerupere de program si re$enirea din intreruperile de program 2( Anstru"tiunile de trans!er "onditionat a "ontrolului - instru"tiunile de salt in re%ultatul unei instru"tiuni de "omparare - instru"tiunile de salt in dependenta de starea unui anumit !anion - instru"tiunile de salt in dependenta de "ontinutul registrului "ontrol 3CLMCL 3( Anstru"tiunile de organi%are a "i"lurilor - instru"tiunea de organi%are a "i"lului "ontor in registrul 3CLMCL -instru"tiunea de organi%are a "i"lului "ontrol in registrul 3CLMCL "u posibilitatea terinarii pre"o"e a e.e"utiei "i"lului in dependenta de o "onditie suplimentara /n lo" important pentru reali%area instru"tiunilor de trans!er a "ontrolului o are momentul determinarea lo"ului de salt( An limbaJul de asamblare, a"est lu"ru se reali%ea%a prin !olosirea eti"6etelor( 3ti"6eta in limbaJul de asamblare este un nume simboli" "are determina o anumita lo"atie de memorie(=nume adresaa"estei lo"atii de memorie este !olosita in "alitate de operand de "atre instru"tiunile de trans!er a "ontrolului( =semeni $ariabilelor, translatorul atribuie unei eti"6ete 3 atribute: 1( numele segmentului de "od unde este de!inita a"easta eti"6eta 2( deplasamentul *distanta in o"teti de la in"eputul segmentului unde a"easta eti"6eta a !ost de!inita1 3(tipul eti"6etei *atributul de distanta1 =tributul de distanta poate a$ea una din 2 $alori: - near *apropiata1 spe"i!i"a !aptul "a saltul la a"easta eti"6eta este posibil doar in limitele segmentului de "od unde a"easta eti"6eta a !ost des"risa(-a ni$el !i%i", a"easta inseamna "a pentru tre"erea la eti"6eta respe"ti$a este su!i"ient sa s"6imbam "ontinutul registrului 3APMAP - !ar *indepartata1 spe"i!i"a !aptul "a saltul la eti"6eta respe"ti$a este posibil in re%ultatul unui trans!er intersegmental al "ontrolului( -a ni$el !i%i", a"est lu"ru inseamna atit s"6imbarea "ontinutului registrului 3APMAP "it si a registrului CS( 3ti"6eta poate !i de!inita "u aJutorul operandului : sau "u aJutorul dire"ti$ei label( eti"6etaX1 : eti"6etaX2 label near Prima modalitate este $alabila doar pentru eti"6etele "are au atributele distanta near( 2odalitatea a doua poate !i !olosita atit pentru de!inirea eti"6etelor atit de tip near "it si de tip !ar( Salturi ne"onditionate Anstru"tiunile de salt modi!i"a registrul indi"ator de instru"tiune 3APMAP siin unele "a%uri *eti"6eta !ar1 "ontinutul CS( Care anume registre $or !i modi!i"ate depinde de urmatoarele momente: 1( tipul operandului *da"a a"est operand are tipul near sau !ar1 2( de !aptul da"a inaintea eti"6etei de salt este indi"at un modi!i"ator An a"est "a%, adresa de salt poate !i indi"ata nemiJlo"it in instru"tiune *salt dire"t1 sau intrun registru sau o lo"atie de memorie *saltul indire"t1( 2odi!i"atorul adresei de salt poate lua una din urmatoarele $alori:

near ptr spe"i!i"a un salt dire"t la o eti"6eta in "adrul a"eluiasi segment de "od( An a"est "a% se modi!i"a doar "ontinutul registrului 3APMAP in dependenta de regimul de adresare use1< sau use32( !ar ptr spe"i!i"a un salt dire"t in "adrul altui segment de "od( =dresa de salt este indi"ata sub !orma unui operand nemiJlo"it sau sub !orma unei adrese *eti"6ete1 si este "onstituita din 2 parti: 1( sele"tor *1< biti1 2( deplasament *1< sau 32 biti1"are se in"ar"a respe"ti$ in registrele CS si registrul APM3AP( ord ptr spe"i!i"a un salt indire"t la o eti"6eta in "adrul segmentului "urent de "od( An a"est "a%, se modi!i"a "u o $aloare a unui deplasament din memorie indi"ata in instru"tiune sau pe o adresa sau prin $aloarea unui registru doar "ontinutul registrului 3APMAP( d ord ptr - spe"i!i"a un salt indire"t la o eti"6eta in "adrul altui segment de "od( An a"est "a%, se modi!i"a "u o $aloare din memorie si K/2=A din memorie atit "ontinutul registrului CS "it si a registrului 3APMAP( ="easta $aloare din memorie poate !i de lungime 2 "u$inte sau 3 "u$inte( Primul "u$int al a"estei adrese modi!i"a "ontinutul registrului APM3AP, iar al doilea, respe"ti$ al treilea "u$int modi!i"a "ontinutul registrului CS( Anstru"tiunea N2P are sinta.a: Jmp Smodi!i"atorT, adresaXdeXsalt spe"i!i"a un salt ne"onditionat spre o adresa de salt !ara pastrarea in!ormatiei despre pun"tul de re$enire(=dresa de salt repre%inta o eti"6eta sau o adresa a unei lo"atii de memorie unde se gaseste adresa de salt( Sistemul de instru"tiuni al 2P dispune de "ite$a "oduri interne ale instru"tiunii N2P( +eosebirea dintre ele "onsta in distanta saltului si in modul "um este indi"ata adresa de salt( Salturile pot !i intrasegmentare si intersegmentare( Saltul intrasegmentar presupune "a $a !i modi!i"at doar "ontinutul registrului 3APMAP( Pot !i e$identiate 3 $ariante ale saltului intrasegmentar posibile "u aJutorul instru"tiunii N2P: - saltul dire"t s"urt - saltul dire"t - saltul indire"t Prima $arianta a saltului *saltul dire"t s"urt1 se !oloseste in "a%ul in "are distanta de salt nu depaseste limitele de -12? +12> de o"teti in "adrul segmentului( An a"est "a%, translatorul !ormea%a o adresa de salt de lungime de 2 o"teti( An mod normal, lungimea unei instru"tiuni de salt e de 3 o"teti( = doua $arianta *saltul dire"t1 se deosebeste de saltul dire"t s"urt prin !aptul "a lungimea instru"tiunii de salt in a"est "a% are 3 o"teti si a"easta instru"tiune permite reali%area salturilor in limitele a <8 7b in raport "u instru"tiunea urmatoare instru"tiunii N2P( Saltul instrasegmentar indire"t presupune indi"area indire"ta a adresei de salt( ="easta inseamna "a in instru"tiunea de salt nu se indi"a in mod e.pli"it lo"ul saltului, dar se indi"a lo"ul unde poate !i gasita adresa lo"ului de salt( Saltul intersegmentar presupune un alt me"anism de !ormare a instru"tiunii internesi presupune modi!i"area atit a "ontinutului registrului 3APMAP "it si a "ontinutului registrului CS( Saltul intersegmentar presupune doua $ariante a saltului ne"onditionat: saltul intersegmentar dire"t si saltul intersegmentar indire"t( Anstru"tiunea saltului ne"onditionat intersegmentar dire"t are lungimea de 5 o"teti, dintre "are 2 o"teti repre%inta deplasamentul, iar altii 2 "omponenta de segment( Codul operatiei o"upa un o"tet( Anstru"tiunea saltului intersegmentar indire"t are in "alitate de operand adresa unui domeniu de

memorie in "are se pastrea%a atit $aloarea deplasamentului, "it si "omponenta de segment a adresei de salt( Salturile "onditionate *tras!erul "onditionat al "ontrolului1 Salturile "onditionate se deosebes" de trans!erul ne"onditionat prin !aptul "a de"i%ia desprereali%area trans!erului se ia in re%ultatul anali%ei si "al"ularii $alorilor unor anumite e.presii( An totalitate, in setul de instru"tiuni al 2P se "ontin 1? instru"tiuni de salt "onditionat( ="este instru"tiuni permit $eri!i"area urmatoarelor relatii: 1( relatii intre operan%i "u semn de tipul O F 2( relatii intre operan%i !ara semn de tipul mai sus, mai Jos 3( $eri!i"area starii !anioanelor aritmeti"e PF, SF, CF, ,F si PF( 5oate instru"tiunile de salt "onditionat au una si a"eeasi sinta.a: NCC adresaXdeXsalt unde N litera "u "are in"ep toate instru"tiunile de salt "onditionat( NCC repre%inta o "onditie "on"reta de reali%are a saltului "are este reali%ata de instru"tiunea respe"ti$a( =dresa de salt este o eti"6eta "are poate !i amplasata doar in "adrul segmentului "urent de "od( Salturile intersegmentare dunt inter%ise pentru instru"tiunile de salt "onditionat( Pentru a lua de"i%ia unde $a !i reali%at trans!erul "ontrolului, in prealabit trebuie sa !ie !ormulata "onditia in ba%a "areia $a !i luata de"i%ia despre reali%area saltului( Surse ale unei asemenea "onditii pot !i: 1( ori"e instru"tiune "are modi!i"a starea !anioanelor aritmeti"e 2( instru"tiunea de "omparare C2P "are "ompara $alorile a 2 operan%i 3( starea registrului "ontor 3CLMCL Anstru"tiunea C2P Sinta.a a"estei instru"tiuni este C2P Foperand1O Foperand2O( ="easta instru"tiune "ompara operan%ii 1 si 2 si in dependenta de re%ultat setea%a !anioanele aritmeti"e( Fanioanele respe"ti$e pot !i anali%ate "u aJutorul unor instru"tiuni spe"iale de salt( Pentru !ormarea a"estei instru"tiuni de salt se !oloses" urmatoarele relatii dintre operan%i: 1( relatia de egalitate se !oloseste pentru ori"e tip de operan%i 2( relatia K,5 se !oloseste pentru ori"e tip de operan%i 3( relatia 2=A 2=#3 se !oloseste pentru operan%i "u semn 8( relatia 2=A 2AC se !oloseste pentru operan%ii "u semn 5( relatia =4,V3 se !oloseste pentru operan%i numere !ara semn <( relatia 43-,0 - se !oloseste pentru operan%i numere !ara semn An dependenta de a"este relatii, a$em urmatoarele instru"tiuni de salt: N3 $eri!i"a egalitatea operan%ilor 1 si 2 si da"a operan%ii sunt egali, "onditia de salt se $eri!i"a dupa starea !anionului PF *in a"est "a% PFG11 NK3 Jumpi! not eIual *salt da"a operandul 1 di!erit de operand 21 PFGC N- Jump i! lessM NKB3 Jump i! not greater or eIual - da"a operandul 1 F operandul 2, la ni$el de !anioane SF di!eril de ,F( N-3 Jump i! less or eIual M NKB Jump i! not greater operan%ii sunt nr( "u semn, "onditia de salt este operand1 F operand2, SF di!erit de ,F, PFG1( NB3MNK- Jump i! greater or eIual, Jump i! not less $eri!i"a da"a operandul 1 OGoperand 2( Valoarea !anioanelor: SFG,F( N4MNK=3 Jump i! belo M Jump i! not abo$e or eIual se $eri!i"a da"a operand 1Foperand 2' operan%ii nr !ara semn' $aloarea !anioanelor: CFG1'

N43MNK= Jump i! belo or eIualM Jump i! not abo$e operan%i nr !ara semn' se $eri!i"a da"a operandul 1FGoperand 2' CFG1 sau PFG1' N=MNK43 Jump i! abo$eM Jump i! not belo or eIual CFGC' PFGC' N=3MNK4 Jump i! abo$e or eIualM Jump i! not belo CFGC' Anstru"tiunile de salt "onditionat in dependenta de starea !anioanelor: 2nemoni"a tuturor instru"tiunilor de salt in dependenta de starea !anioanelor este "onstituita din litera N si prima litera a !anionului sau N si litera K inainte de prima litera a denumirii !anionului( NC e!e"tuarea saltului da"a CFG1' NP e!e"tuarea saltului da"a PFG1' NP e!e"tuarea saltului da"a PFG1' NS e!e"tuarea saltului da"a SFG1' N, e!e"tuarea saltului da"a ,FG1' NKC salt da"a CFGC' NKP salt da"a PFGC' NKP salt da"a PFGC' NKS salt da"a SFGC' NK, salt da"a ,FGC' An dependenta de $aloarea 3CLMCL #egistrul 3CLMCL, in a!ara de !aptul "a este !olosit pentru pastrarea datelor, mai are spe"iali%area "a registru "ontor, adi"a este !olosit pentru pastrarea "ontorului la programarea "i"lurilor "u "ontor( =nali%ind in interiorul "i"lului $aloarea a"estui "ontor poate !i luata de"i%ia despre parasirea pre"o"e a "i"lului sau despre terminarea repetarii "orpului "i"lului( 3.ista 2 instru"tiuni de salt "onditionat legate de registrul "ontor si anume: pentru adresarea pe 1< biti si adresarea pe 32 biti( NCLP eti"6eta - salt da"a CLGC' N3CLP eti"6eta salt da"a 3CLGC' ="este instru"tiuni se !oloses" pentru programarea "i"lurilor "ontor si pentru organi%area prelu"rarii sirurilor de simboluri "ind este ne"esara par"urgerea tuturor elementelor sirului( 3.emplu: (model small (sta"7 1CC6 (data len eIu 1C mas db 1,C,2,3,C,8,C,5,C,? mesaJX1 db Y2esaJul "ontine Z,Z[Z mesaJX2 db Y elemente nuleZ, Y[Z ("ode mo$ a., Vdata mo$ ds, a. mo$ a6, C@6

lea d., mesaJX1 int 216 L,# a.,a. L,# si, si mo$ "., len "y"l: J".% e.it "mp masSsiT, C Jne m1 in" al de" ". in" si Jmp "y"l add al, 3C6 mo$ dl, al mo$ a6, C26 int 216 mo$ a6, C@6 lea d., mesaJX2 int 216 mo$ a., 8"CC6 int 216 end

m1:

e.it:

,rgani%area "i"lurilor "u instru"tiunea -,,P 3.ista "ite$a instru"tiuni re%er$ate pentru organi%area "i"lurilor "ontor in registrele 3CLMCL "are, in mod impli"it, dupa !ie"are iteratie automat de"rementea%a "ontinutul registrului 3CLMCL( Ci"lurilor organi%ate "u a"este instru"tiuni sunt similare "i"urilor "ontor *F,#1 din limbaJele de ni$el superior( -u"rul a"estor instru"tiuni au urmatorul algoritm de reali%are: 1( +e"rementarea "ontinutului registrului 3CLMCL( 2( Compararea "ontinutului registrului 3CLMCL( +a"a "ontinutul registrului respe"ti$ este OC, atun"i se reali%area%a trans!erul "ontrolului la eti"6eta de salt( +a"a insa "ontinutul registrului 3CLMCL este C, atun"i "ontorul se trans!era la instru"tiunea urmatoare instru"tiunii -,,P( =$em urmatoarele instru"tiuni: -,,P eti"6eta -,,P3M-,,PP eti"6eta ="este 2 instru"tiuni repeta "orpul "i"lului atita timp "it 3CLMCL este di!erit de C sau PFGC' Anstru"tiunile -,,P3 si -,,PP sunt absolut sinonime, de a"eea de"i%ia "are din ele sa !ie utili%ata ramine pe seama programatorului( =lgoritmul de e.e"utie a a"estor instru"tiuni este urmatorul:

1( +e"rementarea "ontinutului registrului 3CLMCL( 2( Compararea "ontinutului registrului "u C( 3( =nali%a starii !anionului PF( +a"a 3CLMCLOC si PFG1, atun"i are lo" tre"erea la eti"6eta de salt( +a"a 3CLMCLGC sau PFGC, atun"i "ontrolul se trans!era la instru"tiunea urmatoare dupa instru"tiunea -,,P( -,,PK3M-,,PKP a"easta instru"tiune permite reali%area "i"lurilor "ontor "are $or repeta "orpul "i"lului atit timp "it "ontinutul registrului 3CLMCL e di!erit de C si !anionul PFGC( =re urmatorul algoritm de e.e"utie: 1( +e"rementarea "ontinutului registrului 3CLMCL( 2( Veri!i"a "ontinutul registrului 3CLMCL "u C' 3( =nali%ea%a starea !anionului PF: da"a 3CLMCLOC si PFGC, atun"i "ontrolul se trans!era la eti"6eta de salt( +a"a insa 3CLMCL este C sau PFG1, atun"i "ontrolul se trans!era la urmatoarea instru"tiune dupa -,,P( Instructiunile de prelucrarea a sirurilor Sirul repre%inta o denumire generala, a$em "onse"uti$itati de elemente "are au dimensiunea de ?, 1< sau 32 biti( Anstru"tiunile de operare pe siruri permit e!e"tuarea anumitor operatii asupra blo"urilor de memorie si repre%inta "onse"uti$itati de elemente de ?, 1< si 32 biti( Continutul a"estor blo"uri de memorie nu are ni"i o importanta pentru 2P( 3le pot !i nr, simboluri sau ori"are alte $alori( /ni"a "onditie "are urmea%a sa !ie respe"tata in a"est "a% este "a dimensiunile elementelor sirului respe"ti$ sa "orespunda uneia dintre "ele 3 lungimi( 3lementele a"estui siruri trebuie sa !ie amplasate in lo"tii "onse"uti$e de memorie( Sistemul de instru"tiuni interne ale 2P dispune de > instru"tiuni spe"iale numite instru"tiuni primiti$e, pre$a%ute pentru reali%area prin"ipalelor operatii posibile pe siruri( Fie"are din a"este > instru"tiuni generea%a "ite 3 instru"tiuni pentru !ie"are lungime a elementelor sirului( 2,VS : 2,VS4 2,VS0 2,VS+ 2,VS destinatie, sursa Anstru"tiunea 2,VS "opie un o"tet, "u$int sau "u$int dublu din operandul sirului sursa in operandul destinatie( -ungimea elementului poate !i respe"ti$ de ?, 1<, 32 biti( Pentru a apli"a a"easta instru"tiune, urmea%a sa se e!e"tuea%a urmatoarele operatii in prealabil: 1( Setarea !anionului CF in dependenta de ordinea par"urgerii sirului( 2( Sa se in"ar"e indi"atorii adresei sirurilor "are urmea%a sa !ie prelu"rate in pere"6ile de registre CS:SAM3SA si respe"ti$ 3S:3+AM+A 3( An registrul 3CLMCL sa !ie in"ar"at nr( de elemente "are urmea%a sa !ie supuse prelu"rarii 8( 3.e"utarea instru"tiunii 2,VS !olosit pre!i.ul #3( Anstru"tiunea C2PS C2PS: C2PS4 C2PS0 C2PS+

C2PS destinatie, sursa Anstru"tiunea C2PS permite "ompararea elementelor a doua siruri( Primul operand pastrea%a adresa sirului destinatie, iar operandul sursa pastrea%a adresa sirului sursa( =dresa sirului destinatie urmea%a sa !ie apriori in"ar"at in pere"6ea de registre 3+AM+A( =lgoritmul a"estei instru"tiuni la reali%area operatiei de s"adere din elementul sirului sursa a elementului sirului destinatie( Prin"ipiul de reali%are a a"estei instru"tiuni este similar la C2P( 3a, de asemenea reali%ea%a operatia de s"adere a elemntelor !ara a memori%a re%ultatul si in re%ultatul a"estei s"aderi setea%a !anioanele PF, SF si ,F( +upa "ompararea elementelor respe"ti$e de pe a"elasi lo", "ontinutul registrelor 3SAMSA si 3+AM+A se modi!i"a automat "u adresa urmatorului element din sir( C2PS este de regula e.e"utat !olosind pre!i.ele de repetare #3P3M#3PP sau #3PK3M#3PKP( Pre!i.ele #3P3M#3PP , in "a%ul in "are urmea%a sa !ie reali%ata "ompararea elementelor a 2 siruri atita timp "it nu se satis!a"e una din urmatoarele "onditii: 1( = !ost atins s!irsitul sirului( 2( An re%ultatul "ompararii elementelor sirurilor au !ost depistate 2 elemente "are nu "oin"id si !anionul PF a !ost setat pe C( Pre!i.ele #3PK3M#3PKP se !oloses" in "a%ul "ind trebuie reali%ata "ompararea a 2 siruri atita timp pina "ind nu se satis!a"e una din 2 "onditii: 1( 3CLMCLGC' 2( An sirurile "omparate au !ost gasite 2 elemente "are "oin"id si PFG1'

Anstru"tiunea SC=S *s"anarea sirurilor1 Anstru"tiuea SC=S soli"ita indi"area doar a unui operand, si anume a adresei destinatie( Anstru"tiunea SC=S este utili%ata pentru "autarea unei anumite $alori intr-o %ona de memorie( -a ni$el logi", a"easta %ona de memorie este interpretata "a un sir de elemente de lungime ?, 1< sau 32 biti( Valoarea "autata trebuie apriori sa !ie amplasata in registrul a"umulator =- sau =L sau 3=L( =legerea registrului respe"ti$ este "on"ordata "u dimensiunea elementelor sirului( Sistemul de instru"tiuni al 2P pune la disp%itia programatorului 8 instru"tiuni di!erite pentru s"anarea sirurilor( Varianta "on"reta a instru"tiunii este aleasa "on!orm dimensiunii elementelor sirului( SC=S SC=SSC=S0 SC=S+ Ampreuna "u a"este instru"tiuni pot !i !olosite pre!i.ele #3P3M#3PP si #3PK3M#3PKP( Primele pre!i.e #3P3M#3PP se !oloses" in "a%ul in "are urmea%a sa !ie "er"etat sirul pina la satis!a"erea uneia din 2 "onditii: 1( = !ost atins s!irsitul sirului( 2( An sirul "er"etat a !ost gasit un element di!erit de elementul din registrul =-M=LM3=L( =ldoilea tip de pre!i%e se !oloseste in "a%ul in "are urmea%a sa !ie organi%ata "er"etarea sirului pina la satis!a"erea uneia din 2 "onditii: 1( = !ost atins s!irsitul sirului( 2( An sirul "er"etat a !ost gasit un element "are "oin"ide "u elementul din registrul =-M=LM3=L( Anstru"tiunea -,+S *load string1 in"ar"area unui element al sirului in registrul a"umulator -,+S adresaXsursa

S"opul a"estei instru"tiuni este in"ar"area unui element din sirul indi"at de adresa operandului, lungimea elementelor ?, 1< sau 32 biti in registrul a"umulator =-M=LM3=L( Pentru !ie"are lungime a elementelor, "al"ulatorul generea%a una din urmatoarele instru"tiuni: -,+S4 -,+S0 -,+S+ Anstru"tiunea de trans!er a unui element din registrul a"umulator intr-un sir S5,S S5,S adresaXdestinatie 3ste !olosita pentru sal$area intr-un sir a elementului pastrat in registrul a"umulator( -ungimea elementului poate !i ?, 1< sau 32 biti si pentru !ie"are "a% aparte, translatorul generea%a una din 3 instru"tiuni: S5,S- adresaXdest sal$area intr-un sir "u elementele de lungimea ? biti din registrul a"umulator S5,S0 adresaXdest sal$area intr-un sir "u elementele de lungimea 1< biti din registrul a"umulator S5,S+ adresaXdest sal$area intr-un sir "u elementele de lungimea 32 biti din registrul a"umulator Pentru instru"tiunile -,+S si S5,S este importanta dire"tia de par"urgere a sirului, adi"a $aloarea !anionului +F si a registrului +S:SAM3SA si a registrelor 3SM3+AM+A( Pre!i.ele de repetare pentru a"este instru"tiuni pot sa nu !ie ne"esare, tot depinde de logi"a de organi%are a programelor Anstru"tiunile de "itire a unui element a sirului dintr-un port de intrare-iesire Anstru"tiunile de introdu"ere a elementelor dintr-un port de intrare-iesire intr-un sir !oloses" registrul +L pentru indi"area nr portului din "are se !a"e "itirea elementului introdus( Anstru"tiunea AKS are sinta.a: AKS adresaXdestinatie, numXport +imensiunea elementului sirului "are urmea%a sa !ie "itit din port trebuie sa !ie "on"ordata "u dimeniunea portului( +imensiunea portului este deteminata prin intermediul dire"ti$elor de re%er$area a memoriei !olosite pentru re%er$are memoriei pentru elementele sirului( +upa trans!erul urmatorului element, instru"tiunea AKS e!e"tuea%a "ore"tia registrului 3+AM+A "u o $aloare egala "u dimensiunea elementului sirului "are a parti"ipat la operatia de trans!er( +e obi"ei, pentru e.e"utarea instru"iunii AKS se tine "ont de dire"tia de par"urgere a sirului, adi"a de starea !anionului +F( Pentru !ie"are "a% aparte, translatorul trans!orma instru"tiunea AKS in una din "ele 3 $ariante: AKS4 AKS0 AKS+ S"rierea unui element dintr-un sir intr-un port ,/5S numXport, adresaXsirXsursa transmiterea dintr-un port de intrare-iesire a unui element( ,/5S4 ,/5S0 ,/5S+

Pentru organi%area lu"rului "u porturile de intrare-iesire nu e su!i"ienta "unoasterea nr porturilor( +e asemenea este importanta "unoasterea algoritmilor de lu"ru "u porturile( +e regula, a"este in!ormatii sint des"rise in do"umentatia te6ni"a "are insoteste dispo%iti$ul respe"ti$(

5ipuri stru"turate de dat in limbaJul de asamblare 5ranslatorul assembler poate prelu"ra urmatoarele tipuri de date stru"turate de date: 1( 2asi$e 2( Stru"turi de date 3( #euniuni de date 8( Anregistrari de date 2asi$e +e!initie: 2asi$ul , in limbaJul de asamblare repre%inta un tip stru"turat de date "onstituit dintr-un nr ori"are de elemente de a"elasi tip( Pentru a e!e"tua o operatie asupra elementelor masi$elor, in programele assembler mai intii urmea%a sa !ie "lari!i"ate urmatoarele intrebari: 1( 2odul de des"riere a masi$ului in program 2( 2odul in "are $or !i initiali%ate elementele masi$ului *in "e mod $or !i atribuite $alorile initiale pentru elementele masi$ului1 3( Cum $a !i orani%at a""esul la elementele masi$ului 8( 2odul in "are $or !i organi%ata e!e"tuarea operatiilor tipi"e asupra elementelor masi$ului *adunarea, inmultirea, elemente e.treme, sortare, et"1 -imbaJul de asamblare nu dispune de miJloa"e spe"iale pentru de"lararea si operarea "u elementele masi$elor( An "a% de ne"esitate, !olosirea masi$elor in programele assembler poate !i modelata in unul din urmatoarele moduri: 1( Prin enumerarea $alorilor elementelor masi$ului in "impul operan%ilor a unei dire"ti$e de de"larare a datelor mas1 db C,1,2,3,8 mas2 d 22, 33, 88, 55, << mas3 dd 111, 222, 333 2( Folosirea operatorului de repetare +/P mas d 5 dup*C1 mas1 db 5 dup*\1 3( +e"lararea masi$elor prin utili%area dire"ti$elor -=43- si #3P5 Pere"6ea a"estor dire"ti$e poate !a"ilita des"rierea masi$elor mari de elemente in memorie si !a"e des"rierea elementelor masi$ului mai transparenta( +ire"ti$a #3P5 apartine miJloa"elor ma"ro ale limbaJului de asamblare si reali%ea%a repetarea de un nr anumit de ori a liniilor de program in"luse intre a"easta dire"ti$a si dire"ti$a 3K+2( 3.emplu: masXb label byte masX label ord

rept 8 d C!1!C6 endm An re%ultatul a"estei "onse"uti$itati de instru"tiuni, in memorie $a !i "reata o "onse"uti$itate din 8 "u$inte "u $aloarea !1!C6( ="easta "onse"uti$itate poate !i tratata "a un masi$ de o"teti sau "a un masi$ de "u$inte in dependenta de !aptul "are nume $a !i !olosit in program: masXb sau masX ( 8( Folosirea unui "i"lu pentru initiali%area unei %one de memorie anumite $alori "are ulterior $a putea !i interpretata "a un masi$ de elemente( 3.emplu: mas db 1C dup*\1 ------------------------------go: mo$ b6, 1 mo$ masSsiT, b6 in" i in" si loop go Cele mai simple masi$e "are pot !i prelu"rate in programele assembler sunt masi$ele unidimensionale( Pentru "a%ul dimensiunilor mai mare "a 1, limbaJul de asamblare la !el nu dispune de miJloa"e spe"iale de organi%are a a"estor masi$e( 2odelarea a"estor "a%uri ramine la dis"retia programatorului( 5otul depinde "um urmea%a sa !ie par"urs masi$ul pentru nOG2( +e regula, elementele masi$ului in dependenta de ne"esitate sunt par"urse ori pe limii, ori pe "oloane, de a"eea la des"rierea masi$ului, una din dire"ti$ele de des"riere a datelor, ele urmea%a sa !ie aranJate in ordinea respe"ti$a(

Stru"turi de date Stru"turile de date sunt de!inite "a un tip stru"turat de date "onstituit dintr-un numar !i.at de elemente de tipuri di!erite( Pentru utili%area stru"turilor in programele assembler, programatorul urmea%a sa reali%e%e urmatoarele 3 lu"ruri: 1( Sa des"rie sablonul stru"turii( ="easta inseamna de!inirea unui nou tip de date "are ulterior ar putea !i !olosit pentru de"lararea $ariabilelor de a"est tip( 2( +e!inirea unui e.emplar al stru"turii( ="easta inseamna initiali%area unei $ariabile "on"rete !olosind sablonul "u o stru"tura "on"reta( 3( ,rgani%area a""esului la elementele dorite( 3.ista o di!erenta intre des"rierea stru"turii unui program si de"lararea stru"turii( = des"rie o stru"tura in program inseamna doar a indi"a s"6ema sau sablonul ei( Pentru a"est sablon nu se re%er$ea%a memorie( 3l poate !i !olosit dor "a o in!ormatie suplimentara pentru translator despre amplasarea "impurilor stru"turii si a $alorilor lor impli"ite( +e"lararea stru"turii inseamna indi"area translatorului despre ne"esitatea re%er$arii memoriei pentru stru"tura si atribuirea %onei re%er$ate de memorie unui nume simboli"( Stru"tura poate !i des"risa intr-un program intr-o singura data, iar de"larata poate !i de un numar arbitrar de ori( +e"lararea sablonului stru"turii are urmatoarea sinta.a: nume stru"tura S5#/C

Fdes"rierea "impurilor S5#O nume stru"tura 3K+S( =i"i des"rierea "impurilor repre%inta un sir de dire"ti$e de de"riere a datelor de tip db, d , dd, dI, dt( ,peran%ii a"estor dire"ti$e $or determina dimensiunea "impurilor stru"turii si, in "a% de ne"esitate, $alorile lor initiale( 3$entual, "u a"este $alori pot !i initiali%ate elementele stru"turii in momentul de"lararii stru"turii( 3.emplu: or7er S5#/C nam db 3C dup*D D1 se. db D D position db 3C dup*D D1 age db 2 dup*D D1 standing db 2 dup*D D1 salary db 8 dup*D D1 birt6day db ? dup*D D1 or7er 3K+S #euniuni #euniunile sunt un tip stru"turat de date "e permite tratarea uneia si a"eleiasi %one de memorie "a a$ind tipuri si nume di!erite( +es"rierea reuniunilor in program este similara des"rierii stru"turilor, adi"a initial se des"rie sablonul reuniunii in interiorul "aruia "u aJutorul dire"ti$elor de des"riere a datelor sunt enumarate denumirile si tipurile "impurilor( Sinta.a des"rierii reuniunilor este urmatoarea: numeXreuniune /KA,K Fdes"rierea "impurilorO numeXreuniune 3K+S +i!erenta dintre des"rierea sablonului reuniunii si a stru"turii, in parti"ular "onsta in !aptul "a la de"lararea reuniunii, memoria este reparti%ata in "on!ormitate "u dimensiunea elementului ma.imal( =dresarea la elementele reuniunii se !a"e dupa numele lor dar urmea%a sa se tina "ont de !aptul "a "impurile in reuniune se suprapun unul asupra altuia( +in a"est moti$ este e."lusa prelu"rarea simultana a mai multor elemente a reuniunii( An "alitate de elemente ale unei reuniuni pot !i !olosite si stru"turile( *ai"i trebuie sa !ie e.emplul "u reuniunea1 'nume 'se. '!un"tia '$irsta 'stagiu de mun"a ' salariu ' %iua de nastere

Inregistrari Anregistrarile repre%inta un tip stru"turat de date "e "onsta dintr-un numar !init de elemente de lungime de la 1 pina la "iti$a biti( -a des"rierea unei inregistrari, pentru !ie"are element

al inregistrarii se indi"a lungimea elementului in biti si, in unele "a%uri *nu este obligatoriu1 $alorile a"estor elemente( +imensiunea sumara a elementelor unei inregistrari se "al"ulea%a prin suma dimensiunilor "impurilor sale si nu poate !i mai are de"it ?, 1< sau 32 biti( +a"a dimensiunea sumara a "impurilor este mai mi"a de"it $alorile indi"ate, atun"i toate tipurile sunt alineate "atre bitii de rang in!erior( Folosirea inregistrarilor este organi%ata in 3 etape: 1( Andi"area sablonului inregistrarii *determinarea "impurilor de biti a lungimilor lor1 si in "a% de ne"esitate, initiali%area lor "u anumite $alori initiale( 2( +eterminarea unui e.emplar al inregistrarii *presupune initiali%area unei $ariabile "on"rete de tipul de!init anterior "u aJutorul sablonului inregistrarii1( 3( ,rgani%area me"anismului de adresare la elementele inregistrarii( +es"rierea inregistrarii se !a"e dupa urmatoarea sinta.a: numeXinregistrare #3C,#+ Fdes"rierea elementelor inregistrarii O +es"rierea elementelor inregistrarii repre%inta o "onse"uti$itate de des"rieri a elementelor inregistrarii "are sunt delimitate de $irgule( An "a% "a un element al inregistrarii este initiali%at "u o $aloare initiala, atun"i a"easta $aloare se indi"a dupa indi"area lungimii "impului( -ungimea "impului se indi"a printr-un numar intreg de biti "are urmea%a dupa denumirea "impului si se delimitea%a de a"esta prin D:E( 3.emplu: iotest #e"ord i1: 1, i2:2G11, i3:1, i8:2G11, i5:2GCC 2a"roresursele limbaJului de asamblare 2a"rode!initii( 2a"roinstru"tiuni( 2a"rodire"ti$e( +ire"ti$ele "ompilarii "onditionate( +ire"ti$ele de generare a erorilor( Pseudoinstru"tiunile eIu' G( Pseudoinstru"tiunile eIu, G repre%inta "ele mai simple ma"roresurse !olosite in limbaJul de asamblare( ="este pseudoinstru"tiuni sunt !olosite pentru atribuirea $alorilor initiale unor e.presii, identi!i"atori sau $ariabile( An re%ultat, pe par"ursul translatarii programului, "ind identi!i"atorul respe"ti$ $a!i intilnit in program, ma"roasamblorul $a inlo"ui a"est identi!i"ator, e.presia sau $aloarea respe"ti$a( An "alitate de e.presie pot !i !olosite "onstante, nume de siruriMsimboluri, di!erite nume simboli"e si "onse"uti$itatide simboluri luate in g6ilimele( +upa atribuirea unor nume simboli"e a"estor "ontru"tii, a"este nume pot !i !olosite oriunde unde este ne"esara amplasarea a"estor "ontru"tii( Sinta.a pseudooperatorului eIu este urmatoarea: numesimboli" 3H/ sirXdeXsimboluriM e.presieXnumeri"a Sinta.a pseudooperatorului G este: numesimboli" G e.presieXnumeri"a

Ke"atind la asemanarea modului de utili%are a a"estor 2 pseudoinstru"tiuni, ele totusi au urmatoarele di!erente: 1( Cu aJutorul pseudoinstru"tiunii G unui identi!i"ator i se poate pune in "orespondenta doar o e.presie numeri"a, pe "ind unui identi!i"ator initiali%at "u pseudoinstru"tiunea 3H/ i se poate pune in "orespondenta atit un sir de simboluri, "it si o e.presie numeri"a( 2( Adenti!i"atorii initiali%ati "u aJutorul pseudoinstru"tiunii DGE pe par"ursul e!e"tuarii programului pot !i supusi la modi!i"area $alorii( Valorile initiali%ate "u aJutorul pseudoinstru"tiunii 3H/ nu pot !i modi!i"ate in program( Compilatorul 5=S2 in"epind "u $ersiunea 3(C dispune de un sir de dire"ti$e "are e.tinde posibilitatile de lu"ru "u ma"rode!initiile te.tuale( ="este dire"ti$e sunt similare !un"tiilor de prelu"rare a sirurilor in limbaJele de ni$el superior( Prin notiunea de sir in a"est "a% se are in $edere un te.t initiali%at *des"ris1 "u aJutorul pseudoinstru"tiunii 3H/(

1( +ire"ti$a de "on"atenare a 2 sau mai multe siruri( C=5S5# identi!i"ator C=5S5# sir1, sir2, ((( #e%ultatul e.e"utarii a"estei ma"rodire"ti$e este un sir nou, "onstituit prin "on"atenarea de la stinga la dreapta a sirurilor 1, 2, ((( An "alitate de siruri "on"atenate pot !i !olosite nume de siruri "are au !ost de!inite anterior( 2( +ire"ti$a de e.tragere a unui subsir dintr-un sir S/4S5# identi!i"ator S/4S5# sir, numXpo%, lungimeaXsubsir #e%ultatul !olosirii a"estei dire"ti$e $a !i o portiune a sirului initial "are in"epe "u simbolul a!lat in po%itia numXpo% si de lungime lungimeaXsubsir( +a"a este ne"esar doar o po%itie din sirul sursa pina la "apatul a"estui sir atun"i se indi"a doar sirul initial si nr po%itiei din "are are lo" e.tragerea subsirului( 3( +ire"ti$a de determinare a pre%entei unui sir in altul AKS5# identi!i"ator AKS5# numXpo%, sir1, sir2 An "alitate de parametri pentru dire"ti$a AKS5# se indi"a nr po%itiei din "are in"epe $eri!i"area sirului si 2 siruri sir1, sir2( +upa prelu"rarea a"estei dire"ti$e, identi!i"atorului ii $a !i atribuit un nr, $aloarea "aruia "oin"ide "u po%itia din "are se in"epe "oin"identa sirului sir1 "u sir2( +a"a nu poate !i gasita o asemenea po%itie, atun"i indenti!i"atorul ia $aloarea C( 8( +ire"ti$a de "al"ulare a lungimii unui sir SAP3S5# identi!i"ator SAP3S5# sir

An re%ultatul e.e"utarii a"estei ma"rodire"ti$e, identi!i"atorul $a lua o $aloare numeri"a intreaga "orespun%atoare numarului de elemente din sir(

2a"roinstru"tiuni 2a"roinstru"tiunile repre%inta o e.tindere ulterioara a me"anismului de substitutie unui te.t din program "u altul( Cu aJutorul ma"roinstru"tiunilor, in program pot !i inserate "onse"uti$itati de linii de program "are, din pun"t de $edere logi", ar putea !i date sau instru"tiuni de program si, mai mult de"it atit, a"este "onse"uti$itati de linii de program sunt legate de lo"ul unde ele au !ost inserate( , ma"roinstru"tiune repre%inta o linie de program "are "ontine un oare"are nume simboli" denumit numele ma"roinstru"tiunii, !olosita pentru a !i inlo"uita "u una sau mai multe linii de program( Kumele ma"roinstru"tiunii poate !i insotit sau nu de parametri( Folosirea sau nu a parametrilor in ma"roinstru"tiune este lasata pe seama programatorului( +a"a apare o ast!el de ne"esitate, atun"i mai intii se elaborea%a sablonul de des"riere a ma"roinstru"tiunii "are poarta denumirea de ma"rode!initie( , ma"rode!initie are urmatoarea sinta.a:

numeXma"rode!initie 2=C#, listaXparametrilorX!ormali "orpulXma"rode!initiei numeXma"rode!initie 3K+2 +e !ie"are data apare intrebarea despre lo"ul unde urmea%a sa !ie amplasate ma"rode!initiile in program( 3.ista 3 $ariante posibile: 1( -a in"eputul te.tului sursa al programului pina la des"rierea segmentului de "od si date in s"opul pastrarii posibilitatii de "itire mai usoara a te.tului programului( ="easta modalitate este re"omandata in "a%ul "ind ma"roinstru"tiunile des"rise de programator sunt a"tuale doar in limitele unui program( 2( Pastrarea ma"rode!initiilor in !isiere aparte( ="easta $arianta este re"omandata pentru "a%urile "ind ma"rode!initia este !olosita pentru mai multe probleme similare din a"elasti domeniu( Pentru a !olosi a"este marode!initii intr-un program "on"ret, la in"eputul te.tului sursa al programului urmea%a sa !ie !olosita dire"ti$a in"lude numeX!isier, unde numeX!isier repre%inta numele !isierului in "are sa pastrea%a ma"rode!initia( 3( Pastrarea ma"rode!initiilor in ma"robibliote"i( ="easta $arianta este re"omandata pentru "a%ul "ind e.ista solutii uni$ersale "are !oloses" ma"roinstru"tiuni "omune si din a"este "onsiderente este logi" sa !ie pastrate impreuna( An a"est "a%, legatura "u a"easta ma"robibliote"a se !a"e prin a"eeasi dire"ti$a in"lude( /n neaJuns al a"estei $ariante este !aptul "a in te.tul unui program $or !i in"luse toate ma"roinstru"tiunile din bibliote"a, in"lusi$ si "ele "are nu se !oloses" in programul respe"ti$( Fun"tional, ma"rodire"ti$ele se aseamana pro"edurilor( =semanarea dintre ele e "a atit unele "it si altele e su!i"ient sa !ie des"rise o singura data in program "a ulterior sa !ie apelate intr-un mod spe"ial ori de "ite ori este ne$oie( =i"i, asemanarea dintre pro"eduri si ma"rode!initii se termina( An s"6imb, intre a"este 2 notiuni e.ista o serie de deosebiri( An

primul rind, spre deosebire de pro"edura, te.tul "areia ramine nes"6imbat pe par"ursul intregului program, te.tul unei ma"rode!initii poate !i modi!i"at in program in dependenta de anumiti parametri reali( Pot !i modi!i"ate pe par"ursul ma"rogenerarii atit operan%ii intru"tiunilor, "it si insasi intru"tiunile( Pro"edurile, insa, nu admit a"est lu"ru( An al doilea rind, la !ie"are apel al ma"roinstru"tiunii, te.tul ei se ins"rie in lo"ul respe"ti$ in program sub !orma de ma"roe.tensie( An "a%ul apelului unei pro"eduri, 2P reali%ea%a trans!erul "ontrolului pe adresa de in"eput a pro"edurii "are se pastrea%a unde$a in memorie intr-un singur e.emplar( +in a"est moti$, "odul unui program organi%at in !orma de pro"edura este mai "ompa"t de"it "odul unui program organi%at sub !orma de ma"roinstru"tiuni, in s"6imb se pierde din timpul de e.e"utie( 2a"rode!initiile sint prelu"rate de "atre "ompilator intr-un mod deosebit( Pentru a !olosi ma"roinstru"tiunea des"risa intr-un anumit lo" al programului, ea trebuie a"ti$ata in lo"ul respe"ti$ in modul urmator: numeXma"roinstr Flista parametrilor realiO

#e%ultatul !olosirii a"estei "onstru"tii sinta"ti"e $a !i inlo"uirea ei in modulul obie"t "u instru"tiunile "ontinute in "orpul ma"rode!initiei( ="easta inlo"uire, insa, nu este o inlo"uire simpla( An lo"ul inserarii "orpului ma"rode!initiei, toti parametrii !ormali $or !i inlo"uiti "u parametrii reali indi"ati la apelul ma"rode!initiei( Pro"esul de inlo"uire in te.tul programului a apelului de ma"roinstru"tiune "u "orpul ma"roinstru"tiunii si a parametrilor !ormali "u parametrii reali poarta denumirea de ma"rogenerare, iar re%ultatul ma"rogenerarii poarta denumirea de ma"roe.tensie( Spre e.emplu, ma"roinstru"tiunea de stergere a e"ranului: "learXreg endm e.it endm initXds endm ma"ro mo$ a., Vdata mo$ ds, a. ma"ro mo$ a., 8"CC6 int 216 ma"ro rg ' rg nume re registru L,# rg, rg

2a"rodire"ti$e Cu aJutorul ma"roresurselor limbaJului de asamblare, nu numai "a pot !i modi!i"ate partial liniile de program, dar pot !i modi!i"ate atit numarul lor, "it si ordinea e.e"utarii lor( ="est lu"ru este posibil datorita !olosirii ma"rodire"ti$elor( 2a"rodire"ti$ele limbaJului de asamblare pot !i impartite in 2 grupe: 1( +ire"ti$ele de repetare( +in a"easta "ategorie !a" parte dire"ti$ele 09A-3, #3P5, A#P( ="este dire"ti$e sunt !olosite pentru "rearea ma"roinstru"tiunilor "e "ontin una sau mai

multe linii asemanatoare "e sunt situate "onse"uti$ una dupa alta in program( 3ste posibila si modi!i"area partiala a a"estor linii( 2( +ire"ti$ele de "ontrol a pro"esului de generare a ma"roe.tensiunii( 3LA52 B,5, ="este 2 ma"rodire"ti$e sunt !olosite pentru gestionarea pro"esului de !ormare a ma"roe.tensiunii din liniile respe"ti$e ale ma"rode!initiei( Cu aJutorul a"estor dire"ti$e, pot !i e."luse atit unele linii din ma"roe.tensiune, "it si poate !i intrerupt insasi pro"esul de ma"rogenerare( +e regula, dire"ti$ele 3LA52 si B,5, se !oloses" impreuna "u dire"ti$ele de "ompilare "onditionata( +ire"ti$ele 09A-3 si #3P5 sunt !olosite pentru repetarea de un anumit nr de ori a unei "onse"uti$itati de linii de program( 3le au urmatoarea sinta.a: 09A-3 e.prX"onst lista liniilor de program 3K+2 #3P5 e.pX"onst lista liniilor de program 3K2+ Si intr-un "a%, si in al doilea, lista liniilor de program "are urmea%a sa !ie repetate este limitata de dire"ti$a 3K+2( An "a%ul !olosirii dire"ti$ei 09A-3, ma"rogeneratorul translatorului $a repeta sirul de linii atit timp pina "ind $aloarea e.presiei "onstante nu $a de$eni egala "u C( ="easta $aloare se "al"ulea%a de !ie"are data inainte de urmatoarea iteratie, adi"a e.presia "onstanta trebuie modi!i"ata in interiorul liniilor de program "are urmea%a sa !ie e.e"utate( +ire"ti$a #3P5 de asemenea e.e"uta sirul de linii respe"ti$ de atitea ori "it este indi"at de e.presia "onstanta( +i!erenta dintre a"este 2 dire"ti$e "onsta in !aptul "a in a"est "a%, $aloarea e.presiei "onstante este de"rementata automat dupa !ie"are iteratie( +ire"ti$a A#P are urmatoarea sinta.a: A#P argX!ormal, FsirXsimb1, sir Xsimb2, ((( sirXsimbnO lista liniilor de program 3K+2 ="tiunea dire"ti$ei date "onsta in !aptul "a ea repeta sirul de linii de program de atitea ori "ite siruri de simboluri sunt in"luse in parante%ele ung6iulare( #epetarea liniilor de program este insotita "u inlo"uirea pe liniile respe"ti$e a argumentului !ormal "u sirul respe"ti$ de simboluri din parante%ele ung6iulare, adi"a la prima iteratie, parametrul !ormal $a !i inlo"uit "u primul sir de simboluri, la a doua "u al doilea sir, et"( A#P endm +ire"ti$a A#PC iniF1,2,3,8,5O db ini

+ire"ti$a A#PC are urmatoarea sinta.a A#PC argX!ormal, sirXsimboluri lista liniilor de program 3K+2 ="tiunea a"estei ma"rodire"ti$e este similara a"tiunii dire"ti$ei A#P "u urmatoarea di!erenta "a la !ie"are iteratie, ea inlo"uieste argumentul !ormal din liniile de program "u urmatorul simbol din sirul de simboluri( Kumarul de iteratii "oin"ide "u nr de simboluri "ontinut in parametrul al doilea( +ire"ti$ele "ompilarii "onditionate 3.ista 2 tipuri de dire"ti$e de "ompilare "onditionata( Prima "ategorie sunt dire"ti$ele de "ompilare "onditionata in re%ultatul e!e"tuarii unei "onditii "are permit $eri!i"area satis!a"erii unor anumite "onditii pe par"ursul generarii ma"roe.tensiunii si in "a% de ne"esitate, pot modi!i"a a"est pro"es( = doua "ategorie sunt dire"ti$ele de generare a erorilor in dependenta de anumite "onditii( ="este dire"ti$e de asemenea "ontrolea%a pro"esul de generare a ma"roe.tensiunii in s"opul generarii sau depistarii anumitor situatii "are pot !i interpretate "a erori( An a doua "ategorie se !oloses" dire"ti$ele de "ontrol 3LA52 si B,5,( +ire"ti$a 3LA52 nu ne"esita indi"area operan%ilor si a"tiunea ei "onsta in !aptul "a ea intrerupe ne"onditionat pro"esul de generare a ma"roe.tensiunii in"epind "u lo"ul unde a !ost intilnita a"easta dire"ti$a in ma"rode!initie( +ire"ti$a B,5, ne"esita indi"area in "alitate de operand a unei eti"6ete( B,5, numeXeti"6eta ="easta dire"ti$a trans!era pro"esul de generare a ma"roe.tensiunii in alt lo" al programului intrerupind in a"elasi timp pro"esul de des!asurare a liniilor ma"rode!initiei( +ire"ti$ele de "ompilare "onditionata +ire"ti$ele de "ompilare "onditionata sunt !olosite pentru organi%area translatarii sele"ti$e a !ragmentelor din "odul sursa al programului( Compilarea sele"ti$a inseamna "a in ma"roe.tensiune nu $or !i in"luse toate liniile de program din ma"rode!initie, dar numai a"ele linii "are satis!a" unor anumite "onditii( Care anume "onditii $or !i $eri!i"ate depinde de tipul dire"ti$ei de "ompilare "onditionata !olosit( An total, limbaJul de asamblare dispune de 1C tipuri de dire"ti$e de "ompilare "onditionata( -ogi", ele pot !i grupate in pere"6i in 8 grupe: 1( +ire"ti$ele AF si AF3( 5oate dire"ti$ele de "ompilare "onditionata au o sinta.a "omuna si se !oloses" impreuna "u urmatoarea "onstru"tie sinta"ti"a: AFMAF3 LL e.prXlogi"a !ragmentXdeX"od1 3-S3 !ragmentXdeX"od2 3K+AF Prelu"rarea a"estor dire"ti$e de "atre ma"roassembler "onsta in "al"ularea $alorii e.presiei logi"e si in"luderea in modulul obie"t al programului ori a primului !ragment de "od, ori a !ragmentului 2 de "od in dependenta de !aptul in "are din dire"ti$ele AF sau AF3 a !ost intilnita e.presia logi"a( +a"a in dire"ti$a AF e.presia logi"a ia $aloarea ade$ar, atun"i in modulul obie"t $a !i introdus !ragmentul 1 de "od( +a"a insa este !olosita si dire"ti$a

3-S3, atun"i in modulul obie"t $a !i in"lus !ragmentul de "od 2( +a"a insa dire"ti$a 3-S3 lipseste, atun"i toat portiunea de "od "uprinsa intre dire"ti$a AF si 3K+AF este negliJata( +ire"ti$a AF3 analogi" dire"ti$ei AF anali%ea%a $aloarea e.presiei logi"e, numai "a in a"est "a%, pentru in"luderea in modulul obie"t a primului !ragment de "od este ne"esar "a $aloarea e.presiei logi"e sa !ie !alsa( +ire"ti$ele AF si AF3 sunt re"omandate in "a%ul "ind te.tul programului trebuie modi!i"at in dependenta de satis!a"erea unor anumite "onditii( = doua grupa de dire"ti$e este AF+3F, AFK+3F A+3F *AFK+3F1 nume simboli" !ragment de "od 1 3-S3 !ragment de "od 2 3K+AF ="este 2 dire"ti$e permit "ontrolul "onditionat al pro"esului de "ompilare in dependenta de !aptul da"a a !ost sau nu de!init in program un oare"are nume simboli" indi"at in "alitate de "onditie( +ire"ti$a AF+3F $eri!i"a da"a numele simboli" respe"ti$ a !ost des"ris in program( +a"a da, atun"i in program este in"lus !ragmentul de "od 1( An "a% "ontrar, da"a este pre%enta dire"ti$a 3-S3, atun"i este in"lus al doilea !ragment de "od( +a"a insa dire"ti$a 3-S3 lipseste si numele simboli" respe"ti$ nu este des"ris in program, atun"i partea de program intre dire"ti$ele AF+3F si 3K+AF este negliJata( +ire"ti$a AFK+3F are o a"tiune opusa dire"ti$ei AF+3F, adi"a da"a numele simboli" respe"ti$ lipseste din program, atun"i se e.e"uta primul !ragment de "od si in "a% "a este pre%enta dire"ti$a 3-S3, se e.e"uta al doilea !ragment de "od( An "a% "ind dire"ti$a 3-S3 lipseste, partea de program in"lusa intre AFK+3F si 3K+AF este ignorata( +ire"ti$ele AF4 si AFK4 Sinta.a a"estor dire"ti$e este: AF4MAFK4 argument !ragment de "od 1 3-S3 !ragment de "od 2 3K+AF ="este 2 dire"ti$e se !oloses" pentru $eri!i"area parametrilor reali transmisi in ma"rode!initie( -a apelul ma"roinstru"tiunii, a"ese dire"ti$e anali%ea%a $aloarea argumentului( An dependenta de !aptul da"a $aloarea a"estul argument este un blan7 sau nu, atun"i se e.e"uta ori primul !ragment de "od, ori !ragmentul al doilea de "od( +ire"ti$a AF4 $eri!i"a da"a $aloarea argumentului "oin"ide "u blan7( An "alitate de argument poate aparea un indenti!i"ator sau un numar( +a"a $aloarea argumentului este egala "u blan7, se presupune "a argumentul nu a !ost indi"at in momentul de apel a ma"rode!initiei( An a"est "a%, la translare $a !i in"lus primul !ragment de "od( An "a% "ontrar, da"a e pre%enta dire"ti$a 3-S3, in modulul obie"t $a !i in"lus al doilea obie"t de "od( +a"a dire"ti$a 3-S3 lipseste, atun"i in "a%ul "ind argumentul este blan7, !ragmentul de "od dintre dire"ti$ele AF4 si 3K+AF se negliJea%a( +ire"ti$a AFK4 are o a"tiune in$ersa( +ire"ti$ele AFA+K si AFA+KA, AF+AF si AF+AFA permit nu numai $eri!i"area pre%entei sau lipsei argumentelor in ma"ro-instru"tiune, dar si identi!i"area a"estor argumente "a siruri de simboluri( 3le au a"eeasi sinta.a: AFA+K*A1 argX1, argX2

sirXdeXinstrX1 3-S3 sirXdeXinstrX2 3K+AF An a"este dire"ti$e, argumentul 1 si 2 sunt $eri!i"ate "a siruri de simboluri( Care anume !ragment de program $a !i e.e"utat *in"lus1 in modulul obie"t la translare depinde de re%ultatul "ompararii si de dire"ti$a !olosita( ="este 2 dire"ti$e di!era prin !aptul "a ele ambele $eri!i"a identi"itatea argumentului 1 si 2 "u di!erenta "a AFA+K este "ase sensiti$e iar AFA+KA nu !a"e di!erenta dintre registre( +ire"ti$a AFA+K $eri!i"a argX1, argX2 si in "a% "a "oin"id in"lude in "od primul segment( An "a% "a e pre%enta dire"ti$a 3-S3, da"a argumentii nu "oin"id, atun"i in modulul obie"t este in"lus al doilea !ragment de "od( +a"a dire"ti$a nu e pre%enta si sirurile nu "oin"id, atun"i partea de program dintre dire"ti$ele AFA+K*A1 si 3K+AF este negliJata( AF+AF si AF+AFA( ="tiunea a"estor dire"ti$e este opusa a"tiunii dire"ti$elor AFA+K*A1( +a"a re%ultatul "ompararii argumentului 1 si argumentului 2 este negati$ *sirurile respe"ti$e de simboluri nu "oin"id1, atun"i este translatat primul !ragment de "od( An "a% "ontrar, da"a este pre%enta dire"ti$a 3-S3, este in"lus al doilea !ragment de "od( +a"a insa dire"ti$a 3-S3 lipseste, atun"i partea de "od "uprinsa intre dire"ti$ele AF+AF*A1 si 3K+AF este negliJata( +ire"ti$ele "ompilarii "onditionate admit impli"area uneia in alta( +ire"ti$ele de generare a erorilor -imbaJul 5urbo =ssembler dispune de un sir de dire"ti$e "are poarta denumirea de dire"ti$e de generare a erorilor utili%atorului( ="este dire"ti$e sunt interpretate "a miJloa"e suplimentare "e e.tind posibilitatile "ompilarii "onditionate( ="este dire"ti$e au drept s"op depistarea unor anumite erori in program si luarea anumitor de"i%ii de "ore"tare sau o"olire a lor( +ire"ti$ele de generare a erorilor dupa prin"ipiul lor de !un"tionare pot !i impartite in 2 "ategorii: 1( +ire"ti$e ne"onditionate de generare a erorilor "are generea%a eroarea !ara $eri!i"area "aror$a "onditii( 2( +ire"ti$e de generare a erorilor dupa $eri!i"area satis!a"erii unor anumite "onditii( 2aJoritatea dire"ti$elor de generare a erorilor admit doua denumiri( = doua denumire este !olosits pentru re!le"tarea asemanarii lor "u dire"ti$ele de "ompilare "onditionata(+in prima "ategorie !a"e parte doar o singura dire"ti$a (3##( ="easta dire"ti$a, !iind introdusa in te.tul programului, in mod ne"onditionat $a du"e la generarea unei erori la etapa de translare si la arun"area modulului obie"t din memorie( Benerarea "onditionata a erorilor Kumarul de "onditii "are sunt luate in "onsideratie la generarea "onditionata a erorilor este a"elasi "a si la "ompilarea "onditionata( =semeni dire"ti$elor de "ompilare "onditionata, dire"ti$ele de generare "onditionata a erorilor pot !i !olosite atit in ma"rode!initii, "it si in ori"are alt lo" al programului( (3##4 *3##AF41 FnumeleXargumentuluiX!ormalO (3##K4 *3##AFK41

Prima dire"ti$a $a genera o eroare in "a%ul "ind argumentul !ormal "u numele indi"at este omis( 3##K4 $a genera eroare la "ompilatie in "a%ul "ind argumentul !ormal "u numele indi"at $a !i pre%ent( +upa prin"ipiul de a"tiune, a"ese 2 dire"ti$e sunt similare dire"ti$elor de "ompilare "onditionate AF4 si AFK4( (3##+3F *3##AF+3F1 (3##K+3F *3##AFK+3F1 numeXsimboli" +ire"ti$a 3##+3F generea%a o eroare la etapa de translatare da"a numele simboli" indi"at in "alitate de argument este intilnit in program pina la a"easta dire"ti$a( +Are"ti$a 3##K+3F are a"tiune in$ersa si generea%a o eroare la etapa de translatare da"a numele simboli" indi"at nu se intilneste in program pina la a"easta dire"ti$a( 5inind "ont de !aptul "a translatorul 5=S2 !ormea%a modulul obie"t par"urgind o singura data te.tul programului, este e$ident !aptul "a dire"ti$ele respe"ti$e urmares" aparitia numelui simboli" doar in a"ea parte de program "are le pre"ede( (3##+AF*3##AF+AF1 Fsir1O, Fsir2O (3##A+K*3##AFA+K1 Prima dire"ti$a generea%a o eroare "onditionata la etapa de translare da"a sirul 1 nu "oin"ide "u sirul 2( +ire"ti$a 3##A+K generea%a o eroare "onditionata la etapa de translare da"a sir1 "oin"ide "u sir2( Sirurile "omparate pot !i numere sau e.presii si trebuie in"luse in parante%e ung6iulare( Pentru "a sa !ie ignorate di!erentele dintre maJus"ule si minus"ule, e.ista 2 dire"ti$e suplimentare 3##+AFA si 3##A+KA( ="este dire"ti$e sunt utile "ind este ne"esara $eri!i"area parametrilor reali transmisi in ma"roinstru"tiune( (3##3 *3##AF31 e.prX"onst (3##KP *3##AFKP1 ="este dire"ti$e soli"ita indi"area in "alitate de argument a unei e.presii "onstante( 3##3 generea%a o eroare "onditionata da"a $aloarea e.presiei "onstante este nula( +ire"ti$a 3##KP generea%a o eroare da"a $aloarea e.presiei "onstante nu este nula( ,peratorii de relatie "are pot !i !olositi pentru "rearea e.presiilor in dire"ti$ele de "ompilare "onditionata( Primul operator 3H $eri!i"a da"a e.pr1 Ge.pr2' K3 da"a nu e egal' -5 mai mi"' -3 mai mi" sau egal' B5 mai mare' B3 mai mare sau egal( ,peratorii logi"i pentru "rearea e.presiilor: K,5 negarea logi"a =K+ "onJun"tia logi"a ,# disJun"tia logi"a L,# suma dupa modulul 2 Pro"eduri in limbaJul de asamblare An limbaJul de asamblare e.ista "ite$a modalitati "are permit solutionarea problemei de dublare a !ragmentelor de "od( +in a"este solutii !a" parte: me"anismul de !olosire a pro"edurilor, me"anismul de !olosire a ma"roinstru"tiunilor si me"anismul de intrerupere(

Pro"edurile adesea mai sunt denumite si subprograme, repre%inta prin"ipala unitate !un"tionala de de"ompo%itie a unei probleme "ompli"ate( , pro"edura intr-un limbaJ de programare repre%inta o "onse"uti$itate de instru"tiuni "are are drept s"op !olosirea unei subprobleme "on"rete a problemei generale si dispune de miJloa"e de apelare din programul prin"ipal si de miJloa"e de re$enire in lo"ul de unde a !ost apelat( An "a%uri "on"rete, un program poate !i "onstituit dintr-o singura pro"edura( , pro"edura poate !i de!inita "a o "onse"uti$itate de instru"tiuni s"rise "ore"t "are, in "a% de ne"esitate, poate !i apelata din ori"e lo" al programului( Pentru des"rierea sirului de instru"tiuni "e !ormea%a pro"edura, in limbaJul de asamblare se !oloses" 2 instru"tiuni *dire"ti$e1 spe"iale: P#,CM3K+ si instru"tiunea interna #35 "are reali%ea%a re$enirea din pro"edura( Pro"edurile asemeni ma"roinstru"tiunilor pot !olosi sau nu anumiti argumenti( ="est lu"ru permite, a$ind o singura "opie a "odului pro"edurii in memorie, sa !ie modi!i"ata a"easta "opie pentru !ie"are "a% aparte de !olosire( Pro"edurile, asemeni ma"rode!initiilor, admit mai multe $ariante de amplasare in "orpul programului: la in"eputul programului pina la prima instru"tiune e.e"utabila' la s!irsitul programului, inainte de ultima instru"tiune "are returnea%a "ontrolul sistemului de operare' $arianta intermediara "are presupune amplasarea pro"edurii in ori"e lo" al programului sau in "orpul altei pro"eduri, dar in a"est "a% este ne"esara e$itarea e.e"utarii arbitrare a "orpului pro"edurii !olosind instru"tiunea de salt ne"onditionat N2P' amplasarea "orpului pro"edurii in alt modul( +eosebirea dintre ma"rode!initii si pro"eduri se redu"e la !aptul "a in memorie se pastrea%a o singura "opie a "orpului pro"edurii "are este apelat ori de "ite ori este ne$oie( An modulul obie"t, "orpul pro"edurii apare o singura data, spre deosebire de "a%ul ma"rode!initiilor( =pelul de pro"edura si re$enirea din ea du"e uneori la "resterea timpului de e.e"utie a programului( Sinta.a des"rierii pro"edurilor in limbaJul de asamblare este urmatoarea: numeXpro"edura P#,C Sidenti!i"ator limbaJT, limbaJSdistantaT S =#B listaXargumentelorT S#35/#K listaXelementelorT ("orpul pro"edurii SnumeXpro"eduraT 3K+P , pro"edura poate !i apelata in program !olosind instru"tiunea C=-- numeXpro"edura( Anstru"tiunea C=-- este atribuita la instru"tiunile de salt ne"onditionat( ="easta instru"tiune transmite "ontrolul pe o adresa identi!i"ata de numele simboli" "are a !ost atribuit pro"edurii "u e."eptia "a in a"est "a%, in sti$a este pastrata adresa de re$enire din pro"edura( =dresa de re$enire din pro"edura este adresa urmatoarei instru"tiuni "are urmea%a dupa instru"tiunea C=--( Pentru re$enirea din pro"edura se !oloseste instru"tiunea #35 SnumarT( Anstru"tiunea #35 reintoar"e "ontrolul programului prin"ipal( ="easta instru"tiune "iteste adresa de re$enire din sti$a si o in"ar"a in pere"6ea de registre CS:3APMAP( Parametrul neobligatoriu "are se indi"a "u instru"iunea #35 repre%inta nr de elemente din sti$a "are urmea%a sa !ie arun"ate din ea la re$enirea in pro"edura( Ampreuna "u dire"ti$a P#,C se ai !oloses" in"a "ite$a dire"ti$e: =#B, #35/#K si -,C=-, /S3S( +ire"ti$ele =#B si #35/#K sunt !olosite pentru atribuirea unor nume simboli"e parametrilor de intrare si iesire transmisi prin intermediul sti$ei( +ire"ti$a /S3S este !olosita pentru a indi"a numele registrelor "are $or !i !olosite in pro"edura( -a prelu"rarea a"estei dire"ti$e, asamblorul !ormea%a "odul de intrare si iesire din instru"tiuni P/S9 si P,P "are permit sal$area si restabilirea "ontinuturilor registrelor !olosite(

5ransmiterea argumentelor in pro"edura Folosind programarea modulara in limbaJul de asamblare, in"lusi$ pro"edurile, operam deseori "u urmatoarele notiuni: $ariabila, argument, "onstanta( =rgumentul repre%inta o indi"atie asupra unor date "are sint ne"esare pentru e.e"utarea !un"tiilor "are ii re$in pro"edurii*sau altui modul1( Fa"ind analogie "u ma"roinstru"tiunile, putem anali%a doua tipuri de argumenti: reali si !ormali( =rgumentii !ormali sint interpretati nu "a date "on"rete sau "a adrese a unor date "on"rete, ei sint pri$iti "a marimi "e tin de lo"ul pentru datele reale "are $or !i transmise in pro"edura( +atele "are $or !i transmise poarta denumirea de argumenti reali( =rgumentul !ormal mai poate !i interpretat "a o inter!ata a pro"edurii "u argument real( Variabila este o marime *obie"t1 amplasat intr-un registru sau o lo"atie de memorie "are ulterior poate !i supusa modi!i"arii( Constantele repre%inta $alori "are ni"iodata nu $or !i supuse modi!i"arii in program( =st!el, da"a anumite date pot !i modi!i"ate pe par"ursul e.e"utarii programului, atun"i a"este date in mod obligatoriu $or !i $ariabile( +a"a o $ariabila se a!la in a!ara pro"edurii si trebuie intr-un anumit mod transmisa in pro"edura, atun"i pentru a"esta pro"edura $ariabila este argument !ormal( Valoarea a"estei $ariabile "are $a !i transmisa in pro"edura pentru a inlo"ui "u a"easta $aloare paramentrul respe"ti$ din pro"edura $a de$eni argument real( An pra"ti"a, se !oloses" urmatoarele modalitati de transmitere a argumentelor in pro"edura: 1( Prin intermediul registrelor 2( Printr-o %ona "omuna de memorie 3( Prin intermediul sti$ei 8( Cu aJutorul dire"ti$elor 3L5#K si P/4-AC 5ransmiterea argumentelor prin intermediul registrelor Folosirea registrelor pentru transmiterea argumentelor in pro"edura repre%inta "el mai simplu mod de transmitere a datelor in pro"edura( +atele transmise prin intermediul registrelor sint a""esibile imediat dupa transmiterea "ontrolului pro"edurii( ="easta modalitate este "ea mai "omoda in "a%ul "ind in pro"edura se transmite un $olum mi" de date( ="easta modalitate are urmatoarele restri"tii: 1( Kr redus de registre a""esibile utili%atorului( 2( Programatorul trebuie sa tina permanent minte de in!ormatie si in "e registru se a!la( 3( -imitarea dimensiunii datelor transmise prin intermediul registrelor la ?,1<, 32 biti( An "a%ul "ind datele transmise depases" dimensiunile indi"ate, atun"i prin intermediul registrelor pot !i transmise in pro"edura prin intermediul !olosirii indi"atorilor( 5ransmiterea argumentelor prin intermediul %onei "omune de memorie 5ransmiterea argumentelor in pro"edura prin intermediul unei %one "omune de memorie presupune !olosirea de "atre programul apelat si programul apelant a unei %one "omune de memorie "are sa poata !i a""esata atit de una "it si de alta( 5ranslatorul assembler dispune de miJloa"e pentru a organi%a o asemenea %ona de memorie( /nul din a"este miJloa"e este atributul "ombinarii segmentelor( Folosirea a"estui atribut indi"a translatorului "um trebuie sa !ie "ombinate segmentele "are au a"elasi nume( Folosirea $alorii C,22,K a a"estui atribut indi"a !aptul "a toate segmentele "are au a"elasi nume $or !i amplasate in memorie in"epind "u una si a"eeasi adresa, adi"a ele se $or inter"ala in memorie si respe"ti$ $or !olosi in "omun spatiul de memorie re%er$at( Prin"ipalul neaJuns al a"estei modalitati este lipsa unui me"anism de prote"tie a adapterilor impotri$a distrugerii, deoare"e nu pot !i "ontrolate regulile de a""es a a"estor date(

5ransmiterea argumentelor in pro"edura prin intermediul sti$ei ="easta modalitate este !olosita "el mai !re"$ent( Sensul ei "onsta in !aptul "a programul apelant desinestatator amplasea%a in sti$a datele transmise in pro"edura, dupa "are are lo" apelul de pro"edura( Sti$a este "ontrolata de trei registre: registrul SS, SP si 4P( Pro"esorul in mod impli"it operea%a "u registrele SS si SP, presupunind "a ele intotdeauna indi"a $ir!ul sti$ei( +in a"easta "au%a, nu se re"omanda "a "ontinutul a"estor registre sa !ie modi!i"at( +e a"eea, in momentul apelului de pro"edura, $alorile a"estor registre sint sal$ate si ulterior sint restabilite la momentul re$enirii din pro"edura( Folosirea dire"ti$elor 3L5#K si P/4-AC +ire"ti$ele 3L5#K si P/4-AC sint !olosite pentru s"6imbul de date intre module( S"opul si !ormatul a"estor dire"ti$e depinde de $ariantele de !olosire a lor( Pot !i e$identiate urmatoarele $ariante de !olosire a a"estor dire"ti$e: 1( =mbele module !oloses" doar segmentul de date al programului apelant( 2( Fie"are modul dispune de propriul segment de date( 3( Se !oloseste atributul de "ombinare a segmentelor de date a programului apelant si a programul apelat: P#AV=5 #eturnarea re%ultatului in pro"edura Spre deosebire de limbaJele de ni$el superior, in limbaJul de asamblare nu e.ista notiuni di!erite pentru subprogramele pro"eduri si pentru subprogramele !un"tii( ,rgani%area returnarii re%ultatului din pro"edura in totalmente re$ine pe seama programatorului( 5inind "ont de !aptul "a obtinerea unui re%ultat in urma apelului de pro"edura repre%inta un "a% parti"ular de transmitere a argumentilor, programatorul are trei $ariante de returnare a unei $alori din pro"edura: 1( Folosind registrele( ="easta modalitate are a"eleasi restri"tii "a si in "a%ul transmiterii datelor in pro"edura, adi"a un nr limitat de $alori de dimensiuni limitate la ?, 1<, 32 biti( Fun"tiile sistemului de operare !oloses" anume a"easta modalitate( +in toate $ariantele, a"easta modalitate este "ea mai rapida, de a"eea el se re"omanda de a !i !olosit in momente "riti"e "ind e.ista restri"tii de timp( 2( Folosirea %onei "omune de memorie( ="easta modalitate este re"omandata in "a%ul "ind sint returnate din program un nr mare de $alori( Folosirea a"estei modalitati soli"ita o "on"entrare deosebita din partea programatorului di do"umentarea minutioasa pentru a e."lude ori"e ambiguitati in tratarea anumitor %one de memorie( 3( Folosirea sti$ei( An a"est "a%, pentru returnarea $alorilor iarasi urmea%a sa !ie !olosit registrul 4P( An a"est "a%, sint posibile urmatoarele doua $ariante: - !olosirea a"elorasi adrese pentru $alorile returnate "are au !ost !olosite pentru transmiterea argumentului in pro"edura, adi"a se presupune inlo"uirea $alorilor "are nu mai sint ne"esare a argumentelor de intrare "u datele de iesire( - amplasarea in sti$a paralel "u argumentele transmise in pro"edura a unor argumente !i"ti$e in s"opul re%er$arii spatiului de memorie pentru $alorile returnate( An "a%ul al doilea, urmea%a sa se tina "ont "a a"este $alori !i"ti$e sa nu !ie arun"ate din sti$a la !olosirea instru"tiunii #3=+( Capatarea datelor de iesire din pro"edura se !a"e prin utili%area in programul apelant a instru"tiunii P,P( -egatura limbaJului de asamblare "u limbaJele de ni$el superior

2aJoritatea "ompilatoarelor tin "ont de !aptul "a e.ista posibilitatea "ombinarii "odului s"ris in propriul sau limbaJ "u "odul s"ris in limbaJul de asamblare( 2odalitatea prin "are ete organi%ata inter!ata intre limbaJele de ni$el superior si limbaJul de asamblare depinde de !aptul "um este adaptat pentru a"easta "ompilatorul respe"ti$( 5inin "ont de !aptul "a maJoritatea sistemelor dint "reate in limbaJele C, C++ si Pas"al, in primul rind se "er"etea%a inter!ata dintre a"este limbaJe si limbaJul de asamblare( 3.ista urmatoarele !orme de "ombinare a programelor s"rise in limbaJ de ni$el superior "u limbaJul de asamblare: 1( Folosirea instru"tiunilor de tipul inline si a portiunilor de "od s"rise in limbaJ de asamblare( ="easta !orma este dependenta in mare masura de sinta.a limbaJului de ni$el superior si de reali%area "on"reta a "ompilatorului( ="easta modalitate presupune "a !ragmentele de "od assembler $or !i in"luse dire"t in instru"tiunile generate de "ompilatorul limbaJului de ni$el superior( Compilatorul limbaJului de ni$el superior re"unoaste !ragmentele in limbaJ de asamblare in "alitate de instru"tiuni interne si !ara a le modi!i"a, le in"lude in modulul obie"t "reat( ="easta modalitate este re"omandata in "a%ul "ind sint inserate !ragmente mi"i de "od( 2( Folosirea pro"edurilor si !un"tiilor e.terne( ="easta modalitate este "ea mai uni$ersala !orma de "ombinare a modulelor s"rise in di!erite limbaJe de programare( ="easta modalitate are urmatoarele a$antaJe: - s"rierea si depanarea programelor poate !i !a"uta in mod independent una !ata de "ealalta - modulele "rate ast!el pot !i !olosite in proie"te di!erite - este !a"ilitata posibilitatea de a modi!i"a a"este module pe par"ursul e.ploatarii lor

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