Протабулировать функцию - Assembler
Формулировка задачи:
Отображение таблицы значений выражения x div 3 + x mod 3. Заполнять массив результатами вычислегий. Х от 0 до 20 шаг 5
Решение задачи: «Протабулировать функцию»
textual
Листинг программы
- LOCALS
- .model small
- .stack 100h
- .data
- T db 5 dup(0)
- .code
- main proc
- mov ax, @data
- mov ds, ax
- lea si, T
- mov di, 0 ;di = x
- @@For:
- mov ax, di
- call OutInt
- mov bl, 3
- div bl
- add al, ah
- mov [si], al
- push ax
- mov ah, 02
- mov dl, ' '
- int 21h
- pop ax
- call OutInt
- push ax
- mov ah, 02
- mov dl, 0Dh
- int 21h
- mov dl, 0Ah
- int 21h
- pop ax
- add si, 1
- add di, 5
- cmp di, 20
- ja @@Break
- jmp @@For
- @@Break:
- mov ax, 4C00h
- int 21h
- main endp
- OutInt proc
- push ax
- aam
- add ax, '00'
- mov dl, ah
- mov dh, al
- mov ah, 02
- int 21h
- mov dl, dh
- int 21h
- pop ax
- ret
- OutInt endp
- end main
Объяснение кода листинга программы
- Создание секции LOCALS для локальных переменных
- Определение модели памяти 'small'
- Резервирование стека размером 100h
- Определение секции данных:
- Создание переменной 'T' как массив с пятью элементами, инициализированных нулями
- Начало процедуры 'main'
- Загрузка базового адреса данных в регистр 'ax'
- Перемещение адреса данных из 'ax' в регистр 'ds'
- Инициализация указателя 'si' на массив 'T' и установка значения регистра 'di' в 0 (di = x)
- Метка '@@For': в цикле вычисляется значение для элементов массива 'T':
- Разделение значения из регистра 'di' на 3
- Вычисление остатка от деления и его прибавление к частному
- Запись вычисленного значения в текущий элемент массива 'T' ('[si]')
- Вывод вычисленного значения посредством вызова процедуры 'OutInt'
- Вывод пробела и перевод строки
- Увеличение указателя 'si' на 1 и увеличение значения регистра 'di' на 5
- Сравнение значения регистра 'di' с 20 для выхода из цикла при достижении этого значения
- Метка '@@Break': выход из цикла и завершение процедуры 'main'
- Создание процедуры 'OutInt' для вывода чисел
- Завершение программы 'end main' Указанный код на ассемблере выполняет простую операцию табулирования функции и вывода результатов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д