Mp - Lab_Sem 3

15
Sisteme cu microprocesoare Aritmetica numerelor intregi Lucrarea 3 μP.Lucrare.03.A

description

Asm

Transcript of Mp - Lab_Sem 3

  • Sisteme cu microprocesoare

    Aritmetica numerelor intregi

    Lucrarea 3

    P.Lucrare.03.A

  • Aritmetica numerelor intregi

    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 Aceast are ca scop:

    - familiarizarea cu aritmetica numerelor intregi cu si fara semn

    2. ARITMETICA NUMERELOR INTREGI

    Un sistem de calcul cu microprocesor trebuie sa aiba anumite capacitati de calcul, putand sa implementeze cele patru operatii aritmetice fundamentale, de adunare, scadere, inmultire si impartire. Daca fiinta omeneasca efectueaza aceste operatii in sistemul zecimal de numarare, un microprocesor este prin structura sa o masina binara, toate informatiile sunt memorate in cod binar, iar operatiile ce se desfasoara in ea se efectueaza deasemenea in sistemul binar de numarare. n sistemul binar regulile de efectuare a operaiilor aritmetice sunt mult mai puine dect n oricare alt sistem de numeraie, ceea ce simplific structura unitii aritmetice. Dac n sistemul zecimal sunt 100 de reguli pentru adunarea cifrelor, n sistemul binar sunt numai 4.

    n binar + 0 10 0 11 1 0

    L.3 - 2/15

  • Aritmetica numerelor intregi

    Sub o forma generala, reamintim ca un numar reprezentat in baza b de numarare, avand n cifre supraunitare ( ), si m cifre subunitare ( ), va avea valoarea in baza 10 data de relatia

    021 ....,,, aaa nn maaa ....,,, 21

    m

    mn

    nn

    n babababababaN

    +++++++= ....... 110011221110 Conversia unui numr dintr-o baz de numeraie n alta se face separat pentru partea ntreag i pentru partea fracionar. Partea ntreag se divide succesiv cu noua baz i se rein resturile pariale n ordinea invers a generrii lor. Partea fracionar se nmulete succesiv cu baza i se reine de fiecare dat partea ntreag a rezultatului. Exemple pentru conversia numrului unui numri zecimal => binar: B10 B2:

    1123026

    11011213

    Pentru conversia numrului 30.4810 n binar se fac urmtoarele operaii:

    30 3010 = 111102 0,48 0,4810=0,0111...2

    15 0 0,96 0 7 1 1,83 1 3 1 1,66 1 1 1 1,32 1 0 1 .....

    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

  • Aritmetica numerelor intregi

    informaia este n binar. De asemenea programatorii n limbaj de asamblare prefer forma hexazecimal n locul celei zecimale pentru c se apropie mai mult de forma de reprezentare din calculator.

    Sistemele hexazecimal si (uneori) octal, sunt utilizate la listarea programelor, astfel incat inginerul ce doreste proiectarea si/sau utilizarea unei asemenea masini trebuie sa fie familiarizat cu o varietate de sisteme de numarare. Totodata, interfatarea cu utilizatorul uman presupune adeseori preluarea de date in format zecimal, (tastaturi, console) si, dupa prelucrare, prezentarea rezultatelor deasemenea zecimal (afisaje, listinguri, etc.). Astfel, sunt necesare uneori operatii in cod BCD in interiorul microprocesorului, si deci sunt necesare tehnici de conversie binar-BCD si reciproc.

    Conversia binar -> octal se efectueaza prin gruparea a cate trei cifre binare, incepand din dreapta numarului, si inlocuire cu echivalentul octal corespunzator.

    Reciproc, pentru conversia octal -> binar, se procedeaza in mod similar: Se inlocuieste fiecare cifra octala cu cei trei biti din codul binar corespunzator.

    Octal Binar

    0 1 2 3 4 5 6 7

    000 001 010 011 100 101 110 111

    Figura 3. 1. Conversia octal - binar

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

    Figura 3. 2. Conversia binar-hexazecimal-zecimal

    Exemple: conversie binar hexazecimal i invers:

    16100123

    2 13212021211101 D==+++=10

    0116 17111116101616 =+=+= BAAB

    L.3 - 4/15

  • Aritmetica numerelor intregi

    162 378910011000011111 = 216 01011000011100113785 = 216 1101110010111010=ABCD 2 16 1101 1111 1 1FD =

    162 B3.CC 1100 1100.0011 1011 = 162 5.F6 0110 1111.101 = 2 16 0011.0011 11 33.3 =

    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. Aritmetica numerelor intregi, pozitive (fara semn) In cazul adunarii (sau scaderii, echivalenta in cazul reprezentarii numerelor in complement fata de 2), trebuie remarcata problema aparitiei depasirilor (overflow), sau a imprumuturilor (borrow), daca suma sau diferenta nu este reprezentabila intr-un cuvant de date (de exemplu, suma a doua numere reprezentate pe 8 biti, care adunate dau un rezultat peste 256, va necesita 9 biti pentru reprezentare corecta). Data fiind lungimea finita a cuvintelor de date in microprocesor, operatia de adunare sau de scadere va trebui sa semnalizeze suplimentar efectuarii calculului, aparitia acestui bit de depasire; altfel, daca rezultatul este considerat pe 8 biti, se pierde chiar bitul cel mai semnificativ, alterandu-se rezultatele si obtinandu-se cu totul alte valori decat cele corecte.

    Exemplu, o asemenea situatie de depasire, apare in cazul urmator:

    100001001011000101101101122222222 01234567

    depasire

    +

    Figura 3. 3. Aparitia unei depasiri in urma efectuarii unei operatii aritmetice

    O situatie similara poate aparea in cazul scaderii, daca descazutul este mai mare decat scazatorul (apare un bit de imprumut). In ceea ce priveste inmultirea, trebuie remarcat ca rezultatul inmultirii a doua numer reprezentate pe cate un cuvant de date se va reprezenta pe doua cuvinte de date. In general, inmultirea unui numar reprezentat pe m biti cu un numar reprezentat pe n biti (intregi, fara bit de semn), conduce la obtinerea unui rezultat reprezentat

    L.3 - 5/15

  • Aritmetica numerelor intregi

    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. Aritmetica numerelor intregi, cu semn Reprezentarea numerelor ntregi n semn si valoare absoluta (MS) n Complement fa de 1 (C1)i de 2 (C2) O posibilitate de distingere a numerelor pozitive de cele negative intr-un calculator, este de a folosi un bit suplimentar, pentru codificarea semnului. Prin conventie, bitul cel mai semnificativ, este asociat semnului numarului: daca acest bit este 0, numarul este considerat pozitiv; daca este 1, numarul este negativ. Bitul cel mai puin semnificativ al unei date (bitul B0) se afl n poziia cea mai din dreapta a datei, iar bitul cel mai semnificativ n poziia stng.

    tetB0B1B23B5B6B7

    B0B1B2B3B4B5B6B7

    B9B10B11B12B13B14B15

    Pentru cuvinte de date cu lungime datde cazul numerelor intregi fara bit dnumere intregi intre -128 si +127.

    Cuvinte de date de n biunde n este:

    8 fara semn8 cu semn16 fara semn16 cu semn

    BocB4 Bcuvnt

    a, plaja de valori numerice ce pot fi reprezentate difera e semn. Astfel, intr-un octet se vor putea reprezenta

    ti, Domeniu de valori

    [0255] [-128127] [065535]

    [-3276832767]

    L.3 - 6/15

  • Aritmetica numerelor intregi

    +01

    3276732768127128

    Figura 3. 4. Plaja de valori numerice pentru reprezentarea pe octet, respectiv cuvant a

    numerelor intregi cu semn

    Cea mai simpla posibilitate de reprezentare a numerelor cu semn, care este insa practic nefolosita, deoarece ingreuneaza implementarea operatiilor de calcul aritmetice, este cea care utilizeaza bitul de semn si modulul numarului (MS).

    Exemple in aceasta reprezentare: 1610 -> 0 00100002 010 -> 0 00000002

    210 0111001123 = iar 210 0111001023 =+ 13010 -> valoarea absolut nu se poate reprezenta pe 7 bii => reprezentarea se poate face numai

    pe un numr mai mare de bii 13010 -> 0 0000000100000102 -13010 -> 1 0000000100000102

    Aceast form de reprezentare este simpl, dar nu este avantajoasa pentru implementarea operaiilor aritmetice. Unitatea aritmetic trebuie s in cont de semnul operanzilor. Practic in totalitatea cazurilor se utilizeaza reprezentarea numerelor cu semn in forma complementara, ceea ce favorizeaza in mod decisiv implementarea hardware a operatiilor aritmetice cu aceste numere. Exista doua tipuri de reprezentare: (1) complement fata de 1 (1's complement) ; (2) complement fata de 2 (2's complement).

    Reprezentarea n complement fa de 1 (C1) - numerele pozitive se reprezint astfel: n-1 bii pentru valoare i 1 bit, egal cu 0 pentru semn. n cazul numerelor negative se complementeaz fiecare poziie binar a reprezentrii valorii absolute a numrului, inclusiv bitul de semn.

    Exemple: |-2310| -> 00010111 1310 -> 00001101 |-12710| -> 01111111 -2310 -> 11101000 00001101 -12710 -> 10000000

    Deoarece reprezentarea in complement fata de 1 ridica anumite probleme, procesarile cu numere cu semn se fac cu numere reprezentate in complement fata de 2 (C2). Calculul complementului fata de doi, pentru un anumit numar X, reprezentat pe n biti, va fi: [ ] XX n = 22

    L.3 - 7/15

  • Aritmetica numerelor intregi

    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

    [ ] 10100110100000110242 ====X

    Practic, se utilizeaza urmatoarele metode, pentru obtinerea complementului fata de 2 al unui numar:

    (a) se inverseaza toti bitii numarului, si se aduna 1 la cel mai putin semnificativ bit.

    [ ] 1010:zultatRe1:1adunase

    1001:fivainversat0110

    2 =

    =

    X

    XX

    (b) se lasa neschimbate cifrele din numar pana la primul 1, inclusiv (de la dreapta la stanga), inversandu-se celelalte cifre. [ ]

    __________________________

    01010110 2 ==

    XX

    se inverseaza raman nemodificate Exemple:

    |-2210| -> 00010110 1410 -> 00001110 |-11210| -> 01110000 -2210 -> 11101001+ C1 00001110 C1 -11210 -> 10001111+ C1 1 1 -2210 -> 11101010 C2 00001110 C2 -11210 -> 10010000 C2

    In aceste conditii, un numar reprezentat pe un cuvant de lungime data in complement fata de

    2, va avea implicit 1 bit de semn (bitul cel mai semnificativ - bitul din stanga), si reprezentarea propriu-zisa pe ceilalti biti. Astfel,

    De remarcat ca plaja valorilor astfel reprezentabile (pe un octet de la -128 la +127) este nesimetrica.

    L.3 - 8/15

  • Aritmetica numerelor intregi

    Reprezentarea n complement fa de 2 este avantajoas deoarece simplific modul de calcul al operaiilor aritmetice. La operaiile de adunare i scdere unitatea aritmetic nu trebuie s in cont de semnul operanzilor, rezultatul generat fiind corect indiferent de semn. Mai mult rezultatul este corect i n cazul n care se consider c reprezentrile sunt numere strict pozitive. Pe baza acestei observaii se poate utiliza aceeai unitate de adunare/scdere att pentru numere pozitive ct i pentru numere cu semn. Exemplu:

    Numere cu semn Numere fr semn

    -64+ 11000000+ 192+ 16 00010000 16

    -48 11010000 ->208 208 00110000 -> 48 La reprezentarea n complement fa de 2, dac se trece de la o reprezentare pe 8 bii la

    una pe 16 bii sau mai mare atunci este necesar extinderea semnului, n aa fel nct n noua reprezentare valoarea i semnul numrului s se pstreze. Regula const In copierea valorii bitului de sem n fiecare poziie binar a poriunii extinse.

    Exemple:

    Valoare Reprezentare C2 pe 8 bii Reprezentare C2 pe 16 bii -5 1 111 1011 1111 1111 1111 1011 0 0 000 0000 0000 0000 0000 0000 5 0 000 0101 0000 0000 0000 0101

    1. n tabelele urmatore sunt reprezentate, pentru metoda Compl. fa de 2 (C2), numere ntregi cu semn pe 3 si respectiv 16 bii:

    Valoare zecimala Reprez. pe 3 biti

    3 011

    2 010

    1 001

    0 000

    -1 111

    -2 110

    -3 101

    -4 100

    Valoare zecimal Reprezentare pe 16 biti

    32767 0111111 = 7FFF1632766 0111110 = 7FFE16

    1 0000001 = 0001160 0000000 = 000016-1 1111111 = FFFF16

    -32766 1000010 = 800216-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 =100100021) Semn i valoare absolut

    L.3 - 9/15

  • Aritmetica numerelor intregi

    8401

    0001001000000001015 bb

    1048H

    2) Complement fa de 1

    7

    1110110111111111015

    BFF

    bb FFB7H

    3) Complement fa de 2

    8

    0001110111111111015

    BFF

    bb FFB8H

    (deoarece 11111111101101112 + 1 = 11111111101110002)

    2.3. Reprezentarea numerelor n virgul flotant 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:

    un bit de semn indic semnul numrului un cmp pentru exponent (caracteristic) indic magnitudinea numrului un cmp pentru mantis indic un set de cifre semnificative ale numrului

    n practic se utilizeaz 3 formate de reprezentare n virgul flotant:

    simpl precizie 32 bii 1 semn + 8 caracteristic + 23 mantis dubl precizie 64 bii 1 semn + 11 caracteristic + 52 mantis format extins 80 bii 1 semn + 24 caracteristic + 56 mantis

    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 Caracteristica C (pe 8, 11, respectiv 15 bii, la formatul scurt, lung,

    temporar)

    L.3 - 10/15

  • Aritmetica numerelor intregi

    Mantisa M (pe 23, 52, respectiv 64 bii) Pentru fiecare reprezentare:

    =

    negativestenumaruldacapozitivestenumaruldaca

    S10

    Caracteristica = Exponent + 7Fh (respectiv 3FFh la IEEE lung i 3FFFh la formatul temporar) Pentru gsirea mantisei mai nti se normalizeaz numrul scris n baza 2, adic se scrie numrul sub forma:

    NR = 1. * 2exponent La reprezentarea n format IEEE scurt i lung, mantisa este format din cifrele de dup virgul, deci primul 1 dinaintea virgulei nu se mai reprezint n mantis, iar la formatul temporar se reprezint toate cifrele din numr.

    Exemplu: S se reprezinte n format IEEE scurt numrul 17,6D. Se va converti separat partea ntreag i cea zecimal:

    Partea ntreag: 17D = 11H = 0001 0001BPartea zecimal: 0,6D = 0,(1001)B 17,6D = 10001,(1001)B

    Se normalizeaz numrul: 17,6D = 10001,(1001)B = 1,0001(1001) * 24 (n loc de 24 se mai scrie 10100(B) pentru c notarea era in baza 2).

    Se poate deduce mantisa (ceea ce este dup virgul, deci fr acel 1 dinaintea virgulei care prin convenie nu se mai reprezint) i anume: M = 0001(1001)(B).

    Se calculeaz caracteristica: C = exponent + 7FH = 4+7FH = 83H = 1000 0011B Prin scriea bitului semn 0 se poate trece la scrierea reprezentrii:

    0 1000

    0011 00011001100110011001100

    semn caract. mantis

    Pentru a scrie reprezentarea n hexa se vor grupa cte 4 cifre binare.

    Observatie: Gruparea a cte 4 cifre nu va corespunde caracteristicii, datorit bitului de semn care decaleaz o poziie. Deci cifrele hexa ale caracteristicii nu se vor regsi n reprezentarea notat in hexa.

    Rezultatul final al reprezentrii este: 41 8C CC CCH. n cazul practica, n memoria calculatorului, datorit unei rotunjiri care se face la

    ultimul bit al reprezentrii, se poate observa c n mantis ar mai urma un 1 dup cei 23 de bii, iar calculatorul va face rotunjire superioar, de aceea pe ultimul bit (cel mai puin semnificativ) va apare 1, iar reprezentarea va fi :

    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

  • Aritmetica numerelor intregi

    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).

    2.4.1. Reprezentarea numerelor n BCD mpachetat i despachetat

    n reprezentarea BCD mpachetat se reprezint cte o cifr zecimal pe 4 bii, deci cte 2 cifre zecimale pe octet.

    n reprezentarea BCD despachetat se reprezint cte o cifr zecimal pe octet (deci pe primii patru bii se pune 0).

    Aceste moduri de reprezentare se folosesc i pentru o mai bun lizibilitate a numerelor din punct de vedere al programatorului, chiar dac aceasta se face prin pierderea unei bune poriuni din spaiul de reprezentare (la BCD despachetat nu se mai folosesc codurile pe patru bii care trec ca valoare de 9, iar la BCD despachetat se mai pierde nc jumtate de octet n plus.

    Pentru a putea realiza operaii cu numere reprezentate n BCD exist instruciuni suplimentare de corecie a rezultatului dup adunare, nmulire care se vor studia n lucrarea cu instruciuni pentru operaii aritmetice.

    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. Operaii n BCD despachetat Setul de instruciuni cuprinde 4 instruciuni de corecie zecimal:

    AAA - corecie zecimal dup adunare, AAS - corecie zecimal dup scdere, AAM - corecie zecimal dup nmulire, AAD - corecie zecimal nainte de mprire,

    care permit efectuarea operaiilor aritmetice n BCD despachetat.

    n acest scop se folosesc instruciunile aritmetice clasice, urmate (precedate) de cte o instruciune de corecie a rezultatului. Operaiile aritmetice trebuie efectuate la nivel de octet

    L.3 - 12/15

  • Aritmetica numerelor intregi

    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 0008H MOV BX,5 ;ncrcare bx 0005H ADD AL, BL ;adunare 000dH AAA ;corecie zecimal ;la adunare AX=0103H ;se poziioneaz AF i CF ;Scdere n BCD despachetat MOV AX, 0103H ;ncrcare ax 0103H MOV BX, 4 ;ncrcare bx 0004H SUB AL, BL ;scdere 01feH AAS ;corecie zecimal ;la scdere AX=0009H ;se poziioneaz AF i CF ;nmulire n BCD despachetat MOV AX, 0903H ;ncrcare ax 0903H MUL AH ;nmulire fr semn 001bH AAM ;corecie zecimal dup nmulire AX=0207H ;mprire n BCD despachetat MOV AX, 0209H ;ncrcare n ax 0209H MOV BL, 2 ;ncrcare bl 02H AAD ;corecie zecimal nainte ;de mprire AX=0019H DIV BL ;mprire fr semn 010cH ;ctul n al 0cH ;restul n ah 01H AAM ;corecie zecimal dup ;mprire a ctului AX=0102H ;restul s-a pierdut 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. Operaii n BCD mpachetat Setul de instruciuni cuprinde dou instruciuni de corecie zecimal:

    DAA - corecie zecimal dup adunare, DAS - corecie zecimal dup scdere,

    care permit efectuarea operaiilor de adunare i scdere n BCD mpachetat.

    Operaiile aritmetice trebuie efectuate la nivel de octet astfel nct rezultatul s se gseasc n AL. Instruciunile de corecie zecimal pentru operaii n BCD mpachetat nu

    L.3 - 13/15

  • Aritmetica numerelor intregi

    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 9933H ADD AL, AH ;adunare la al AL=ccH DAA ;corecie zecimal ;dup adunare AL=32H ;se poziioneaz CF ;Scderea n BCD mpachetat MOV AX, 3883H ;ncrcare ax 3883H SUB AL, AH ;scdere AL=4bH DAS ;corecie zecimal ;dup scdere AL=45H ;indicatorul CF este 0

    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

    2. S se reprezinte pe 4 octei urmtoarele numere: 157, 169, -157, -169.

    3. Se vor reprezenta numere pozitive i negative n complement fa de 1 (C1) i complement fa de 2 (C2); se vor comenta avantajele i dezavantajele celor 2 variante de reprezentare. S se reprezinte urmtoarele numere pe 8 bii:

    0, 13, -100, -44, -1, -130

    4. S se reprezinte n format IEEE scurt numrul 23,5D. 5. Se d reprezentarea 43 04 33 33H i se cere valoarea zecimal a numrului

    real reprezentat. 6. S se citeasca dou numere ntregi a,b de la tastatura. S se adune numerele a+b i

    s se afieze rezultatul n variabila c. Se vor afia cele trei numere.

    L.3 - 14/15

  • Aritmetica numerelor intregi

    Se va rula programul in modul de lucru pas cu pas, se vor vizualiza varabilele programului i registrele CPU, (modul de lucru pas cu pas este necesar in vederea depanarii pogramului).

    Observatie: In meniul principal al mediului de programare Borland C:

    - Window I Register vizualizarea registrilor CPU si indicatorilor de conditie - Debug I Watches I Add watches urmarirea variabilelor programului

    I Toggles breakpoint

    7. S se citeasca dou numere intregi a,b de la tastatura. S se adune numerele a+b. Dac rezultatul este mai mic decat -32768 se va limita la valoarea -32768, iar dac rezultatul este mai mare decat +32767 se va limita la valoarea +32767. S se afieze rezultatul n variabila c. Se vor afia cele trei numere.

    L.3 - 15/15

    Sisteme cu microprocesoareAritmetica numerelor intregiLucrarea 3P.Lucrare.03.AIntroducereScop

    ARITMETICA NUMERELOR INTREGIAritmetica numerelor intregi, pozitive (fara semn)Aritmetica numerelor intregi, cu semnReprezentarea n complement fa de 1 (C1) - numerele pozitiExemple:

    Reprezentarea numerelor n virgul flotantCoduri zecimaleReprezentarea numerelor n BCD mpachetat i despachetatOperaii n BCD despachetatOperaii n BCD mpachetat

    Coduri alfanumericeAplicatii