Сформировать и вывести на экран таблицу ASCII-символов - Assembler
Формулировка задачи:
Используя вложенные циклы, сформировать и вывести на экран таблицу ASCII-символов с кодами в указанном диапазоне.Формирование всей таблицы вывода в памяти во вложенных циклах, затем ее вывод
(используется область памяти для всей таблицы вывода, включая управляющие коды). Диапазон кодов символов 39-147, строки по 16 символов
Решение задачи: «Сформировать и вывести на экран таблицу ASCII-символов»
textual
Листинг программы
LOCALS .model small .stack 100h .data CrLf db 0Dh, 0Ah, '$' First db 39 ;код первого символа Last db 147 ;код последнего символа CharPerLine equ 16 ;количество символов таблицы в строке String db (Last-First+1+10) dup(?) .code main proc mov ax, @data mov ds, ax lea si, String mov al, First @@ForI: mov cx, CharPerLine @@ForJ: mov [si], al inc si inc al cmp al, Last ja @@Break loop @@ForJ @@Break: mov [si], word ptr 0A0Dh add si, 2 cmp al, Last jbe @@ForI mov [si], byte ptr '$' mov ah, 09h lea dx, String int 21h mov ax, 4C00h int 21h main endp end main
Объяснение кода листинга программы
- Объявляются локальные переменные
- Задается размер модели памяти как small
- Выделяется 100 байт на стеке
- Определяются переменные данных:
CrLf
- символы новой строки и возврата кареткиFirst
- код первого символа таблицы ASCIILast
- код последнего символа таблицы ASCIICharPerLine
- количество символов таблицы в строкеString
- массив символов, размер которого зависит от разницы междуLast
иFirst
, плюс 10 символов заполнителя
- Начинается секция кода
- В процедуре
main
: a. Загружается сегмент данных в регистр AX и копируется в регистр DS b. Адрес массиваString
загружается в регистр SI c. Выполняется цикл для заполнения массиваString
ASCII-символами отFirst
доLast
- Устанавливается значение AL в
First
- Двойной цикл с использованием регистра CX для заполнения символов ASCII
- Проверяется, если AL больше чем
Last
, то выход из цикла d. Добавляется символ новой строки и возврата каретки к массивуString
e. Печать массиваString
с помощью системного вызова прерывания 21h, функции 09h f. Программа завершается системным вызовом прерывания 21h с функцией 4с00h
- Устанавливается значение AL в
- Конец процедуры main
- Конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д