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:50]
razvan.deaconescu [[2p] 10. Bonus: Numărul de numere pare și impare dintr-un vector]
laboratoare:laborator-05 [2015/11/11 14:55]
razvan.deaconescu [[2p] 2. Înmulțire două numere]
Line 110: Line 110:
  
 Atunci cănd facem înmulțire procesul este următorul, așa cum este descris și [[https://​en.wikibooks.org/​wiki/​X86_Assembly/​Arithmetic|aici]]:​ Atunci cănd facem înmulțire procesul este următorul, așa cum este descris și [[https://​en.wikibooks.org/​wiki/​X86_Assembly/​Arithmetic|aici]]:​
-  - Plasăm ​înmulțitorul ​în registrul ​''​AL''​ (pentru ​operații pe un byte), registrul ''​AX'' ​(pentru ​operații ​pentru ​cuvânt ​16 biți, 2 octeți) și registrul ''​EAX''​' (pentru ​operații pe dublu cuvânt ​32 de biți, 4 octeți). +  - Plasăm ​deînmulțitul în registrul ​de deînmulțit,​ adică: 
-  - Deînmulțitul este transmis ca argument mnemonicii ''​mul''​.+    - 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 ''​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''​
 +  - Înmulțitorul ​este transmis ca argument mnemonicii ''​mul''​. Înmulțitorul trebuie să aibă aceeași dimensiune ca deînmulțitul.
   - Rezultatul este plasat în două registre (partea //high// și partea //low//).   - Rezultatul este plasat în două registre (partea //high// și partea //low//).
  
Line 122: Line 125:
 <note tip> <note tip>
 Pentru înmulțirea numerelor de tip ''​word''​ (pe 16 biți), componentele sunt dispuse astfel: Pentru înmulțirea numerelor de tip ''​word''​ (pe 16 biți), componentele sunt dispuse astfel:
-  * În registrul ''​AX''​ se plasează ​înmulțitorul+  * În registrul ''​AX''​ se plasează ​deînmulțitul
-  * Argumentul instrucțiunii ''​mov''​ (posibil un alt registru) este pe 16 biți (fie valoare fie un registru precum ''​BX'',​ ''​CX'',​ ''​DX''​).+  * Argumentul instrucțiunii, înmulțitorul, ​''​mul''​ (posibil un alt registru) este pe 16 biți (fie valoare fie un registru precum ''​BX'',​ ''​CX'',​ ''​DX''​).
   * Rezultatul înmulțirii este dispus în perechea ''​DX:​AX'',​ adică partea "​high"​ a rezultatului în registrul ''​DX'',​ iar partea "​low"​ a rezultatului în registrul ''​AX''​.   * Rezultatul înmulțirii este dispus în perechea ''​DX:​AX'',​ adică partea "​high"​ a rezultatului în registrul ''​DX'',​ iar partea "​low"​ a rezultatului în registrul ''​AX''​.
 +
 +Pentru înmulțirea numerelor de tip ''​dword''​ (pe 32 biți), componentele sunt dispuse astfel:
 +  * În registrul ''​EAX''​ se plasează deînmulțitul.
 +  * Argumentul instrucțiunii,​ înmulțitorul,​ ''​mul''​ (posibil un alt registru) este pe 32 biți (fie valoare fie un registru precum ''​EBX'',​ ''​ECX'',​ ''​EDX''​).
 +  * Rezultatul înmulțirii este dispus în perechea ''​EDX:​EAX'',​ adică partea "​high"​ a rezultatului în registrul ''​EDX'',​ iar partea "​low"​ a rezultatului în registrul ''​EAX''​.
  
 </​note>​ </​note>​
  
 +<​note>​
 +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 ''​EDX''​ și ''​EAX''​ pentru înmulțirea numerelor de tip ''​dword''​.
 +
 +</​note>​
 ==== [1p] 3. Ridicare număr la puterea a treia ==== ==== [1p] 3. Ridicare număr la puterea a treia ====
  
laboratoare/laborator-05.txt · Last modified: 2016/01/09 18:27 by razvan.deaconescu