Sunteți pe pagina 1din 10

1

Reprezentarea intern a datelor





1. Baze de numeraie.
2. Operaii aritmetice i logice n diferite baze de numeraie.
3. Reprezentarea numerelor ntregi. Complement fa de 2.
4. Formatul BCD.
5. Reprezentarea numerelor reale.
6. Reprezentarea caracterelor.
7. Tipuri de date fundamentale i memorarea lor.


Una dintre problemele cele mai importante ntmpinate de un novice n momentul n care
ncepe s nvee limbajul de asamblare este legat de utilizarea sistemelor de numeraie binar i
hexazecimal. Dei nu poate fi tgduit faptul c dificultile de nvare sunt semnificative,
avantajele ctigate n urma acestui proces sunt nsemnate n domenii ca algebra boolean,
reprezentarea numerelor cu semn sau codarea caracterelor.


1. Baze de numeraie.

Cea mai cunoscut baz de numeraie, cel mai des utilizat n viaa de zi cu zi, este baza
10, care folosete pentru reprezentarea numerelor cifrele de la 0 la 9. Este binecunoscut faptul c
fiecare cifr aflat n stnga virgulei reprezint o valoare ntre 0 i 9 nmulit cu o putere
pozitiv a lui 10, n timp ce la dreapta virgulei valorile se nmulesc cu o putere negativ a lui 10.
Puterile cresc, respectiv scad din unu n unu pornind de la virgul spre stnga, respectiv spre
dreapta. De exemplu, reprezentarea numrului 123,456 este

1 * 10
2
+ 2 * 10
1
+ 3 * 10
0
+ 4 * 10
-1
+ 5 * 10
-2
+ 6 * 10
-3
.

n lumea calculatoarelor ntietate au bazele 2 i 16. Baza 2 are dicionarul format din
cifrele 0 i 1. Reprezentarea unui numr se face la fel ca i n cazul bazei 10, cu deosebirea c, de
aceast dat, valorile se nmulesc cu puteri ale lui 2. Ca urmare, este uor de realizat conversia
unui numr din baza 2 n baza 10:

11001010
2

=
1 * 2
7
+ 1 * 2
6
+ 0 * 2
5
+ 0 * 2
4
+ 1 * 2
3
+ 0 * 2
2
+ 1 * 2
1
+ 0 * 2
0

=
128 + 64 + 8 + 2
=
202
10
.

Operaia invers, conversia din baza 10 n baza 2, este mai laborioas, numrul zecimal
fiind mprit succesiv la 2, atta timp ct ctul este mai mare dect 1. Reprezentarea binar este
dat de ctul ultimei mpriri urmat de resturile mpririlor anterioare n ordine invers:
2

673 : 2 = 336
672
336 : 2 = 168
/ / 1 336
168 : 2 = 84
/ / 0 168
84 : 2 = 42
/ / 0 84
42 : 2 = 21
/ 0 42
21 : 2 = 10
/ 0 20
10 : 2 = 5
/ 1 10
5 : 2 = 2
/ 0 4
2 : 2 = 1
1 2

0

Rezultatul final este

673
10
= 1010100001
2
.

Marea problem a sistemului binar este numrul mare de cifre folosite pentru
reprezentarea unei valori. Dup cum se poate vedea i din exemplele de mai sus pentru a
reprezenta un numr de trei cifre n baza 10 avem nevoie de 8 cifre n baza 2. Pe de alt parte,
calculatoarele lucreaz n logic binar, dou nivele de tensiune (de obicei 0 i 5 V) fiind
asociate celor dou valori ale sistemului de numeraie binar.
Toate aceste probleme sunt rezolvate de ctre baza 16, al crei set de valori cuprinde
cifrele de la 0 la 9 i literele de la A la F. Principalele avantaje ale acestei abordri sunt faptul c
reprezentarea numerelor este foarte compact i uurina cu care acestea pot fi convertite n baza
2 i invers:

1 0 0 0 1 1 1 1 1 0 1 0 - baza 2

8 F A - baza 16


3 A E - baza 16

0 0 1 1 1 1 0 1 0 1 1 1 - baza 2

Conversia se face pe baza regulilor prezentate n Tabelul 1, adic fiecare grup de 4 cifre
binare corespunde unei cifre hexazecimal, respectiv pentru fiecare cifr hexazecimal avem 4
cifre n baza 2.
Pentru a converti un numr hexazecimal ntr-unul zecimal, urmm aceleai reguli ca i n
cazul bazei 2, cu meniunea c de aceast dat folosim puteri ale lui 16:


3
1234h
=
1 * 16
3
+ 2 * 16
2
+ 3 * 16
1
+ 4 * 16
0

=
4096 + 512 + 48 + 4
=
4660
10
.

Conversia din baza 10 n baza 16 poate fi fcut n dou moduri. Primul dintre ele este
asemntor cu procedura urmat n cazul bazei 2, adic se fac mpriri succesive la 16, pn
cnd ctul devine mai mic dect 16, numrul n hexa fiind dat de ultimul ct i de resturile luate
n ordine invers, operaie care necesit mult atenie din cauza cifrelor hexa de la A la F.
Varianta mai simpl este conversia numrului zecimal n binar, urmat de conversia din binar n
hexazecimal.


Tabelul 1. Reprezentarea numerelor
n diferite baze de numeraie.

Binar

Octal Zecimal Hexazecimal
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F


O alt baz de numeraie, mai puin folosit n sistemele de calcul, este baza 8, care
folosete pentru reprezentarea unui numr cifrele de la 0 la 7. Sistemele care o utilizau foloseau
pentru reprezentarea informaiei registre de 12 bii.


2. Operaii aritmetice i logice n diferite baze de numeraie.

Operaiile aritmetice clasice din baza 10, adunarea, scderea, nmulirea i mprirea, pot
fi efectuate i n bazele 2 i 16. Dei n ziua de azi exist calculatoarele de buzunar care rezov
fr probleme astfel de situaii, o bun nelegere a lor mbuntete performanele unui
4
programator. Ca urmare ne mrginim s semnalm aici doar dou din erorile cele mai frecvente
care apar n practic. Astfel,

9h + 1h = 0Ah i nu 9h + 1h = 10h,

iar

10h 1h = 0Fh i nu 10h 1h = 9h.

Dei n cazul adunrii suntem tentai, ca urmare a obinuinei noastre de a lucra n baza
10, s rspundem 10h, acest lucru nu este corect. ntr-adevr, 9 adunat cu 1 d 10, numai c 10 n
baza 16 este 0Ah i nu 10h, care este de fapt, 16. Acelai lucru este valabil i pentru scdere, noi
scznd de fapt 1 din 16 i nu din 10. Este evident deci c rspunsul corect este 15, adic 0Fh.
Operaiile logice pe bii care pot fi fcute n bazele 2 i 16 sunt n numr de patru: AND,
OR, XOR (sau exclusiv) i NOT, iar tabelele de adevr corespunztoare sunt date mai jos:


Tabelul 2. Tabelul de adevr al funciei AND.



Tabelul 3. Tabelul de adevr al funciei OR.



Tabelul 4. Tabelul de adevr al funciei XOR.



Tabelul 5. Tabelul de adevr al funciei NOT.



5
Dup cum se poate vedea i din tabelele de adevr, rezultatul funciei AND (I), este 1
dac ambii operanzi sunt 1 i 0 n rest, n timp ce n cazul lui OR (SAU), avem 1 dac cel puin
un operand este 1 i 0 dac ambii operanzi sunt nuli. XOR (SAU-EXCLUSIV) are ca rezultat
valoarea 1 dac operanzii sunt diferii i 0 dac sunt identici, iar NOT neag operandul.
Operaiile logice pe bii sunt deosebit de utile dac vrem s modificm anumite valori
dintr-un grup de bii fr a afecta restul biilor. Aceste operaii sunt cunoscute sub numele de
mascri i pot fi fcute folosind oricare din operaiile logice de mai sus.


3. Reprezentarea numerelor ntregi. Complement fa de 2.

Exist mai multe sisteme de reprezentare a numerelor ntregi, cel mai rspndit fiind cel
n complement fa de 2. n acest sistem bitul cel mai semnificativ (MSB) precizeaz semnul
numrului, motiv pentru care este numit i bit de semn. Astfel, dac bitul de semn este 0,
numrul reprezentat este pozitiv, iar dac bitul de semn este 1, numrul reprezentat este negativ.
Avnd la dispoziie n bii se pot reprezenta numerele cuprinse ntre -2
n-1
i 2
n-1
-1. n cazul
valorilor pozitive, pentru a obine valoarea n complement fa de 2, numrul se reprezint binar
pe n-1 bii i se completeaz cu 0 pe poziia MSB. Transformarea invers, din complement fa
de 2 n zecimal, este de fapt conversia numrului din binar n zecimal. Pentru valorile negative,
numrul se reprezint fr semn pe n-1 bii, se complementeaza toi biii (0 devine 1 i reciproc),
apoi se aduna 1 cu transport i se completeaz cu 1 pe poziia MSB, obinndu-se valoarea n
complement fa de 2. Invers, se realizeaz complementarea tuturor biilor, se adun 1 cu
transport, dup care se face transformarea din baza 2 n baza 10.
n Tabelul 6 este prezentat un exemplu de reprezentare n complement fa de 2 n cazul
n care avem la dispoziie 4 bii. Conform celor enunate mai sus, valorile se ntind ntre -8 i 7.


Tabelul 6. Reprezentarea numerelor cu semn pe 4 bii.

Valoare Complement
fa de 2
7 0111
6 0110
5 0101
4 0100
3 0011
2 0010
1 0001
0 0000
-1 1111
-2 1110
-3 1101
-4 1100
-5 1011
-6 1010
-7 1001
-8 1000

De remarcat faptul c dac numerele de mai sus sunt reprezentate pe mai mult de 4 bii se
face extensia bitului de semn, adic are loc completarea biilor suplimentari cu bitul de semn.
Astfel, 7 reprezentat pe 4 bii este 7h, iar pe 8 bii este 07h, n timp ce -7 reprezentat pe 4 bii este
9h, iar pe 8 bii, F9h.
6


4. Formatul BCD.

n diverse sisteme de afiare a datelor numerice, n care este folosit numai baza 10, se
utilizeaz codificarea de tip BCD (Binary Coded Decimal). n acest sistem, fiecare cifr zecimal
poate fi reprezentat pe 4 bii n formatul BCD mpachetat i pe 8 bii n formatul BCD
despachetat. Un exemplu de conversie din baza 10 n format BCD mpachetat i invers este
prezentat mai jos:


4 3 9 7 - baza 10 0 1 0 1 0 1 1 0 0 0 1 0 1 0 0 0 - BCD

0 1 0 0 0 0 1 1 1 0 0 1 0 1 1 1 - BCD 5 6 2 8 - baza 10

Calculatoarele dispun, de obicei, de instruciuni speciale pentru calcule n format BCD.
Sunt unele probleme care trebuie avute n vedere, i anume, operaiile de corecie care trebuie
fcute dup (sau naintea) operaiilor n BCD, deoarece doar 10 din cele 16 combinaii binare
posibile sunt cifre BCD corecte.


5. Reprezentarea numerelor reale.

Numerele reale (fracionare) se pot reprezenta n dou moduri distincte, care sunt numite
reprezentare n virgul fix i reprezentare n virgul mobil.


5.1. Reprezentarea n virgul fix.

Reprezentarea numerelor reale n virgul fix presupune un numr finit de cifre
semnificative, att pentru partea ntreag ct i pentru cea fracionar. Considernd baza de
numeraie b, n cifre pentru partea ntreag i m cifre pentru partea fracionar, un numr real x se
va reprezenta prin expresia:

x = i
n
*b
n
+ + i
1
*b
1
+ i
0
*b
0
+ f
1
*b
-1
+ + f
m
*b
-m
,

n care cifrele i
n
, , i
0
reprezint partea ntreag, iar cifrele f
1,
, f
m
reprezint partea fracionar
a lui x. Cifrele sunt considerate n baza b, iar o alt form de a scrie numrul x este

x
(b)
= i
n
i
1
i
0
. f
1
f
m


Numrul de cifre din dreapta i din stnga virgulei (n tehnica de calcul virgula este
reprezentat de punct) stabilesc precizia de reprezentare.


5.2. Reprezentarea n virgul mobil.

n aceast reprezentare, numerele sunt considerate de forma:

(-1)
S
* M * B
E


unde:
7
- S este numit bit de semn i este 1 pentru numerele negative i 0 pentru cele pozitive;
- M este numit mantis (sau fracie) i este un numr pozitiv subunitar reprezentat n baza
B;
- B este numit baza (uzual este 2 sau 16);
- E este numit exponent i este un numr ntreg cu semn.

Mantisa M se numete normalizat dac prima cifr dup virgul este semnificativ (diferit
de 0). Exponentul se reprezint de obicei deplasat, n sensul c se memoreaz un numr de forma
E + K, unde K este o constant astfel aleas nct E + K s fie ntodeauna pozitiv, rezolvndu-se
problema memorrii semnului exponentului.
Precizia reprezentrii este dat de numrul de bii pe care se reprezint mantisa i numrul de
bii alocat exponentului. n standarde se prevede reprezentarea n simpl precizie (M = 24 bii, E
= 8 bii) i precizie extins (M = 64 bii i E = 15 bii).


6. Reprezentarea caracterelor.

Pe lng datele numerice, n memoria calculatorului trebuie reprezentate i alte tipuri de
date cum ar fi:

- caractere alfabetice (litere);
- semne de punctuaie;
- caractere de control (folosite pentru comanda diverselor echipamente periferice).

Pe majoritatea calculatoarelor actuale se folosete codul standard ASCII prezentat n
tabelul urmtor


Tabelul 7. Codul ISO de 7 biti (CCITT nr. 5, ASCII).

bit 7 0 0 0 0 1 1 1 1
bit 6 0 0 1 1 0 0 1 1
bit 5 0 1 0 1 0 1 0 1
bit 4 bit 3 bit 2 bit 1 0 1 2 3 4 5 6 7
0 0 0 0 0 NUL DLE SP 0 @ P p
0 0 0 1 1 SOH DC1 ! 1 A Q a q
0 0 1 0 2 STX DC2 2 B R b r
0 0 1 1 3 ETX DC3 L(#) 3 C S c s
0 1 0 0 4 EOT DC4 $(X) 4 D T d t
0 1 0 1 5 ENQ NAK % 5 E U e u
0 1 1 0 6 ACK SYN & 6 F V f v
0 1 1 1 7 BEL ETB , 7 G W g w
1 0 0 0 8 BS CAN ( 8 H X h x
1 0 0 1 9 HT EM ) 9 I Y i y
1 0 1 0 10 LF SUB * : J Z j z
1 0 1 1 11 VT ESC + ; K [ k {
1 1 0 0 12 FF FS , < L \ l |
1 1 0 1 13 CR GS - = M ] m }
1 1 1 0 14 SO RS . > N ^ n -
1 1 1 1 15 SI US / ? O - o DEL

8

Caractere speciale:
SP - Space
CR - Carriage Return
LF - Line Feed
EOT - End Of Trasmission
ESC - Escape
DEL - Delete

Codul ASCII standard este un cod pe 7 bii, deci cuprinde 128 de caractere distincte,
fiecare caracter fiind reprezentat pe un octet, n care bitul cel mai semnificativ este zero. De notat
c mai exist i codul ASCII extins, n care sunt folosii toi cei 8 bii pentru reprezentarea unui
caracter.
Dintre cele 128 de caractere ale codului ASCII standard (avnd valori ntre 0 i 127 n
zecimal i ntre 0 i 7Fh n hexazecimal), 32 sunt caractere de control i nu sunt afiabile. Cteva
exemple sunt date n cele ce urmeaz:

b
7
b
6
b
5
b
4
b
3
b
2
b
1

a - 0 1 1 0 | 0 0 0 1 binar sau 61h (hexa)
Z - 0 1 0 1 | 1 0 1 0 binar sau 5Ah (hexa)
1 - 0 0 1 1 | 0 0 0 1 binar sau 31h (hexa)
9 - 0 0 1 1 | 1 0 0 1 binar sau 39h (hexa)
ESC - 0 0 0 1 | 1 0 1 1 binar sau 1Bh (hexa)


7. Tipuri de date fundamentale i memorarea lor.

Unitatea de baz a informaiei memorate n calculator este bitul. Un bit reprezint o cifr
binar, iar modelul hardware corespunztor este un bistabil care are dou stri stabile, codificate
cu 0 i 1, capabil s memoreze un bit de informaie.
Un grup de bistabili formeaz un registru. De exemplu 8 bistabili formeaz un registru
de 8 bii iar valorile pe care le poate memora sunt ntre 00000000 i 11111111 avnd denumirea
de octet sau byte. Octetul reprezint tipul fundamental de date petru familia de calculatoare
80x86. Memoria calculatorului este vzut ca o succesiune de octei, iar fiecare octet are asociat
o adres de memorie format dintr-un numr de bii care d dimensiunea memoriei.
Multiplii folosii n tehnica de calcul sunt:

1 kilo = 2
10
octeti = 1.024 octeti = 1Koctet (n = 10)
1 mega = 2
20
octeti = 1.048.576 octeti = 1Moctet (n = 20)
1 giga = 2
30
octeti = 1.073.741.824 octeti = 1Goctet (n = 30),

n fiind numrul de bii necesari pentru adresare sau numrul de bii ai adresei.
Tipurile de date de baz cu care opereaz limbajul de asamblare sunt (Figura 1):

BYTE

Ocup un octet i poate reprezenta:

un ntreg pe 8 bii cu sau fr semn;
un caracter ASCII

WORD
9


Figura 1. Tipurile de date utilizate n limbajul de asamblare.


Ocup doi octei i poate reprezenta:

un ntreg pe 16 bii cu sau fr semn;
o secven de dou caractere ASCII
o adres de memorie de 16 bii

DOUBLE-WORD

Ocup patru octei i poate reprezenta:

un ntreg pe 32 de bii cu sau fr semn;
un numr real n simpl precizie
o adres de memorie de 32 de bii

QUAD-WORD

Ocup opt octei i poate reprezenta:

un ntreg pe 64 de bii cu sau fr semn;
un numr real n dubl precizie

Dup cum se vede i din figura 1 fiecare dintre aceste tipuri de date, exceptnd octetul,
are o parte high i o parte low. Fiecare tip de date este definit cu ajutorul unei directive specifice,
iar formatele de reprezentare a datelor se regsesc i n limbajele de nivel nalt.
Ajuni n acest punct cu studiul se poate spune c am dobndit uneltele necesare pentru a
putea porni n nvarea limbajului de asamblare, aa c nainte de a pleca mai departe s lum o
pauz activ n care s rezolvm ntrebrile i temele de mai jos.




10

ntrebri i teme

1. Convertii urmtoarele valori zecimale n binar:

a) 128 b) 4096 c) 256 d) 65536 e) 254
f) 9 g) 1024 h) 15 i) 344 j) 998
k) 255 l) 512 m) 1023 n) 2048 o) 4095
p) 8192 q) 16,384 r) 32,768 s) 6,334 t) 12,334
u) 23,465 v) 5,643 w) 464 x) 67 y) 888

2. Convertii urmtoarele valori binare n zecimal:

a) 1001 1001 b) 1001 1101 c) 1100 0011 d) 0000 1001 e)1111 1111
f) 0000 1111 g) 0111 1111 h) 1010 0101 i) 0100 0101 j) 0101 1010
k) 1111 0000 l) 1011 1101 m) 1100 0010 n) 0111 1110 o) 1110 1111
p) 0001 1000 q) 1001 111 1 r) 0100 0010 s) 1101 1100 t) 1111 0001
u) 0110 1001 v) 0101 1011 w) 1011 1001 x) 1110 0110 y) 1001 0111

3. Convertii valorile binare de la exerciiul 2 n hexazecimal.

4. Convertii urmtoarele valori hexazecimale n binar:

a) 0ABCD b) 1024 c) 0DEAD d) 0ADD e) 0BEEF
f) 8 g) 05AAF h) 0FFFF i) 0ACDB j) 0CDBA
k) 0FEBA l) 35 m) 0BA n) 0ABA o) 0BAD
p) 0DAB q) 4321 r) 334 s) 45 t) 0E65
u) 0BEAD v) 0ABE w) 0DEAF x) 0DAD y) 9876

5. Calculai n hexazecimal:

a) 1234 +9876 b) 0FFF - 0F34 c) 100 1 d) 0FFE - 1

6. Pornind de la premisa c valorile binare de la problema 4 sunt reprezentri n
complement fa de 2 pe 16 bii s se determine valorile zecimale ntregi.

7. Cte cifre hexazecimale sunt ntr-un:

a)byte ? b)word ? c)double word ?



Bibliografie:

1. Gheorghe Musc, Programare n limbaj de asamblare, Ed. Teora, 1998.
2. Randall Hyde, The Art of Assembly Language.
3. Paul A. Carter, PC Assembly Language, 2000.
4. www.intel.com, The IA-32 Intel Architecture Software Developers Manual.

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