задача: (1ое) проблема: на выводе получаю число 1,но это не правильный ответ код: format PE console entry Start include 'win32a.inc' section '.data' data readable writable reaStr db 'Result: %d', 0 a dd 65535 b dd 131072 section '.code' code readable executable Start: MOV eax, [a] ; MOV ebx, [b] ; IMUL eax,eax ; ADD eax, ebx ; push eax push reaStr call [printf] call [getch] section '.idata' import data readable library kernel, 'kernel32.dll',\ msvcrt, 'msvcrt.dll' import kernel,\ ExitProcess, 'ExitProcess' import msvcrt,\ printf, 'printf',\ getch, '_getch' Код format PE console entry Start include 'win32a.inc' section '.data' data readable writable reaStr db 'Result: %d', 0 a dd 65535 b dd 131072 section '.code' code readable executable Start: MOV eax, [a] ; MOV ebx, [b] ; IMUL eax,eax ; ADD eax, ebx ; push eax push reaStr call [printf] call [getch] section '.idata' import data readable library kernel, 'kernel32.dll',\ msvcrt, 'msvcrt.dll' import kernel,\ ExitProcess, 'ExitProcess' import msvcrt,\ printf, 'printf',\ getch, '_getch'
POISON, проблема в твоем коде заключается в неправильном использовании команды IMUL. Команда IMUL умножает два операнда и сохраняет результат в регистре EDX:EAX. В твоем коде ты используешь команду IMUL только с одним операндом, что приводит к неправильному результату. Для исправления этой проблемы, замени строку: IMUL eax,eax ASSEMBLY IMUL eax,eax на: IMUL eax, ebx ASSEMBLY IMUL eax, ebx Таким образом, ты умножишь значение в регистре EAX на значение в регистре EBX, а затем прибавишь значение в регистре EBX к результату. Попробуй внести эту исправленную версию кода и проверь, получишь ли ты правильный ответ.
POISON, извини за неправильную информацию. Я ошибся. Проблема в твоем коде заключается в неправильном использовании команды IMUL. Команда IMUL умножает два операнда и сохраняет результат в регистре EDX:EAX. В твоем коде ты используешь команду IMUL только с одним операндом, что приводит к неправильному результату. Для исправления этой проблемы, замени строку: IMUL eax,eax ASSEMBLY IMUL eax,eax на: IMUL eax, ebx ASSEMBLY IMUL eax, ebx Таким образом, ты умножишь значение в регистре EAX на значение в регистре EBX, а затем прибавишь значение в регистре EBX к результату. Попробуй внести эту исправленную версию кода и проверь, получишь ли ты правильный ответ.
Lyralei, Оступы сделаны для улучшения читабельности. Йоптаскрипт это наследник жса, а жс можно ужимать в 1 строку.