Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Функции BIOS -

INT 15H обрабатывает специфические функции AT

ПодФнк: 00H Cass motor ON    80H Device Open        86H Wait
        01H Cass motor OFF   81H Device Close       87H Move Extended Mem Block
        02H Read cassette    82H Program terminate  88H Get Extended Mem Size
        03H Write cassette   83H Event wait         89H Switch to Virtual Mode
                             84H Joystick           90H Device Busy Loop
                             85H SysReq key         91H Finish Interrupt
замечание: Кассетные подфункции опущены для краткости (мне не нужны, а вам?)
AH  сервис
--- ----------------------------------------------------------------------------
80H открыть устр. возвращает, ничего не делая. См. подфункции 90H и 91H.
     вход: BX = ID устройства; CX = ID процесса
--- ----------------------------------------------------------------------------
81H Закрыть устр. возвращает, ничего не делая. См. подфункции 90H и 91H.
     вход: BX = ID устройства; CX = ID процесса
--- ----------------------------------------------------------------------------
82H завершить программу устройства. Ничего не делает. См. 90H и 91H.
     вход: BX = ID устройства
--- ----------------------------------------------------------------------------
83H Ждать события. Запустить таймер и установить флаг по истечении интервала.
     вход: AL = код подфункции:
           AL = 0: уст. интервал (и запустить таймер)
                   ES:BX = адрес пользовательского байта. бит 7 в этом байте
                           будет включен по истечении интервала.
                   CX,DX = длина интервала в микросекундах (CX - старшая часть)
           AL = 1: отменить ожидание события.
--- ----------------------------------------------------------------------------
84H Обеспечение джойстика.
     вход: DX = код подфункции:
           DX = 0: читать текущие переключатели
                   возврат: AL = значения переключателей (биты 7-4)
           DX = 1: читать входы X,Y джойстика
                   возврат: AX = джойстик 'A', значение X (горизонталь)
                            AX = джойстик 'A', значение Y (вертикаль)
                            AX = джойстик 'B', значение X (горизонталь)
                            AX = джойстик 'B', значение Y (вертикаль)
--- ----------------------------------------------------------------------------
85H клавиша SysReq. Эта функция ничего не делает. вызывается прерыванием
     INT 09H при нажатии и отпускании клавиши SysReq. Идея состоит в том, чтобы
     операционная система перехватывала INT 15H и выдавала подфункцию 85H,
     чтобы отслеживать состояние (нажата или отпущена) клавиши SysReq.
     вход: AL = 0: SysReq нажата ('make')
           AL = 1: SysReq отпущена ('break')
--- ----------------------------------------------------------------------------
86H Ждать. Циклит с разрешенными прерываниями до истечения интервала времени.
     вход: CX,DX = сколько микросекунд ждать до возврата к пользователю
--- ----------------------------------------------------------------------------
87H Переслать блок extended-памяти. перемещает блок памяти в extended-память и
     из нее (RAM выше 1 мегабайта на компьютерах  ¦286¦ ).
     вход: ES:SI => таблица глобальных дескрипторов (GDT) - см. ниже.
           CX = счетчик пересылаемых 16-битовых слов (максимум = 8000H = 32K)
    выход: Carry-флаг = 1 при ошибке.
           AH = 0 нет ошибки        AH = 2 прерывание по исключению
           AH = 1 ош. четности RAM  AH = 3 gate address line 20 failure
           структура GDT для подфункции 87H
             ES:[SI]+00H  Фиктивный дескриптор          (обнуляет пользователь)
             ES:[SI]+08H  дескриптор этой GDT           (обнуляет пользователь)
             ES:[SI]+10H  дескриптор блока источника    (см. ниже)
             ES:[SI]+18H  дескриптор блока назначения   (см. ниже)
             ES:[SI]+20H  кодовый сегмент для BIOS      (обнуляет пользователь)
             ES:[SI]+28H  стековый сегмент для BIOS     (обнуляет пользователь)
             ;---------- пример GDT для INT 15H, подфункции 87H
             INT_15_GDT  label byte
                         DB  8 dup(0)      ;фиктивный
                         DB  8 dup(0)      ;эта GDT
                         DW  0             ;source block "limit" value
             SRC_LO      DW  ?             ;24-битовый адрес
             SRC_HI      DB  ?
                         DB  93H           ;права доступа (read/write data seg)
                         DW  0             ;резерв
                         DW  0             ;target block "limit" value
             DEST_LO     DW  ?             ;24-битовый адрес
             DEST_HI     DB  ?
                         DB  93H           ;права доступа (read/write data seg)
                         DW  0             ;резерв
                         DB  8 dup(0)      ;code segment setup by BIOS
                         DB  8 dup(0)      ;stack segment setup by BIOS
             ;---------- конец примерной GDT
замечание: прерывания запрещаются в процессе перемещения данных, так что, если
           вы запускаете пачку конкурирующих процессов асинхронной передачи,
           избегайте перемещения больших объемов данных.   См. VDISK.SYS
--- ----------------------------------------------------------------------------
88H дать размер extended-памяти.
    выход: AX = число непрерывных 1K блоков сверх 1M (1024K)
--- ----------------------------------------------------------------------------
89H Войти в режим Protected (286 Virtual memory). это хитрая штука, если вы не
    знаете, что делаете. Лучше изучите эту функцию по листингу BIOS.
     вход: ES:SI => 8-элементная таблица глобальных дексрипторов (GDT) (ниже)
           BH = смещение в IDT начала первых 8 аппаратных прерываний
           BL = смещение в IDT начала вторых 8 аппаратных прерываний
    выход: AH = 0, если не было ошибок
           все сегментные регистры изменяются. AX и BP теряются.
           80286 входит в режим Protected без прямого выхода в режим Real.
           структура GDT для подфункции 89H
             ES:[SI]+00H  фиктивный дескриптор     (обнуляет пользователь)
             ES:[SI]+08H  дескриптор этой GDT      (инициализирует пользователь)
             ES:[SI]+10H  дескриптор для IDT       (инициализирует пользователь)
             ES:[SI]+18H  дескриптор для caller DS (инициализирует пользователь)
             ES:[SI]+20H  дескриптор для caller ES (инициализирует пользователь)
             ES:[SI]+28H  дескриптор для caller SS (инициализирует пользователь)
             ES:[SI]+30H  дескриптор для caller CS (инициализирует пользователь)
             ES:[SI]+38H  временный BIOS CS        (обнуляет пользователь)
--- ----------------------------------------------------------------------------
90H Цикл занятости устройства. Ничего не делает. Я полагаю, что, если ваши
     инициалы - MS или DR, вы можете перехватывать эту функцию и заставить
     ее что-то делать.
     вход: AL = код типа устройства
                00H = твердый диск
                01H = дискета
                02H = клавиатура
                80H = сеть
                      ES:BX => управляющий блок сети
                fdH = запуск мотора дискеты
                feH = принтер
--- ----------------------------------------------------------------------------
91H завершить прерывание. Ничего не делает. Идея здесь - предоставить механизм
     для обработчика устройства, чтобы проверять занятость устройства. когда
     обработчик завершил обработку запроса, он может использовать эту функцию,
     чтобы дать знать системе, что устройство свободно.
     вход: AL = код типа устройства (см. подфункцию 90H)
           AL = 00H - 7fH: последовательно используемые устройства
           AL = 80H - bfH: реентерабельные устройства (ES:BX => пакет данных)

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог