+ All Categories
Home > Documents > Fisiere de comenzi

Fisiere de comenzi

Date post: 23-Jun-2015
Category:
Upload: floraur
View: 911 times
Download: 2 times
Share this document with a friend
40
Introducere in DOS In acest laborator se vor urmari principalele proprietati ale unui sistem de operare urmarind cazul concret al sistemului de operare DOS. Interfata SO SO ofera utilizatorului o serie de servicii prin care sa comunice reciproc. Aceste dialoguri sunt materializate de cele mai multe ori prin programe scrise intr-un limbaj de programare, fie de nivel inalt, fie in limbaj de asamblare. Se vor urmari in continuare modurile in care un utilizator poate interactiona direct cu SO direct, fara a mai folosi un limbaj de programare. In esenta aceste interactiuni se realizeaza prin: comenzile standard oferite de catre orice sistem de operare; procesoarele care stiu sa interpreteze fisiere care contin comenzi adresate SO; diverse programe utilitare specializate in manipularea fisierelor si a volumelor; asa-numitele suprafete de operare - sisteme de meniuri prin care utilizatorul este condus de sistem spre a-si efectua actiunile dorite. Limbaje de control Utilizatorul comunica cu SO printr-un set de comenzi oferite de catre SO. Acest nivel de interfata poate fi privit ca un program permanent activ, numit interpretor de comenzi. Pentru a oferi modalitati convenabile de comunicare, comenzile sunt de cele mai multe ori ierarhizate si destinate diferitelor clase de utilizatori. De regula, intr-un sistem conversational multiutilizator comenzile sunt grupate si se refera la una din urmatoarele cinci sarcini: 1. inceperea si terminarea unei sesiuni de lucru; o numele utilizatorului, care trebuie cunoscut in prealabil de catre sistem; o un cod de identificare unica: cont, parola, prioritate; o resursele maximale pe care utilizatorul le doreste: timp maxim CPU, cantitatea de memorie, periferice, etc. 2. executia unui program sau proces; o editare; o compilare; o editare de legaturi; o executie propriu-zisa; o depanare(executie asistata). 3. obtinerea de informatii despre sistem; o informatii globale de stare data si ora curenta; numarul, eventual numele utilizatorilor activi in sistem la un moment dat; gradul de incarcare al sistemului; utilizarea memoriei si a perifericelor; modul curent de configurare al SO;
Transcript

Introducere in DOS

In acest laborator se vor urmari principalele proprietati ale unui sistem de operare urmarind cazul concret al sistemului de operare DOS.

Interfata SO SO ofera utilizatorului o serie de servicii prin care sa comunice reciproc. Aceste dialoguri sunt materializate de cele mai multe ori prin programe scrise intr-un limbaj de programare, fie de nivel inalt, fie in limbaj de asamblare. Se vor urmari in continuare modurile in care un utilizator poate interactiona direct cu SO direct, fara a mai folosi un limbaj de programare.

In esenta aceste interactiuni se realizeaza prin:

comenzile standard oferite de catre orice sistem de operare; procesoarele care stiu sa interpreteze fisiere care contin comenzi adresate SO; diverse programe utilitare specializate in manipularea fisierelor si a volumelor; asa-numitele suprafete de operare - sisteme de meniuri prin care utilizatorul este condus de

sistem spre a-si efectua actiunile dorite.

Limbaje de control

Utilizatorul comunica cu SO printr-un set de comenzi oferite de catre SO. Acest nivel de interfata poate fi privit ca un program permanent activ, numit interpretor de comenzi. Pentru a oferi modalitati convenabile de comunicare, comenzile sunt de cele mai multe ori ierarhizate si destinate diferitelor clase de utilizatori. De regula, intr-un sistem conversational multiutilizator comenzile sunt grupate si se refera la una din urmatoarele cinci sarcini: 1. inceperea si terminarea unei sesiuni de lucru; o numele utilizatorului, care trebuie cunoscut in prealabil de catre sistem; o un cod de identificare unica: cont, parola, prioritate; o resursele maximale pe care utilizatorul le doreste: timp maxim CPU, cantitatea de memorie, periferice, etc. 2. executia unui program sau proces; o editare; o compilare; o editare de legaturi; o executie propriu-zisa; o depanare(executie asistata). 3. obtinerea de informatii despre sistem; o informatii globale de stare data si ora curenta; numarul, eventual numele utilizatorilor activi in sistem la un moment dat; gradul de incarcare al sistemului; utilizarea memoriei si a perifericelor; modul curent de configurare al SO; disponibilitatea unor resurse; descrierea anumitor periferice. o informatii de stare individuala timpul CPU consumat pentru procesul curent; timpul fizic consumat de la conectare (login); numarul operatiilor I/O efectuate; fisierele deschise la momentul curent; procesele proprii active la momentul curent; perifericele alocate la procesele lui etc. 4. manipularea de fisiere; o creare; o stergere; o copiere; o concatenare; o tiparire(afisare); o renumire(redenumire,mutare). 5. administrare si intretinere sistem o nivelul administrator (supervizor, sistem); o nivelul operator; o nivelul utilizator obisnuit.

Principalele comenzi DOS

Interpretorul de comenzi DOS COMMAND.COM se incarca in memorie la pornirea sistemului de operare. El tine evidenta discurilor implicate si a directoarelor implicite de pe fiecare disc. Pe langa aceasta, efectueaza un numar de comenzi DOS prestabilite. Din acest punct de vedere comenzile DOS se impart in doua categorii:

comenzi rezidente (interne) - sunt comenzile inglobate in COMMAND.COM. Se lanseaza sub forma: ...>comanda argumente

comenzile tranzitorii (externe) - sunt cele care solicita existenta pe disc a unui fisier de tip *.com sau *.exe avand ca nume numele comenzii. Se lanseaza sub forma: ...>[d:][cale]comanda argumente

Comenzi de manipulare a directoarelor

Comanda Descriere

CD

recunoscuta si ca CHDIR, provine de la Change Directory, schimba directorul curent in cel specificat. Exemple: cd c:\lucru cd .. cd \

MD

recunoscuta si ca MKDIR, provine de la Make Directory, creaza un director nou. Crearea se face numai daca nu exista deja un director cu numele specificat. Exemple: md c:\lucru\test mkdir director1

RD

recunoscuta si ca RMDIR, provine de la Remove Directory, sterge un director nou. Stergerea se face numai daca directorul indicat este vid, adica nu contine nici un fisier sau subdirector subordonat. Exemple: rd c:\lucru\test rmdir director1

TREE

afiseaza structura arborescenta de directoare a directorului curent sau a directorului specificat. Exemple: tree tree c:\lucru

Teme de laborator:Sa se creeze urmatoarele structuri arborescente de directoare:

a) b)

c) d)

Comenzi de lucru cu discuri si fisiere

Comenzi de manipulare a unui disk

Comanda Descriere

fdisk

Realizeaza partajarea unui harddisk in mai multe partitii. In mod normal aceasta comanda se executa foarte rar, iar persoana care o lanseaza trebuie sa fie competenta. Este foarte usor sa se piarda toate informatiile de pe hardisk la o folosire incorecta. Se recomanda consultarea prealabila si serioasa a documentatiilor pentru cei ce vor (sau sunt nevoiti) sa o aplice.

format

Initializeaza discul specificat prin [c:\] la un format standar acceptat de catre DOS. Dupa ce se scrie pe intreg discul, creaza si initializeaza directorul radacina precum si tabela FAT. Incepand cu DOS 4.0 fiecarui disk i se atribuie la formatare un numar de serie, diferit de la o formatare la alta. Optiuni:

/s cere ca discul respectiv sa fie facut disc sistem; /v indica faptul ca utilizatorul doreste introducerea unei etichete de volum pentru

identificare;

/4 se foloseste pentru a formata dischete cu densitatea de 360KO.

unformatPermite refacerea unui disc formatat indicat prin [d:\]. In acest scop la formatare nu se mai scrie pe tot discul, ci numai partea de inceput, pana la directorul radacina inclusiv.

label Permite crearea sau stergerea unei etichete de volum.

diskcompPermite compararea discurilor indicate prin d1 si d2. Comparatia se face pista cu pista, semnalandu-se orice diferente.

diskcopyCopiaza, la nivel fizic discheta d1 (sursa) pe discheta d2 (destinatie). Daca este nevoie discheta d2 este formatata automat.

chkdsk Analizeaza structura informatiei de pe un disc DOS si afiseaza un raport asupra starii discului.

recoverRecupereaza fisierele de pe disc care contin sectoare defecte, totodata sectoarele defecte sunt marcate.

Comenzi privitoare la fisiere

dir

Listeaza toate intrarile din fisierul director sau numai cele specificate. INformatia afisata include numele volumului si dimensiunea spatiului liber de pe disc. INtrarile care afiseaza alte directoare sunt identificabile clar prin prezenta lui DIR in campul de dimensiune fisier. Optiuni:

/p afiseaza pagina cu pagina informatiile dorite;

/w afiseaza condensat directorul, impartind ecranul in cinci coloane, care contin doar numele fisierelor.

copy

Copiaza unul sau mai multe fisiere de pe alt disc si optional, da copiei un nume diferit daca in comanda se specifica acesasta. Optiuni:

/A determina tratarea fisierul ca un fisier ASCII (text); utilizat pentru fisierul sursa determina copierea pana la eof, iar pentru fiserul destinatie copiaza inclusiv eof.

/B determina copierea intregului fisier determinat prin informatia de dimensiune din fisierul director.

xcopy Permite copierea selectiva de fisiere, de grupuri de fisiere, care pot sa includa si subdirectori.

ren(ame)Schimba numele fisierului specificat de primul parametru in numele specificat de al doilea parametru.

del (erase)

Sterge fisierul cu numele specificat, din directorul specificat sau implicit, de pe unitatea specificata sau implicita.

undelete Permite refacerea fisierelor sterse.

comp Compara doua fisiere. Compararea demareaza numai daca fisierele au aceasi lungime.

type Afiseaza continutul fisierului specificat la dispozitivul standard de iesire.

printTipareste o coada (lista) de fisiere de date la imprimanta, in timp ce pe calculator se pot executa alte lucrari.

Teme de laborator:

1. Sa se scrie o comanda care copiaza toate fisierele cu extensia *.java dintr-un director in altul. 2. Sa se scrie o comanda ce ne raporteaza intr-un fisier ce fisiere cu numele lab?.html sunt in

memoria calculatorului. 3. Sa se schimbe data unui fisier cu data curenta a calculatorului.

Filtre DOS

Filtre DOS

Comanda Descriere

sort

Aceasta comanda "filtru" citeste date de la echipamentul standard de intrare, sorteaza datele, apoi scrie datele sortate la echipamentul standard de iesire. Sortarea este efectuata in ordinea codurilor ASCII, crescator, la nivel de linie de text. Caracterele TAB nu sunt expandate in spatii. Optiuni:

/r determina efectuarea sortarii in ordine descrescatoare;

/+n este un intreg care determina inceperea sortarii din coloana n. Daca nu se specifica nici un parametru, sortare incepe din coloana 1.

find

Aceasta comanda "filtru" trimite la echipamentul standard de iesire toate liniile din fisierul specificat in linia de comanda, care contin un sir de caractere specificat. Optiuni:

/v determina afisarea tuturor liniilor care nu contin sirul specificat; /c determina afisarea numai a unui contor cu numarul de apariti a sirului specificat in

fiecare fisier, fara a mai afisa liniile care contin sirul specificat /n determina o numerotare relativa a liniilor care contin sirul specificat, numarul de linii

se afiseaza inaintea fiecarei linii scrise.

Sirul trebuie introdus intre ghilimele (""). Doua apostrofuri consecutive sunt tratate ca si un singur apostrof. Comparatia tine cont de litere mari si litere mici. Nu se permite specificarea generica a fisierelor. Exemple:

...>find "poezie" carte1.txt carte2.txt carte3.txt Va afisa toate liniile din fisierele carte1.txt, carte2.txt, carte3.txt care contin sirul "poezie"

...>dir c: | find /v "dat" Va afisa numele tuturor fisierelor din directorul curent de pe discul c: care nu contin sirul "dat".

more

Este un filtru care citeste date de la intrarea standard si le tranpune pe ecran. La umplerea unui ecran, asteapta de un utilizator apasarea unei taste pentru a afisa ecranul urmator. Comanda are sens numai daca intrarea standard este redirectata, iar iesirea standard este ecranul. Exemplu:...> more < carte permite utilizatorului sa citeasca de pe ecran fisierul carte

exe2binEste un filtru special. El transforma, daca poate un program executabil de tip *.exe intr-unul executabil de tip *.com.

Teme de laborator:

1. Sa se sorteze un fisier cu studenti in ordine lexicografica. 2. Sa se determine numarul de aparitii al prenumelui "Mihai" intr-un fisier cu studenti. 3. Sa se determine pe ce linie apare pentru prima data prenumele "Adrian".

Comenzi de configurare si informare

Comenzi de configurare dinamica

Comanda Descriere

pathFixeaza caile de cautare suplimentare a fisierelor executabile. In mod implicit daca fisierele de comenzi si comenzile externe nu sunt precedate de o specificatie de cale ele sunt cautate numai in directorul curent.

appendComanda este similara comenzii path, doar ca ea se refera la caile suplimentare de cautare a fisierelor care nu sunt fisiere executabile.

fastopenOptimizeaza accesul la fisierele si directoarele mai des folosite. In acest scop este gestionata o zona de memorie tampon cu adresele de disc recent folosite.. Principiul este cel al memoriei cache.

date Afiseaza si schimba data curenta a sistemului.

time Afiseaza si schimba ora exacta curenta a sistemului.

break Sesizeaza sau nu apasarea lui Ctrl+Break.

prompt text

Se paote defini modul in care se doreste afisarea prompterului de catre command."Text" este un sir de perechi de caractere fara spatiu intre perechi. Primul caracter din pereche este simbolul '$' (dollar), iar al doilea poate fi una din literele t, d, p, g, n.

-t cere afisarea la prompter a orei exacte; -d cere afisarea la prompter a datei; -p cere afisarea caii de la directorul radacina pana la directorul curent; -g cere afisarea la prompter a simbolului '>';

-n cere afisarea la prompter a literei care specifica unitatea de disc implicita.

cls Sterge complet ecranul.

SET

Fixeaza valori ale unor parametrii aflati intr-o zona de memorie controlata de command.com. Atat numele cat si valoarea parametrilor sunt siruri de caractere. In urma executie comenzii SET, literele mici din nume si din valoare sunt convertite in litere mari.Numele sunt fie date de utilizator, fie nume gestionate de sistem. Printre numele gestionate de sistem, amintim PATH si PROMPT, care au ca valori sirurile indicate prin comenzile respective. Un alt nume, deosebit de important este COMSPEC. El are ca valoare radacina discului de pe care se face incarcarea sistemului de operare DOS. Dupa incarcare utilizatorul poate schimba aceasta cale. De exempl, daca utilizatorul incearca DOS de pe discheta A:, dar pe partitia C: exista fisierul command.com se poate da comanda: SET COMSPEC=c:\windows\command\command.com In absenta acestei comenzi, discheta de incarcare trebuie sa fie prezenta permanent in unitate.

Comenzi de de informare

Comanda Descriere

mem Afiseaza continutul memorie la un moment dat.

ver Afiseaza pe ecran numarul versiunii DOS a sistemului incarcat.

vol Afiseaza eticheta de volum a volumului curent sau a celui specificat.

help Da detalii despre comenzile DOS in general sau despre o anumita comanda specificata.

Teme de laborator:

1. Sa se adauge java.exe la caile de cautare sistem. 2. Sa se schimbe promptul cu data curenta. 3. Sa se enumere si sa se modifice minim trei variabile sistem. 4. Sa se afiseze numarul variabilelor de mediu care sunt setate. 5. Sa se obtina toate numele de fisiere read-only din c:\winnt si subdirectoare (sa fie doar calea

completa a fisierelor, fara alte informatii ex directoarele . si ..).

Fisiere de comenzi (BAT) sub DOS

Fisiere de comenzi (BAT) sub DOS

Un fisier de comenzi este un fisier text care contine una sau mai multa comenzi si/sau directive care se executa succesiv, fara interventia directa a utilizatorului. Numele unui astfel de fisier, in cazul SO DOS trebuie urmat de tipul fisierului *.bat. Un prim exemplu de fisier de comenzi DOs este fisierul autoexec.bat, daspre care vom discuta intr-un laborator urmator. Daca acest fisier este prezent in directorul radacina de pe partitia de bootare a sistemului de operare, DOS executa automat comenzile din el la fiecare incarcare a sistemului. Un fisier de comenzi DOS contine in el mai multe tipuri de constructii:

comenzi DOS propriu-zise; etichete; caractere speciale: | < > si % parametrii formali, care vor fi inlocuiti la lansare cu parametrii actuali; variabile globale rezidente in interpretorul de comenzi; variabile locale folosite la cicli; directive adresate interprtorului fisierelor de comenzi.

Exemplu: Fisier care listeaza programele Java din directorul curent, le copiaza pe discheta si apoi le sterge

tipar.bat dir *.java

  copy *.java a:\

  del *.java

O eticheta se scrie sub forma: :nume, caracterul ":" fiind urmat de maximum 8 litere sau cifre. O eticheta apare (ca definitie) pe o singura linie, la inceput de rand. Caracterele speciale | < > sunt interpretate in comenzi ca si legare in pipe a doau comenzi, respectiv pentru redirectarea intrarii si/sau a iesirii standard a unei comenzi. Pentru a fi interpretate ca si caractere obisnuite ele trebuiesc scrise intre ghilimele. Spre exemplu, o linie de forma; A | B este interpretata ca o succesiune a comenzilor A si B, legate in pipe. In schimb o linie de forma: A "|" B este interpretata ca o singura comanda A, care are doi parametrii, o bara verticala | si caracterul B. Caracterul @ plasat ca prim caracter intr-o linie are ca efect neafisarea linie pe ecran. Linie este in sa prelucrata de catre interpretorul fisierelor de comenzi. Caracterul % marcheaza parametrii formali, variabilele globale si variabilele locale. In fisierul de comenzi pot aparea pana la 10 parametri formali, notati cu %0 %1 ... %9. Corespunzator acestora in linia de comanda, care lanseaza in executie fisierul de comenzi argumentele sunt puse in corespondenta cu acesti parametri. Exemplu: fisier de comenzi ce primeste ca parametrii numele a trei clase Java, pe care le compileaza si apoi lanseaza in executie pe prima dintre ele:

executa.bat call javac %1.java

  call javac %2.java

  call javac %3.java

  call java %1

Daca se lanseaza fisierul prin comanda:executa SortTest QSort MyRead atunci parametrii formali vor avea valorile:

%0 executa

%1 SortTest

%2 QSort

%3 MyRead

Variabilele globale sunt cele care au primt valori prin comanda SET. Pentru a avea acces la ele numele lor trebuie cuprinse intre doua caractere %. Prin intermediul acestor variabile se poate dirija anticipat actiunea unui fisier de comenzi, sau doua fisiere de comenzi pot comunica intre ele. Spre exemplu, presupunem ca s-a dat o comanda: SET DEST=c:\lucru atunci intr-un fisier de comenzi ce se lanseaza ulterior poate sa apara comanda: copy *.java %DEST%.

Directivele interpretorului fisierelor de comenzi

for %%variabila in (multime) do comanda

call fisiercomenzi

if [not] errorlevel n comanda

if [not] sir1=sir2 comanda

if [not] exist fisier comanda

goto eticheta

shift

echo [on|off|mesaj]

pause [mesaj]

Directiva for permite prelucrarea iterativa a unei comenzi dintr-un fisier de comenzi. %%variabila este o variabila locala de ciclare. Ea este secvential inlocuita cu toate valorile din multime si apoi evaluata si executata. Daca un membru al multimii este o expresie construita generic (cu * si/sau ?), atunci %%variabila va fi inlocuita pe rand cu toate numele de fisier care se potrivesc cu aceasta expresie.

Comanda for %%f in (*.java *.txt) do type %%f va tipari pe ecran mai intai toate fisierele de tip *.java si apoi cele de tip *.txt. Daca in locul ei se da comanda: for %%f in (*.java *.txt) do dir %%f va lansa cate un dir pemtru fiecare fisier in parte, nu numai doua comenzi dir cum ar parea la prima vedere. Directiva for functioneaza si in linia de comanda, doar ca in linia de comanda nu mai este necesara dublarea caracterului special %.

Directiva call permite apelul (lansarea in executie) a unui fisier de comenzi din altul. La terminarea fisierului apelat controlul revine fisierului care l-a apelat. Tot aici se poate spune ca este posibil ca ultima linie a unui fisier de comenzi poate fi lansarea in executie a unui alt fisier de comenzi, fara directiva call. In acest caz se realizeaza o inlantuire a celor doua fisiere.

Directiva goto transfera controlul in fisierul de comenzi in linia de comanda situata dupa eticheta specificata.

Directiva if permite executia conditionata a unei comenzi DOS din fisierul de comenzi, sau a unei alte directive.Ce inseamna conditia ERRORLEVEL numar? Fiecare comanda DOs transmite la terminarea ei un cod cu o valoare intre 0 si 255. De obicei un cod cu o valoare nenula indica o situatie neobisnuita. Conditia ERRORLEVEL numar este adevarata daca codul de retur al ultimei comenzi este mai mare sau egal cu numarul scris dupa cuvantul ERRORLEVEL.

Directiva shift permite folosirea a mai mult de zece parametrii formali. Efectul ei este acela de a decala parametrii formali, facand sa se piarda parametrul %0, parametrul care era %1 sa devina %0, parametrul care era %2 sa devina %1,etc.

Directiva echo

echo on la lansarea unei linii in executie aceasta este afisata pe ecran

echo off la lansarea unei linii in executie aceasta nu este afisata pe ecran, dar totusi executata

echo mesaj afiseaza pe ecran mesajul specificat

Directiva pause afiseaza pe ecran mesajul, daca acesta este specificat, apoi suspenda executia fisierului pana cand se apasa o tasta.

Observatie:terminarea fortata a executiei unui fisier de comenzi sa face cu combinatiile de taste:

CTRL+C

CTRL+BREAK

Teme de laborator:

1. Sa se scrie un fisier de comenzi care realizeaza stergerea a oricate fisiere indicate ca parametrii. Rezolvare:

:repetashiftif "%0"=="" goto :sfarsitdel %0goto :repeta:sfarsit

2. Sa se scrie un fisier de comenzi care verifica daca un director al carui nume este primit in primul parametru exista si daca acesta exista sa se afiseze continutul toate fisierele care au extensia din parametrul al doilea

3. Sa se scrie un fisier de comenzi prin care sa se caute in oricate fisiere date ca parametru un cuvant primit tot ca si parametru. Sa se salveze rezultatul intr-un fisier text.

4. Sa se scrie un fisier de comenzi prin care sa se creeze un director cu numele avand primul parametru si apoi sa se copieze in el fisierul/directorul din parametrul al doilea

5. Sa se creeze un director in care sa se copieze toate fisierele de un anumit fel din alt director (cu ajuotrul unui fisier de comenzi).

DOS -  Laborator 6

Fisiere de configurare DOS (autoexec.bat si config.sys)

Fisiere de configurare DOS (autoexec.bat si config.sys)

Structura nucleului si a partii de servicii MSDOS

Suprafete de operare XTPRO, NC, PCSHELL, WINDOWS

Compilatoare Bibliotecar Editoare de legaturi Preparatoare de documente Editoare de texte Medii de programare

Programe utilitare

COMMAND

BDOS

DISK BIOS

ROM BIOS

Componenta ROM-BIOS

Este livrata de catre firma producatoare a calculatorului in memoria ROM a sistemului de calcul. Imediat ce se porneste sistemul intra in lucru o rutina a acestei componente.Ca regula generala ROM-BIOS egalizeaza toate diferentele constructive ale sistemului de calcul fata de conventiile DOS. Din cauza faptului ca IBM a facut publice aceste conventii, toti producatorii de calculatoare sunt practic obligati sa se alinieze la aceste conventii. Aceasta este cauza pentru care practic toti producatorii de calculatoare sunt practic obligati sa se alinieze la aceste conventii. Aceasta este cauza pentru care practic toate calculatoarele compatibile PC sunt compatibile intre ele. Principiul fundamental de realizare a interfetei ROM-BIOS sete acela ca el ofera niste rutine de intrerupere prin care se realizeaza legatura cu toate perifericele legate la sistem.

Componenta DISK-BIOS

Este practic independenta de hard si ea extinde functiile ROM-BIOS. Aceasta componenta este materializata intr-un fisier disc cu un nume (dependent de versiune) dintre cele de mai jos:

IBMBIO.COM, BIO.COM, IO.SYSrezident pe discheta sau pe discul de pe care se incarca sistemul de operare.

Functiile BIOS (Basic Input Output System)

incarcarea sistemului de operare; determinarea si testarea componentelor periferice existente in configuratie; testarea memoriei RAM; functiile de baza privind lucrul cu ecranul video; functiile elementare de citire a tastaturii; functiile elementare de lucru cu dischetele si cu discurile fixe; functiile de lucru cu caseta magnetica; functiile de lucru cu liniile de comunicatie asincrone(imprimante, plotere,

digitizoare, etc.).

In ceea ce priveste lucrul cu discul, BIOS opereaza cu cilindri, piste, sectoare, etc.

Componenta BDOS (Basic Disk Operation System)

Extinde functiile BIOS la un nivel mai inalt, cu precadere cele privitoare la lucrul cu discurile. Aceasta componenta este materializata intr-un fisier pe disc care poarta unul dintre numele:

IBMDOS.COM, DOS.COM, MSDOS.SYSrezident pe discul sau discheta de pe care se incarca sistemul de operare.

Functiile BDOS (Basic Disk Operation System)

gestiunea memoriei; alocarea si eliberarea de spatiu de memorie necesar programelor;

gestiunea proceselor (programelor) ; incarcarea acestora si lansarea lor in executie, incarcarea unor segmente de program in timpul executiei, terminarea programelor (cu eliberarea spatiului dememorie ocupat sau cu ramanerea rezidenta in memorie a unor programe);

executia operatiilor de I/O cu perifericele de tip caracter; tratarea fisierelor disc: creare, deschidere, inchidere, acces, stergere, etc; partajarea fisierelor intre mai multe procese active la un moment dat; gestiunea structurii arborescente a fisielor si manipularea directoarelor; gestiunea altor dispozitive legate la sistem; gestiunea retelelor de calculatoare; modificari aduse sistemului de intreruperi; gestiunea ceasurilor si a calendarului.

In ceea ce priveste lucrul cu discul, BDOS opereaza cu conceptul de fisier DOS.

Componenta COMMAND

Are ca sarcina principala preluarea comenzilor date de utilizator dela tastatura si lansarea lor in executie. Aceasta componenta este materializata intr-un fisier pe disc care poarta numele:

COMMAND.COMrezident pe discheta sau pe discul de pe care se incarca SO.

Incarcarea sistemului de operare

Pentru a putea sa asigure toate serviciile pentru care a fost conceput, SO - in fapt, tot un program - trebuie sa se afle in memorie. Ori, la pornirea calculatorului, in memoria sa nu se afla nimic (coerent). Nici macar un program care sa stie sa incarce sistemul de operare. Rezolvarea acestui impas a constituit o revolutie in dezvoltarea calculatoarelor.

Situatia imposibila in care se afla calculatorul a fost asemuita cu efortul cuiva de a incerca sa se ridice din groapa in care a cazut folosindu-se de sireturile bocancilor. Procedeul de incarcare a sistemului de operare a fost numit bootstrap (boot - bocanc, strap - siret). Ideea principala a cestui procedeu a fost de a folosi memoria de tip ROM (nevolatila) pentru a realiza incarcarea Pentru aceasta in cadrul ROM-BIOS exista un scurt program numit loader (incarcator).

Fisiere de configurare DOS (autoexec.bat si config.sys)

Primul fisier de sistem incarcat in memorie este IO.SYS (care contine componenta BIOS). Urmeaza fisierul MSDOS.SYS (care contine componenta BDOS), dupa care este cauta fisierul de configurare CONFIG.SYS. Toate aceste fisiere trebuie sa existe in directorul radacina. Daca nu este gasit fisierul CONFIG.SYS, sistemul este configurat cu valori implicite. Daca fisierul este gasit, sistemul este configurat conform comenzilor din acest fisier (o linie de fisier - o comanda). In continuare este incarcat interpretorul de comenzi COMMAND.COM. Dupa ce a preluat controlul, aceasta cauta (tot in directorul radacina) fisierul numit autoexec.bat, care contine comenzile ce dorim sa fie executate de fiecare data cand se incarca sistemul (o linie in fisier - o comanda). Daca nu este gasit fisierul autoexec.bat, COMMAND>COMexecuta comenzile DATE si TIME. Dupa executarea fisierului autoexec.bat sau a comenzilor date si time, este afisat prompterul sistemului de operare si in continuare se pot introduce comenzi (controlul este da utilizatorului).

Observatie: Orice disc sistem MSDOS contine obligatoriu in directorul radacina urmatoarele fisiere (ordinea este arbitrara): IO.SYS, MSDOS.SYS, COMMAND.COM si optional fisiereleconfig.sys si autoexec.bat, care sunt fisiere text.

config.sysComenzile din acest fisier se refera la:

1. modul de lucru pentru sistemul de operare; 2. incarcarea de drivere pentru exploatarea eficienta a calculatorului.

Prima clasa de comenzi are ca rprezentanti principali: BREAK, FILES, LASTDRIVE, REM.

BREAK permite/inhiba intreruperea unui program cu CTRL+C

FILESspecifica numarul maxim de fisiere pe care MSDOS le poate manevra simultan

LASTDRIVE stabileste numarul maxim de discuri cu care poate lucra MSDOS

REMse foloseste pentru a insera comentarii explicative in fisierul CONFIG.SYS

DOS permite folosirea memoriei superioare si/sau inalte;

FILES=n Determina numarul maxim de fisiere cu care MSDOS poate lucra simultan (care pot fi simultan deschise - vezi foxpro). Cinci fisiere sunt automat deschise de MSDOS:

CON semnifica tastatura ca fisier de intrare si ecranul ca fisier de iesire

PRNdispozitiv logic care in general este echivalent cu LPT1 (portul de tip paralel unde de obicei se conecteaza imprimanta)

AUXdispozitiv auxiliar care in general este echivalent cu COM1 (linia de comunicatii seriale numarul 1)

NULL periferic pentru testarea programelor

Perifericul de eroare

Valoarea n desemneaza numarul maxim de fisiere si poate fi intre 8 si 255 (implcit 8). Valori folosite: uzual FILES=20, dar la lucrul cu programele foarte complexe (exemplu foxpro) care lucreaza cu multe fisiere simultan, FILES=40.

REM [comentariu] O linie din config.sys care incepe cu literele REM este considerata comentariu. EA va fi neglijata si se va trece la executarea urmatoarei linii. Se foloseste uzual pentru a dezactiva temporar anumite comenzi. DOS=HIGH; DOS=UMB sau DOS=HIGH,UMBSpecifica faptul ca MSDOS trebuie sa foloseasca memoria superioara, sa incarce o parte din el in memoria inalta, sau ambele. Parametrul HIGH specifica faptul MSDOS trebuie sa incarce o parte din memoria inalta, eliberand astfel memorie conventionala. Are efect doar daca a fost incarcat in prealabil driverul himem.sys. Parametrul UMB specifica faptul MSDOS isi poate incarca driverele in memoria superioara folosind comanda DEVICEHIGH, eliberand astfel memorie conventionala. Are efect doar daca a fost incarcate driverele himem.sys si emm386.exe. Cea de-a doua clasa de comenzi din config.sys se refera la incarcarea driverelor. Un driver este o rutina care stie sa comunice cu un dispozitiv (periferic sau memoria interna).Driverele dispozitivelor standard (tastatura, ecran) fac parte din sistemul de operare. Cand este conectat la calculator un nou periferic, trebuie instalat si driverul corespunzator. Driverele sunt instalate prin comenzi DEVICE date in fisierul config.sys si pot fi livrate cu sistemul MSDOS sau separat. De regula au extensia sys si se incarca odata cu celelalte programe de control MSDOS, ramanand rezidente in memorie.Un driver poate avea unul din urmatoarele roluri:

extinderea configurarii cu noi dispozitive fizice (ex: mouse.sys); gestionarea memoriei extinse (himem.sys); adaugarea de facilitati pentru periferice existente (ansi.sys permite

adaugarea de noi functii pentru controlul tastaturii si a ecranului).

DEVICE=fisier [parametri]Incarca driverul din fisierul specificat si ii transmite parametrii din linia de comanda, parametri dependenti de driver. DEVICEHIGH Are acelasi rol ca si comanda DEVICE, numai ca incearca sa incarce driverul in memoria superioara daca exista. Daca nu exista memorie superioara, driverul este incarcat in memoria conventonala, fara a se anunta acest lucru.Cele mai importante drivere sunt:

ansi.sys permite controlul extins al tastaturii si ecranului; ramdrive.sys permite crearea de discuri logice in memoria interna (discuri

RAM); himem.sys driver pentru memoria extinsa; emm386.sys driver pentru memoria superioara si expandata; mouse.sys pentru lucrul cu mouse-ul.

Daca presupunem ca driverele se afla in directorul c:\drivers atunci config.sys ar putea arata astfel:

break=offdevice=c:\drivers\himem.sysdevice=c:\drivers\ems386.exe noemsdos=high,umbdevicehigh=c:\drivers\ramdrive.sys 2000 /edevicehigh=c:\drivers\ansi.sysdevicehigh=c:\drivers\mouse.sysfiles=40lastdrive=M

Observatie:Orice modificare in config.sys este efectiva doar dupa rebootarea calculatorului.

autoexec.batEste un fisier de comenzi care se executa automat la bootare.Exemplu

cls@echo offset path=c:\lucru;s:\jdk1.3\bin;prompt $p$gdoskey

Teme de laborator: 1. Sa se scrie corecteze si descrie pe scurt fisierele de comenzi urmatoare .

1echo offif %1.==. goto errif %1.==c. goto creif %1.==d. goto steif %1.==p. goto copecho primul parametru e gresitgoto sf:creif %2.==. goto err1md %2goto sf:steif %2.==. goto err2rd %2goto sf:copif %2.==. goto err3if %3.==. goto err4copy %2 %3goto sf:err1echo dati numele directorului care se creazagoto sf:err2echo dati numele directorului care se stergegoto sf:err3echo dati numele fisierului care se copiazagoto sf:err4echo dati numele directorului in care se copiazagoto sf:errecho dati parametri:sf

2echo offif %1.==. goto err:ghuif %1.==. goto errif %2.==. goto errif %3.==. goto errif %4.==. goto errgoto ghucopy %2*.%1 %3del %3\?%4*goto sf:errecho dati 4 parametrii:sf

3echo offif %1.==.goto errdir %1 |find "file(s)"goto sf:errdir |find "file(s)":sf

4if %1 .==. goto err:ghuif %1.==. goto sfif %2.==. goto err2if %3.==. goto err3type %1type %2>prndel %3shift shiftshiftgoto ghu:err2type %1goto sf:err3type %1type %2>prngoto sf

:errecho dati parametri:sf

5if %1.===. goto errdir %1|find "dir(s)"goto sf:errecho dati parametri:sf

6if %1.==. goto errdir %1 /a:-d|find "p"goto sf:err dir /a:-d|find "p":sf

7echo offif %1.==. goto err:hyuif %1.==. goto err1echo %1 >> danshiftgoto hyu:err1type dan|sortgoto sf:errecho dati parametri:sf

8if %1.==. goto err:susif not exist %1 goto err1 type %1 >>fis1goto err2 :err1echo >> %1md %1goto err2:err2shiftif %1.==. goto sfgoto sus:errecho dati parametri:sf

9echo offif %1.==. goto errdir %1 /a:-d|find /v ","goto sf:errdir /a:-d|find /v ",":sf

10@echo onif %1.==. goto err1if %1==c goto creazaif %1==d goto stergeif %1==p goto copiaza

:creazaif %2.==. goto err11md %2goto sf:err11echo Nu ati dat numele directorului care va fi creat.pausegoto sf

:stergeif %2.==. goto err12rd %2goto sf:err12echo Nu ati dat numele directorului care va fi sters.pausegoto sf

:copiazaif %2.==. goto err13if %3.==. goto err14copy %2 %3goto sf:err13echo Nu ati specificat numele fisierului care va fi copiat.pausegoto sf:err14echo Nu ati specificat numele directorului in care va fi copiat fisierul.pausegoto sf

:err1echo Nu ati specificat primul parametru !pause goto sf

:sf

CJhttp://www.cs.ubbcluj.ro/~rlupsa/edu/ac/doc/bat.html

Fisiere de comanzi

Pe scurt

Un fisier de comenzi este un program avand ca instructiuni elementare comenzi DOS

Programul nu este structutat; instructiunile de control al executiei sunt goto, if, for, call

Variabilele sunt de tip sir de caractere. Atribuieas se face cu instructiunea set

Un fisier de comenzi poate primi parametrii la lansarea in executie. Acestia se regasesc prin constructiile %1...%9 si cu instructiunea shift

Intrarea si iesirea standard se pot redirectiona prin constructiile >, >>, <, |

Teorie

Un fisier de comanzi este un fisier ce contine o inlantuire de comenzi DOS ce trebuie executate succesiv.

Fisierele de comenzi se creaza folosind un editor de text; recomandabil se va folosi mediul Turbo Pascal.

Fisierele de comenzi vor avea obligatoriu extensia bat

Un fisier de comenzi poate contine toate comenzile ce pot fi date in mod interactiv interpretorului de comenzi.

Deoarece un fisier de comenzi este de fapt un program, avem in plus variabile, si instructiuni pentru controlul ordinii executiei instructiunlor. Aceste instructiuni sunt: goto, if, for, shift, call. Pentru informatii legate de aceste comenzi, va rugam sa cititi informatiile din Norton Guide sau din bibiografie.

Exista variabile, de tip sir de caractere, care pot fi modificate folosind comanda set. Acolo unde avem nevoie de valoarea unei variabile, vom scrie %nume-variabila%.

Un fisier de comenzi poate fi apelat cu parametrii, de ex. il puem lansa prin comanda (interactiva)

t.bat 1 a.pas

in acest exemplu primul parametru este (sirul) 1, iar al doilea este a.pas. Din interiorul fisierului de comenzi putem afla valorile parametrilor ca %1, ... , %9. Comanda shift face ca %1 sa ia valoarea lui %2, %2 valoarea lui %3 s.a.m.d., %9 luand ca valoare urmatorul parametru (al zecelea).

Iesirea unei comenzi (ceea ce ar afisa comanda respectiva pe ecran) se poate

Exercitii

1. Scrieti un fisier de comenzi care creaza un director cu numele pascal in care copiaza toate fisierele cu extensia pas din directorul curent.

Rezolvare:

mkdir pascalcopy *.pas pascal

2. Acelasi lucru, dar dand cate o comanda copy pentru fiecare fisier

Rezolvare:

Punem copierea ca instructiune la FOR:

mkdir pascalfor %%i in (*.pas) do copy %%1 pascal

3. Scrieti un program care copiaza fisierele a.txt, aa.txt, ..., aaaaaaaa.txt in directorul c:\temp; fisierul nu trebuie sa contina explicit cele 8 nume.

Rezolvare

4. Scrieti un program care copiaza fisierele date ca parametrii in directorul c:\temp

Rezolvare

5. Scrieti un fisier de comenzi care primeste cel putin 2 parametrii. primul fiind un nume de director si urmatoarele nume de fisiere, si muta fisierele date ca parametrii in directorul dat ca prim parametru. Se vor semnala eventualele erori.

6. Scrieti un fisier de comenzi care concateneaza fisierele date ca parametrii in fisierul dat ca ultim parametru. Se vor semnala eventualele erori.

7*. Scrieti un fisier de comenzi care primeste ca parametri nume de fisiere si copiaza acele fisiere ce au extensia pas in directorul c:\temp.

8. Sa se afiseze lista fisierelor din directorul curent si, recursiv, din toate subdirectoarele sale.

Observatii

1. Numarul de parametrii cu care a fost apelat un fisier de comenzi se poate determina afland care este primul parametru ce are ca valoare sirul vid.

2. Pentru a verifica daca un sir de caractere este numele unui director, verificam daca exista fisierul nume\NUL. Aceasta se bazeaza pe faptul ca in orice director gasim (prin testul de existenta) un fisier special cu numele NUL

3. Un fisier vid se poate crea prin comanda copy nul nume-fis 4. Un fisier de comenzi poate crea un alt fisier de comenzi, pe are in final sa-l

lanseze in executie!

http://www.cs.ubbcluj.ro/~dadi/ac/LabFisiere BAT - laborator nr. I

1.Comenzi DOS mai des folosite:-de lucru cu discul: diskcopy, sys, format, fdisk, chkdsk-de lucru cu directoare: mkdir(md), chdir(cd), rmdir(rd), dir, path, subst-de lucru cu fisiere: more, attrib, del, erase, deltree, fc, find, move, rename, sort, xcopy, copy, type, print-eticheta de volum: label, vol-alte comenzi: choice, edit, keyb, mode, cls, date, time, ver, echo,rem

2.Cerinte la laborator:Pentru fiecare problema se va scrie un fisier de comenzi DOS care va indeplini urmatoarele cerinte:-fisierul de comenzi va trebui sa verifice daca apelul este corect (numarul de parametri este corespunzator) si fisierele care trebuie tratate exista-fisierul va rezolva problema respectiva:)-la inceputul fisierului se va scrie in 5 randuri ca si comentarii textul problemei care se rezolva si modul (algoritmul) de rezolvare a problemei-pe alocuri (acolo unde este necesar) se vor insera comentarii in codul sursa (a nu se abuza, insa, de aceste comentarii!!)-la sfarsitul programului (sau in alt fisier), se va scrie o lista succinta cu cazurile de testare ale programului impreuna cu output-ul lui

3.Exemplu de program:

REM 1. Sa se scrie un fisier de comenzi care primeste ca si parametrii un nume de director REM si o lista de fisiere. Se va creea in directorul curent un nou fisier cu numele toate.txtREM care va include continutul tuturor fisierelor specificate in lista de parametrii si care REM exista in directorul specificat ca si prim parametru.

REM Vom retine in variabila "d" primul parametru, adica directorul. Apoi facem un SHIFT pentru REM a trece la urmatorul parametru. Apoi, intr-o structura repetitiva vom parcurgem restul REM parametrilor si pentru fiecare testam existenta in directorul "d", iar in caz afirmativREM ii vom adauga continutul (cu TYPE) la sfarsitul fisierului toate.txt (prin redirectareaREM iesirii standard)

@echo offREM verificam numarul de parametriiif "%2"=="" goto err1REM verificam daca primul parametru e nume de director si il retinem in variabila "d"if NOT EXIST %1\NUL goto err2set d=%1shiftREM parcurgem ceilalti parametrii din linia de comanda:loopif "%1"=="" goto endREM verificam daca exista %d%\%1 si in caz afirmativ il concatenam la toate.txtif EXIST %d%\%1 type %d%\%1 >>toate.txtshiftgoto loop

:err1echo Trebuie minim doi parametrii! goto end:err2echo Primul parametru trebuie sa fie nume de director:end

REM afisam continutul fisierului toate.txttype toate.txt

REM Cazuri de testare:REM 1)C:\lab1.batREM Trebuie minim doi parametrii!!

REM 2)C:\lab1.bat dir1 a.txt b.txt c ex1.pas tpc.exeREM ...se va afisa continutul fisielor din lista de parametrii care se afla in directorul dir1

 Probleme

P1. Se cere un fisier de comenzi COMPILE.BAT care compileazatoate programele PASCAL ale caror nume sunt date ca si parametri. Programul va verifica daca fisierele exista si va afisa un mesaj in cazde eroare. Dupa compilare se vor lansa in executie (numai) programele executabile rezultate, apoi se vor sterge rezultatele compilarii.

P2. Se cere un fisier de comenzi MULTE.BAT, care in functie deo litera furnizata, fie face rezumatul directorului curent sau alcelui specificat, fie sterge fisierul al carui nume este dat caparametru, fie il tipareste pe ecran.(Indicatie: se va folosi comanda choice.com)

P3. Se cere fisierul de comenzi CPAS.BAT care, folosindapelul CALL, compileaza toate programele C si PASCAL dindirectorul curent.

P4. Sa se afiseze lista fisierelor si subdirectoarelor existente intr-un director specificat ca si parametru. Daca la apel se specifica un al doilea parametru, acesta va fi considerat ca si extensia fisierelor care vor trebui luate in considerare si acestea vor fi tiparite in ordinea in care apar, in caz contrar se vor considera toate fisierele si subdirectoarele, si acestea se vor afisa sortate.

P5. Sa se conceapa un fisier de comenzi DADUBLE.BAT care saprimeasca oricati parametri si sa afiseze valorile parametrilorvecini care coincid.

P6. Sa se scrie un fisier de comenzi care sa primeasca oricati parametri. Se cere stergerea din directorul curent a tuturor fisierelor ce au extensiile date ca parametri.

P7. Sa se scrie un fisier de comenzi care creeaza 3 directoarea caror nume sunt primii 3 parametri din linia de comanda si copiazatoate fisierele Pascal in primul director, toate fisierele .exe inal doilea director si toate fisierele text in al treilea director.

P8. Se da un nume de director si o lista de fisiere (ca si parametrii). Sa se scrie un fisier .bat care din lista de fisiere va afisa acelea care sunt continute in directorul dat.

P9. Sa se scrie un fisier de comenzi care pentru un fisier dat ca parametru afiseaza urmatorul meniu:1. Afisare2. Stergere3. Iesiresi executa operatia aleasa.(Indicatie: se va folosi comanda choice.com)

P10. Sa se scrie un fisier de comenzi care cauta un cuvant dat ca si prim parametru in fiecare din fisierele date de asemenea ca siparametri. Pentru fiecare fisier, se va afisa numarul liniilor in care acest cuvant apare.

P11. Se cere un fisier de comenzi care verifica daca existaun anumit fisier furnizat ca si parametru. Daca da, atunci sa seafiseze structura de directoare din A:, altfel sa seformateze discheta din A: la capacitatea de 360Ko.

P12. Se cere un fisier de comenzi care primeste ca si parametri un nume de director si un nume de fisier pentru care afiseaza meniul:1. Copiaza fisierul in director2. Sterge directorul impreuna cu toate fisierele si subdirectoarele propriisi executa operatia aleasa.(Indicatie: se va folosi comanda choice.com)

P13. Se cere un fisier de comenzi care dupa cererea explicita de introducere a dischetei in unitate face formatarea acesteia la capacitateade 360 Ko iar apoi copiaza pe ea toate fisierele date ca parametri.

P14. Sa se scrie un fisier de comenzi care primeste un numar par de parametri astfel: fiecare pereche de parametri reprezinta un nume de fisiersi un nume de director. Fiecare fisier va fi mutat in directorul ce-l urmeazain lista de parametri.

P15. Sa se scrie un fisier de comenzi care primeste un numar par de parametri astfel: fiecare pereche de parametri reprezinta un cuvant si un nume de fisier. Se va afisa numarul liniilor din fisier care contin cuvantul respectiv pentru fiecare pereche de parametri.

Fisiere BAT - laborator nr. II

1.Cerinte la laborator:Pentru fiecare problema se va scrie un fisier de comenzi DOS care va indeplini urmatoarele cerinte:-fisierul de comenzi va trebui sa verifice daca apelul este corect (numarul de parametri este corespunzator) si fisierele care trebuie tratate exista-fisierul va rezolva problema respectiva:)-daca este necesar, se va scrie si cate un program Pascal (C sau ASM) care va intoarce coduri corespunzatoare, ale caror valori sa fie testate in fisierul de comenzi.-la inceputul fisierului se va scrie in 5 randuri (ca si comentarii) textul problemei care se rezolva si modul (algoritmul) de rezolvare a problemei-pe alocuri (acolo unde este necesar) se vor insera comentarii in codul sursa (a nu se abuza, insa, de aceste comentarii!!)-la sfarsitul programului (sau in alt fisier), se va scrie o lista succinta cu cazurile de testare ale programului impreuna cu output-ul lui

2.Exemplu de program:

REM Sa se conceapa un fisier de comenzi COMPARA.BAT care primeste ca parametri doua nume de fisiere. Daca ambele fisiere

REM exista, atunci acestea sa fie comparate (ca dimensiune), altfel sa se dea un mesaj corespunzator. Programul va calcula dimensiunea REM celor doua fisiere fara a folosi pentru aceasta comanda DOS comp.

REM Vom folosi comanda IF, varianta cu ERRORLEVEL. Astfel, scriem un fisier BAT care va apela un program pascal (in format REM executabil) care va compara dimensiunea celor doua fisiere si in functie de rezultat va intoarce urmatoarele coduri de retur:REM 1 - fisierul 1 este mai mare decat fisierul 2REM 2 - fisierul 1 are aceeasi dimensiune ca fisierul 2REM 3 - fisierul 1 este mai mic decat fisierul 2REM Apoi, in functie de codul de retur, cu ajutorul lui IF ERRORLEVEL vom tipari un mesaj corespunzator

@echo offREM daca nu avem parametrii sar la sfarsitif !%1==! goto endif !%2==! goto endREM daca nu exista fisierele furnizate ca si parametrii sar la sfarsitif not exist %1 goto endif not exist %2 goto endREM apelez programul compar.exe cu parametrii cele doua nume de fisiereREM (folosesc call pentru ca executia sa revina in fisierul bat) si inREM functie de codul de retur afisez mesaje corespunzatoare.REM De notat, folosirea codurilor de retur in ordine descrescatoare (4,3,2,1)!call compar.exe %1 %2if errorlevel 4 goto et4if errorlevel 3 goto et3if errorlevel 2 goto et2if errorlevel 1 echo fisierul %1 este mai mare decat fisierul %2goto end:et4  echo Eroare interna  goto end:et3  echo fisierul %1 este mai mic decat fisierul %2  goto end:et2  echo fisierul %1 are aceeasi dimensiune ca fisierul %2:end

REM Cazuri de testare:REM 1)C:\compara.bat file1REM Trebuie minim doi parametrii!!

REM 2)C:\compara.bat file1 file2REM fisierul file1 este mai mare decat fisierul file2

Programul care va compara dimensiunea celor doua fisiere este un program pascal, compar.pas, (in format executabil) care va fi compilatcu tpc (C:\temp>tpc compar.pas). Vom folosi urmatoarele functii mai speciale:ParamCount - numarul de parametri din linia de comandaParamStr(i) - al i-lea parametru din linia de comandaHalt(n) - iese din program cu codul de retur n

program compara;

var  f1, f2: file;  size1, size2 : Longint;begin  { verificam daca am primit destui parametrii in linia de comanda }  if (ParamCount<2) then begin     writeln('Nu am primit destui parametrii!');     halt(4);  end;  { deschidem cele doua fisiere si ne pozitionam la inceputul lor }  Assign(f1, ParamStr(1));  Assign(f2, Paramstr(2));  Reset(f1);  Reset(f2);  { calculam dimensiunea fisierelor }  size1 := FileSize(f1);  size2 := FileSize(f2);  { comanda Halt(n) iese din program cu codul de retur n }  if (size1>size2) then     halt(1) { fisierul 1 este mai mare decat fisierul 2 }  else if (size1=size2) then           halt(2) { fisierul 1 are aceeasi dimensiune ca fisierul 2 }       else           halt(3);  { fisierul 1 este mai mic decat fisierul 2 }  Close(f1);  Close(f2);end.

Programul care compara dimensiunea celor doua fisiere il putem scrie si in C si il compilam cu bcc (C:\temp>bcc compar.c)Parametrii din linia de comanda sunt accesibili in limbajul C prin doua argumente ale functiei main():argc - numarul de parametrii din linia de comandaargv - un sir de stringuri reprezentand parametrii din linia de comanda

#include<stdio.h>

int size(FILE* f){  int s;  char buf[100];

  s=0;  fscanf(f,"%s",buf);  //citim in bufferul buf pana cand ajungem la sfarsitul fisierului si apoi vedem cat am citit  while(!feof(f)) {     s=s+strlen(buf);     fscanf(f,"%s",buf);     }  s=s+strlen(buf);  return s;}

main(int argc, char* argv[]){ FILE *f1,*f2; int size1, size2;

 if(argc<2) {    printf("Nu avem destui parametrii!");    exit(4);    } // deschidem cele doua fisiere pentru citire f1=fopen(argv[1],"r"); f2=fopen(argv[2],"r"); //calculam dimensiunile celor doua fisiere si apoi le compar size1=size(f1); size2=size(f2); //functia exit(n) iese din program cu codul de retur n if(size1>size2)      exit(1); //fisierul 1 este mai mare decat fisierul 2 else if(size1==size2)           exit(2); //fisierul 1 are aceeasi dimensiune ca fisierul 2      else           exit(3); //fisierul 1 este mai mic decat fisierul 2}

  P1. Sa se scrie un fisier de comenzi SAVE.BAT care primeste caparametru un tip de fisier (o extensie) si salveaza pe discheta A: toatefisierele de acest tip aflate in directorul curent, daca eticheta devolum coincide cu un sir dat ca parametru. Programul va cere explicitintroducerea dischetei in unitate.

     P2. Sa se scrie un fisier de comenzi AFIS.BAT care sa afisezeun mesaj de salut corespunzator in functie de perioada de zicurenta ('Buna dimineata', 'Buna ziua' respectiv 'Buna seara').

     P3. Sa se conceapa un fisier de comenzi PRIM.BAT careprimeste ca parametru un numar natural. Programul va verifica daca numarulrespectiv este prim sau nu.

     P4. Sa se scrie un fisier de comenzi care sa schimbe numelefisierelor *.BAK in  *.TXT, daca exista mai  mult de 5 astfel defisiere in directorul curent.

     P5. Sa se scrie un fisier de comenzi care sa afiseze daca numarul deocteti liberi de pe discul implicit este mai mare decat o valoaredata ca si parametru.

     P6. Sa se scrie un fisier de comenzi care in functie de literadata ca si parametru, sa schimbe unitatea implicita in cea specificata.Apoi sa se stearga din noua unitate, toate fisierele de tip *.BAK si sase afiseze toate fisierele din unitate care sunt create la o anumita data,data ca si parametru.

     P7. Sa se verifice daca exista fisierele A, B, ... , F (in directorul curent) sidaca acestea sunt directoare. Sa se creeze structura partiala dedirectoare A\B\C\D\E; A\B\C\D\F, recreand directoarele  care nu exista.

     P8. Sa se ordoneze alfabetic toate fisierele (continutul lor) de tip *.TXT, date ca siparametri (nu toti parametri sunt fisiere de tip *.txt), rezultatul

fiind fisierele corespunzatoare de tip *.ALF.

     P9. Se cere un fisier de comenzi MS-DOS care primeste ca parametri un numar oarecarede siruri de caractere. Daca printre parametri se afla cel putin doua nume de directoaresa se creeze un al treilea director cu numele dat ca parametru (daca el nu exista deja).In acest director sa se obtina un fisier cu numele COMPLET.TXT prin concatenarea tuturorfisierelor (a continutului) din cele doua directoare si a caror nume este dat ca parametru.

Ex: > fis.bat  numedir  abc  v_#7?  dir1  secv  abc.txt  37a@x  dir2  abc.txt  a---a

        va crea directorul numedir (daca el nu exista) si va construi fisierul COMPLET.TXT        prin concatenarea fisierelor din directoarele dir1 si dir2 ale caror nume se        gasesc printre parametrii dati (abc.txt se va concatena de 2 ori).

Obs. Problema se va solutiona exclusiv prin directive si comenzi MS-DOS.

     P10. Se cere un fisier de comenzi care primeste un numar oarecare de parametri.Primul parametru reprezinta un nume de director. Daca in lista urmatorilor parametriexista cel putin 2 nume de fisiere care se afla in directorul dat ca prim parametru,atunci sa se creeze un al doilea director cu numele dat ca parametru (daca el nu existadeja) si sa se copieze cele 2 fisiere in el.

Obs. Problema se va solutiona exclusiv prin directive si comenzi MS-DOS.

     P11. Se cere un fisier de comenzi care primeste ca si parametri un numar oarecare desiruri de caractere. Daca exista cel putin 2 parametri egali cu primul parametru, atunci seva crea un nou director cu acest nume (daca nu exista) iar in fisierul date.txt creat in acestdirector vor fi scrisi ceilalti parametri din linia de comanda.

Obs. Problema se va solutiona exclusiv prin directive si comenzi MS-DOS.

     P12.  Se cere un fisier de comenzi care primeste ca si parametri un numar oarecare desiruri de caractere. Daca in lista de parametri apare sirul "225" atunci se cauta in restulparametrilor numele de fisiere care exista in directorul curent si daca acestea sunt celputin 2, vor fi afisate toate sirurile de caractere ramase in lista parametrilor, acesteanereprezentand nume de fisiere din directorul curent.

Obs. Problema se va solutiona exclusiv prin directive si comenzi MS-DOS.

     P13. Se cere un fisier de comenzi care primeste in linia de comandaoricati parametri. Daca numarul de parametri este par, se vor copia intr-undirector PAR toate fisierele din linia de comanda care sunt parametri de ordinpar, iar daca numarul de parametri este impar se vor copia intr-un directorIMPAR toate fisierele din linia de comanda care sunt parametri de ordinimpar.

Obs. Problema se va solutiona exclusiv prin directive si comenzi MS-DOS.

      P14. Se cere un fisier de comenzi care primeste oricati parametri inlinia de comanda reprezentand nume de fisiere si directoare. Daca al 4-lea parametru esteun nume de director care apare de cel putin alte doua ori in sirul parametrilor dinlinia de comanda atunci se vor sterge toate fisierele si directoarele dinlinia de comanda, mai putin cel care are numele celui de-al patruleaparametru.

Introducere in limbajul de asamblare 8086 - laboratorul 3

1. Utilizarea programelor tasm, tlink, td

tasm - este un asamblor, traduce un program scris in limbaj de asamblare in format obiect (fisier.asm -> fisier.obj)       - lansat fara parametri furnizeaza sintaxa corecta        - exemplu de utilizare : tasm exemplu sau tasm exemplu.asm

tlink - editor de legaturi transforma un fisier din format obj in format executabil. Poate sa grupeze mai multe fisiere obj intr-un singur program executabil.        - fis1.obj + fis2.obj + ... -> fisier.exe (sau fisier.com)        - lansat fara parametri furnizeaza sintaxa corecta        - ex. de utilizare : tlink exemplu sau tlink exemplu.obj        - optiuni mai importante: /v, /t

Odata obtinut programul executabil, acesta se poate lansa in executie.

td    - este un depanator, un program care permite rularea pas cu pas a programelor executabile.       - ex. de utilizare td exemplu sau td exemplu.exe       - TD permite doua tipuri de depanare:        1. Depanare la nivel de limbaj masina - aceasta este posibila pentru orice program executabil, exe sau com.        2. Depanare la nivel de limbaj sursa - posibila pentru acele programe executabile care includ informatii de depanare si pentru care este prezent fisierul sursa.

OBSERVATIE

Pentru depanare la nivel de limbaj masina vom folosi:...> tasm exemplu

Pentru depanare la nivel de limbaj sursa vom folosi:...> tasm /zi exemplu

...> tlink exemplu

...> td exemplu...> tlink /v exemplu...> td exemplu

 

       Urmarirea programului cu Turbo Debugger se va face in fereastra CPU (se deschide din meniul View|CPU).Aici avem continutul registrilor si flagurilor procesorului si programul ce se executa.Acesta este prezentat atat in limbaj de asamblare cat si direct in cod masina (adica, octet cu octet, continutul memoriei), continutul segmentului de date (in hexa) si continutul stivei. Putem pozitiona zona vizibila din program, zona de date si stiva folosind comanda Go to din meniul local al ferestrei (meniul activat cu Alt-F10). De asemenea, putem afla sau modifica valoarea unei variabile, folosind fereastra de dialog Evaluate/Modify (deschisa cu Ctrl-F4)

 

2.Un exemplu minimal de program in limbaj de asamblare

; spunem asamblorului care sunt segmentele folosite de noiASSUME cs: code, ds:data; data - segmentul de date in care vom defini variabilele data SEGMENTa db 7            ; a este un octet(byte)b dw 10          ; b este un cuvant (word -2 bytes)c db 3,5,6,1 ; c e un sir de octetidata ENDS;code - numele segmentului de codcode SEGMENTstart:mov ax,data       ; pentru a sti care e segmentul de date, mutam in registrul ds mov ds,ax       ; adresa segmentului de date, si pentru ca nu putem face asta direct folosim intermediar registrul ax; .......;aici avem instructiunile programului nostru;........mov ax,4C00hint 21h ; e apelata intreruperea 21, cu ah incarcat cu 4C,adica sfarsitul executiei, si se returneaza codul de eroare al=00, adica ; executie cu succescode ENDSEND start

Pentru neclaritati privind instructiunile si directivele consultati Norton Guide-ul.

3. Un exemplu concret : evaluarea expresiei aritmetice a*b+c.

; Sa se evalueze expresia a*b+c

; am considerat a si b ca fiind octeti iar c cuvant, rezultatul tinandu-l in rez , si

acesta cuvant.

ASSUME cs:text_,ds:data_

data_ SEGMENTa db 4b db 4c dw 123rez dw ?data_ ENDS

text_ SEGMENT

start:mov ax, data_mov ds, ax; Evaluarea propriu-zisa a expresieimov al, a       ; al = amul b       ; ax = a*badd ax, c       ; ax = a*b+cmov rez, ax       ; rez= a*b+c; Terminarea programuluimov ax, 4c00hint 21htext_ ENDS

END start

; cazuri de utilizare : a=3,b=5,c=12-->rez=27

4. Cerinte la laborator:

1. Generati program executabil din sursa prezentata in mai sus.2. Urmariti pas cu pas executia programului (in Turbo Debugger). Urmariti continutul registrilor in acest timp. 3. Tot in executia pas cu pas a programului, urmariti continutul segmentului de date. Pentru aceasta, activati (cu Shift-sageata jos) zona de date a ferestrei CPU, activatati meniul local (Alt-F10) si dati comanda Go to. In fereastra ce se deschide, dati ds:0. Urmariti primii octeti din segmentul de date pe parcursul executiei programului. 4. Pozitionati afisarea zonei de date pe cs:0 Comparati cu ceea ce se afiseaza in zona de cod. 5. Modificati programul in asa fel incat variabilele sa fie reprezentate pe 16 biti si initializati-le cu valori mai mari (de ordinul 1000). Repetati exercitiile 1-4.

 

 


Recommended