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:
 
Formatul programelor executabile sub DOS. Tipuri de programe: EXE si COM. Programe rezidente in limbaj de asamblare.
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 
1. Executia programelor sub sistemul de operare DOS

Formatul programelor executabile sub DOS

Sistemul de operare (SO) DOS poate incarca si lansa in executie douatipuri de programe: COM si EXE. In cazul formatului EXE, fisierul contineprogramul propriu-zis, intr-un format relocabil si un antet (header) cuprinzindinformatiile necesare pentru relocare. Fisierele COM nu sint altceva decit oimagine memorie a codului si datelor programului. Comparativ, fisierele COM sint mai reduse ca dimensiune si lansarea lorin executie se face mai rapid, eliminindu-se timpul necesar relocatarii(ajustarii adreselor absolute) specific programelor EXE. In schimb, programeleEXE permit realizarea unor programe mai complexe si ruleaza corect si sub SOOS/2.

Structura prefixului de program

La incarcarea unui program in memorie pentru executie DS:0000 si ES:0000reprezinta adresa de inceput a asa-numitului prefix al programului (PSP). PSP-ulare o lungime de 256 de octeti si are aceeasi structura, indiferent de tipulprogramului incarcat.

Structura PSP-ului

Adresa relativa Nr. octeti Semnificatie

0 2 Codul instructiunii INT 20H; 2 2 Adresa sfirsitului memoriei exprimata in multipli de 16 octeti; 4 1 Rezervat; 5 5 Instructiune CALL FAR spre punctul de intrare in DOS, corespunzator functiilor sistem; 0AH 4 Adresa de revenire in SO, utilizata de apelurile DOS INT 22H si INT 4CH; 0EH 4 Adresa tratare CTRL-BREAK; 12H 4 Adresa de tratare a erorilor critice 16H 22 Rezervat pentru DOS; 2CH 2 Adresa de segment a unei succesiuni de siruri de caractere ASCIIZ care contin descrierea unor informatii de sistem (environment) 2EH 46 Rezervat pentru DOS; 5CH 16 FCB pentru primul parametru; 6CH 20 FCB pentru al doilea parametru; 80H 1 Numarul de octeti in linia de apel a programului (fara numele programului); 81H 127 Linia de apel a programului din care s-au eliminat numele programului si directivele de redirectare;




Formatul COM

Utilizarea formatului COM presupune respectarea urmatoarelor restrictii:

- programul consta dintr-un singur segment (maxim 64 Ko) care contine atitdatele cit si codul programului. Toate simbolurile (variabile sau etichete)folosite in aceste programe sint accesate printr-un offset in cadrul segmentuluiunic. Aceasta permite ca programele COM sa fie incarcate la orice adresa inmemorie si lansate in executie fara a fi necesara vreo modificare a continutuluilor ;- programul trebuie sa inceapa cu o pseudoinstructiune ORG 100H, deoareceprimii 100H octeti sunt ocupati de prefixul programului si registrele segmentsint initializate cu adresa de inceput a acestuia. In caz contrar, referirilela date, generate de asamblor, sint incorecte. Prima instructiune executabilatrebuie plasata la adresa 100H (poate fi, de exemplu, o adresa de salt la adresala care incepe efectiv executia programului) ; - datele programului pot fi plasate oriunde in textul programului, cuconditia sa nu interfere cu codul. Este de preferat ca datele sa fie definiteinaintea codului ; - nu este necesara initializarea registrelor segment, acestea fiindimplicit initializate cu aceeasi valoare ca si CS. Stiva este initializataautomat la sfirsitul segmentului ocupat de program (SS = CS si SP = 0FFFEH) ;la aceasta adresa se memoreaza valoarea 0 ;- incheierea executiei programului se poate face fie prin metoda clasica(functia sistem 4CH), fie prin executia unei instructiuni RET de tip NEAR.

Exemplu:

code segment assume cs:code, ds:code org 100Hstart: jmp begin .;; Datele programului

data1 db ?data2 db ?

; Codul programului

begin: . ret;code ends; end startObservatii:

1. Deoarece la initializare in virful stivei se memoreaza valoarea 0, executia unei instructiuni RET are ca efect un salt la primul octet din PSP (instructiunea INT 20H). 2. Pentru obtinerea formatului COM link-editarea se va face cu optiunea /t.

Formatul EXE

Programele EXE sint alcatuite in principiu din mai multe segmente si potcontine instructiuni ce folosesc adrese absolute (segment:offset) de memorie:salturi far, apeluri de proceduri far, sau cel putin initializari ale unorregistre de segment. Aceste programe fiind incarcate de asemenea la adreseoarecare, SO trebuie sa actualizeze adresele de segment la valorilecorespunzatoare inainte de lansarea programului in executie. Pentru aceasta,fisierele EXE contin pe linga zonele de date si cod, un header special cepermite SO sa efectueze corectiile necesare in codul programului in functie deadresa de memorie la care acesta este incarcat.

Programe rezidente

Rezidenta presupune existenta simultana in memorie a mai multor programe,intre care se poate comuta in functie de producerea sau nu a unor evenimenteexterne (apasarea unei taste sau combinatie de taste, executia uneiintreruperi). Pentru ca un program care isi termina executia sa ramina rezidenteste necesar ca acesta sa se termine cu apelul functiei DOS 31H, Terminate &Stay Resident (TSR):

Parametri de apel:

AH = 31H AL = cod terminare program DX = dimensiunea memoriei rezervate programului rezident, in paragrafe (blocuri de 16 octeti), prin rotunjire.

Functia nu returneaza nimic.

Observatii:

1. Structura programelor executabile in memorie:

- PSP(Program Segment Prefix) - de dimensiune 100H octeti, (contine informatii despre programul incarcat: adresa de revenire, informatii din linia de comanda)

- Programul propriu-zis.

2. Valoarea din DX trebuie sa fie dimensiunea totala a memoriei care sa ramina rezidenta, deci se va aduna la lungimea segmentului de cod valoarea 100H, necesara PSP-ului (numai la programele .EXE). 3. Deoarece sistemul de operare DOS nu este reentrant, prin utilizarea unor functii DOS in programe rezidente pot aparea conflicte. De aceea, activarea programelor TSR ce folosesc functii DOS trebuie sa se faca numai daca nu este in executie o functie DOS.

Functia DOS 34H permite obtinerea in ES:BX a adresei unei variabile DOScare indica nivelul de apeluri de functii DOS. Daca variabila are valoarea 0atunci nu exista un apel de functie DOS in executie. De asemenea, variabilapoate avea si valori mai mari decit 1, deoarece exista functii DOS care apeleazaalte functii DOS. Dezavantajul utilizarii acestei variabile consta in faptul cavariabila respectiva are valoarea 1 si in timpul executiei programuluiCOMMAND.COM. De asemenea, poate fi necesar ca activarea unui program rezidentsa se poata face si in timpul in care, de exemplu, COMMAND.COM asteaptaintroducerea unei comenzi de la tastatura. Aceasta problema se poate rezolvafolosind INT 28H, intrerupere ce este apelata periodic de MSDOS ori de cite orieste in perioade de asteptare. INT 28H poate fi utilizata astfel incit intratarea sa sa se faca activarea programului TSR, chiar daca variabila careindica nivelul de apeluri DOS are o valoare mai mare decit unu. Evident,activarea se va face daca programul nu este deja activ.

4. Activarea unui TSR nu trebuie sa se faca in timp ce sistemul de operare este in cursul tratarii unei erori critice. Aceasta stare este indicata de valoarea diferita de zero a unei variabile sistem, a carei adresa este returnata de apelul functiei DOS 5DH, subfunctia 6.

Aplicatii:

1. Sa se analizeze programele:

- TAST.ASM - exemplu simplu de adaugare a unei secvente de instructiunila rutina de tratare a intreruperii INT 16H, secventa ce permite reconfigurareaunei taste. Reconfigurarea este valabila doar pentru programele ce citesctastatura folosind INT 16H (TC2.0, NC, etc.). Acest program permite dezvoltareaunei aplicatii ce necesita redirectarea uneia din intreruperile de tastatura.- P2.C, ce contine un exemplu de redirectare a unei intreruperi (INT 1CH)pe durata executiei programului.- P3.C: o rutina de tratare a intreruperii 1CH similara este lasatarezidenta prin folosirea functiei keep().

Observatie importanta:

Inainte de lansarea programelor REZIDENTE in executie se va instalautilitarul RELEASE care va permite, prin utilizarea tastelor Alt + = vizualizarea si eliminarea programelor rezidente lansate in executie dupa el. 2. Sa se realizeze un program rezident care sa intercepteze INT 21H si in cazulin care este apelata functia 4Bh (EXEC) sa afiseze numele programului ce estelansat in executie.Indicatii: - numele programului va fi preluat din zona de date a carei adresa estetrimisa functiei EXEC. - pentru afisare se va folosi INT 10H serviciile 0ah,02h,03h. - se va asigura salvarea registrilor - SE VA APELA INTOTDEAUNA VECHEA INT 21H.

Observatie: acesta este un prim pas in realizarea unui virus.

3. Sa se scrie un program rezident care sa redirecteze INT 1Ch astfel incit la anumite intervale de timp sa se modifice atributele tuturor caracterelorde pe ecran. Se va scrie direct in memoria video (adresa B800:0000) atributultuturor caraterelor (octetul situat la adresa impara). La intrarea in rutina sevor salva registrii utilizati, fara a uita restaurarea la iesire. Pentrusimplitate, programul va avea un singur segment (cel de cod), unde vor figenerate si datele necesare.

Indicatie:

Urmariti varianta C a acestei aplicatii, SCREEN.C.

4. Folosind INT 1AH, sa se realizeze un program rezident care sa anunteterminarea orei (alarmare la 16:48, 17:48, etc.). In momentul in care serealizeaza coincidenta intre ora stabilita si ora exacta se activeaza INT 4AHsi deci vom "corupe" acest vector, introducind aici rutina rezidenta (referintaFAR) care va reseta ceasul si va pregati alarma pentru urmatoarea ora. Tot aicise va afisa un mesaj de "avertizare" a profesorului (doar este pauza !!!).Afisarea se va face cu INT 10H, serviciul 13h. Un exemplu de program ce rezolvaproblema este ALARM.COM.

Indicatii generale:

- realizati aplicatiile propuse in format .COM- veti utiliza functiile DOS 35h (salvare vector) si 25h (setare vectorcu adresa noii rutine !!)

- depanarea unui program TSR cu Turbo Debugger-ul se face astfel:

- se defineste un Breakpoint in portiunea de program ce ramine rezidenta ;- se executa programul din TD (de exemplu cu F9);- din meniul File, se alege comanda Resident.

Aceasta succesiune de operatii asigura revenirea in Turbo Debugger la atingerea breakpoint-ului.


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