This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
laboratoare:laborator-12 [2016/01/15 18:57] razvan.deaconescu [Instrucțiuni de comparație] |
laboratoare:laborator-12 [2016/01/15 19:25] (current) razvan.deaconescu [[2p] 4. Extragere parte întreagă și fracționară] |
||
---|---|---|---|
Line 147: | Line 147: | ||
fld qword [n1] | fld qword [n1] | ||
- | fld qword [n2] | + | fadd qword [n2] |
sub esp, 8 ; rezervă loc pe stivă pentru rezultat, pasat ca argument funcției printf. | sub esp, 8 ; rezervă loc pe stivă pentru rezultat, pasat ca argument funcției printf. | ||
- | fadd | ||
fstp qword [esp]; mută rezultatul adunării în spațiul rezervat. | fstp qword [esp]; mută rezultatul adunării în spațiul rezervat. | ||
Line 250: | Line 249: | ||
<note tip> | <note tip> | ||
- | Pentru a extrage partea întreagă puteți folosi instrucțiunea ''FISTTP dword <adresa>'', care extrage prima valoare din vârful stivei FPU, o trunchiază și o stochează ca un întreg la adresa specificată. | + | Pentru a extrage partea întreagă puteți folosi instrucțiunea ''fisttp dword <adresa>'', care extrage prima valoare din vârful stivei FPU, o trunchiază și o stochează ca un întreg la adresa specificată. |
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | Instrucțiunea ''fisttp'' este o instrucțiune validă, chiar dacă nu este colorată în ''SASM''. | ||
+ | </note> | ||
+ | |||
+ | <note tip> | ||
+ | Instrucțiunea ''fisttp'' face și pop la valoarea din vârful stivei FPU. De aceea, pentru obținerea părții fracționare, va trebui să reîncărcați valoarea numărului fracționar ''n'' (folosind ''fld'') înainte de scădea valoarea întregii din acesta folosind instrucțiunea ''fisub''. | ||
</note> | </note> | ||
==== [2p] 5. Media unui vector de întregi cu rezultat fracționar ==== | ==== [2p] 5. Media unui vector de întregi cu rezultat fracționar ==== |