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 07:55]
razvan.deaconescu [Tutorial: Suma elementelor într-un vector reprezentate pe un octet]
laboratoare:laborator-05 [2015/11/11 08:04]
razvan.deaconescu [Tutorial: Suma elementelor dintr-un vector reprezentate pe un octet]
Line 138: Line 138:
 Nu definiți un număr foarte mare, pentru a putea fi vizualizat rezultatul înmulțirii în registrul ''​eax''​. Nu definiți un număr foarte mare, pentru a putea fi vizualizat rezultatul înmulțirii în registrul ''​eax''​.
  
-==== Tutorial: Suma elementelor ​într-un vector reprezentate pe un octet ====+==== Tutorial: Suma elementelor ​dintr-un vector reprezentate pe un octet ==== 
 + 
 +În programul ''​sum_n.asm''​ din [[http://​elf.cs.pub.ro/​asm/​res/​laboratoare/​lab-05-tasks.zip|arhiva laboratorului]] este calculată suma primelor ''​num''​ numere naturale. 
 + 
 +Urmăriți codul, observați construcțiile și registrele specifice pentru lucru cu bytes. Rulați codul. 
 + 
 +<note important>​ 
 +Treceți la următorul pas doar după ce ați înțeles foarte bine ce face codul. Vă va fi greu să faceți următorul exercițiu dacă aveți dificultăți în înțelegerea exercițiului curent. 
 +</​note>​ 
 + 
 +==== Suma pătratelor primelo 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. 
 + 
 +==== 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 149: Line 163:
  
  
-==== Suma elementelor ​într-un vector ====+==== Suma elementelor ​dintr-un vector ====
  
-TODO+Î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''​.
  
-==== Suma pătratelor elementelor ​într-un vector ====+<note tip> 
 +Când veți calcula adresa unui element din array, veți folosi construcție de forma:<​code>​ 
 +base + size * index 
 +</​code>​ 
 +În construcția de mai sus: 
 +  * ''​base''​ este adresa vectorului (adică ''​word_array''​ sau ''​dword_array''​) 
 +  * ''​size''​ este lungimea elementului vectorului (adică ''​2''​ pentru vector de word (16 biți, 2 octeți) și ''​4''​ pentru vector de dword (32 de biți, 4 octeți) 
 +  * ''​index''​ este indexul curent în cadrul vectorului 
 + 
 +</​note>​ 
 + 
 +<​note>​ 
 +Suma elementelor celor trei vectori trebuie să fie: 
 +  * ''​sum(byte_array):​ 575''​ 
 +  * ''​sum(word_array):​ 65799 ''​ 
 +  * ''​sum(dword_array):​ 74758117''​ 
 + 
 +</​note>​ 
 +==== Suma pătratelor elementelor ​dintr-un vector ====
  
 TODO TODO
  
-==== Numărul de numere negative și pozitive ​într-un vector ====+==== Numărul de numere negative și pozitive ​dintr-un vector ====
  
 TODO TODO
  
-==== Numărul de numere pare și impare ​într-un vector ====+==== Numărul de numere pare și impare ​dintr-un vector ====
  
 TODO TODO
laboratoare/laborator-05.txt · Last modified: 2016/01/09 18:27 by razvan.deaconescu