Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Функция 0CH. Функция 0DH. MOV CX, 200  ; x = 200. Функция 0FH. Прерывание BIOS 13H. Функция 00H. JC Error. MOV BH, 0                ; видеостраница 0




Функция 0CH

Назначение: вывод точки на экран в графическом режиме. Координата X точки заносится в регистр CX, координата Y – в регистр DX. В регистр AL заносится цвет точки, а в регистр BH – номер видеостраницы (обычно 0). Цвет точки представляет собой число от 0 до максимального количества цветов минус 1. Эта функция также является очень медленной и вместо нее рекомендуется использовать прямую запись в видеопамять.

Пример использования функции 0CH:

MOV AH, 0CH

MOV CX, 200                    ; x = 200

MOV DX, 100                   ; y = 100

MOV AL, 1               ; цвет = 1

MOV BH, 0               ; видеостраница 0

INT 10H

 

Функция 0DH

Назначение: возвращает цвет точки экрана в графическом режиме. Координаты X и Y точки заносятся в регистры CX и DX соответственно. В регистр BH заносится номер видеостраницы. Цвет точки возвращается в регистре AL. Эта функция также является очень медленной и вместо нее рекомендуется использовать чтение напрямую из видеопамяти.

Пример использования функции 0CH:

MOV CX, 200                    ; x = 200

MOV DX, 100                   ; y = 100

MOV BH, 0               ; видеостраница 0

INT 10H

 

Функция 0FH

Назначение: возвращает информацию о текущем видеорежиме. В регистре AL возвращается номер видеорежима, в регистре AH – количество символов в строке, в регистре BH – текущая видеостраница.

Пример использования функции 0FH:

MOV AH, 0FH

INT 10H

 

Прерывание BIOS 13H

Прерывание BIOS 13H – это низкоуровневые функции дискового ввода-вывода (чтение и запись секторов, форматирование дорожек и т. д. ). Эти функции можно использовать для доступа к диску при невозможности обращения к нему стандартными средствами DOS. Например, диск может иметь несовместимую с DOS файловую систему или нестандартный формат.

Функция 00H

Назначение: сброс контроллера дисковода и жесткого диска. Функция может использоваться после возникновения какой-либо критической ошибки, перед повтором неудавшейся дисковой операции. Функция устанавливает головку 0 на дорожку 0 для всех дисководов и жестких дисков. Если функция выполнилась успешно, флаг CF сброшен, если нет, то флаг CF устанавливается и в регистр AH заносится код ошибки BIOS (см. табл. 8. 8).

Пример использования функции 00H:

MOV AH, 00H

INT 10H

JC Error

. . .                      ; ошибки не произошло

Error:

. . .                      ; произошла ошибка

 

Функция 02H

Назначение: чтение секторов. Для выполнения функции требуется:

1. В регистр AL занести количество считываемых секторов;

2. В регистр CH записать номер дорожки (от 0 и выше);

3. В регистр CL записать номер сектора (от 1 и выше);

4. В регистр DL записать номер физического устройства (от 0 до 3 для дисководов и от 80H до 81H для жестких дисков);

5. В регистр DH записать номер головки;

6. В регистровую пару ES: BX записать адрес (сегмент: смещение) буфера, в который будут записаны считанные сектора (сектор имеет размер 512 байт).

Два старших бита регистра CL используются для чтения секторов жестких дисков с более чем 256 дорожками. В этом случае номер дорожки записывается в регистр CH, а два старших бита номера дорожки записываются в два старших бита регистра CL.

Следует отметить, что функция 02H используется, в основном, для старых моделей жестких дисков. Новые модели жестких дисков имеют другую адресацию (не в формате дорожка: головка: сектор) и при помощи функции 02H не удастся считать все секторы такого жесткого диска. Для дисководов использование функции 02H всегда корректно.

При считывании нескольких секторов функция 02H прекращает работу, если достигнут конец дорожки. Для жестких дисков при достижении конца дорожки автоматически сменяется головка или, если достигнут максимальный номер головки, сменяется дорожка.

При успешном выполнении функции, флаг CF сбрасывается, в противном случае флаг CF устанавливается и в регистр AH заносится код ошибки.

Пример использования функции 02H:

BUF DB 512 DUP (? ); буфер для чтения сектора

. . .

MOV AH, 02H

MOV AL, 1               ; чтение одного сектора

MOV CH, 0               ; дорожка 0

MOV CL, 1               ; сектор 1

MOV DL, 0               ; дисковод A

MOV DH, 0              ; головка 0

MOV ES, SEG BUF          ; настройка ES: BX

MOV BX, OFFSET BUF  ; на буфер BUF

INT 10H

JC Error

. . .                               ; ошибки не произошло

Error:

. . .                               ; произошла ошибка

 

Функция 03H

Назначение: запись секторов. Функция 03H имеет такие же параметры, как и функция 02H. Регистровая пара ES: BX указывает на буфер, из которого будут записываться сектора на диск.

Пример функции 03H рассмотрен не будет, так как его выполнение может повлечь за собой порчу данных на диске.

 

Функция 04H

Назначение: форматирование дорожек. Функция позволяет отформатировать дорожку, номер которой записывается в регистр CX. В регистр DL записывается номер физического устройства (от 0 до 3 для дисководов и от 80H до 81H для жестких дисков), а в регистр DH – номер головки. Регистровая пара ES: BX содержит адрес (сегмент: смещение) блока информации, необходимой для форматирования дорожки. Эта информация различна для дисководов и для жестких дисков и здесь рассматриваться не будет.

 

Прерывание BIOS 16H

Прерывание BIOS 16H – это функции ввода с клавиатуры и управления контроллером и буфером клавиатуры.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...