This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
laboratoare:laborator-05 [2015/11/11 08:21] razvan.deaconescu |
laboratoare:laborator-05 [2015/11/11 08:34] razvan.deaconescu [[1.5p] 8. Suma pătratelor elementelor dintr-un vector] |
||
---|---|---|---|
Line 152: | Line 152: | ||
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. | ||
+ | <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 ==== | ==== [1p] 6. Tutorial: Suma elementelor dintr-un vector reprezentate pe un octet ==== | ||
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 ==== | ||