Округлить элемент массива до целого - Assembler

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

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

Здравствуйте господа! Требуется помощь начинающему. Задан массив дробных чисел, нужно округлить каждый элемент до целого.

Решение задачи: «Округлить элемент массива до целого»

textual
Листинг программы
  1. .model small                                      
  2. .stack 100h
  3.  
  4. .data
  5. mas1    db 30 dup (0)   ;massive
  6. msg1    db 10,13,"Аrray:",10,13,"$"
  7. Press   db 10,13,"Press any key...$"
  8.  
  9. .code
  10. start:
  11.     mov ax,@data
  12.     mov ds,ax
  13.      
  14. ;    input massive
  15.     mov cx,30
  16.     mov si,0
  17. input:
  18.         mov ah,01h
  19.     mov al,00h
  20.     int 21h
  21.     sub al,30h
  22.     mov [mas1+si],al
  23.     add si,1
  24.     loop input
  25. ;--
  26.  
  27. ;    output massive
  28.     lea dx,msg1
  29.     mov ah,09h
  30.     int 21h
  31.  
  32.     mov cx,30  
  33.     mov si,0
  34. put1:
  35.         mov ah,02h 
  36.     mov dl,[mas1+si]
  37.     add dl,30h 
  38.     int 21h
  39.     add si,1
  40.     loop put1
  41. ;--
  42.  
  43. ;    waiting
  44.     lea dx,Press
  45.     mov ah,09h
  46.     int 21h
  47.  
  48.     mov ah,00h
  49.     int 16h
  50. ;--
  51.            
  52. ;vihod iz programmi
  53.     mov ax,4c00h
  54.     int 21h
  55. ;--
  56. end start

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

Список элементов кода:

  1. .model small - описание сегментной модели памяти, используемой в программе.
  2. .stack 100h - определение стека подкачки размером в 100 байт.
  3. .data - сегмент данных, в котором будут храниться переменные и строки.
  4. mas1 db 30 dup (0) - описание массива на 30 элементов, каждый из которых будет содержать целое число.
  5. msg1 db 10,13,Аrray:,10,13,$ - определение строки, которая будет выводиться на экран при запуске программы.
  6. Press db 10,13,Press any key...$ - определение строки, которая будет выводиться на экран при нажатии клавиши.
  7. .code - начало сегмента кода.
  8. start: - точка входа в программу.
  9. mov ax,@data - загрузка сегмента данных в регистр AX.
  10. mov ds,ax - установка сегмента данных в качестве текущего сегмента.
  11. mov cx,30 - инициализация счётчика цикла.
  12. mov si,0 - инициализация индекса для работы с массивом.
  13. input: - начало цикла для ввода элементов массива.
  14. mov ah,01h - подготовка к вводу символа.
  15. mov al,00h - инициализация регистра AX для ввода цифры.
  16. int 21h - ввод символа.
  17. sub al,30h - преобразование введенного символа в числовое значение.
  18. mov [mas1+si],al - запись полученного числа в массив.
  19. add si,1 - увеличение индекса для следующего элемента массива.
  20. loop input - переход к следующей итерации цикла.
  21. lea dx,msg1 - подготовка вывода строки на экран.
  22. mov ah,09h - подготовка к выводу строки на экран.
  23. int 21h - вывод строки на экран.
  24. mov cx,30 - инициализация счётчика цикла.
  25. mov si,0 - инициализация индекса для работы с массивом.
  26. put1: - начало цикла для вывода элементов массива.
  27. mov ah,02h - подготовка к выводу символа.
  28. mov dl,[mas1+si] - получение значения элемента массива.
  29. add dl,30h - преобразование числа в символ и добавление символа а для положительных чисел.
  30. int 21h - вывод символа на экран.
  31. add si,1 - увеличение индекса для следующего элемента массива.
  32. loop put1 - переход к следующей итерации цикла.
  33. lea dx,Press - подготовка вывода строки на экран.
  34. mov ah,09h - подготовка к выводу строки на экран.
  35. int 21h - вывод строки на экран.
  36. mov ah,00h - подготовка к чтению нажатия клавиши.
  37. int 16h - чтение нажатия клавиши.
  38. mov ax,4c00h - завершение работы программы.
  39. int 21h - выход из программы.

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


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

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

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

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

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

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