.model small .stack 100h .186 .data ;Определение переменных: row db 5 ;row – строка, в которой находится курсор col db 10 ;col – столбец, в котором находится курсор mode db (?) ;mode – номер режима, нач. значение не определено char_ctr db 4Dh ;char_ctr – счетчик ASCII-символов .code start: mov ax,@data mov ds, ax call B10MODE ;установка видеорежима call C10CLEAR ;очистка экрана mov bl, 9h ;начальное значение цвета label1: call D10CURSOR ;установка курсора call E10DISPLAY ;вывод символа на экран inc col ;перемещение курсора вправо cmp col,17 ;проверка на конец строки jc label1 inc char_ctr ;переход к следующему символу inc row ;переход в следующий столбец mov col,0Ah ;переход на начало строки inc bl ;переход к следующему цвету cmp char_ctr,53h ;проверка на последний символ jc label1 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, ah mov al, 6 mov bh, 23h mov cx, 5:10 mov dx, 12:17 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