[NASM] Найти значение выражения - Assembler

Узнай цену своей работы

Формулировка задачи:

Найти значение выражения:

Решение задачи: «[NASM] Найти значение выражения»

textual
Листинг программы
Global _main
Extern _printf
Extern _scanf
Section .data
F_pf: db “result: %d”, 10, 0 ; формат вывода
Welcome: db “enter your number: “, 0 ; приглашение
F_sf: db “%d”, 0 ; формат ввода
b: dd 0 ; переменная для хранения числа
Section .text
_main:
Push b
Push f_sf
Call _scanf
Add esp, 8
Finit
Mov eax, [b]
Add eax, 2
Mov [b], eax
Fild dword [b]
Fsqrt
Fist dword [b]
Mov eax, 1
Mov ebx, [b]
Mov edx, 0
Div ebx
Push edx
Push sc
Call _printf
Add esp, 8
Mov eax, 0
Push f_pf
ret

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

  1. Объявлены три строки: F_pf, Welcome и F_sf.
  2. В строке F_pf указан формат вывода с использованием символа %d - выводит целое число.
  3. В строке Welcome указано приглашение для ввода числа.
  4. В строке F_sf указан формат ввода с использованием символа %d - вводит целое число.
  5. Объявлена переменная b, которая будет использоваться для хранения введенного числа.
  6. В разделе .text объявлена функция _main, которая является точкой входа в программу.
  7. В функции _main на стек помещаются два указателя: на строку формата и на переменную b.
  8. Выполняется функция _scanf, которая считывает введенные данные в соответствии с указанным форматом.
  9. Из стека удаляются два указателя, которые были помещены туда на предыдущем шаге.
  10. Переменная b инициализируется значением 0.
  11. В разделе .text объявлена функция Finit, которая завершает выполнение программы.
  12. В функции _main на стек помещается указатель на переменную b.
  13. Переменная b увеличивается на 2.
  14. В разделе .data объявлена переменная b, которая используется для хранения числа.
  15. В функцию _printf передаются три аргумента: 1, b и 0.
  16. Из стека удаляются три указателя, которые были помещены туда на 13-м шаге.
  17. Переменная b вычисляется как квадратный корень от значения переменной b.
  18. В разделе .data объявлена переменная b, которая используется для хранения числа.
  19. Переменная b вычисляется как целочисленное деление 1 на значение переменной b.
  20. В функцию _printf передаются три аргумента: 1, b и 0.

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

5   голосов , оценка 4.6 из 5
Похожие ответы