Округлить элемент массива до целого - Assembler
Формулировка задачи:
Здравствуйте господа! Требуется помощь начинающему. Задан массив дробных чисел, нужно округлить каждый элемент до целого.
Решение задачи: «Округлить элемент массива до целого»
textual
Листинг программы
- .model small
- .stack 100h
- .data
- mas1 db 30 dup (0) ;massive
- msg1 db 10,13,"Аrray:",10,13,"$"
- Press db 10,13,"Press any key...$"
- .code
- start:
- mov ax,@data
- mov ds,ax
- ; input massive
- mov cx,30
- mov si,0
- input:
- mov ah,01h
- mov al,00h
- int 21h
- sub al,30h
- mov [mas1+si],al
- add si,1
- loop input
- ;--
- ; output massive
- lea dx,msg1
- mov ah,09h
- int 21h
- mov cx,30
- mov si,0
- put1:
- mov ah,02h
- mov dl,[mas1+si]
- add dl,30h
- int 21h
- add si,1
- loop put1
- ;--
- ; waiting
- lea dx,Press
- mov ah,09h
- int 21h
- mov ah,00h
- int 16h
- ;--
- ;vihod iz programmi
- mov ax,4c00h
- int 21h
- ;--
- end start
Объяснение кода листинга программы
Список элементов кода:
- .model small - описание сегментной модели памяти, используемой в программе.
- .stack 100h - определение стека подкачки размером в 100 байт.
- .data - сегмент данных, в котором будут храниться переменные и строки.
- mas1 db 30 dup (0) - описание массива на 30 элементов, каждый из которых будет содержать целое число.
- msg1 db 10,13,
Аrray:
,10,13,$
- определение строки, которая будет выводиться на экран при запуске программы. - Press db 10,13,
Press any key...$
- определение строки, которая будет выводиться на экран при нажатии клавиши. - .code - начало сегмента кода.
- start: - точка входа в программу.
- mov ax,@data - загрузка сегмента данных в регистр AX.
- mov ds,ax - установка сегмента данных в качестве текущего сегмента.
- mov cx,30 - инициализация счётчика цикла.
- mov si,0 - инициализация индекса для работы с массивом.
- input: - начало цикла для ввода элементов массива.
- mov ah,01h - подготовка к вводу символа.
- mov al,00h - инициализация регистра AX для ввода цифры.
- int 21h - ввод символа.
- sub al,30h - преобразование введенного символа в числовое значение.
- mov [mas1+si],al - запись полученного числа в массив.
- add si,1 - увеличение индекса для следующего элемента массива.
- loop input - переход к следующей итерации цикла.
- lea dx,msg1 - подготовка вывода строки на экран.
- mov ah,09h - подготовка к выводу строки на экран.
- int 21h - вывод строки на экран.
- mov cx,30 - инициализация счётчика цикла.
- mov si,0 - инициализация индекса для работы с массивом.
- put1: - начало цикла для вывода элементов массива.
- mov ah,02h - подготовка к выводу символа.
- mov dl,[mas1+si] - получение значения элемента массива.
- add dl,30h - преобразование числа в символ и добавление символа
а
для положительных чисел. - int 21h - вывод символа на экран.
- add si,1 - увеличение индекса для следующего элемента массива.
- loop put1 - переход к следующей итерации цикла.
- lea dx,Press - подготовка вывода строки на экран.
- mov ah,09h - подготовка к выводу строки на экран.
- int 21h - вывод строки на экран.
- mov ah,00h - подготовка к чтению нажатия клавиши.
- int 16h - чтение нажатия клавиши.
- mov ax,4c00h - завершение работы программы.
- int 21h - выход из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д