Documente Academic
Documente Profesional
Documente Cultură
P.Lucrare.03.A
Coninut
1.
Introducere ......................................................................................................................2
1.1.
Scop .........................................................................................................................2
2. ARITMETICA NUMERELOR INTREGI ............................................................................2
2.1.
Aritmetica numerelor intregi, pozitive (fara semn) ....................................................5
2.2.
Aritmetica numerelor intregi, cu semn ......................................................................6
2.3.
Reprezentarea numerelor n virgul flotant ..........................................................10
2.4.
Coduri zecimale ......................................................................................................11
2.4.1.
Reprezentarea numerelor n BCD mpachetat i despachetat .......................12
2.4.1.1.
Operaii n BCD despachetat ..................................................................12
2.4.1.2.
Operaii n BCD mpachetat ....................................................................13
3. Coduri alfanumerice .....................................................................................................14
4. Aplicatii ..........................................................................................................................14
Lista de figuri
Figura 3. 1. Conversia octal - binar ..........................................................................................4
Figura 3. 2. Conversia binar-hexazecimal-zecimal .................................................................4
Figura 3. 3. Aparitia unei depasiri in urma efectuarii unei operatii aritmetice...........................5
Figura 3. 4. Plaja de valori numerice pentru reprezentarea pe octet, respectiv cuvant a
numerelor intregi cu semn.................................................................................................7
1. Introducere
1.1.
Scop
2.
L.3 - 2/15
B10 B2:
13 2 1
6
3
1101
2 0
2 1
1
Pentru conversia numrului 30.4810 n binar se fac urmtoarele operaii:
30
15
7
3
1
0
0
1
1
1
1
3010 = 111102
0,48
0,96
1,83
1,66
1,32
.....
0
1
1
1
0,4810=0,0111...2
Se observ c n cazul conversiei prii fracionare de cele mai multe ori nu se obine un
rezultat exact. Procesul de conversie se ncheie atunci cnd se obine o precizie rezonabil
de exprimare a valorii fracionare. De exemplu n multe aplicaii inginereti o precizie de 2
cifre zecimale dup virgul se consider o precizie acceptabil. ntrebarea este cte cifre
binare sunt necesare pentru o precizie similar? La exprimarea n baza zece, prin dou cifre
dup punctul zecimal se obine o eroare maxim de 1/100. n baza 2 pentru o precizie
similar trebuie s se utilizeze 7 cifre binare pentru a obine o eroare maxim de 1/128,
adic 1/27. Pentru o precizie mai mare de 1/1000 (3 cifre zecimale dup punct) sunt
necesare 10 cifre binare (1/1024 = 1/210).
Poziia punctului zecimal nu se reprezint n calculator. Prin convenie se consider ntr-o
poziie predefinit. De exemplu pentru reprezentarea numerelor strict ntregi poziia punctului
zecimal se consider n dreapta reprezentrii (dup cifra cea mai puin semnificativ). Din
aceast cauz aceast codificare poart numele de "reprezentare n virgul fixa".
Pentru operaiile de adunare i scdere poziia punctului zecimal nu influeneaz rezultatul
generat. Situaia este diferit pentru operaiile de nmulire i mprire, unde poziia punctului
n rezultat se schimb.
Pentru a face trecerea de la sistemul zecimal la cel binar i invers adesea se utilizeaz un
sistem de numeraie intermediar, care se apropie de ambele sisteme. De exemplu sistemul
hexazecimal este utilizat n acest scop deoarece, pe de-o parte permite exprimarea unor
valori printr-un numr rezonabil de cifre, iar pe de alt parte se poate converti relativ simplu
n sistemul binar. n cazul n care se vizualizeaz coninutul unei zone de memorie sau a
unor registre informaia este prezentat n format hexazecimal, chiar dac n calculator
L.3 - 3/15
Binar
000
001
010
011
100
101
110
111
Hexazecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Zecimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
L.3 - 4/15
In interiorul masinilor numerice, numerele sunt reprezentate prin grupe de cifre binare.
Aceste grupe de cifre binare sunt numite cuvinte. Lungimea cuvintelor pe care le poate
prelucra un microprocesor constituie o caracteristica importanta a acestuia, reprezentand,
dupa cum s-a mai precizat, un indiciu pretios in aprecierea capacitatii de calcul a sistemului.
Sunt tipice cuvinte cu o lungime de 4, 8, 16 sau 32 de biti. Un cuvant de 8 biti se mai
numeste si octet sau, in terminologia tehnica consacrata, byte. Cuvintele
microprocesoarelor sunt memorate in registre. Un registru poate fi implementat cu un sir de
circuite bistabile, fiecare dintre acestea putand fi considerat ca un bit de memorie. Din punct
de vedere functional, o masina numerica poate fi privita ca un sistem format din registre, iar
datele sunt transferate dintr-un registru in altul in cursul efectuarii operatiilor aritmetice si
logice. Acesta este evident un mod simplificat de a prezenta lucrurile, dar poate da o imagine
de baza asupra a ceea ce se intampla. In ceea ce priveste operatiile aritmetice de baza,
acestea se bazeaza pe regulile specifice, caracteristice operatiilor respective. Regulile
depind de tipul numerelor: intregi fara semn; intregi cu semn; numere in reprezentare BCD;
numere fractionare.
2.1.
27
26
25
24
23
22
21
20
depasire
L.3 - 5/15
pe (m+n) biti. O situatie aparte va aparea la impartirea a doua numere, cand trebuie sesizata
si semnalizata incercarea de impartire la zero, al carei rezultat nedeterminat poate conduce
la efecte imprevizibile asupra comportarii sistemului.
Trebuie remarcat ca practic toate microprocesoarele au implementate in setul de instructiuni
operatiile de adunare si de scadere. Doar unele microprocesoare au in setul de instructiuni
operatiile de inmultire (si eventual, de impartire). In cazul absentei acestora din setul de
instructiuni al microprocesorului respectiv, implementarea lor se face prin program, pe baza
operatiilor elementare de adunare si a celor logice.
2.2.
B7
B6 B5
B4
B3 B2
B1 B0
octet
B15 B14 B13 B12
B11 B10
B9 B
B7
B6 B5
B4
B3 B2
B1 B0
cuvnt
Pentru cuvinte de date cu lungime data, plaja de valori numerice ce pot fi reprezentate difera
de cazul numerelor intregi fara bit de semn. Astfel, intr-un octet se vor putea reprezenta
numere intregi intre -128 si +127.
Domeniu de valori
[0255]
[-128127]
[065535]
[-3276832767]
L.3 - 6/15
+
128
32768
127
32767
[X ]2 = 2 n X
L.3 - 7/15
Astfel, prin reprezentarea complementului fata de doi al unui numar, se obtine reprezentarea
binara a opusului acestui numar (deci [X]2 = - X).
Observatie: In cazul acestei reprezentari numarul x adunat cu x trebuie sa dea totdeauna 0.
Exemplu, fie X = 610 = 01102, n=4.
Calculand complementul fata de doi al acestui numar, se obtine reprezentarea pentru
-X = -610, data de
X inversat va fi :
X = 0110
1001
se aduna 1:
Re zultat :
[X ]2 =
1010
(b) se lasa neschimbate cifrele din numar pana la primul 1, inclusiv (de la dreapta la stanga),
inversandu-se celelalte cifre.
[ X ]2 = 1 0 1 0
X =0 1 1 0
___________ _______________
se inverseaza
raman nemodificate
Exemple:
|-2210| -> 00010110
-2210 -> 11101001+ C1
1
-2210 -> 11101010 C2
De remarcat ca plaja valorilor astfel reprezentabile (pe un octet de la -128 la +127) este
nesimetrica.
L.3 - 8/15
Numere fr semn
192+
16
208
11000000+
00010000
11010000 ->208
00110000 -> 48
Reprezentare C2 pe 16 bii
1111 1111 1111 1011
0000 0000 0000 0000
0000 0000 0000 0101
Reprez. pe 3 biti
011
010
001
000
-1
Valoare zecimal
Reprezentare pe 16 biti
32767
0111111 = 7FFF16
32766
0111110 = 7FFE16
0000001 = 000116
0000000 = 000016
111
-1
1111111 = FFFF16
-2
110
-3
101
-32766
1000010 = 800216
-4
100
-32767
1000001 = 800116
-32768=-216
1000000 = 800016
2. Considerm o reprezentare pe 16 biti. Reprezentrile pentru x = -72 prin cele trei metode se
obin dup cum urmeaz: 7210 = 10010002 =10010002
1) Semn i valoare absolut
L.3 - 9/15
b15
1
b0
0 0 0
1
0 0 0 0
0
0 1 0 0
4
1 0 0
8
1048H
FFB7H
FFB8H
2) Complement fa de 1
b15
1
b0
1
1 1 1
1 1 1
0 1 1 0 1 1
3) Complement fa de 2
b15
1
b0
1 1 1 1 1 1 1 1 0 1 1 1 0 0
F
F
B
8
2.3.
Aceast form de codificare se utilizeaz pentru reprezentarea unor valori foarte mari, foarte
mici sau dac numerele au o parte fracionar. n aceast reprezentare se folosesc 3
cmpuri:
Pentru reprezentarea n virgul flotant numrul este adus la o form normalizat (standard)
n care exist o parte strict subunitar (mantisa) care se nmulete cu o putere a lui 2
(exponentul). La mantis prima cifr de dup virgul este strict diferit de 0. Pentru a evita
operarea cu exponeni pozitivi i negativi se adaug la exponent jumtate din valoarea
maxim ce se poate exprima pe numrul de bii alocai pentru exponent. Astfel se obine
caracteristica, un numr strict pozitiv. De exemplu dac se aloc 8 bii pentru exponent
atunci la valoarea exponentului, care poate fi n intervalul (-128, +127), se va aduga
valoarea 128.
S
Caracteristica
Mantisa
Bitul de semn S
L.3 - 10/15
1000
0011
caract.
00011001100110011001
100
mantis
41 8C CC CDH.
2.4.
Coduri zecimale
Pentru anumite aplicaii este important ca datele numerice s se pstreze n form zecimal.
n acest fel pot fi evitate conversiile repetate din zecimal n binar i invers. O posibilitate este
L.3 - 11/15
utilizarea a 4 bii pentru a reprezenta cele 10 cifre zecimale (0, 1, ... 9). Reprezentarea
poart numele de codul BCD Binary Coded Decimal. Acest cod este asemntor cu
reprezentarea hexazecimal cu diferena c se utilizeaz numai primele 10 combinaii de bii:
010 -> 00002, 110 -> 00012, 210 -> 00102, ..... 910 -> 10012 ; celelalte combinaii sunt
nepermise (ex. 1010, ... 1111)
Daca se utilizeaza frecvent numerele in reprezentare zecimala - si corespunzator BCD, la
citirea/scrierea numerelor dinspre / spre exteriorul sistemului, implementarea operatiilor
aritmetice cu numere in reprezentare BCD nu este usor de realizat. Complicatiile pe care le
presupune implementarea acestor operatii conduc de obicei la preferarea urmatoarei
scheme de lucru: reprezentare BCD => reprezentare binara propriu-zisa => calcule
=>conversie in reprezentarea BCD a rezultatului.
Procesoarele Intel au instruciuni n limbaj de asamblare care suport operaii aritmetice n
reprezentarea BCD. Codurile cifrelor zecimale se pstreaz fie individual pe cte un octet
(forma despachetat), fie cte 2 cifre pe un octet (forma mpachetat).
Exemplu:
Numrul 3912D se va reprezenta n BCD
mpachetat: 39 12H deci pe 2 octei;
despachetat 03 09 01 02H deci pe 4 octei.
2.4.1.1.
L.3 - 12/15
astfel nct rezultatul s se gseasc ntotdeauna n registrul AL, asupra cruia acioneaz
instruciunile de corecie. Dac o operaie asupra a doi operanzi pe un digit produce un
rezultat reprezentabil pe 2 digii, instruciunea de corecie va plasa digitul cel mai puin
semnificativ n al iar pe cel mai semnificativ n ah, distrugnd coninutul acestui registru.
Dac digitul din al genereaz transport spre ah sau necesit un mprumut de la ah se
poziioneaz indicatorii CF i AF.
Exemplu:
;Adunare n BCD despachetat
MOV AX,8
;ncrcare ax
MOV BX,5
;ncrcare bx
ADD AL, BL
;adunare
AAA
;corecie zecimal
;la adunare
;se poziioneaz AF i CF
;Scdere n BCD despachetat
MOV AX, 0103H
;ncrcare ax
MOV BX, 4
;ncrcare bx
SUB AL, BL
;scdere
AAS
;corecie zecimal
;la scdere
;se poziioneaz AF i CF
;nmulire n BCD despachetat
MOV AX, 0903H
;ncrcare ax
MUL AH
;nmulire fr semn
AAM
;corecie zecimal dup nmulire
;mprire n BCD despachetat
MOV AX, 0209H
;ncrcare n ax
MOV BL, 2
;ncrcare bl
AAD
;corecie zecimal nainte
;de mprire
DIV BL
;mprire fr semn
;ctul n al
;restul n ah
AAM
;corecie zecimal dup
;mprire a ctului
;restul s-a pierdut
0008H
0005H
000dH
AX=0103H
0103H
0004H
01feH
AX=0009H
0903H
001bH
AX=0207H
0209H
02H
AX=0019H
010cH
0cH
01H
AX=0102H
Se observ pierderea restului. Dac avem nevoie de el, restul trebuie salvat n alt
registru nainte de a efectua corecia ctului. Este posibil i corecia restului. Pentru aceasta
el trebuie transferat n AL.
2.4.1.2.
L.3 - 13/15
afecteaz niciodat registrul AH. Indicatorul AF se poziioneaz n cazul unui transport sau
mprumut de la digitul cel mai puin semnificativ la digitul cel mai semnificativ. Indicatorul CF
se poziioneaz n cazul unui transport sau mprumut spre exterior.
Exemplu:
;Adunarea n BCD mpachetat
MOV AX, 9933H
;ncrcare ax
ADD AL, AH
;adunare la al
DAA
;corecie zecimal
;dup adunare
;se poziioneaz CF
;Scderea n BCD mpachetat
MOV AX, 3883H
;ncrcare ax
SUB AL, AH
;scdere
DAS
;corecie zecimal
;dup scdere
;indicatorul CF este 0
9933H
AL=ccH
AL=32H
3883H
AL=4bH
AL=45H
3. Coduri alfanumerice
Multimea informatiilor primare, in cazul cazul acestor coduri, este formata din cifre, litere,
semne ortogafice, comenzi speciale, denumite in general caractere.
Codificarea este datelor alfanumerice este necesara pentru vehicularea diferitelor mesaje.
Trebuie codificate minim 88 caractere distincte (2x6 litere, 10 ciftrem 26 de caractere
speciale), deci sunt necesari minimum 7 biti.
Cel mai raspandit cod alfanumeric este codul ASCII (American Standard Code for
Information Interchange). Codul ASCII codifica 128 de caracere (cele 52 de liere, majuscule
si minuscule, ale alfabetului englez, cele 10 cifre zecimale, caractere speciale si caractere de
comanda). Datorita succesiunii caracterelor majuscule si minuscule, poate fi utilizat pentru
ordonari alfabetice.
Exemplu:
Caracterul ? in ASCII are codul 3F.
4. Aplicatii
1. S se converteasc urmtoarele din baza 2 n baza 10 i 16:
1111.0000.1111, 101.111011,
110011.11
real reprezentat.
L.3 - 14/15
Debug
L.3 - 15/15