.model tiny
.code
.startup
call PrintAttrib ;Выводим на экран аттрибуты с помощью ф-и 13h прерывания 10h
call PrintTable ;Выводим на экран символы с помощью ф-и 9 прерывания 21h
mov ah, 0 ;ждем нажатие на клавишу
int 16h
mov ax, 4c00h ;выход
int 21h
;Выводим табличку ASCII кодов при помощи функции 9 прерывания 21h
;Выводим строками по 16 символов
PrintTable proc
mov dx, 0520h ;начальная позиция на экране
mov cx, 16 ;16 строк
mov al, 0 ;начинаем с 0
PrintSymbolLoop: ;цикл по строкам
push cx ;сохраним счетчик строк
lea di, String ;сформируем в данной строке строку для вывода
mov cx, 16 ;в строке 16 символов
FormSymbolRowLoop: ;цикл формирования строки
stosb ;очередной символ из al
inc al ;инкремент кода символа
loop FormSymbolRowLoop ;16 раз
push dx ;сохраним позицию курсора
push ax ;сохраним код последнего символа
mov bh, 0 ;страница для курсора
mov ah, 2 ;установим позицию курсора
int 10h
mov al,'$'
stosb ;зароем строку для ф-и 9
lea dx, String
mov ah, 9
int 21h ;выведем строку
pop ax
pop dx
inc dh ;на следующую строку
pop cx
loop PrintSymbolLoop
ret
PrintTable endp
;Выводим табличку аттрибутов при помощи функции 1302h прерывания 10h
;Выводим строками по 16 символов
PrintAttrib proc
mov al, ' ' ;любой код
lea di, String ;сформируем в данной строке строку для вывода
lea si, Attributes ;строка аттрибутов
mov cx, 16 ;в строке 16 символов
FormRowLoop: ;цикл формирования строки
stosb ;символ из al
movsb ;очередной аттрибут
loop FormRowLoop ;16 раз
mov dx, 0520h ;начальная позиция на экране
mov cx, 16 ;14 строк
PrintLoop: ;цикл по строкам
push cx ;сохраним счетчик строк
push dx ;сохраним позицию курсора
mov ax, 1302h ;функция вывода строки
lea bp, String ;es:bp - адрес строки
mov cx, 16 ;число символов
mov bh, 0 ;страница видеопамяти
int 10h ;сервис БИОС
pop dx
inc dh ;на следующую строку
pop cx
loop PrintLoop ;и так 16 раз
ret
PrintAttrib endp
.data
;Строка с примерными аттрибутами
Attributes db 09h,12h,20h,34h,45h,56h,67h,79h,0ah,1bh,2ch,3dh,4eh,5fh,60h,71h
.data?
;строка для формирования данных для вывода
String dw 16 dup (?)
end
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.