Функция 2AH. Функция 2BH. MOV DL, 13 ; 13-е число. Функция 2СH. MOV AH, 2CH. Функция 2DH. 11.8 Прерывания BIOS. Прерывание BIOS 10H
Функция 2AH Назначение: получение текущей даты DOS. Функция возвращает следующие значения: · в регистре CX – текущий год (от 1980 до 2099); · в регистре DH – месяц (от 1 до 12); · в регистре DL – день месяца (от 1 до 31) · в регистре AL – день недели (0 – воскресенье, 1 – понедельник, 2 – вторник и т. д. ) Пример использования функции 2AH: MOV AH, 2AH INT 21H DOS версии 2. X не гарантирует возвращение в регистре AL дня недели. Другие версии DOS гарантируют это. В DOS до версии 2. 1 есть проблемы с возвращением даты.
Функция 2BH Назначение: установка текущей даты DOS. Значение даты заносится в регистры CX, DX и AL в соответствии с тем, как эти значения возвращает функция 2AH. Функция 2BH возвращает в регистре AL значение 0, если устанавливаемая дата корректна и 0FFH в противном случае. Пример использования функции 2BH: MOV CX, 2001 ; 2001 г. MOV DH, 8 ; август MOV DL, 13 ; 13-е число MOV AL, 1 ; понедельник MOV AH, 2BH INT 21H
Функция 2СH Назначение: получение текущего времени DOS. Функция возвращает следующие значения: 1. В регистре CH – часы (от 0 до 23); 2. В регистре CL – минуты (от 0 до 59); 3. В регистре DH – секунды (от 0 до 59); 4. В регистре DL – сотые доли секунды (от 0 до 99). Пример использования функции 2CH: MOV AH, 2CH INT 21H Значение времени DOS обновляется с приходом каждого прерывания от таймера примерно 18. 2 раза в секунду. Поэтому точность значения сотых долей секунд невелика.
Функция 2DH Назначение: установка текущего времени DOS. Значение времени заносится в регистры CX и DX в соответствии с тем, как эти значения возвращает функция 2CH. Функция 2DH возвращает в регистре AL значение 0, если устанавливаемое время корректно и 0FFH в противном случае.
Пример использования функции 2DH: MOV CH, 18 ; 18 часов MOV CL, 35 ; 35 минут MOV DH, 41 ; 41 секунда MOV DL, 0 ; 0 сотых MOV AH, 2BH INT 21H
11. 8 Прерывания BIOS Прерывания BIOS 10H, 13H, и 16H выполняют различные низкоуровневые функции по работе с аппаратурой (клавиатура, экран, жесткий диск). Эти функции могут вызываться из обработчиков аппаратных прерываний. Каждое прерывание BIOS, как и прерывание DOS 21H, имеет несколько функций. Номер функции также заносится в регистр AH. Далее будут рассмотрены функции различных прерываний BIOS. Прерывание BIOS 10H Прерывание BIOS 10H – это различные функции по работе с экраном и видеоадаптером. В состав прерывания 10H входит очень большое число функций и подфункций. Далее рассмотрены наиболее часто используемые функции.
Функция 00H Назначение: установка видеорежима. Номер видеорежима заносится в регистр AL. Функция устанавливает выбранный видеорежим и очищает видеопамять. Если очищать видеопамять не требуется, старший бит регистра AL нужно установить в 1. В табл. 21 представлены стандартные текстовые видеорежимы и графические видеорежимы адаптеров CGA, EGA и VGA.
Таблица 21 Видеорежимы CGA, EGA и VGA
Пример использования функции 00H: MOV AH, 00H MOV AL, 13H ; режим 320x200 256 цветов INT 10H
Функция 02H Назначение: установка позиции курсора. Для выполнения функции регистр BH должен содержать номер видеостраницы (начиная с 0), регистр DH – координату Y курсора (начиная с 0) (строка) и регистр DL – координату X (начиная с 0) (столбец) курсора. Позиция (0, 0) – это верхний левый угол экрана. Позиция (79, 24) – это нижний правый угол экрана для видеорежима 80x25. При помощи функции 02H можно установить позицию курсора отдельно для каждой видеостраницы (обычно используется видеостраница 0). Для того чтобы скрыть курсор, нужно задать координату Y, выходящую за максимально возможную для текущего видеорежима, как показано в следующем примере:
MOV AH, 02H MOV DL, 0 MOV DH, 26 ; установка курсора на 26-ю строку INT 10H
Функция 03H Назначение: получение текущей позиции курсора (строка и столбец). Текущая строка возвращается в регистре DH, а текущий столбец – в регистре DL. Пример использования функции 03H: MOV AH, 03H INT 21H
Функция 08H Назначение: чтение символа и его атрибута в текущей позиции курсора. Функция возвращает в регистре AL ASCII код символа, находящегося в текущей позиции курсора, а также его атрибут в регистре BH. Атрибут символа представляет собой 8-битное значение, младшие 4 бита – это цвет символа, а старшие 4 бита – цвет фона. Функция 08H для большинства применений работает слишком медленно, поэтому вместо нее рекомендуется использовать чтение напрямую из видеопамяти. Пример использования функции 08H: MOV AH, 08H INT 10H
Функция 09H Назначение: вывод в текущую позицию курсора нескольких символов с заданными атрибутами. ASCII код символа заносится в регистр AL, атрибут – в регистр BL. В регистр BH заносится номер видеостраницы (обычно 0) а в регистр CX – число повторений символа. Эта функция не изменяет текущей позиции курсора. Функция 09H для большинства приложений также работает слишком медленно, поэтому вместо нее рекомендуется использовать запись напрямую в видеопамять. Пример использования функции 09H: MOV AH, 09H MOV AL, ‘0’ MOV BH, 0 MOV BL, 1FH; белый текст на синем фоне MOV CX, 10 ; символ будет выведен на экран 10 раз INT 10H
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|