Подсчёт уравнения - Assembler
Формулировка задачи:
Помогите написать программу на ассемблере
Оформить ее в виде API-подобной функции и сохранить результат выполнения выражения в памяти.
Вот уравнение 3e/b + 10c
е=1994
b=22
c=94
Буду очень благодарен)
так как что-то у меня не выходит правильный ответ...
Решение задачи: «Подсчёт уравнения»
textual
Листинг программы
;void MyFunc(int *output) ;procedure MyFunc(var output: integer) MyFunc: e=1994 b=22 c=94 mov eax,[esp+4] mov dword[eax],3*e/b+10*c ret 4
Объяснение кода листинга программы
- *void MyFunc(int output)** - объявление функции с именем MyFunc, которая не возвращает значение и принимает параметр типа int по ссылке.
- procedure MyFunc(var output: integer) - объявление функции с именем MyFunc, которая не возвращает значение, принимает параметр типа integer по имени output.
- MyFunc: - начало выполнения функции MyFunc.
- e=1994 - присваивание переменной e значение 1994.
- b=22 - присваивание переменной b значение 22.
- c=94 - присваивание переменной c значение 94.
- mov eax,[esp+4] - перемещение содержимого регистра eax в переменную, адрес которой находится в памяти по смещению 4 от текущего адреса стека.
- mov dword[eax],3e/b+10c - перемещение значения вычисления (3e/b+10c) в память по адресу, который хранится в переменной eax.
- ret 4 - выход из функции MyFunc с указанием, что в стеке после функции должны быть 4 байта свободной памяти.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д