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 14:42] razvan.deaconescu [[0.5p] 1. Tutorial: Înmulțire două numere reprezentate pe un octet] |
laboratoare:laborator-05 [2015/11/11 14:55] razvan.deaconescu [[2p] 2. Înmulțire două numere] |
||
---|---|---|---|
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 125: | 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 ==== | ||