Ввод с клавиатуры 8 значного числа - Assembler

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

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

Не подскажете, как осуществить ввод с клавиатуры 8 значного числа? 6 значные вводятся прекрасно и складываются... а вот после ввода 1 восьмизначного числа, 2ое автоматически заполняется первым и программа дальше не идет....

Решение задачи: «Ввод с клавиатуры 8 значного числа»

textual
Листинг программы
  1. ;FASM-code..
  2. ;-----------------
  3. format   PE console
  4. include 'win32a.inc'
  5. jmp  start
  6.  
  7. mess    db  ' Enter A: ', 0
  8. rez     db  ' ----------------',13,10
  9.         db  '  A + B = %u',0
  10. A       dd   0
  11. B       dd   0
  12. type    db  '%u',0
  13.  
  14. start:
  15.        invoke    printf, mess
  16.        cinvoke   scanf, type, A
  17.  
  18.        inc       byte[mess+7]
  19.  
  20.        invoke    printf, mess
  21.        cinvoke   scanf, type, B
  22.  
  23.        mov       eax,[A]
  24.        add       eax,[B]
  25.  
  26.        cinvoke   printf, rez, EAX
  27.        jmp $
  28.        invoke  exit, 0
  29. ;----------------------------------------------
  30. ; import section
  31. data import
  32.   library msvcrt,'MSVCRT.DLL'
  33.  
  34.   import msvcrt,\
  35.       scanf,'scanf',\
  36.       printf,'printf',\
  37.       exit,'exit'
  38. end data

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

  1. Объединение (jmp) тостов (start) помещает точку входа в программу в начало исполняемого кода.
  2. (format PE console) — это директива, которая указывает компилятору FASM, какой формат исполняемого файла использовать.
  3. (include 'win32a.inc') — это директива, которая включает в себя содержимое файла 'win32a.inc'.
  4. (mess db ' Enter A: ', 0) — это строка, которая содержит сообщение, которое программа выводит на консоль.
  5. (rez db ' ----------------',13,10) — это строка, которая содержит сообщение, которое программа выводит на консоль.
  6. (rez db '%u',0) — это строка, которая содержит формат вывода числа.
  7. (A dd 0) — это переменная, которая используется для хранения введенного пользователем числа A.
  8. (B dd 0) — это переменная, которая используется для хранения введенного пользователем числа B.
  9. (type db '%u',0) — это строка, которая содержит формат ввода числа.
  10. (start:)- это метка, которая указывает на точку входа в программу.
  11. (invoke printf, mess)- это команда, которая вызывает функцию printf для вывода сообщения на консоль.
  12. (cinvoke scanf, type, A)- это команда, которая вызывает функцию scanf для ввода числа A.
  13. (inc byte[mess+7]) — это команда, которая увеличивает значение байта в памяти по адресу mess+7 на единицу.
  14. (invoke printf, mess)- это команда, которая вызывает функцию printf для вывода сообщения на консоль.
  15. (cinvoke scanf, type, B)- это команда, которая вызывает функцию scanf для ввода числа B.
  16. (mov eax,[A]) — это команда, которая перемещает значение переменной A в регистр eax.
  17. (add eax,[B]) — это команда, которая добавляет значение переменной B к значению в регистре eax.
  18. (cinvoke printf, rez, EAX)- это команда, которая вызывает функцию printf для вывода сообщения на консоль с использованием формата rez и значения в регистре eax.
  19. (jmp $)- это команда, которая прерывает выполнение программы и передает управление на произвольный адрес.
  20. (invoke exit, 0)- это команда, которая вызывает функцию exit для завершения программы.
  21. (data import)- это раздел, который определяет, какие функции и библиотеки должны быть доступны для программы.
  22. (library msvcrt,'MSVCRT.DLL') — это команда, которая включает библиотеку msvcrt.
  23. (import msvcrt,\ scanf,'scanf',\ printf,'printf',\ exit,'exit') — это команда, которая определяет функции, которые должны быть доступны для программы.

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


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

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

7   голосов , оценка 3.429 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы