Написать программу по ассемблеру
Задание 5.1. Напишите программу в формате EXE, которая выводит строки символов (последовательно букв A-M) с разными атрибутами. В каждой строке по 60 символов, начальная позиция вывода 5:10.
Текст программы
.model small
.stack 100h
.186
.data
;Определение переменных:
row db 5 ;row – строка, в которой находится курсор, начальное значение равно 5
col db 10 ;col – столбец, в котором находится курсор, начальное значение равно 10
mode db (?) ;mode – номер режима, начальное значение не определено (равно?)
char_ctr db 41h ;char_ctr – счетчик ASCII-символов, начальное значение равно 41h
.code
start:
mov ax,@data
mov ds, ax
call B10MODE ;получение/установка видеорежима
call C10CLEAR ;очистка экрана
mov bl, 1 ; начальное значение цвета
label1:
call D10CURSOR ;установка курсора
call E10DISPLAY ;вывод символа на экран
inc col ;перемещение курсора вправо
cmp col, 65 ;конец строки?
jc label1
inc char_ctr ;переход к следующему символу
inc row ;пересод в следующий столбец
mov col, 10 ;переход на начало строки
inc bl ; переход к следующему цвету
cmp char_ctr, 4Eh ;достигнут последний символ?
jc label1
mov ah, 10h ;Запрос на получение символа с клавиатуры
int 16h
mov ax,4C00h ;Завершение программы
int 21h
;Определение подпрограмм
B10MODE proc ;Получение/установка видеорежима
mov ah, 0Fh
int 10h
mov mode, al
mov ah, 0
mov al, 3
int 10h
ret
B10MODE endp
C10CLEAR proc ;Очистка экрана
pusha
mov ah, 06h
int 10h
mov ah, 06h
mov al, 10h
mov bh, 23h
mov cx, 04:24
mov dx, 19:54
int 10h
popa
ret
C10CLEAR endp
D10CURSOR proc ;Установка курсора
pusha
mov ah, 02h
mov bh, 0
mov dh, row
mov dl, col
int 10h
popa
ret
D10CURSOR endp
E10DISPLAY proc ;Вывод символа на экран
pusha
mov ah, 9h
mov al, char_ctr
mov bh, 0
mov cx, 1
int 10h
popa
ret
E10DISPLAY endp
end start ;Конец программы