Глава 1 (продолжение 1)
Следующие четыре процедуры - процедуры BIOS прерывание 10h :
Вверх
;процедура определения текущего графического режима ***************************
Вверх
;процедура установки графического режима **************************************
Вверх
;процедура очистки экрана *****************************************************
mov ah,11h
ret
Вверх
mov ah,13h
;востановление стандартного цвета
pop ax
По всей вероятности здесь для вывода сообщения используется функция 13h прерывания 10h BIOS "писать строку". При этом в al помещается 01h, что означает "использовать атрибут в bl". В bl мы помещаем атрибут - цвет символов.
-------------------------------------------------------------------------------
Т.к. в программе периодически возникала необходимость, при выводе сообщений стереть
их с экрана, то была написана процедура clear_string.
Вверх
Изучив вышеуказанные функции становится понятным код, с которого начинается
Назад |
Начало урока |
Вверх |
Вперед
;выходные параметры:
;screeng_mode - номер графического режима
mov ah,0Fh
int 10h
mov screeng_mode,al
pop ax
ret
;входные параметры:
;screeng_mode - номер графического режима который нужно установить
mov al,screeng_mode
int 10h
ret
mov al,03h
int 10h
mov al,12h
mov bl,00h
int 10h
;процедура вывода сообщений с учетом цвета ***********************************
;ВХОДНЫЕ ПАРАМЕТРЫ bp - указатель на сообщение, cx - длина строки
mov al,01h ;режим сервиса для вывода сообщения
mov bh,00h ;номер страницы экрана(в видеобуфере)
mov bl,color
mov dh,stroka
mov dl,kolonka
int 10h
mov color,0Fh
;********************************
ret
;*****************************************************************************
Мы поместили в переменную color:
color DB 0Fh ;атрибут цвета выводимых строки или символа
Какой это цвет? Это белый цвет на фоне черного DOS-экрана.
13H писать строку ¦AT¦
(CarRet), 0aH (LineFeed), 08H (backspace) и 07H (Beep) трактуются как
команды управления и не высвечиваются.
Вход:
CX = длина строки (подсчитываются только символы)
DH,DL = строка,колонка начала вывода
BH = номер страницы
AL = код подфункции:
1 = использовать атрибут в BL; курсор - в конец строки
2 = формат строки: char,attr, char,attr...; не трогать курсор
3 = формат строки: char,attr, char,attr...; передвинуть курсор
;процедура очистки строки *****************************************************
;ВХОДНЫЕ ПАРАМЕТРЫ
;color
;kolonka
;stroka
push cx
call print_position
mov bp,offset clear_str
mov cx,dlclear_str
call print_string
pop cx
pop bp
ret
главная процедура main:
Содержание