- •Введение
- •Краткие сведения об ассемблере
- •Аппаратные ресурсы Ассемблера
- •Работа с экраном
- •Int 10h ; Передача управления в bios
- •Int 10h ; Вызвать bios.
- •Int 10h ; Вызвать bios
- •Установка курсора
- •Координаты точек экрана
- •Установка режима
- •Цвет и соответствующий код
- •Int 10h ;Вызвать bios.
- •Вывод символа на экран
- •Int 10h ; Вызвать bios
- •Int 10h ; Вызвать bios
- •Вывод строки на экран
- •Int 21h ; Вызов dos
Работа с экраном
Запросы и команды остаются на экране, пока не будут смещены в результате прокручивания ("скролинга") или переписаны на этом же месте другими запросами или командами. Перед выполнением любой программы экран следует очистить. Очищаемая область экрана может начинаться в любой позиции и заканчиваться в любой другой позиции с большим номером. В следующем примере выполняется очистка всего экрана, для чего начальное значение координат строки и столбца зано-сится в регистр DX, значение 07Н - в регистр BH и 0600H - в регистр AX .
MOV AX,0600H ;AH 06 (прокрутка),AL 00 (весь экран)
MOV BH,07Н ; цвет экрана/фон символа (черно/белый)
MOV CX,0000 ; Верхняя левая позиция
MOV DX,184FH ; Нижняя правая позиция
Int 10h ; Передача управления в bios
Значение 06 в регистре AH указывает команде INT 10H на выпол-нение операции очистки экрана. Эта операция очищает экран пробелами. Если по ошибке нижняя правая позиция установлена больше, чем 184Fh, то очистка перейдет вновь к началу экрана и вторично заполнит некото-рые позиции пробелами. Для монохромных экранов это не вызывает каких-либо неприятностей, но у некоторых цветных мониторов могут возникнуть серьезные ошибки.
AH=05: Выбор активной страницы. Новая страница устана-вливается для цветных текстовых режимов от 0 до 3.
MOV AH,05 ; Установить активную страницу
MOV AL, страница ;Номер страницы
Int 10h ; Вызвать bios.
AH=06: Прокрутка экрана вверх. Когда программа пытается выдать текст на строку ниже последней на экране, то происходит пе-реход на верхнюю строку. Даже если с помощью прерывания будет выбран нулевой столбец, все равно предполагается новая строка, и нижние строки на экране будут испорчены. Для решения этой пробле-мы используется прокрутка экрана. Ранее код 06 использовался для очистки экрана. В текстовом режиме установка в регистре AL значе-ния 00 приводит к полной прокрутке вверх всего экрана, очищая его пробелами. Установка ненулевого значения в регистре AL определяет количество строк прокрутки экрана вверх. Верхние строки уходят с экрана, а чистые строки вводятся снизу. Следующие команды выпол-няют прокрутку всего экрана на одну строку:
MOV AX,0601H ; Прокрутить на одну строку вверх
MOV BH,07 ; Атрибут: нормальный, черно-белый
MOV CX,0000 ; Координаты от 00,00
MOV DX,184FH ; до 24,79 (полный экран)
Int 10h ; Вызвать bios
Для прокрутки любого количества строк необходимо установить соответствующее значение в регистре AL. Регистр BH содержит атри-бут для нормального или инвертированного отображения, мигания, установки цвета и т.д. Значения в регистрах CX и DX позволяют про-кручивать любую часть экрана.
AH=07: Прокрутка экрана вниз. Для текстового режима прокрутка экрана вниз обозначает удаление нижних строк и вставку чистых строк сверху. Регистр AH должен содержать 07, значения остальных регист-pов выбираются такими же, как и для прокрутки вверх при использо-вании функции 06.
Установка курсора
Экран можно представить в виде двумерного пространства с адре-суемыми позициями, в любую из которых может быть установлен курсор. Обычный видеомонитор имеет 25 строк (нумеруемых от 0 до 24) и 80 столбцов (нумеруемых от 0 до 79). В табл.1 приведены некото-рые примеры положений курсора на экране. Используя команду
INT 10H, проводят установку курсора в любую позицию экрана.
Пример установки курсора на 5-ю строку и12-й столбец:
MOV AH,02 ;Запрос на установку курсора
MOV BH,00 ;Экран 0
MOV DH,05 ;Строка 05
MOV DL,12 ;Столбец 12
INT 10H ; Передача управления в BIOS
Значение 02 в регистре AH указывает команде INT 10H на выполне-ние операции установки курсора. Значения строки и столбца должны быть в регистре DX, а номер экрана (или страницы) в регистре BH (обычно 0). Содержимое других регистров несущественно. Для установ-ки строки и столбца можно также использовать одну команду MOV DX, определяя сразу значения координат по строке и по столбцу:
MOV DX,050CH ;Строка 5, столбец 12.
Таблица 1