start:
xor eax, eax
invoke DialogBoxParam, eax, 37, HWND_DESKTOP, DialogProc, 0
or eax, eax
jz exit
; Получаем значение d
lea esi, [d]
call StrToInt ; EAX = d
mov [d_val], eax ; Сохраняем d в памяти
; Получаем значение c
lea esi, [c]
call StrToInt ; EAX = c
mov [c_val], eax ; Сохраняем c в памяти
; Вычисляем c / d
mov eax, [c_val]
xor edx, edx ; Обнуляем EDX перед делением
div dword ptr [d_val] ; EAX = c / d
mov ecx, eax ; ECX = c / d
; Получаем значение a
lea esi, [a]
call StrToInt ; EAX = a
mov ebx, eax ; EBX = a
; Получаем значение b
lea esi, [b]
call StrToInt ; EAX = b
mov esi, eax ; ESI = b
; Вычисляем a * b
imul eax, ebx, esi ; EAX = a * b
; Складываем с результатом c / d
add eax, ecx ; EAX = (a * b) + (c / d)
; Вычитаем a
sub eax, ebx ; EAX = EAX - a
; Далее ваш код...
exit:
; Завершение программы
xor eax,eax ;ЕАХ=0
invoke DialogBoxParam,eax,37,HWND_DESKTOP,DialogProc,0 ;открываем окно используя процедуру DialogProc
or eax,eax ;проверим eax=0
jz exit ;если да(нажата кнопка cancel), то переход к метке exit
lea esi, [d] ;адрес строки для перменной d
call StrToInt ;преобразование d в число результат в EAX
mov ebx,eax ;переносим получившееся в ebx из ячейки eax
lea esi, [c] ;адрес строки для перменной c
call StrToInt ;преобразование c в число результат в EAX
div ebx ;делим с на d результат в eax
mov ecx,eax
lea esi, [a] ;адрес строки для перменной a
call StrToInt ;преобразование a в число результат в EAX
mov ebx,eax ;переносим получившееся в ebx из ячейки eax
lea esi, [b] ;адрес строки для перменной b
call StrToInt ;преобразование b в число результат в EAX
mul ebx
add eax,ecx
sub eax,ebx