Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование в ассемблере.

Арчи Гнедой Ученик (86), на голосовании 1 неделю назад
Необходимо реализовать формулу y=a*b+c/d-a в ассемблере.Написал код вот,но почему то (вроде все логично) результат произведения и результат деления не складываются:start:
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
Голосование за лучший ответ
ауцыв уафсыв Гуру (4625) 1 месяц назад
 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:
; Завершение программы
Арчи ГнедойУченик (86) 1 месяц назад
Арчи Гнедой Ученик (86) Арчи Гнедой, ругается на dword ptr...
Кирилл ИвановУченик (96) 1 месяц назад
Ругается на sword ptr
Похожие вопросы