Обработка прерываний в MS DOS.

Вывод на экран в консольном приложении.

Прямая работа с видео памятью.

Функции видео BIOS.

Видео страницы (дисплейные страницы).

В текстовом режиме размер видеобуфера > размера 1 экрана.

80х25 4кбайта 4 страницы.

40х25 2кбайта 8 страниц.

Поэтому в функциях видеобиос надо указать на какой странице находится выход.

 

Представить ч/з прерывание INT 10h.

AH=0 (№ фун-ии) установить видео режим.

В AL=№ режима.

0,1-16 цвет.текст 40х25.

2,3-16 цвет.текст 80х25.

В современных ПК поддерживается текстовый режимы VESA BIOS Extention, то АН=4FH, AL=02h.

№ видеорежима задается в рг ВХ. ВХ=№ режима.

108h 80x60.

109h 132x25.

10Ah 132x43.

10Bh 132x50.

10Ch 132x60.

Другие полезные функции:

АН=2-установить позицию курсора.

ВН-страница

DН-строка.

ВL-столбец.

АН=3 – получить позицию курсора.

АН=5 – установить активную видеостраницу, т.е. ту страницу, которая отображается на экране.

AL=номер страницы.

Вывести символ в текущую позицию курсора:

1. AH=09h – с атрибутом=BL.

2. AH=0Ah – без атрибута (BL не найден).

3. AH=0Eh – в режиме телетайпа.

AL=символ. BH=страница.

В рг СХ для 1,2 записывается кол-во повторений символа.

Для 1,2 курсор не перемещается!

AH=0Fh – получить видео режим.

Выход: AL-видеорежим.

ВН-актив.видео страница.

АН-число столбцов символов на экране.

AH=11h – загрузка шрифтов.

AL=00h.

 

Для текстов видео режимов, кроме 7, видео память распологается в области начиная с адреса 0В800h:0000h. Поэтому в MS DOS любая программа может выводить на экран простой командой пересылки данных не прибегая к функциям DOS и BIOS.

На ПК обычно бывает 0 видеостран., т.е. сегмент В800 соответствует левой верхней точке экрана. Номерование столбцов идет слева направо, сверху вниз.

 

WriteConsoleA – вывод начинается с текущей позиции курсора с текущего атрибута.

SetConsoleCursorPosition – установить курсор на задан.позицию.

SetConsoleTextAttribute – установить атрибут для текста.

 

Собственный обработчик прерываний среды MS DOS пишется в след.случаях:

1. чтобы заменить стандартный обработчик (в особых случаях ошибок при выполнении программы) – деление на 0.

2. чтобы заменить стандартный обработчик MS DOS для опред.ситуаций – обработ.по Ctrl+c.

3. чтобы связать свой обработчик прерывания со стандартным обраб. и выполнить, как системный, так и собственный – прерывание от таймера.

4. чтобы обеспечить связь программы, которая остает.резидентной после завершения с другими прикладными программ.

5. чтобы обслужить прерывание не поддерживаясь стандарт.драйверами устр. MS DOS.

Для установки корректных обраб.прерываний. чтобы они не вступали в конфликт с другими, MS DOS пред-ет спец.средства – ч/з прерывание int 21h.

25h – устан.собствен.обработчик прер-я.

35h – получить указ-ль прер-я, известный системе в настоящ.время

31h – завершение программ.и остав.резидент-й.

Int 27h - завершение программ.и остав.резидентй.

Проблемы, возникающие при установке программы в резидент:

1. надо сохранить адрес старшего обработ.прер-ий.

2. проверить не находится ли наша программа в резиденте.

3. установить новые адреса обработ.прерываний.

Для определения наличия программы в памяти используются след.способы:

1. применение незадействен.прерывания или несуществен.ф-ии какого-либо прерывания.

2. с помощью мультиплексного прерывания INT 2FH, которая предназначена для взаимодействия DOS с резидент.програм.

3. применеие спецификации AMIS-альтер.спец.мультипл.прер-я – ч/з прер-е INT 20h.