User Tools

Site Tools


laboratoare:laborator-05

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
Next revision Both sides next revision
laboratoare:laborator-05 [2015/11/11 08:17]
razvan.deaconescu
laboratoare:laborator-05 [2015/11/11 08:34]
razvan.deaconescu [[1.5p] 8. Suma pătratelor elementelor dintr-un vector]
Line 128: Line 128:
 </​note>​ </​note>​
  
-==== [1.5p] 3. Ridicare număr la puterea a treia ====+==== [1p] 3. Ridicare număr la puterea a treia ====
  
 Realizați un program în limbajul de asamblare care ridică un număr la puterea a treia (adică ''​num * num * num''​). Realizați un program în limbajul de asamblare care ridică un număr la puterea a treia (adică ''​num * num * num''​).
Line 148: Line 148:
 </​note>​ </​note>​
  
-==== [1p] 5. Suma pătratelor primelor N numere naturale ====+==== [1.5p] 5. Suma pătratelor primelor N numere naturale ====
  
 Porniți de la programul ''​sum_n.asm''​ și creați un program ''​sum_n_square.asm''​ care să calculeze suma pătratelor primelor ''​num''​ numere naturale. Porniți de la programul ''​sum_n.asm''​ și creați un program ''​sum_n_square.asm''​ care să calculeze suma pătratelor primelor ''​num''​ numere naturale.
  
-==== [0.5] 6. Tutorial: Suma elementelor dintr-un vector reprezentate pe un octet ====+<note tip> 
 +Registrele ''​eax''​ și ''​edx''​ le veți folosi la înmulțirea pentru ridicarea la putere (în instrucțiunea ''​mul''​). Pentru a reține suma pătratelor aveți două variante: 
 +  - (mai simplu) Folosiți registrul ''​ebx''​ pentru a reține suma pătratelor. 
 +  - (mai complicat) Înainte de a opera registrul ''​eax''​ salvați valoarea sa pe stivă (folosind instrucțiunea ''​push''​),​ apoi faceți operațiile necesare și apoi restaurați valoarea salvată (folosind instrucțiunea ''​pop''​). 
 + 
 +</​note>​ 
 + 
 +<​note>​ 
 +Pentru verificare, suma pătratelor primelor ''​100''​ de numere naturale este ''​338350''​. 
 +</​note>​ 
 +==== [1p] 6. Tutorial: Suma elementelor dintr-un vector reprezentate pe un octet ====
  
 În programul ''​sum_array.asm''​ din [[http://​elf.cs.pub.ro/​asm/​res/​laboratoare/​lab-05-tasks.zip|arhiva laboratorului]] este calculată suma elementelor unui vector (//array//) de octeți (//bytes//, reprezentare pe 8 biți). În programul ''​sum_array.asm''​ din [[http://​elf.cs.pub.ro/​asm/​res/​laboratoare/​lab-05-tasks.zip|arhiva laboratorului]] este calculată suma elementelor unui vector (//array//) de octeți (//bytes//, reprezentare pe 8 biți).
Line 162: Line 172:
 </​note>​ </​note>​
  
-==== [2.5p] 7. Suma elementelor dintr-un vector ====+==== [2p] 7. Suma elementelor dintr-un vector ====
  
 În zona marcată cu ''​TODO''​ din fișierul ''​sum_array.asm''​ completați codul pentru a realiza suma vectorilor cu elemente de tip word (16 biți) și de tip dword (32 de biți); este vorba de vectorii ''​word_array''​ și ''​dword_array''​. În zona marcată cu ''​TODO''​ din fișierul ''​sum_array.asm''​ completați codul pentru a realiza suma vectorilor cu elemente de tip word (16 biți) și de tip dword (32 de biți); este vorba de vectorii ''​word_array''​ și ''​dword_array''​.
Line 187: Line 197:
 ==== [1.5p] 8. Suma pătratelor elementelor dintr-un vector ==== ==== [1.5p] 8. Suma pătratelor elementelor dintr-un vector ====
  
-Pornind de la programul de la exercițiul anterior, calculați suma pătratelor elementelor dintr-un vector. Puteți folosi vectorul ''​dword_array''​ dar ar trebui să fie mai mici valorile elementelor ca să nu treacă pătratele valorilor acestora de reprezentarea pe 32 de biți.+Pornind de la programul de la exercițiul anterior, calculați suma pătratelor elementelor dintr-un vector.
  
 +<​note>​
 +Puteți folosi vectorul ''​dword_array''​ dar ar trebui să fie mai mici valorile elementelor ca să nu treacă pătratele valorilor acestora de reprezentarea pe 32 de biți.
 +</​note>​
 +
 +<​note>​
 +Dacă folosiți construcția de mai jos (vector cu ''​10''​ elemente)<​code>​
 +    dword_array dd 1392, 12544, 7992, 6992, 7202, 27187, 28789, 17897, 12988, 17992
 +</​code>​
 +suma pătratelor va fi ''​2704560839''​.
 +</​note>​
 ==== [1.5p] 9. Bonus: Numărul de numere negative și pozitive dintr-un vector ==== ==== [1.5p] 9. Bonus: Numărul de numere negative și pozitive dintr-un vector ====
  
laboratoare/laborator-05.txt · Last modified: 2016/01/09 18:27 by razvan.deaconescu