User Tools

Site Tools


laboratoare:laborator-07

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:laborator-07 [2015/11/25 12:03]
catalin.vasile3004 [Adunare. Optimizare.]
laboratoare:laborator-07 [2015/11/30 22:53] (current)
razvan.deaconescu [Laborator 07: Operaţii pe numere lungi]
Line 1: Line 1:
-====== Laborator 07: Operaţii pe numere lungi ======+====== Laborator 07: Operații pe numere lungi ====== 
 Există situaţii excepţionale în care aspecte ale arhitecturii pe care lucrăm devin un impediment. Una dintre aceste situaţii este când problemele, pe care încercăm să le rezolvăm printr-un program pe calculator, au ca input numere foarte mari care nu pot fi reprezentate pe câte un singur registru. De exemplu pot exista cazuri în care datele citite de la tastatură să nu poată fi reprezentate pe registrele de 32 biţi (dacă suntem pe o arhitectură x86) sau pe 64 de biţi (dacă suntem pe o arhitectură amd64). În astfel de situaţii suntem nevoiţi să reprezentăm datele pe mai mulţi bytes decât ar putea procesorul în cauză să proceseze printr-o singură instrucţiune.\\ ​ Există situaţii excepţionale în care aspecte ale arhitecturii pe care lucrăm devin un impediment. Una dintre aceste situaţii este când problemele, pe care încercăm să le rezolvăm printr-un program pe calculator, au ca input numere foarte mari care nu pot fi reprezentate pe câte un singur registru. De exemplu pot exista cazuri în care datele citite de la tastatură să nu poată fi reprezentate pe registrele de 32 biţi (dacă suntem pe o arhitectură x86) sau pe 64 de biţi (dacă suntem pe o arhitectură amd64). În astfel de situaţii suntem nevoiţi să reprezentăm datele pe mai mulţi bytes decât ar putea procesorul în cauză să proceseze printr-o singură instrucţiune.\\ ​
 În acest laborator vom învăţa cum să facem calcule pe date care pot depăşi dimensiunea registrelor puse la dispoziţie de arhitectură. În acest laborator vom învăţa cum să facem calcule pe date care pot depăşi dimensiunea registrelor puse la dispoziţie de arhitectură.
Line 82: Line 83:
     ; loop code:     ; loop code:
 for: for:
-    mov al, dword [A + ecx] ; get a digit from A +    mov al, byte [A + ecx] ; get a digit from A 
-    adc al, dword [B + ecx] ; AL = A + B + Carry+    adc al, byte [B + ecx] ; AL = A + B + Carry
     mov [result + ecx], al ; store result     mov [result + ecx], al ; store result
     inc ecx     inc ecx
Line 128: Line 129:
  
 ===== Sign bit. Left padding. ===== ===== Sign bit. Left padding. =====
 +
 După cum ştiţi, la numerele reprezentate în formă zecimală, se poate face padding în faţa numărului cu un set de cifre infinite de zero (de exemplu: 0000343 este fi acelaşi număr cu 343). Este perfect valabil şi la numerele reprezentate în binar, pot fi prefixate de oricâte cifre de zero (0010000100 este fix acelaşi număr ca 10000100).\\ ​ După cum ştiţi, la numerele reprezentate în formă zecimală, se poate face padding în faţa numărului cu un set de cifre infinite de zero (de exemplu: 0000343 este fi acelaşi număr cu 343). Este perfect valabil şi la numerele reprezentate în binar, pot fi prefixate de oricâte cifre de zero (0010000100 este fix acelaşi număr ca 10000100).\\ ​
-Apare în schimb o situaţie dubioasă la numerele negative datorită felului în care sunt reprezentate în binar. Dacă vă mai aduceţi aminte, acestea se reprezintă în complet ​faţă de 2.\\ +Apare în schimb o situaţie dubioasă la numerele negative datorită felului în care sunt reprezentate în binar. Dacă vă mai aduceţi aminte, acestea se reprezintă în complement ​faţă de 2.\\ 
 Înainte să vă zic un fact concret, haideţi să vedem cum evoluează reprezentarea numerelor negative la stânga, cu cât se apropie mai mult de zero:​\\ ​ Înainte să vă zic un fact concret, haideţi să vedem cum evoluează reprezentarea numerelor negative la stânga, cu cât se apropie mai mult de zero:​\\ ​
 {{:​laboratoare:​nr_negative.png|}}\\ ​ {{:​laboratoare:​nr_negative.png|}}\\ ​
laboratoare/laborator-07.1448445795.txt.gz · Last modified: 2015/11/25 12:03 by catalin.vasile3004