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
laboratoare:laborator-05 [2015/11/11 14:45]
razvan.deaconescu [[2p] 2. Înmulțire două numere]
laboratoare:laborator-05 [2016/01/09 18:27]
razvan.deaconescu [[2p] 10. Bonus: Numărul de numere pare și impare dintr-un vector]
Line 112: Line 112:
   - Plasăm deînmulțitul în registrul de deînmulțit,​ adică:   - Plasăm deînmulțitul în registrul de deînmulțit,​ adică:
     - dacă facem operații pe un byte (8 biți, un octet), plasăm deînmulțitul în registrul ''​AL'';​     - dacă facem operații pe un byte (8 biți, un octet), plasăm deînmulțitul în registrul ''​AL'';​
-    - dacă facem operații pe un cuvânt (16 biți, 2 octeți, plasăm deînmulțitul în registrul ''​AZ'';​+    - dacă facem operații pe un cuvânt (16 biți, 2 octeți, plasăm deînmulțitul în registrul ''​AX'';​
     - dacă facem operații pe un dublu cuvânt (32 de biți, 4 octeți), plasăm deînmulțitul în registrul ''​EAX''​.     - dacă facem operații pe un dublu cuvânt (32 de biți, 4 octeți), plasăm deînmulțitul în registrul ''​EAX''​.
   - Înmulțitorul este transmis ca argument mnemonicii ''​mul''​. Înmulțitorul trebuie să aibă aceeași dimensiune ca deînmulțitul.   - Înmulțitorul este transmis ca argument mnemonicii ''​mul''​. Înmulțitorul trebuie să aibă aceeași dimensiune ca deînmulțitul.
Line 139: Line 139:
 La afișarea rezultatului folosiți două instrucțiunii ''​PRINT_UDEC''​ pentru a afișa cele două registre care conțin rezultatul: La afișarea rezultatului folosiți două instrucțiunii ''​PRINT_UDEC''​ pentru a afișa cele două registre care conțin rezultatul:
   * Registrele ''​DX''​ și ''​AX''​ pentru înmulțirea numerelor de tip ''​word''​.   * Registrele ''​DX''​ și ''​AX''​ pentru înmulțirea numerelor de tip ''​word''​.
-  * Registrele ''​EDX''​ și ''​AAX''​ pentru înmulțirea numerelor de tip ''​dword''​.+  * Registrele ''​EDX''​ și ''​EAX''​ pentru înmulțirea numerelor de tip ''​dword''​.
  
 </​note>​ </​note>​
Line 167: Line 167:
  
 <note tip> <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:+Registrele ''​eax''​ și ''​edx''​ le veți folosi la înmulțirea pentru ridicarea la putere (în instrucțiunea ''​mul''​). Astfel că nu veți mai putea folosi (ușor) registrul ''​eax''​ pentru stocarea sumei pătratelor. 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 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''​).   - (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''​).
Line 252: Line 252:
 Pentru testare folosiți un vector doar cu numere pozitive. Pentru numere negative trebuie să faceți extensie de semn; ar merge și fără pentru că ne interesează doar restul, dar nu am fi riguroși :-) Pentru testare folosiți un vector doar cu numere pozitive. Pentru numere negative trebuie să faceți extensie de semn; ar merge și fără pentru că ne interesează doar restul, dar nu am fi riguroși :-)
 </​note>​ </​note>​
 +
 +===== Soluții =====
 +
 +[[http://​elf.cs.pub.ro/​asm/​res/​laboratoare/​lab-05-sol.zip|Soluții de referință pentru exercițiile de laborator]]
 +
laboratoare/laborator-05.txt · Last modified: 2016/01/09 18:27 by razvan.deaconescu