ne_viens
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору .686 .xmm .model flat,stdcall include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib .const db 11 g_a REAL8 2.0 g_b REAL8 4.0 g_c REAL8 -6.0 g_4 REAL8 4.0 g_noRoots db "Has not roots",0 .data? x1 REAL8 ? x2 REAL8 ? .code start: movq XMM1, g_4 movq XMM6, g_a mulsd XMM1, XMM6 mulsd XMM1, g_c movq XMM7, g_b movq XMM2, XMM7 mulsd XMM2, XMM2 subsd XMM2, XMM1 ;XMM2 = b * b - 4 * a * c; xorpd XMM0, XMM0 comisd XMM0, XMM2 jz oneRoot ;XMM2 == 0 ? jnc noRoots ;XMM2 < 0 ? subsd XMM0, XMM7 movq XMM1, XMM0 sqrtsd XMM2, XMM2 subsd XMM0, XMM2 addsd XMM1, XMM2 addsd XMM6, XMM6 divsd XMM0, XMM6 divsd XMM1, XMM6 movq x1, XMM0 ;x1 = (-b - sqrt(XMM2)) / (2 * a); movq x2, XMM1 ;x2 = (-b + sqrt(XMM2)) / (2 * a); jmp _ret oneRoot: subsd XMM0, XMM7 addsd XMM6, XMM6 divsd XMM0, XMM6 movlpd x1, XMM0 ;x1 = (0 - b) / (2 * a); jmp _ret noRoots: invoke MessageBoxA, 0, OFFSET g_noRoots, 0, 0 _ret: invoke ExitProcess, 0 END start | Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 17:18 08-06-2014 | Исправлено: ne_viens, 17:18 08-06-2014 |
|