Limbaje de Asamblare

Previzualizare curs:

Extras din curs:

Introducere. Necesitatea programării în limbaje de asamblare

Modalităţile de programare s-au schimbat imens de la inventarea calculatorului, în primul rând pentru a se acomoda creşterii complexităţii programelor. De exemplu, la început, când au fost inventate calculatoarele, programarea se făcea introducându-se instrucţiuni în maşina de cod binar cu ajutorul panoului frontal al calculatorului. Acest lucru a fost convenabil atât timp cât programele aveau doar câteva sute de instrucţiuni. O dată cu mărirea programelor, au fost inventate limbajele de asamblare, astfel încât programatorii se puteau descurca cu programe mai mari, cu complexitate crescută, folosind reprezentarea simbolică a instrucţiunilor pentru maşină.

Deoarece programele continuau să crească, au fost introduse limbajele de nivel înalt care oferă programatorului mai multe unelte cu care să facă faţă complexităţii. Au apărut apoi limbajele orientate obiect, limbajele specializate pentru rezolvarea unor anumite aplicaţii.

Cu toate acestea limbajele de asamblare se mai utilizează încă şi vor continua să se utilizeze deoarece ele permit înţelegerea la nivel de amănunt a ceea ce se întâmplă în realitate într-un calculator.

De ce "programare in asamblare" ? Argumente favorabile limbajelor de asamblare:

• Viteza: programele în L. A. sunt cele mai rapide

• Spaţiul de stocare: programele în L.A. sunt în general de dimensiuni mici

• Potenţialitate

-Programele în L.A. pot realiza aplicaţii ce se realizează dificil în limbaje de nivel înalt

-Programele care necesită accesul la nivel maşină sunt realizate în L.A. de ex: driverele (device drivers)

• Cunoştinţe de programare:

-Cunoştinţele în programare în limbaj de asamblare ajută la programarea în limbaje de nivel înalt; un programator nu ajunge niciodată la un nivel superior (expert) dacă nu are şi cunoştinţe dobândite prin dezvoltarea de programe în limbaj de asamblare

-Programarea în limbaj de asamblare ajută la o mai bună înţelegere a arhitecturii maşinii şi a modului ei de funcţionare

-un specialist care se respecta stie sa programeze in asamblare; o atenţie sporită se acordă dezvoltării de aplicaţii mixte (în limbaj de nivel înalt şi în asamblare)

• trebuie modificat un program existent, scris in asamblare

Pe lângă aceste evidente avantaje se mai pot enumera şi alte aspecte legate de dezvoltarea de programe pentru echipamente dedicate. Nu toate programele executabile sunt destinate calculatoarelor de uz general. Dezvoltarea continuă a microprocesoarelor a făcut ca ele să fie implicate în funcţionarea celor mai diverse obiecte tehnice, de la obiecte de uz casnic (ca maşinile de spălat) până la echipamente de control industrial. Toate aceste echipamente care au în structura lor microprocesoare funcţionează pe bază de programe care evident nu sunt scrise în Pascal sau C. Majoritatea acestor programe sunt scrise în limbaje de asamblare deoarece în aceste cazuri cel mai mult interesează viteza de execuţie a lor şi volumul mic de memorie. Există şi alte cauze pentru care nu întotdeauna se poate utiliza un limbaj de nivel înalt. Microprocesoarele utilizate în astfel de cazuri nu sunt neapărat specializate, ele sunt specifice cazului concret pentru care se utilizează şi pentru care s-au proiectat şi realizat (ca de exemplu microcontrolerele, automatele programabile). Nu este posibil să se dezvolte medii de programare şi compilatoare C sau Pascal pentru toate microprocesoarele existente.

De ce se evita limbajul de asamblare?

• este prea greu

• este greu de citit si de inteles

• este greu de scris

• este greu de depanat si de intretinut

• programarea este ineficienta

• viteza nu mai constituie o problema la calculatoarele de azi

• memoria nu mai constituie o problema

• compilatoarele actuale genereaza cod eficient

• limbajul de asamblare nu este portabil

Cap. 1 Concepte de baza

1.1 Reprezentarea si codificarea informatiilor

Din punctul de vedere al limbajului de asamblare calculatorul este văzut la nivel hardware: adrese fizice de memorie, registre, întreruperi, etc. Unitatea de bază a informaţiei memorate în calculator este bitul (0 sau 1) care corespunde din punct de vedere hardware unui circuit bistabil. Un circuit bistabil este un circuit electronic care are două stări stabile codificate cu 1 sau 0, capabil să memoreze un bit de informaţie.

Informaţia care se prelucrează într-un sistem de calcul este foarte variată. Astfel, se reprezinta în memorie:

– instructiuni - prin coduri de instructiuni

– date:

• logice: Adevarat/Fals, Inchis/Deschis, Pornit/Oprit

• numerice: intregi, nr. fractionare, nr.pozitive/negative

• alfanumerice: caractere, text

• multimedia: sunet, imagine (audio/video)

– structuri de date

Reprezentarea informatiilor numerice

Reprezentarea informaţiilor numerice se face, după anumite reguli, utilizând sistemul de numeraţie binar. Totuşi, datorită faptului că este destul de greu de lucrat cu acest sistem, în mod direct, în procesul de codificare a informaţiei se mai utilizează şi alte sisteme de numeraţie, derivate din sistemul binar. Sistemele de numeraţie utilizate în informatică sunt binar, octal şi hexazecimal. Deoarece este greu de operat cu numere în binar, pentru exprimarea unei cantităţi binare se utilizează sistemul octal şi hexazecimal. De exemplu numărul 25510 = 111111112 = FF16=3778

În general, un număr X scris într-o bază oarecare b se scrie sub forma:

Xb→ xm xm-1 xm-2 .... x0 . x-1 x-2.... x-n

Unde simbolurile xi respectă următoarele regului:

0<= xi < b, i= -n .. m

xm!= 0, x-n!= 0

Valoarea numărului în baza b se poate calcula, în zecimal, prin dezvoltare după puterile bazei b astfel:

Xb = xm*bm + xm-1*bm-1 + .... x0*b0 + x-1*b-1 + x-2*b-2... x-n*b-n

Caracteristici ale sistemelor de numeraţie utilizate:

– sistemul binar: putine reguli, multe cifre

– sistemul zecimal şi hexahecimal: multe reguli, mai putine cifre

Aceste sisteme de numeraţie sun sisteme de numeraţie poziţionale ponderate, la care valoarea unei cifre depinde de poziţia sa în cadrul numărului.

Exemple:

Fie numărul zecimal 5685. La acest număr, de exemplu cifra 5 apare în două poziţii, însă aportul pe care îl aduce această cifră în cadrul numrărului este diferit. În mod analog, în binar putem avea numărul 101.

Conversii dintr-o baza in alta

Pentru a converti un număr din baza 10 într-o bază oarecare b se converteşte separat partea întreagă şi separat partea fracţionară, astfel:

• conversia părţii întregi: prin divizare succesivă cu noua bază: exemplu din baza 10 în baza 2. Pentru a converti numărul 30 din baza 10 în baza 2 se fac împărţiri succesive la 2 astfel:

30 0

15 1

7 1

3 1

1 1

0

rezultă

3010 = 111102

• conversia părţii fracţionare: prin înmulţire succesivă cu noua bază, conversia nu este însă întotdeauna precisă (univocă). Pentru a converti numărul 0,48 din baza 10 în baza 2 se procedează astfel:

0,48 0

0,96 0

1,83 1

1,66 1

1,32 1

...

Rezultă

0,4810=0,00111...2

Conversia Binar – Hexazecimal – Octal

Datorită faptului că 16 şi 8 sunt puteri a lui 2 (16=22, 8=23) există o legătură între sistemul de numeraţie binar şi cel hexazecimal, respectiv octal care face mai uşoară conversia numerelor între aceste sisteme.

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • curs 10.doc
  • curs 3.doc
  • curs 5.doc
  • curs1.doc
  • curs2.doc
  • curs4.doc
  • curs6.doc
  • curs7.doc
  • curs8.doc
  • curs9.doc
  • probleme-asm.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
8/10 (1 voturi)
Nr fișiere:
11 fisiere
Pagini (total):
76 pagini
Imagini extrase:
86 imagini
Nr cuvinte:
21 191 cuvinte
Nr caractere:
119 291 caractere
Marime:
898.97KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Calculatoare
Predat:
la facultate
Materie:
Calculatoare
Sus!