Sunteți pe pagina 1din 19

CURS 4

Limbajul masina
Definitie
 Un limbaj masina este un formalism proiectat pentru a coda programe de nivel jos sub
forma unor instructiuni.
 Folosind aceste instructiuni, programatorul poate comanda procesorul:
 sa realizeze operatii aritmetice si logice,
 sa citeasca sau sa scrie valori din si in memorie
 Sa mute valori dintr-un registru in altul
 Sa testeze conditii booleene
 Etc
 Cu toate ca majoritatea programatorilor nu vor lucra direct in limbaj masina, studiul
programarii de nivel jos este o cerinta preliminara a unei intelegeri complete a
arhitecturii calculatoarelor.
 De asemenea este fascinant sa observam cum programe sophisticate, sunt de fapt
formate dintr-o lunga serie de instructiuni fundamentale
Masina (computerul)

 Limbajul masina poate fi privit ca un formalism prestabilit, proiectat sa


manipuleze memoria cu ajutorul unui processor si a unui set de registrii
 Memoria – colectia de dispositive hardware ce stocheaza date si instructiuni
Memory[address], RAM[address], M[address]
 Procesorul – dispozitivul capabil sa efectueze un set de operatii elementare
 Registrii – locatii de memorie aflate in apropierea (fizica) a procesorului ce
permit procesorului sa manipuleze date si instructiuni cu viteza mare.
Limbajul

 Un program in limbaj masina este o serie de instructiuni codate.


1010001100011001 – Instructiune pe 16 biti
set R3 to R1 + R9
 Limbajul masina poate fi reprezentat fie ca instructiuni codate binar fie ca un
set de mnemonice
ADD R3,R1,R9
Comenzi
 Operatii aritmetice si logice
 Acces la memorie
 Adresare directa
 Adresare imediata
 Adresare indirecta
Adresarea directa

 Aceasta este cea mai des utilizata metoda de adresare a unei locatii de
memorie.
 Se face prin specificarea adresei sau a unui symbol ce face referinta la adresa
dupa cum urmeaza
Adresarea imediata

 Exte folosita pentru a incarca valori constant, valori care apar explicit in
codul instructiunii.
 In loc sa tratam valoarea, ca fiind o adresa, pur si simplu incarcam valoarea
campului intr-un registru.
Adresarea indirecta

 In cadrul adresarii indirecte, adresa locatiei de memorie nu este hard-codata


in instructiune, ci instructiunea specifica locatia de memorie care contine
adresa dorita
 Acest mod de adresare este folosit pentru pointeri
Instructiuni de control al programului
Specificatiile limbajului masina Hack

Calculatorul Hack are o arhitectura von Neumann. Este un calculator pe 16 biti constand
dintr-un processor, 2 module de memorie separate (memorie de date si memorie de
instructiuni) si doua dispositive de I/O: ecranul si tastatura.
Spatiul de memorie – Programatorul are la dispozitie doua spatii de memorie distincte:
memoria de instructiuni si memoria de date. Amandoua au cuvinte de 16 biti si au un spatiu
de adresa de 15 biti, insemnand ca marimea maxima adresabila este de 32K.
Registrii – Programatorul are la dispozitie 2 registrii numiti D si A. Acestia pot fi manipulate
explicit prin operatii aritmetice si logice. In timp ce registrul D este folosit pentru a stoca
doar date, registrul A poate fi folosit si ca registru de date si ca registru de adresa.
Instructiunea A

Unde value este un numar pozitiv, sau un simbol ce se refera la un astfel de numar

@5 = 0000000000000101
Instructiunea C
 Aceasta instructiune poate face aproape orice. Codul instructiunii e o specificatie care
raspunde la urmatoarele trei intrebari:
 Ce calculam?
 Unde stocam valoarea?
 Ce facem dupa?
 Impreuna cu instructiunea A, aceste specificarii determina toate operatiile posibile ale
calculatorului
(1)
Input/Output

Monitor
 ecran alb-negru format 256*512 pixeli. Continutul ecranului este reprezentat de o harta
de memorie de 8K ce incepe la adresa 16384 (0x4000) din RAM. Fiecare rand este
reprezentat in RAM de 32 de cuvinde consecutive de 16 biti.
 Pixelul de pe randul r coloana c este situate la bitul C%16 al cuvantului aflat la adresa
RAM[16384+r*32+c/16]. Pentru a citi sau scrie un pixel pe ecran, trebuie citit / scris bitul
corespunzator al hartii de momorie din RAM (1=negru, 0=alb)
Tastatura
 Calculatorul interfateaza cu tastatura folosind un singur cuvant de memorie aflat la
RAM[24576].
 Cand se apasa o tasta, codul ASCII al acesteia va aparea in locatia de memorie
respective. Cand nu este apasata nici o tasta codul 0 este setat.
 Pe langa codurile ASCII uzuale, tastatura Hack mai recunoaste si simbolurile
din tabela urmatoare
Perspective

 Limbajul masina Hack este foarte simplu. Majoritatea computerelor au mai


multe instructiuni, mai multe tipuri de date, mai multi registrii, mai multe
formate de instructiuni si mai multe moduri de adresare.
 Limbajul nu suporta operatiile de inmultire si impartire. Acestea vor fi
implementate la nivelul sistemului de operare (Capitolul 12)

 Are o sintaxa user friendly


 Limbaj cu jumatate de adresa

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