Ассемблер: Почему ответ всегда ноль? Помогите найти ошибку

Не могу найти ошибку в коде. Задание: дано выражение Дано выражение, где а=-4, b=10, c=5, d=-7. Написать код на ассемблере. Я написал следующий код:

.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

Ответ должен быть х=5


Ответы (0 шт):