Document, comentariu, eseu, bacalaureat, liceu si facultate
Top documenteAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
Rutine reentrante/nereentrante - limbaje de asamblare
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 
O subrutina e reentranta daca executia ei poate fi intrerupta (hard sausoft) si rutina de tratare a intreruperii apeleaza cu succes (direct sauindirect) aceasta rutina reentranta. Reentranta e corecta daca subrutina nuare nici un fel de efecte laterale: nu afecteaza nici indicatorii de conditii,nici registri generali, nici zone de memorie statice. De obicei, sintproiectate reentrante rutinele cu utilizare duala: sistem deoperare/programator. In ceea ce priveste INT 21H, nu toate functiile DOS sint reentrantedatorita utilizarii unor zone statice de memorie pentru operatiile de transfercu discul. Rutina de tratare a unei intreruperi hard poate utiliza functii DOSnumai daca intreruperea hard nu a survenit pe durata executiei unei altefunctii DOS. Exista insa o functie DOS, (AH=34H), care imi intoarce in ES:BX,adresa unei variabile numita simbolic IN_DOS. Daca valoarea acestei variabileeste nula (0) inseamna ca nu se executa nici o alta functie DOS. Dar aceastavariabila are o valoare diferita de 1 si in timpul cit COMMAND.COM asteaptaapasarea unei taste (deci, practic tot timpul). Ca urmare, daca gasim variabila pe 1 nu vom astepta intr-o bucla trecerea ei pe 0 ci vom utiliza INT 28H, careeste apelata periodic cit timp DOS-ul este in asteptare si deci redirectind INT28H pot activa rutina reentranta cind am o cerere nesatisfacuta (functie DOSactiva, adica IN_DOS > 1 -> valoarea IN_DOS imi arata cite functii DOS sintactive in acel moment).

Recursivitate in limbaj de asamblare

O subrutina este recursiva daca:

a)- exista cel putin un drum de la codul initial la cel final pe parcursulcaruia se autoapeleaza sib)- exista cel putin un drum de la codul initial la cel final pe parcursulcaruia nu se autoapeleaza (deci o iesire din recursivitate).

Observatii:

1. Daca conditia a) nu este indeplinita procedura este o procedura obisnuita.2. Daca conditia b) nu este indeplinita procedura este o procedura infinita.

Autoapelarea poate fi:

1. directa, cind in interiorul subrutinei se apeleaza chiar aceasta subrutina.2. indirecta, cind in interiorul subrutinei se apeleaza o alta subrutina carela rindul ei o apeleaza pe prima. Recursivitatea e corecta daca orice apel recursiv este facut pentru uncaz mai simplu si daca valorile calculate in anteapel si folosite in postapelnu sint alterate de efectele laterale ale subrutinei. Din acest punct devedere, solutia cea mai simpla este salvarea in stiva a registrelor(variabilelor) calculate in apel si folosite in postapel (deci, atentie lanumarul valorilor salvate pe stiva, incit sa nu depasesc capacitatea stivei!!) In concluzie, fiecare postapel imi depune pe stiva cite o informatiepentru postapel ca si adresa de revenire (adresa de dupa apelul recursiv)

Aplicatii:

1. Analizati cu TurboDebuggerul cele doua programe CONV1.ASM si CONV2.ASM deconversie recursiva din hexazecimal in zecimal cu afisarea rezultatului. Cediferente de implementare a rutinelor recursive exista intre cele douaprograme?

2. Sa se scrie o rutina recursiva care va calcula si afisa n!, cu n introdusde la tastatura (functia 1 - int 21H).

3. Scrieti o rutina recursiva pentru inversarea unui sir de caractere: INV('ABCD') = 'D' + INV('ABC')

4. Sa se scrie o rutina recursiva care va calcula si afisa, in mod grafic,primele n elemente ale sirului lui Fibonacci: 1, , pentru n = 0, 1bn = b(n-1) + b(n-2), pentru n > 1





Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui document, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza documentul:
In prezent fisierul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite
Colt dreapta