Ассемблер, всегда разные ответы
В данной формуле всегда разные ответы.
Не могу найти ошибку.
Ошибка где-то в 21-27 строках.
Правильный ответ x=5
.686P
.MODEL FLAT, STDCALL
.STACK 4096
.DATA
MB_OK EQU 0
m EQU 848h ;m = 350d
str_format DB "X = %d",0
str_buffer DB 256 dup (0)
m_title DB "Lab #1",0
A DB 0FCh ;a = -4
B DB 0Ah ;b = 10
C1 DB 05h ;c = 5
D DB 0F9h ;d = -7
X DD ?
extern MessageBoxA@16:NEAR
extern wsprintfA:NEAR
.CODE
Start:
movsx edx, A
imul ecx, ecx ; ecx^2
add ecx, edx ;ecx = a^2+A
movsx ecx, B
imul ebx, ecx ;ebx = b^2
imul ecx, ecx
movsx edx, C1
imul edx, edx ;edx =(-3*c)
sub ecx, edx ;ebx=b^2-3*c*b
movsx eax, D
imul eax, eax ;eax = d^3
cdq
idiv ecx ;eax = (b^2-3*c*b)/(a^2+9)
add eax, ebx ;eax = d^3 +(b^2-3*c*b)/(a^2+9)
add eax, m ;eax = d^3 +(b^2-3*c*b)/(a^2+9)+350
push eax
PUSH OFFSET str_format
PUSH OFFSET str_buffer
CALL wsprintfA
ADD esp, 12
PUSH MB_OK
PUSH OFFSET m_title
PUSH OFFSET str_buffer
PUSH 0
CALL MessageBoxA@16
RET
END START