Процедуры. Знакомство с некоторыми функциями 10 прерывания BIOS.


ПРЕРЫВАНИЯ ДЛЯ СЛУЖБ ROM BIOS
Двенадцать прерываний ROM BIOS распадаются на пять групп:
— 10Н, 13Н, 14Н, 15Н, 16Н, 17Н прерывания обслуживают конкрет-ные перефирийные устройства;
— 11Н, 12Н прерывания сообщают о конфигурации компьютера;
— 1АН работает с часами времени-даты;
— 5Н прерывание выполняет функцию печати экрана;
— 18Н, 19Н специальные службы.
Прерывание INT 10H обеспечивает управление всем экраном. В регистр АН устанавливается код, определяющий функцию прерывания. Команда сохраняет содержимое регистров ВХ, СХ, DX, SI, BP.
Основные функции видеослужбы ROM BIOS
00Н — установит видеорежим;
01Н — установить размер курсора;
02Н — установить положение курсора;
03Н — прочитать положение курсора;
06Н — прокрутить страницу вверх;
07Н — прокрутить страницу вниз;
08Н — прочитать знак и аттрибут;
09Н — записать знак и аттрибут;
0АН — записать знак;
13Н — записать строку символов.

Ознакомиться с возможными функциями 10 прерывания и их ис-пользованием можно по «Электронному справочнику». Для этого за-пустить программу help.exe в каталоге ASM, выбрать пункт в меню «Указатель функций DOS/BIOS», выбрать <прерывания и сервис ROM-BIOS>, <INT 10H Видео сервис>, <детали видеосервиса>.
Данный материал поможет разобраться с работой предлагаемой программы, которая запрашивает пароль и отображает его в шифро-ванном виде при вводе с клавиатуры. Если пароль введен верно, на экране появляется сообщение «Вы правы !».
ВЫПОЛНЕНИЕ РАБОТЫ:
1. Скопируйте предложенную программу в отдельный файл.
2. Ассемблируйте.
3. Вызовите TurboDebugger.
4. Выполните программу в пошаговом режиме.
5. Изучите функции 10Н прерывания и их использование.
5. Выполните индивидуальное задание. При выполнении обращай-тесь к электронному справочнику по IBM PC.
title Демонстрация 10 прерывания BIOS (com)
;———————————————
codesg segment para ‘code’
assume cs:codesg, ds:codesg, ss:codesg, es:codesg
org 100h
begin: jmp main
main proc near
call clear_scrin
; установка палитры
mov ah, 0bh
; цвет фона
mov bh, 09
mov bl, 10
; вывод сообщения на экран
mov row,09
mov col,10
lea bp, [message]; адрес строки
mov cx, 17 ;длина строки
call write_string
;Cмещение курсора на конец выведеного сообщения
add col, 18
lea si, cout
wr:
; Установка позиции курсора
mov ah, 02h
mov bh, 00
mov dl, col
int 10h
;ожидание ввода с клавиатуры без эхоотображения
mov ah, 00h
int 16h
cmp al, 0dh
je wr1
; Введенный символ из al записывается в строку cout
mov [si], al
inc si
; выводится на экран в текущую позицию курсора символ ‘*’
mov ah, 09
mov al, ‘*’
mov bh, 00
mov cx, 1
int 10h
inc col
inc coun
cmp coun, 7
jne wr
wr1: lea si, parol
mov ah, [si]
lea bp, [cout]
mov al, [bp]
cmp ah, al
jne q
cmp cl, coun
je wr2
inc si
inc bp
inc cl
jmp wr1
q: ret
wr2: call ok
main endp
ok proc near
call clear_scrin
lea bp,[mess] ;адрес строки
mov cl, 9
call write_string
ret
ok endp
clear_scrin proc near
; Очистка экрана
mov ax, 0600h ; ah=06-прокрутка экрана
; al=00-весь экран
mov bh, 07
mov cx, 0000
mov dx, 184fh
int 10h
ret
clear_scrin endp
write_string proc near
mov ah, 13h ; функция вывода на экран
mov al, 1
mov bh, 00 ; номер видео страницы
mov bl, 12
mov dh, 6 ;координаты по строке
mov dl, 6 ;координаты по столбцу
int 10h
ret
write_string endp
message db ‘Введите сообщение ‘
mess db ‘Вы правы!’
row db 00
col db 00
cout db 6 dup (‘ ‘)
parol db ‘привет’
coun db 01
codesg ends
end begin
ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ
1.8. Оформите ввод пароля в окне. Для рисования рамки используй-те коды символов:
DA — Верхний левый угол
BF — Верхний правый угол
C0 — Нижний левый угол
D9 — Нижний правый угол
C4 — Горизонтальная линия
B3 — Вертикальная линия
2.9. Дополните программу: ввод пароля пока не будет введено пра-вильное слово. При каждом неверном вводе выводите сообщение об этом.
3.10. Дополните программу: вводите пароль 3 раза, каждый раз пос-ле ввода отображайте введенное слово и сообщайте верно или невер-но введен пароль. Затем выход в DOS.
4.11. Дополните программу: измените цвет выводимых на экран сим-волов и при неверном вводе пароля в правом верхнем углу выводите сообщение «Ха-ха, Вы ошиблись !!!».
5.12. Дополните программу: ввод пароля пока не будет введено пра-вильное слово. В случае неверного ввода ошибочный пароль появ-ляется на экране и мигает.
6.13. Дополните программу: оформите вывод приглашения и ввод па-роля в окне. При верном вводе пароля он появляется на экране че-рез временную задержку разного цвета. Для этого используйте вы-вод разных видеостраниц.
7.14. Выведите любое сообщение в 10 строке экрана. Используя скролинг, переместите строку на самую верхнюю строку экрана че-рез одну строку, затирая предыдущую, а затем на самую нижнюю. Для замедления вывода используйте временную задержку. Изменяйте цвет выводимой строки.
ВОПРОСЫ К ЗАЩИТЕ ЛАБОРАТОРНОЙ РАБОТЫ
1. Уметь объяснить работу указанной части предложенной для изуче-ния программы.
2. Объяснить алгоритм работы программы индивидуального задания и используемые функции 10Н прерывания.
3. Определение и назначение процедуры в программе.
4. Дальний и ближний вызов и возврат из процедуры.
5. Передача параметров в процедуру.
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ:
1. Абель П. «Язык Ассемблера для IBM PC и программирования» М.: Высшая школа, 1992г. — 447 c.
2. Джордейн Р. «Справочник программиста персональных ком-пьютеров типа IBM PC, XT и AT» М.: Финансы и статистика, 1992г. — 544 с.
3. П.Нортон, Р.Уилтон «IBM PC и PS/2. Руководство по прог-раммированию» М.: Радио и связь, 1994г. — 336 с.
4. Г.В.Майко «Ассемблер для IBM PC» Одесса, 1996г.

Ст. препод.
кафедры ПОВТ И.А.Васюткина

Загрузка...