Подсчёт уравнения - 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

Объяснение кода листинга программы

  1. *void MyFunc(int output)** - объявление функции с именем MyFunc, которая не возвращает значение и принимает параметр типа int по ссылке.
  2. procedure MyFunc(var output: integer) - объявление функции с именем MyFunc, которая не возвращает значение, принимает параметр типа integer по имени output.
  3. MyFunc: - начало выполнения функции MyFunc.
  4. e=1994 - присваивание переменной e значение 1994.
  5. b=22 - присваивание переменной b значение 22.
  6. c=94 - присваивание переменной c значение 94.
  7. mov eax,[esp+4] - перемещение содержимого регистра eax в переменную, адрес которой находится в памяти по смещению 4 от текущего адреса стека.
  8. mov dword[eax],3e/b+10c - перемещение значения вычисления (3e/b+10c) в память по адресу, который хранится в переменной eax.
  9. ret 4 - выход из функции MyFunc с указанием, что в стеке после функции должны быть 4 байта свободной памяти.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5