Прерывания dos и bios


Содержание

Прерывание BIOS

INT 13H: Дисковый ввод-вывод

Этот сервис предоставляет прямой доступ к адаптерам дискеты и твердого диска.

Рекомендуется там, где это возможно, использовать INT 25H и INT 26H (INT 25H/26H – прямая дисковая операция чтения/записи:

INT 25H читает секторы

INT 26H записывает секторы), чтобы предоставить драйверам устройств DOS выполнять всю низкоуровневую обработку. Разумеется, для таких операций, как форматирование диска или установка защиты от копирования, прерывание INT 13H может оказаться единственной альтернативой.

(Подфункции > 8 — только для твердых дисков)

00H сброс контроллера 0aH длинное чтение

01H дать статус 0bH длинная запись

02H читать секторы 0cH искать цилиндр

03H писать секторы 0dH альтернативный сброс

05H форматировать дорожку

08H дать параметры диска

09H инициализировать параметры диска

10H проверить готовность

15H дать тип диска

16H изменить статус

17H установить тип диска

00H Сброс устройства. Вызывает рекалибрацию контроллера.

Если DL равен 80H или 81H, выполнен сброс контроллера твердого диска.

01H Дать статус ошибки последней операции.

Вход: DL = диск. DL 7FH = твердый диск

Выход: AL содержит код ошибки диска (то же, что значение по адресу 0:0441)

02H Читать секторы

Вход: DL = номер диска (0=диск A. ;80H=твердый диск 0;81H=твердый диск 1)

DH = номер головки чтения/записи

CH = номер дорожки (цилиндра)(0-n) ◄╗

CL = номер сектора (1-n) ◄══════╩═ См. замечание ниже.

AL = число секторов (в сумме не больше чем один цилиндр)

ES:BX => адрес буфера вызывающей программы

0:0078 => Таблица параметров дискеты (для гибких дисков)

0:0104 => Таблица параметров твердого диска (для твердых дисков)

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

ES:BX буфер содержит данные, прочитанные с диска

Замечание: на сектор и цилиндр отводится соответственно 6 и 10 бит:

CX: ║c c c c c c c c C c S s s s s s║

╚═╩═══► исп. как старшие биты номера цилиндра

03H Писать секторы

Вход: (аналогично подфункции 02H)

ES:BX => данные, записываемые на диск.

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

04H Проверить секторы. Проверяет CRC для указанных секторов на ошибки.

Вход: (аналогично подфункция 02H. ES:BX лучше также предоставить)

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

05H Форматировать дорожку. Данные на дорожке, если есть, разрушаются.

Вход: DL,DH,CH = диск, головка, дорожка (см. подф. 02H)

ES:BX => дескрипторы секторов (требуется 512-байтовый буфер)

дискета: 1 4-байтовый ‘CHNS’ (Цилиндр, Головка, N сектора, Размер) для каждого сектора на дорожке (т.е. 36 байт для 9-секторных дорожек); номера секторов д.б. упорядочены.

‘Z’ — код размера сектора: 0=128; 1=256; 2=512; 3=1024

_AT_ Твердый диск: 1 2-байтовый ‘FN’ (Флаг, N сектора) для каждого сектора на дорожке. Последовательность полей ‘N’ определяет «коэффициент прослаивания» («interleave factor»).

_XT_ Твердый диск: ES:BX не используется. Вместо этого AL содержит значение «прослаивания» между 1 и 16 (10H).

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

(твердый диск: ‘F’-поля установлены в 80H, чтобы пометить плохие секторы)

08H _AT_ _XT_ Дать параметры диска. Возвращает информацию об устройстве.

Выход: DL = число тв. дисков на первом контроллере

DH = максимальный номер головки

CH = максимальный номер цилиндра (младшие 8 бит)

CL = максим. номер сектора (и старшие биты макс. номера цилиндра)

09H _AT_ Инициализировать параметры диска. Сообщает BIOS о любом динамическом изменении таблиц параметров устройства.

Вход: Векторы для INT 41H и INT 46H адресуют Табл. параметров тв. диска соответственно для устройств 0 и 1.

Замечание: _XT_ должен указывать обе таблицы через вектор INT 40H.

0aH _AT_ _XT_ Чтение длинное: 512 байт + 4-байтоый ECC (код коррекции ошибок).

Вход: (как для подф. 02H)

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

ES:BX => в буфере (данные сектора + 4 байта) * число секторов (из AL)

0bH _AT_ _XT_ Запись длинная. Пишет 512 байт + 4-байтовый ECC.

Вход: (как для подф. 02H)

ES:BX => буфер содержит данные сектора + 4 байта на каждый сектор

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

0cH _AT_ _XT_ Искать цилиндр. Перемещает головку к нужной дорожке.

Вход: DL,DH,CH = диск, головка, дорожка (см. подф. 02H)

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

0dH _AT_ _XT_ Альтернативный сброс устройства

0eH _AT_ читать буфер секторов

Вход: (как для подф. 02H)

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

0fH _AT_ писать буфер секторов

Вход: (как для подф. 02H)

Выход: Carry-флаг=1 при ошибке и код ошибки диска в AH.

10H _AT_ _XT_ проверить готовность устройства

Выход: код ошибки диска (статус) в AH.

11H _AT_ _XT_ Рекалибровать устройство

Выход: код ошибки диска (статус) в AH.

12H _AT_ Диагностика RAM контроллера

Выход: код ошибки диска (статус) в AH.

13H _AT_ Диагностика устройства

Выход: код ошибки диска (статус) в AH.

14H _AT_ _XT_ Внутренняя диагностика контроллера

Выход: код ошибки диска (статус) в AH.

15H _AT_ Читать тип диска (недоступна в XT BIOS)

Выход: AH = код устройства:

0 = устройство DL отсутствует

1 = дискета; логика замены диска отсутствует

2 = дискета; логика замены диска доступна (большинство случаев)


3 = твердый диск

16H _AT_ Читать статус замены диска

Выход: AH = код статуса:

0 = диск не был заменен

6 = замена активна (открыта дисковая дверь);

DL = номер заменяемого диска

17H _AT_ установить тип дискеты (используется перед операцией форматирования)

Вход: DL = номер устройства диска (0 или 1)

AL = тип носителя диска:

0 = не используется

1 = 360K дискета в 360K устройстве

2 = 360K дискета в 1.2M устройстве

3 = 1.2M дискета в 1.2M устройстве

INT 13H возвращает Carry-флаг (CF=1), если произошла ошибка. При этом в регистр

AH помещается один из приведенных ниже кодов ошибок. Эти же значения могут быть

возвращены при запросе состояния диска (подфункция 00H).

Замечание: при ошибке рекомендуется сброс подфункцией 00H и повторить 3 раза.

00H последняя операция выполнена без ошибок

01H плохая команда: неверный запрос к контроллеру

02H плохая адресная марка

03H защита записи: попытка записи на защищенную дискету

04H ID сектора запорчен или не найден.

05H ошибка сброса — _AT_

09H перекрытие DMA: попытка записи через 64K-байтовую границу.

0bH встретился флаг плохой дорожки — _AT_

10H сбой CRC: несовпадение контрольной суммы данных.

11H данные исправлены; исправимая ошибка; исправлено алгоритмом ECC — _AT_

20H сбой контроллера

40H неудачный поиск. Запрошенная дорожка не найдена

80H Таймаут. Устройство не ответило

0bbH неопределенная ошибка — _AT_

0ffH сбой операции опроса (sense) — _AT_

_AT_ . обозначает IBM AT или совместимый; базируется на 80286 CPU

_XT_ . обозначает XT (обычно ссылается на отличия в BIOS твердого диска)

Прерывания dos и bios

На этом шаге мы познакомимся с типами прерываний.

Все прерывания делятся на две большие группы: BIOS- и DOS -прерывания. Рисунок 1 предыдущего шага как раз иллюстрирует выполнение BIOS -прерывания. Рассмотрим более подробно выполнение DOS -прерываний.

Как было отмечено, при загрузке DOS в памяти компьютера располагаются два файла: IO.SYS (или IBMBIO.COM ) и MSDOS.SYS (или IBMDOS.COM ), которые обеспечивают, в том числе, выполнение DOS -прерываний. Заметим, что так как модули DOS обеспечивают большое количество разных дополнительных проверок, то операции DOS обычно проще в использовании и менее машиннозависимы, чем их BIOS аналоги.

Модуль IO.SYS (IBMBIO.COM) обеспечивает интерфейс с BIOS низкого уровня. Эта программа выполняет управление вводом-выводом при чтении данных из внешних устройств в память и записи из памяти на внешние устройства.

Модуль MSDOS.SYS (IBMDOS.COM) содержит средства управления файлами и ряд сервисных функций, таких как блокирование и деблокирование записей.

Порядок выполнения DOS -прерывания следующий. Когда пользовательская программа выдает запрос на прерывание (например, INT 21H ), то в модуль MSDOS.SYS (IBMDOS.COM) через регистры передается определенная информация. Затем модуль MSDOS.SYS (IBMDOS.COM) транслирует эту информацию в один или несколько вызовов IO.SYS (IBMBIO.COM) , который, в свою очередь, вызывает соответствующую подпрограмму BIOS . Указанные связи приведены на рисунке 1.

Рис.1. Выполнение DOS- (сплошные линии) и BIOS-прерываний (пунктирные линии)

В дальнейшем мы будем пользоваться двумя прерываниями: BIOS INT 10H и DOS INT 21H .

На следующем шаге мы приведем примеры прерываний.

Использование прерываний DOS и BIOS для работы с текстовым экраном

Использование прерываний DOS и BIOS для работы с текстовым экраном.

Краткие теоретические сведения

Прерывание BIOS 10H (обмен данными с дисплеем).

Это прерывание обеспечивает выполнение 16-и операций с дисплеем. Выбор операции производится в зависимости от значения регистра AH. Операции с дисплеем можно разделить на 5 групп:

1. Операции интерфейса

    AH = 00h установка видеорежима AH = 01h установка конфигурации курсора AH = 02h установка позиции курсора AH = 03h получение положения курсора AH = 04h чтение положения светового пера AH = 05h выбор активной страницы AH = 06h прокрутка активной страницы (экрана) вверх AH = 07h прокрутка активной страницы (экрана) вниз

2. Операции обработки символов.

    AH = 08h чтение символа и его атрибута в текущей позиции курсора AH = 09h запись символа и атрибута в текущую позицию курсора AH = 0Ah запись символа в текущую позицию курсора

3. Операции графического интерфейса.

    AH = 0BH задание палитры цветов AH = 0CH изображение точки AH = 0DH чтение точки (позиция, атрибут)

4. Операция вывода в режиме телетайпа — позволяет использовать монитор, как простой терминал (вывод на экран с перемещением курсора)

5. Операция чтения в видеорежиме

AH = 15 0FH получение видеорежима

mov ah,2 ; запрос на установку курсора

mov dh,8 ; номер строки — 8

mov dl,12 ; номер столбца — 12

mov bh,0 ; номер страницы

Для очистки экрана используется прокрутка, т. к. при этой операции появляющиеся на

экране строки заполняются пробелами.

mov ax,0600H |mov ah,6 ; прокрутка вверх

|mov al,0; строки, появляющиеся внизу, заполняются

|пробелами. 0 — все окно заполняется пробелами

mov bh, 3fh ;байт атрибута

mov cx,0000 ¦mov ch,0 — номер строки верхнего левого угла окна

¦mov cl,0; номер столбца верхнего левого угла окна

mov dx,184FH ¦mov dh,18H;номер строки нижнего правого угла окна

¦mov dl,4FH;номер столбца нижнего правого угла |окна

Прерывания dos и bios

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать её на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Социальные сети давно стали неотъемлемой частью нашей жизни. Мы узнаем из них новости, общаемся с друзьями, участвуем в интерактивных клубах по интересам

BIOS прерывания вызова — BIOS interrupt call

BIOS прерывания вызовов представляют собой средство , что операционные системы и прикладные программы используют для вызова объектов Basic Input / Output System на IBM PC совместимых компьютеров. Традиционно вызовы BIOS в основном используется DOS программ и некоторых других программ , таких как загрузчиков ( в том числе, в основном исторически, относительно простое программное приложение , которое загружается непосредственно и работает без системы, особенно игрового программного обеспечения операционной). BIOS работает только в режиме реального адреса (Real Mode) на x86 CPU, так что программы , которые требуют BIOS либо должны также работать в режиме реального времени или должны переключаться из защищенного режима в режим реального времени перед вызовом BIOS , а затем переключиться обратно. По этой причине современные операционные системы , использующие процессор в защищенном режиме , как правило , не используют BIOS для поддержки системных функций, хотя некоторые из них используют BIOS , чтобы исследовать и инициализировать аппаратные ресурсы во время их ранней стадии загрузки .

Во всех компьютерах, программные инструкции управления физическим оборудованием (экран, диск, клавиатура и т.д.) с момента включения питания. В ПК, в BIOS, предварительно загружены в ПЗУ на главной плате, берет на себя управление немедленно после того, как процессор сбрасывается, в том числе во время включения питания или когда кнопка аппаратного сброса нажата. BIOS инициализирует оборудование, находит, загружает и запускает программу загрузки (обычно, но не обязательно, загрузчик ОС), и обеспечивает основное управление аппаратной для операционной системы, работающей на машине, которая, как правило, операционная система, но может быть непосредственно загрузки одного приложения программного обеспечения.

Со стороны IBM, они предоставляют всю информацию , необходимую для использования их BIOS полностью или напрямую использовать аппаратные средства и избежать BIOS полностью, при программировании на ранних моделях IBM PC (до PS / 2). С самого начала, программисты имели выбор с помощью BIOS или нет, на основе каждой аппаратной периферийного устройства. Сегодня BIOS в новом ПК по- прежнему поддерживает большинство, если не все, из вызовов функций прерывания BIOS , определенные IBM для IBM AT (введен в 1984 году), наряду со многими другими более новыми, а также расширения для некоторых оригиналов ( например , расширены диапазоны параметров). Это, в сочетании с аналогичной степенью совместимости аппаратных средств, означает , что большинство программ , написанных для IBM AT все еще может корректно работать на новом ПК сегодня, если предположить , что более высокая скорость исполнения является приемлемым (что типично для всех , кроме игр, использующих процессор на основе времени). Несмотря на значительные ограничения услуг , доступных через прерывания BIOS, они оказались чрезвычайно полезными и долговечными к технологическим изменениям.

содержание

Назначение вызовов BIOS

BIOS прерывание вызовов осуществляют контроль аппаратного или ввод / вывод функцию , запрашиваемую программой, возвращение системы информации в программу, или то и другие. Ключевой элемент с целью BIOS называет это абстракция вызовы BIOS выполняет определенные функции в целом, а также конкретные детали того , как эти функции выполняются на конкретной аппаратной части системы инкапсулируются в BIOS и скрыты от программы. Так, например, программа , которая хочет читать с жесткого диска , не нужно знать , что жесткий диск является ли ATA , SCSI или SATA диск (или в более ранние дни, ESDI диск, или MFM или RLL диск с возможно, Seagate ST-506 контроллер, возможно , один из нескольких Western Digital типов контроллеров, или с другим фирменным контроллером другого бренда). Программа должна только определить номер диска он желает получить доступ и адрес сектора он должен читать или писать, и BIOS будет заботиться о переводе этого общего запроса в определенную последовательность элементарных операций , необходимых для завершения задачи путем конкретного диск аппаратного контроллера , который подключен к этому диску. Программа освобождается от необходимости знать , как управлять на низком уровне каждый тип жесткого диска (или адаптера дисплея или интерфейса порта, или в режиме реального времени часы периферией) , что , возможно , потребуется доступ. Это и делает операционные системы программирования и приложения проще и делает программы меньше, сокращение дублирования программного кода, как функциональность, которая включена в BIOS не должна быть включена в каждой программе , которая нуждается в ней; относительно короткие звонки в BIOS включены там вместо этого. (В операционных системах , где BIOS не используется, звонки услуг , предоставляемые операционной системой сам обычно выполняют ту же функцию и цель.)

Илон Маск рекомендует:  output в HTML

BIOS также освобождает компьютерного оборудования дизайнеров (в той степени , что программы, написанные для использования BIOS исключительно) от будучи стесненными поддерживать точную аппаратную совместимость со старыми системами при разработке новых систем для того, чтобы обеспечить совместимость с существующим программным обеспечением. Например, аппаратная клавиатура на IBM PCjr работает совсем иначе , чем аппаратная клавиатура на более ранних моделях IBM PC, а программу , которые используют клавиатуру только через BIOS, эта разница почти невидима. (Как хороший пример другой стороны этого вопроса, значительная доля компьютерных программ, используемых в то время , когда PCjr был введен не использовать клавиатуру через BIOS исключительно, поэтому IBM также включены аппаратные средства в PCjr подражать способ , оригинальный IBM PC и IBM PC XT аппаратной клавиатуры работает. эмуляции аппаратного обеспечения не является точным, так что не все программы , которые пытаются использовать аппаратные клавиатуры непосредственно будут корректно работать на PCjr, но все программы , которые используют только службу BIOS клавиатуры .)

В дополнении к предоставлению доступа к аппаратным средствам, BIOS обеспечивает дополнительные средства, которые реализованы в программном обеспечении BIOS. Например, в BIOS поддерживает отдельные позиции курсора на срок до восьми страниц текста дисплея и обеспечивает Tty -кака выхода с автоматической оберткой линии и интерпретацией основных управляющими символами , такими как возврат каретки и перевод строки, в то время как аппаратные CGA-совместимый текстовый дисплей имеет только один глобальный курсор и не может автоматически перемещать курсор или интерпретировать управляющие символы.

Вызывающие BIOS: программное обеспечение BIOS прерывания

Операционные системы и другое программное обеспечение взаимодействуют с программным обеспечением BIOS, для того, чтобы контролировать установленное оборудование, с помощью программных прерываний. Прерывание программного обеспечения представляет собой видовое разнообразие общей концепции прерывания. Прерывание представляет собой механизм, с помощью которого процессор может быть направлен, чтобы остановить выполнение программы главной строки и сразу же выполнить специальную программу, называемую процедуру обслуживания прерывания (ISR), вместо этого. После того, как ISR заканчивается, процессор продолжает с основной программой. На x86 процессорах, то ISR для вызова, когда происходит прерывание обнаруживается путем поиска в таблице их адрес (так называемый «векторы прерываний») в памяти. Прерывание вызывается по номеру типа, от 0 до 255; номер типа используется в качестве индекса в таблице; адрес найден в таблице адрес ISR, которая будет запущена в ответ на прерывание. Программное прерывание просто прерывание, которое вызывается командой программного обеспечения; Поэтому, программные прерывания функции как подпрограммы, с основной разницей, что программе, которая делает вызов прерывания программного обеспечения не нужно знать адрес ISR, только его номер прерывания. Это имеет преимущество для модульности, совместимости и гибкости в конфигурации системы.

BIOS прерывание вызовов можно рассматривать как механизм передачи сообщений между BIOS и операционной системой или другим клиентским программным обеспечением BIOS. Сообщения запрос данных или действий с BIOS и вернуть запрошенные данные, информации о состоянии и / или продукт запрашиваемого действия к абоненту. Сообщения разбиты на категории, каждый со своим собственным номером прерывания, и большинство категорий содержат подкатегории, называемые «функции» и идентифицированные «номера функции». Клиент BIOS передает большую часть информации в BIOS в регистрах процессора, и получает большую часть информации обратно тот же путь, но данные слишком велики , чтобы поместиться в регистрах, такие как таблицы параметров управления или данные сектора диска для диска передачи, передаются путем выделения буфера (то есть некоторое пространство) в памяти и передача адреса буфера в регистрах. (Иногда несколько адресов элементов данных в памяти могут быть переданы в структуру данных в памяти, с адресом этой структуры , передаваемой в BIOS в регистрах.) Прерывание номер задается в качестве параметра команды прерывания программного обеспечения (на языке Intel сборки , «INT» команды), и функция номер которого указан в регистре AH; то есть, вызывающий абонент устанавливает регистр AH к числу требуемой функции. В целом услуги BIOS , соответствующие каждый номер прерывания работают независимо друг от друга, но функции в рамках одной службы прерываний обрабатываются одной и той же программой BIOS и не являются независимыми. (Этот последний пункт имеет отношение к реентерабельности .)

Программное обеспечение BIOS, как правило, возвращается к абоненту с кодом ошибки, если не удается, или с кодом состояния и / или в случае успеха запрашиваемых данных. Сами данные могут быть как один бит или больше, 65536 байт целых секторов сырым диска (максимум, который будет вписываться в один сегмент памяти в реальном режиме). BIOS была расширена и улучшена за эти годы много раз многими различными юридическими лицами, и, к сожалению, результатом этой эволюции является то, что не все функции BIOS, которые можно назвать использование согласованных конвенций для форматирования и передачи данных или для отчетности о результатах. Некоторые функции BIOS сообщают подробную информацию о состоянии, в то время как другие не могут даже представить успех или неудачу, но только молча вернуться, оставив вызывающему предположить успех (или испытать на исход какой-то другой путь). Иногда он также может быть трудно определить, является ли определенный вызов функции BIOS поддерживается BIOS на определенном компьютере, или то, что пределы параметров обработки вызовов находятся на этом компьютере.

Из — за прерывания BIOS , вызовы используют процессор на основе регистров передачи параметров, вызовы ориентированы на которые сделаны из ассемблере и не могут быть непосредственно изготовлены из большинства языков высокого уровня (ЯВА). Тем не менее, высокий уровень языка может обеспечить библиотеку обертки подпрограмм , которые переводят параметры из формы (обычно укладывают на основе) , используемый на языке высокого уровня на основе регистров форме , требуемой BIOS, а затем обратно к HLL вызывающей конвенции после того, как В BIOS возвращает. В некоторых вариантах C, вызовы BIOS могут быть выполнены с использованием встроенного ассемблера в модуле C. (Поддержка языка встроенного ассемблера не является частью стандарта ANSI C , но является расширением языка;. Таким образом, модули C, использующие встроенным язык ассемблера менее компактны , чем чистые модули стандарта ANSI C)

Вызов прерывания


Вызов прерывания может быть сделано с помощью INT x86 ассемблера инструкции. Например, чтобы напечатать символ на экране с помощью BIOS прерывания 0x10, могут быть выполнены следующие инструкции языка x86 сборки:

таблица прерываний

Список классов общего BIOS прерывания можно найти ниже. Обратите внимание, что некоторый БИОС (особенно старые) не реализует все эти прерывания классов.

BIOS также использует некоторые прерывания для передачи аппаратных прерываний события к программам, которые решили получить их или направлять сообщения для своих собственных нужд. В приведенном ниже таблице включает в себя только ту BIOS прерывания, которые предназначены для вызова с помощью программ (с использованием «INT» команды прерывания программного обеспечения на языке ассемблера) запрашивать услуги или информацию.

векторное прерывание Описание
05h Выполняется при Shift- экран печати нажата, а также , когда BOUND инструкция обнаруживает связанный отказ.
10h Видео услуги
AH Описание
00h Установить режим видео
01h Установите курсор Shape
02h Установить позицию курсора
03h Получить Cursor положение и форма
04h Получить Light Pen позиции
05h Настройка отображения страницы
06h Очистить / Прокрутка экрана вверх
07h Clear Screen / Прокрутка вниз
08h Read символ и атрибут курсора на
09h Написать символ и атрибут в Cursor
0Ah Написать в Character Cursor
0Bh Установить Цвет рамки
0Ch Написать График Pixel
0Dh Читать График Pixel
0Eh Написать Character в режиме телетайпа
0Fh Получить видеорежим
10h Установка палитры регистрам (EGA, VGA, SVGA)
11h Генератор символов (EGA, VGA, SVGA)
12h Альтернативные Выберите Функции (EGA, VGA, SVGA)
13h Написать строки
1Ah Получить или установить Дисплей кодовой комбинации (VGA, SVGA)
1Bh Получить Функциональность информация (VGA, SVGA)
1Ch Сохранение или восстановление видео государства (VGA, SVGA)
4Fh VESA BIOS Extension функции (SVGA)
11h Возвращает список оборудования
12h Возврат обычной памяти размера
13h Низкий уровень дисков Услуги
AH Описание
00h Сброс дисководы
01h Проверить Drive Status
02h Читать секторы
03h Написать секторы
04h Проверка секторов
05h Формат дорожки
08h Получить параметры привода
09h Init фиксированных параметров привода
0Ch Стремитесь Указанной Track
0Dh Сброс контроллера Fixed Disk
15h Получить Тип привода
16h Получить Дисковод Медиа Изменить статус
17h Установить диск Тип
18h Установить тип дисковода гибких дисков Медиа
41h Extended Disk Drive (EDD) Установка Проверка
42h Расширенные Сектора прочитанных
43h Расширенные записи секторов
44h Расширенная Проверка секторов
45h Блокировка / разблокировка привода
46h Выброс СМИ
47h Расширенное Seek
48h Расширенные параметры Get Drive
49h Расширенный Get Медиа Изменить статус
4Eh Расширенная настройка оборудования Set
14h услуги через последовательный порт
AH Описание
00h Последовательный порт Initialization
01h Передача Character
02h Прием Character
03h Статус
15h Различные системные службы
AH AL Описание
00h Включите кассетные приводной двигатель (IBM PC / только PCjr)
01h Выключите кассетный приводной двигатель (IBM PC / PCjr только)
02h Читайте блоки данных из кассеты (только IBM PC / PCjr)
03h Написать блоки данных на кассету (только IBM PC / PCjr)
4Fh Клавиатура Intercept
83h Подождите события
84h Читайте джойстик (БИОС с 1986 и далее)
85h SysReq Key Выноска
86h Подождите
87h Переместить блок
88h Получить Extended Memory Size
89h Переключение в защищенный режим
C0h Получить параметры системы
C1h Получить расширенный сегмент данных BIOS Area
C2h Указав Функции устройства
C3h только PS / 2 системы — сторожевой таймер Функции
C4h Программируемые опции Select — MCA шины PS 2 только системы /
D8h EISA Функции системы — только системы шин EISA
E8h 01h Получить размер расширенной памяти (новые функции, начиная с 1994 года). Дает результаты для размера памяти выше 64 Мб.
E8h 20h Система запроса Адрес Карта. Информация , возвращаемая E820 заменяет то , что возвращается из старых AX=E801h и AH=88h интерфейсов.
16h услуги клавишные
AH Описание
00h Читать Character
01h Считывание состояния
02h Читайте клавиатуры Shift, статус
05h Магазин Keystroke в буфер клавиатуры
10h Читать Character Extended
11h Read Input Status Extended
12h Read Keyboard Смена статуса Extended
17h услуги для принтеров
AH Описание
00h Печать символов для принтера
01h Инициализировать принтер
02h Проверка состояния принтера
18h Выполнить Cassette BASIC : На машинах IBM до начала PS / 2 линии, это прерывание начнет ПЗУ Cassette BASIC. Клоны не имеют эту функцию и различные машины / БИОС будет выполнять различные действия , если INT 18h был выполнен, наиболее часто отображается сообщение об ошибке , что нет загрузочного диска не был. Современные машины будут пытаться загружаться из сети через это прерывание.
19h После процедуры POST это прерывание используется BIOS для загрузки операционной системы. Программа может назвать это прерывание, чтобы перезагрузить компьютер (но должны гарантировать, что аппаратные прерывания или операции DMA не приведет к зависанию системы или аварии либо во время повторной инициализации системы с помощью BIOS или в процессе загрузки).
1Ah Real Time Clock Услуги
AH Описание
00h Читать RTC
01h Установить RTC
02h Читать RTC Время
03h Установить RTC Время
04h Читать RTC Дата
05h Набор RTC Дата
06h Установить RTC Alarm
07h Сброс RTC Alarm
1Ah PCI Services — реализованный БИОС с поддержкой PCI 2.0 или более поздней версией
AX Описание
B101h Установка PCI Проверить
B102h Найти PCI устройства
B103h Найти PCI Код класса
B106h Шина PCI-конкретные операции
B108h Read Byte Configuration
B109h Читайте Слово конфигурации
B10Ah Читать DWord конфигурации
B10Bh Написать Byte Configuration
B10Ch Написать слово конфигурации
B10Dh Написать DWord конфигурации
B10Eh Получить IRQ плановую информацию
B10Fh Установка PCI IRQ
1Bh Ctrl-Break обработчик — вызывается , INT 09 когда Ctrl- Перерыв был нажат
1Ch Таймер обработчик клещ — вызывается INT 08
1Dh Не будет называться; просто указатель на ВПТ (Video Parameter Table), в котором содержатся данные о режимах видео
1Eh Не будет называться; просто указатель на ДПТ (Дискета Таблица параметров), содержащий разнообразную информацию, касающуюся дисководы гибких дисков
1Fh Не будет называться; просто указатель на VGCT (V >80h в FFh
41h Адрес указатель: FDPT = Fixed Disk Parameter Table (первый жесткий диск)
46h Адрес указателя: FDPT = Fixed Disk Parameter Table (второй жесткий диск)
4Ah Вызывается RTC для сигнализации

INT 18h : Выполнить BASIC

INT 18h традиционно прыгнул на реализацию Cassette BASIC (представленную Microsoft) , хранящейся в дополнительных ПЗУ . Этот вызов, как правило , вызывается , если BIOS не удалось идентифицировать любой загрузочный тома диска при запуске.

В то время оригинальный IBM PC (IBM тип компьютера 5150) был выпущен в 1981 году, BASIC в ПЗУ является ключевым элементом. Современные популярные персональные компьютеры , такие как Commodore 64 и линия Apple II также имели Microsoft Cassette BASIC в ПЗУ (хотя Commodore переименовала свою лицензионную версию Commodore BASIC), так и в значительной части предполагаемого рынка, IBM PC необходим BASIC , чтобы конкурировать. Как и в этих других системах, ПЗУ на IBM ПК BASIC служил в качестве примитивной бездисковых операционной системы, что позволяет пользователю загружать, сохранять и запускать программы, а также писать и совершенствовать их. (Оригинальный IBM PC был единственной моделью ПК от IBM , который, как и его два вышеупомянутых конкурентов, включено кассета аппаратного интерфейса. Базовая модель IBM PC имела только 16 KiB оперативной памяти и никаких дисков [ любого рода ], поэтому кассету интерфейс и BASIC в ПЗУ были необходимы , чтобы базовая модель полезной из пяти 8 микросхем ROM KiB в оригинальной IBM PC, в общей сложности 40 KiB, четыре содержат BASIC и только один содержит BIOS,. ПЗУ BASIC счета в течение более половины общий объем системной памяти [4 / 7ths, чтобы быть точным].)

Поскольку время продолжалось и BASIC больше не поставляется на всех компьютерах, это прерывание будет просто выводить сообщение об ошибке, указывающее, что нет загрузочного тома не было найдено (как известно, «Нет ROM BASIC», или более пояснительные сообщения в более поздних версиях BIOS); в других версиях BIOS она предложит пользователю вставить загрузочный объем и нажмите клавишу, а затем после того, как пользователь нажал клавишу он будет цикл обратно к начальной загрузки (INT 19h), чтобы попытаться снова загрузиться.

Digital, Радуга 100 B используется INT 18h для вызова ее BIOS, которая несовместима с IBM BIOS. Turbo Pascal , Turbo C и Turbo C ++ переориентированы INT 18 для выделения памяти и подкачки. Другие программы также повторно использовать этот вектор для своих собственных целей.

крючки BIOS

В системах DOS, IO.SYS или IBMBIO.COM крючки INT 13 для обнаружения гибкого изменения диска, отслеживание форматирования вызовов, исправляющих ошибки краевых DMA и рабочих вокруг проблем в ROM BIOS от IBM «01/10/84» с моделью кодом 0xFC перед первый звонок.

Игнорирование BIOS

Многие современные операционные системы (такие как Linux и более новые версии ОС Windows ) обойти встроенную в BIOS системы прерываний связи в целом, предпочитая использовать свое собственное программное обеспечение для управления подключенного оборудования напрямую. Оригинальный Причина этого в первую очередь , что эти операционные системы работают процессор в защищенном режиме, тогда как при вызове BIOS требует переключения в режим реального времени и обратно, и переключение в режим реального времени медленно. Тем не менее, есть и серьезные соображения безопасности не переключаться в режим реального времени, а код BIOS имеет ограничения как в функциональности и скорости , которые мотивируют операционная система дизайнеров , чтобы найти замену для него. На самом деле, ограничение скорости этого BIOS сделало общим даже в эпохе DOS для программы , чтобы обойти его, чтобы избежать его ограничения производительности, особенно для видео графического дисплея и быстрой последовательной связи. Проблемы , связанные с функциональными возможностями BIOS включают в себя ограничение в диапазоне функций , определенное, несогласованность в подмножествах этих функций , поддерживаемых на разных компьютерах, и вариацию в качестве биосов (т.е. некоторые БИОС являются полными и надежными, другими сокращенными и глючит). Принимая дело в свои руки и избежать зависимости от BIOS, разработчики операционных систем могут устранить некоторые из рисков и осложнений , с которыми они сталкиваются в письменной форме и поддержке программного обеспечения системы. С другой стороны, тем самым эти разработчики стали ответственными за предоставление «голое железо» программное обеспечение драйвера для каждой другой системы или периферийного устройства , они намереваются для своей операционной системы для работы с (или для стимулирования производителей аппаратных средств , чтобы обеспечить эти драйверы). Таким образом , должно быть очевидно , что компактные операционные системы , разработанные на небольших бюджетах будут склонны использовать BIOS в значительной степени, в то время как большие операционные системы , построенные огромных группами инженеров программного обеспечения с большими бюджетами будут чаще предпочитают писать свои собственные драйвера вместо BIOS, то есть , даже без учета проблем совместимости из BIOS и защищенного режима.

Илон Маск рекомендует:  Урок 1. PHP - Синтаксис

Прерывания dos и bios

На этом шаге мы познакомимся с типами прерываний.

Все прерывания делятся на две большие группы: BIOS- и DOS -прерывания. Рисунок 1 предыдущего шага как раз иллюстрирует выполнение BIOS -прерывания. Рассмотрим более подробно выполнение DOS -прерываний.

Как было отмечено, при загрузке DOS в памяти компьютера располагаются два файла: IO.SYS (или IBMBIO.COM ) и MSDOS.SYS (или IBMDOS.COM ), которые обеспечивают, в том числе, выполнение DOS -прерываний. Заметим, что так как модули DOS обеспечивают большое количество разных дополнительных проверок, то операции DOS обычно проще в использовании и менее машиннозависимы, чем их BIOS аналоги.

Модуль IO.SYS (IBMBIO.COM) обеспечивает интерфейс с BIOS низкого уровня. Эта программа выполняет управление вводом-выводом при чтении данных из внешних устройств в память и записи из памяти на внешние устройства.

Модуль MSDOS.SYS (IBMDOS.COM) содержит средства управления файлами и ряд сервисных функций, таких как блокирование и деблокирование записей.

Порядок выполнения DOS -прерывания следующий. Когда пользовательская программа выдает запрос на прерывание (например, INT 21H ), то в модуль MSDOS.SYS (IBMDOS.COM) через регистры передается определенная информация. Затем модуль MSDOS.SYS (IBMDOS.COM) транслирует эту информацию в один или несколько вызовов IO.SYS (IBMBIO.COM) , который, в свою очередь, вызывает соответствующую подпрограмму BIOS . Указанные связи приведены на рисунке 1.

Рис.1. Выполнение DOS- (сплошные линии) и BIOS-прерываний (пунктирные линии)

В дальнейшем мы будем пользоваться двумя прерываниями: BIOS INT 10H и DOS INT 21H .

На следующем шаге мы приведем примеры прерываний.

Основные функции прерывания MS DOS 21h

Прерывание 21h (DOS) предназначено для предоставления программисту различных услуг со стороны DOS. Этими услугами является набор функций.

Последовательность действий при использовании этих функций:

1. Поместить номер функции в регистр AH. Если используется функция с подфункцией, то номер подфункции обычно помещается в регистр AL.

2. Поместить передаваемые функции параметры в определенные регистры (для каждой ф-ции соответствующие)

3. Вызвать прерывание командой int 21h

4. Извлечь рез-ты работы функции из определенных регистров

Основные функции ввода, вывода для прерывания 21h:

00h — завершение работы программы

01h – ожидание набора символа с последующим его эхосопровождением и с проверкой на CTRL+BREAK

На выходе в AL — ACSII-код символа.

02h – изображение (вывод) символа с проверкой на CTRL+BREAK.

На входе в DL — ACSII-код символа

05h — вывод символа на принтер.

На входе в DL — ACSII-код символа

06h – изображение символа без проверки на CTRL+BREAK.

На входе в DL — ACSII-код символа

07h – ожидание набора символа без последующего его эхосопровождения и без проверки на CTRL+BREAK

На выходе в AL — ACSII-код символа.

08h – ожидание набора символа с последующим его эхосопровождением и с проверкой на CTRL+BREAK

На выходе в AL — ACSII-код символа.

09h — изображение строки символов с проверкой на CTRL+BREAK.

На входе — DS:DX = начальному адресу строки с символом $ на конце.

0ah – чтение строки в буфер клавиатуры.

На входе DS:DX = адрес буфера с форматом:

1 байт — размер буфера для ввода (формирует пользователь)

2 байт — число фактически введенных символов (заполняет система по окончанию ввода-нажатию Enter (0dh), этот символ не считает)

3 байт и далее — введенная строка с символом 0dh на конце

На выходе — введенная строка в буфере

0bh – чтение состояния клавиатуры

На выходе AL = 0 — буфер НЕ пуст

AL = offh – буфер клавиатуры пуст

0сh – освобождение буфера клавиатуры и вызов нужной функции

На входе в AL – номер нужной функции

На выходе – регистры в соответствии с вызываемой функцией

Проверка на CTRL+BREAK означает, что если в процессе работы данной функции была нажата эта комбинация клавиш, то по умолчанию происходит прерывание 23h и выход из программы.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Студент — человек, постоянно откладывающий неизбежность. 10532 — | 7319 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Техническая документация

Содержание

1. РУКОВОДСТВО ПРОГРАММИСТА по BIOS

1.1. ПОДДЕРЖИВАЕМЫЕ ПРЕРЫВАНИЯ BIOS

1.2. ПОДДЕРЖИВАЕМЫЕ ПОЛЯ ОБЛАСТИ ПЕРЕМЕННЫХ BIOS

1.3. ИСПОЛЬЗУЕМЫЕ ПОЛЯ ОБЛАСТИ ДАННЫХ В СТАТИЧЕСКОМ ОЗУ

2. СИСТЕМНЫЕ УТИЛИТЫ

2.1. Программа SETUP.COM

2.2. Программа FLASHWR.COM

3. ОПИСАНИЕ ПРОТОКОЛА КАНАЛА УПРАВЛЕНИЯ PTSROM-DOS

3.1. ЛОГИКА КАНАЛА УПРАВЛЕНИЯ

3.2. ФОРМАТЫ УПРАВЛЯЮЩИХ ПАКЕТОВ ВЫСОКОГО УРОВНЯ

3.3. ФОРМАТЫ ПАКЕТОВ НИЗКОГО УРОВНЯ (ПАКЕТНЫЙ ПРОТОКОЛ)

1. РУКОВОДСТВО ПРОГРАММИСТА по BIOS

1.1. ПОДДЕРЖИВАЕМЫЕ ПРЕРЫВАНИЯ BIOS

INT 0 (деление на ноль)

Обработчик по умолчанию.

INT 1 (пошаговое выполнение)

Обработчик по умолчанию.

INT 2 (немаскируемое прерывание)

Обработчик по умолчанию.

INT 3 (точка останова)

Обработчик по умолчанию.

INT 4 (переполнение)

Обработчик по умолчанию.

INT 5 (копия экрана)

Обработчик по умолчанию.

INT 6 (неверный код операции)

Обработчик по умолчанию.

INT 7


Обработчик по умолчанию.

INT 8 (IRQ0 — таймер)

Обновляет текущее время в области переменных BIOS.

INT 9 (IRQ1 — контроллер клавиатуры)

Обработчик по умолчанию.

INT 0Ah (IRQ2 — видео)

Обработчик по умолчанию.

INT 0Bh (IRQ3 — COM2)

Обработчик по умолчанию.

INT 0Ch (IRQ4 — COM1)

Обработчик по умолчанию.

INT 0Dh (IRQ5 — LPT2)

Обработчик по умолчанию.

INT 0Eh (IRQ6 — контроллер дискет)

Обработчик по умолчанию.

INT 0Fh (IRQ7 — LPT1)

Обработчик по умолчанию.

INT 10h (Функции BIOS работы с видео)

На входе:
AH = 3 (Получить позицию и форму курсора)
BH = Номер видео страницы (игнорируется)
На выходе:
CX = Форма курсора (2000h)
DX = Позиция курсора (0)

На входе:
AH = 8 (Получить символ и атрибут из текущей позиции курсора)
На выходе:
AX = Символ (20h)
BH = Атрибут (7)

На входе:
AH = 9 (Записать символ и атрибут в текущую позицию курсора)
AL = Код символа
BH = Номер видео страницы (игнорируется)
BL = Атрибут (игнорируется)
CX = Количество символов (игнорируется)
На выходе:

На входе:
AH = 0Ah (Записать символ в текущую позицию курсора)
AL = Код символа
BH = Номер видео страницы (игнорируется)
CX = Количество символов (игнорируется)
На выходе:

На входе:
AH = 0Eh (Вывести символ с модификацией текущей позиции)
AL = Код символа
На выходе:

На входе:
AH = 0Fh (Получить текущий видео режим)
На выходе:
AH = Ширина экрана (80)
AL = Видео режим(3 = Текстовый 80×25)
BH = Активная видео страница(0)

На входе:
AH = 13h (Вывести строку символов)
AL = Номер подфункции (игнорируется)
BH = Номер видео страницы (игнорируется)
BL = Атрибут (игнорируется)
CX = Длина строки
DX = Позиция курсора (игнорируется)
ES:BP = Адрес строки
На выходе:

INT 11h (Получить список оборудования в AX)

Список оборудования см. ниже.

INT 12h (Получить размер основной памяти в AX)

INT 13h (Функции BIOS работы с дисками)

В случае ошибки устанавливается флаг переноса (CF), а код ошибки возвращается в регистре AH. Возможны следующие коды ошибок:

0 Нет ошибки. 1 Неизвестная функция. 3 Защита от записи (ошибка записи). 10h Ошибка контрольной суммы (ошибка чтения).

На входе:
AH = 0 (Сбросить дисковую систему)
DL = Номер диска
На выходе:
CF, AH

На входе:
AH = 1 (Получить состояние последней операции)
DL = Номер диска
На выходе:
CF, AH

На входе:
AH = 2 (Прочитать заданное количество секторов)
AL = Количество секторов
CH = Номер цилиндра
CL = Номер сектора
DH = Номер головки
DL = Номер диска
ES:BX = Адрес буфера
На выходе:
CF, AH
AL = Количество прочитанных секторов

На входе:
AH = 3 (Записать заданное количество секторов)
AL = Количество секторов
CH = Номер цилиндра
CL = Номер сектора
DH = Номер головки
DL = Номер диска
ES:BX = Адрес буфера
На выходе:
CF, AH
AL = Количество записанных секторов

На входе:
AH = 4 (Проверить заданное количество секторов)
AL = Количество секторов
CH = Номер цилиндра
CL = Номер сектора
DH = Номер головки
DL = Номер диска
ES:BX = Адрес буфера
На выходе:
CF, AH
AL = Количество проверенных секторов

На входе:
AH = 8 (Получить параметры диска)
DL = Номер диска
На выходе:
CF, AH
BL = Тип диска (10h)
CH = Максимальный номер цилиндра
CL = Максимальный номер сектора
DH = Максимальный номер головки
DL = Количество дисков
ES:DI = Адрес таблицы параметров дискеты

На входе:
AH = 15h (Получить тип диска)
DL = Номер диска
На выходе:
AH = Тип диска (2 = Дисковод с детектором смены)

На входе:
AH = 16h (Получить состояние детектора смены дисковода)
DL = Номер диска
На выходе:
AH = Состояние детектора смены (0 = Смены диска не было)

INT 14h (Функции BIOS работы с последовательными портами)

На входе:
AH = 0 (Инициализировать порт)
AL = Параметры инициализации
DX = Номер порта
На выходе:
AX = Состояние порта

На входе:
AH = 1 (Передать символ)
AL = Код символа
DX = Номер порта
На выходе:
AH = Состояние порта

На входе:
AH = 2 (Получить символ)
DX = Номер порта
На выходе:
AH = Состояние порта
AL = Код символа

На входе:
AH = 3 (Получить состояние порта)
DX = Номер порта
На выходе:
AX = Состояние порта

На входе:
AH = 4 (Инициализировать порт)
AL, BX, CX = Параметры инициализации
DX = Номер порта
На выходе:
AX = Состояние порта

На входе:
AH = 5 (Передать пакет)
CX = Длина пакета
DX = Номер порта
DS:SI = Пакет
На выходе:
AH = Код ошибки (0 = нет ошибки, -1 = ошибка)

На входе:
AH = 6 (Получить пакет)
CX = Размер буфера под пакет
DX = Номер порта
DS:SI = Буфер под пакет
На выходе:
AH = Код ошибки (0 = нет ошибки, -1 = ошибка)
CX = Длина пакета

INT 15h (Специальные функции)

На входе:
AH = 0E900h (Сбросить таймер-сторож)
На выходе:

На входе:
AH = 0E901h (Записать код диагностической контрольной точки)
CX = Код контрольной точки (коды 000h-1FFh зарезервированы для системы)
На выходе:

На входе:
AH = 0E902h (Установить диагностический флаг ошибки DOS)
CX = Маска диагностического флага
На выходе:

На входе:
AH = 0E903h (Разрешить запись на флэш-диск)
На выходе:

На входе:
AH = 0E904h (Запретить запись на флэш-диск)
На выходе:

На входе:
AH = 0E905h (Записать образ BIOS во флэш-память)
DS:SI = адрес буфера
На выходе:

На входе:
AH = 0E906h (Прочитать setup-информацию с флэш-диска)
DS:SI = адрес буфера
На выходе:
AL = Код ошибки(0 = нет ошибки; 1 = setup-информация не найдена)

На входе:
AH = 0E907h (Записать setup-информацию на флэш-диск)
DS:SI = адрес буфера
На выходе:

На входе:
AH = 0E908h (Установить точку останова)
CL = Флаги:
(0) = 0 Посылать отладочную информацию в канал управления.
1 Вызывать обработчик.
(1) = 0 Сработать однократно.
1 Срабатывать многократно.
ES:SI = Адрес точки останова.
DX:DI = Адрес обработчика.
На выходе:
AH = Код ошибки:

0 Нет ошибки. 1 Неправильный параметр. 2 Нет места в таблице точек останова.

На входе:
AH = 0E909h (Снять точку останова)
ES:SI = Адрес точки останова.
На выходе:
AH = Код ошибки:

0 Нет ошибки. 1 Неправильный параметр.

INT 16h (Функции BIOS работы с клавиатурой)

На входе:
AH = 0 (Получить код нажатой клавиши)
На выходе:
AH = Скан-код
AL = ASCII код

На входе:
AH = 1 (Получить состояние клавиатуры)
На выходе:
ZF = 1, если буфер клавиатуры пуст

На входе:
AH = 2 (Получить флаги клавиатуры)
На выходе:
AL = флаги клавиатуры (0)

INT 17h (Функции BIOS работы с параллельными портами)

Обработчик по умолчанию (работа с параллельным портом ведется как с COM3).

INT 18h (ROM BASIC)

Обработчик по умолчанию.

INT 19h (Перезагрузка)

INT 1Ah (Функции BIOS работы с таймером)

На входе:
AH = 0 (Получить счетчик таймера)
На выходе:
AL = Состояние переполнения счетчика таймера
CX:DX = Счетчик таймера

На входе:
AH = 1 (Установить счетчик таймера)
CX:DX = Счетчик таймера
На выходе:

INT 1Bh (Пользовательский обработчик Ctrl/Break)

INT 1Ch (Пользовательский обработчик прерывания таймера)

Vector 1Dh (Адрес таблицы видео параметров)

Указывает на фиктивную таблицу.

Vector 1Eh (Адрес таблицы параметров дискеты)

Указывает на фиктивную таблицу.

Vector 1Fh (Адрес таблицы графических символов CGA)

Указывает на фиктивную таблицу.

1.2. ПОДДЕРЖИВАЕМЫЕ ПОЛЯ ОБЛАСТИ ПЕРЕМЕННЫХ BIOS

Область переменных BIOS расположена в сегменте 0040h.

Поддерживаются следующие поля:

0000h (8 слов) Базовые адреса портов COM1-COM4 и LPT1-LPT4. 0010h (слово) Список оборудования:
0 Наличие дисководов. 1 Наличие сопроцессора. 2-3 Количество памяти (01 = 16К; 10 = 32К; 11 = 64К+). 4-5 Видео адаптер/режим (01 = 40ц; 10 = 80ц; 11 = ч/б). 6-7 Количество дисководов (00 = 1; 01 = 2; 10 = 3; 11 = 4). 8 Наличие DMA. 9-11 Количество последовательных портов. 12 Наличие игрового порта. 13 Наличие принтера у Pcjr. 14-15 Количество параллельных портов. 0013h (слово) Размер основной памяти в Кбайтах. 0017h (слово) Флаги клавиатуры. 0019h (байт) Значение, накапливаемое при Alt-вводе. 001Ah (слово) Адрес начала очереди клавиатуры. 001Ch (слово) Адрес конца очереди клавиатуры. 001Eh (32 байта) Очередь клавиатуры. 0049h (байт) Текущий видео режим. 004Ah (слово) Ширина экрана. 006Ch (2 слова) Счетчик таймера. 0070h (байт) Флаг переполнения счетчика таймера. 0071h (байт) Флаг Ctrl/Break (бит 7). 0072h (слово) Тип перезагрузки. 0084h (байт) Максимальный номер строки на экране. 0085h (слово) Высота символа.

1.3. ИСПОЛЬЗУЕМЫЕ ПОЛЯ ОБЛАСТИ ДАННЫХ В СТАТИЧЕСКОМ ОЗУ (СТРАНИЦА 7 СМЕЩЕНИЕ 0FF00H).

(Слово прямое, слово инвертированное) Размер области данных. (Слово прямое, слово инвертированное) Setup-информация загрузчика. (Слово прямое, слово инвертированное) Setup-информация BIOS. (байт прямой, байт инвертированный) Номер текущего элемента в массиве диагностической информации. (Слово прямое, слово инвертированное) Setup-информация загрузчика с флэш-диска. (Слово прямое, слово инвертированное) Setup-информация BIOS с флэш-диска. (Размер определяется исходным текстом) Массив диагностической информации.

Структура элемента массива диагностической информации:

(Слово прямое, слово инвертированное) Код последней исполненной контрольной точки. (Слово прямое, слово инвертированное) Флаги ошибок загрузчика. (Слово прямое, слово инвертированное) Флаги ошибок BIOS. (Слово прямое, слово инвертированное) Флаги ошибок DOS.

Описание кодов контрольных точек и флагов ошибок см. в документе «РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ BIOS» .

2. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ BIOS

2.1. ПРОГРАММА SETUP.COM

Предназначена для просмотра и изменения setup-информации, записанной на флэш-диске, а также для просмотра диагностической информации.

Программа позволяет менять следующие параметры конфигурации (в скобках указаны значения по умолчанию):

Скорость канала управления: 110-115200 (9600).
Режим турбо (ON).
BIOS в ПЗУ (ON).
Таймер-сторож (ON).
Порт канала управления: COM1/COM2/COM3/COM4/LPT1 (COM1).
Скорость канала терминала: 110-115200 (115200).
Системный диск: A-E (A).
Два флаш-диска (ON).
Пропустить тестирование процессора (OFF).
Порт канала терминала: COM1/COM2/COM3/COM4/LPT1/OFF (COM1).
Пропустить тестирование обычной памяти (OFF).
Пропустить тестирование SRAM (OFF).
Пропустить тестирование EMS (OFF).


Опции разбиты на два подменю (меню setup загрузчика и меню setup BIOS). Кроме того, есть возможность загрузить значения setup по умолчанию, либо восстановить используемые в данный момент значения.

Отдельный пункт меню позволяет получить стек диагностической информации. Информация выдается в виде таблицы, состоящей из 4-х столбцов. В самой нижней строке — информация после последней перезагрузки. В первом столбце — код последней исполненной контрольной точки. Возможны следующие значения (L — загрузчик, B — BIOS, D — DOS):

L: Stack Loaded
L: IVT Initialized
L: Channel Initialized
L: Local Loading
L: Flash Tested
L: Load from ROM
L: Load ROM Comp
L: Load from Fla
L: Load Flash Co
B: Chipset Initialized
B: CPU Tested
B: Stack Tested
B: CRC Tested
B: IVT Initialized
B: Vars Initialized
B: Resident Init
B: Channel Initialized
B: Memory Tested
B: SRAM Tested
B: EMS Tested
B: PIC Initialized
B: PPI Initialized
B: DMA Initialized
B: Timer Initialized
B: Disks Initialized
B: Boot Loaded
B: Failed Boot
D: Job Point: ##

Илон Маск рекомендует:  Письменные соглашения и обобщенная грамматика rfc 2068

После нормальной загрузки системы должно получиться

В остальных 3-х стоблбцах выдаются флаги накопленных ошибок соответственно для загрузчика, BIOS и DOS.

Флаги ошибок загрузчика:

Не прошел тест процессора.
Поврежден код загрузчика.
Поврежден код загрузчика в ОЗУ.
Повреждена setup-информация загрузчика во флэш-памяти.
Повреждена setup-инфрмация BIOS во флэш-памяти.
Повреждено поле смещения BIOS во флэш-памяти.
Повреждено поле размера BIOS size во флэш-памяти.
Поврежден BIOS во флэш-памяти.
Поврежден BIOS в ПЗУ.
Повреждено поле последней операции во флэш-памяти.
Ошибка канала.
Повреждена setup-информация во флэш-памяти.
Загрузка BIOS с канала управления не прошла.
Загрузка DOS с канала управления не прошла.

Флаги ошибок BIOS:

Не прошел тест процессора.
Не прошел тест стека.
Поврежден код BIOS.
Не прошел тест основной памяти.
Не прошел тест SRAM.
Не прошел тест EMS.
Поврежден boot-сектор.
Ошибка при чтении boot-сектора.
Повреждена setup-информация загрузчика.
Повреждена setup-информация BIOS.

Флаги ошибок DOS могут формироваться прикладной программой (см. документ «Руководство программиста по BIOS»)

ВНИМАНИЕ! Выход из программы SETUP с сохранением может привести к разрушению информации на EMS-диске!

2.2. ПРОГРАММА FLASHWR.COM

Предназначена для разрешения и запрещения записи на флэш-диск, а также для записи образа BIOS во флэш-память.

FLASHWR ON
Разрешает запись на флэш-диск.

FLASHWR OFF
Сбрасывает буфер флэш-диска. Запрещает запись на флэш-диск.

FLASHWR BIOS
Записывает образ BIOS из заданного файла во флэш-память.

ВНИМАНИЕ! Разрешение записи на флэш-диск может привести к разрушению информации на EMS-диске!

3. ОПИСАНИЕ ПРОТОКОЛА КАНАЛА УПРАВЛЕНИЯ PTS ROM-DOS

3.1. ЛОГИКА КАНАЛА УПРАВЛЕНИЯ

В нормальном состоянии управляемая ЭВМ (MicroPC) находится в активном состоянии, то есть она в любой момент может послать сообщение, на которое управляющая ЭВМ, находящаяся в пассивном, ждущем состоянии, должна успеть отреагировать. Если же какое-либо сообщение хочет послать управляющая ЭВМ, она каким-либо образом должна произвести удаленную перезагрузку управляемой ЭВМ. Передача сообщений между управляемой и управляющей ЭВМ производится пакетами.

3.2. ФОРМАТЫ УПРАВЛЯЮЩИХ ПАКЕТОВ ВЫСОКОГО УРОВНЯ

Извещение о перезагрузке управляемой ЭВМ.

Пакет имеет длину 4 байта, содержащие слово «LOAD», и извещает управляющую ЭВМ о том, что произошла перезагрузка и можно посылать команду.

Команда от управляющей ЭВМ.

Пакет имеет длину 6 байт, содержащие слово «COMM» и 2-х байтовый код команды. Возможны следующие команды:

01 Требует получить setup-информацию. 02 Требует передать диагностическую информацию.

Диагностическая информация.

Пакет заголовка имеет длину 6 байт, содержит слово «DIAG» и 2-х байтовую длину диагностической информации в пакетах. Далее идет сама диагностическая информация пакетами. Каждый пакет имеет длину 134 байта и содержит слово «DIAG», 2-х байтовый номер пакета и 128 байт полезной информации.

Setup-информация.

Пакет имеет длину 8 байт и содержит слово «SETP» и 2-х байтовые setup-информации загрузчика и BIOS.

Содержимое setup-информации определяет, будет ли происходить передача BIOS и/или DOS.

Запрос от управляемой ЭВМ на передачу BIOS.

Пакет имеет длину 4 байта и содержит слово «BIOS».

Заголовок BIOS.

Пакет заголовка имеет длину 6 байт и содержит слово «BIOS» и 2-х майтовую длину образа BIOS в пакетах.

Запрос от управляемой ЭВМ на передачу пакета BIOS.

Пакет имеет длину 6 байт и содержит слово «BIOS» и номер требуемого пакета.

Пакет BIOS.

Пакет имеет длину 134 байта и содержит слово «BIOS», 2-х байтовый номер пакета и 128 байт полезной информации.

Подтверждение управляемой ЭВМ окончания приема BIOS.

Пакет имеет длину 6 байт и содержит слово «BIOS» и 2 байта 0.

Запрос от управляемой ЭВМ на передачу DOS.

Пакет имеет длину 4 байта и содержит слово «PTOS».

Заголовок DOS.

Пакет заголовка имеет длину 6 байт и содержит слово «PTOS» и 2-х байтовую длину образа PTOS в пакетах.

Запрос от управляемой ЭВМ на передачу пакета DOS.

Пакет имеет длину 6 байт и содержит слово «PTOS» и номер требуемого пакета.

Пакет DOS.

Пакет имеет длину 134 байта и содержит слово «PTOS», 2-х байтовый номер пакета и 128 байт полезной информации.

Подтверждение управляемой ЭВМ окончания приема DOS.

Пакет имеет длину 6 байт и содержит слово «PTOS» и 2 байта 0.

Отладочная информация.

Пакет имеет длину 32 байта, содержащие слово «DEBU» и содержимое регистров процессора 8088 в следующем порядке: SP, SS, ES, DS, BP, DI, SI, DX, CX, BX, AX, IP, CS, FLAGS. Отладочная информация передается при достижении соответствующей точки останова (см. документ «Руководство программиста по BIOS»).

3.3. ФОРМАТ ПАКЕТОВ НИЗКОГО УРОВНЯ (ПАКЕТНЫЙ ПРОТОКОЛ)

Перед передачей пакета передающая сторона передает в канал байт 52h и ждет подтверждения от принимающей стороны в течение некоторого времени (для MicroPC это время составляет приблизительно 1 с), если подтверждение не было получено, то делается еще 4 попытки, после чего возвращается ошибка. Если же подтверждение было получено (байт 41h), то посылается следующая информация:

Два синхронизирующих байта 50h, 50h;
Байт размера пакета — 1 (данных);
Два байта CRC (данных);
Блок данных;
Два синхронизирующих байта F0h, F0h.

После этого передающая сторона ожидает подтверждения в виде двух байтов 59h, 59h. Если подтверждение не приходит, то делается еще 4 попытки, после чего возвращается ошибка.

См. документ «Руководство программиста по BIOS» .

BIOS и DOS прерывания (16H и 21H)

Есть некоторые процедуры , которые могут быть реализованы с помощью как INT 21H и INT 16H (бывший для DOS и последний для BIOS). Однако точное различие не ясно (по крайней мере для меня!).

Например, следующие процедуры чтения символа с клавиатуры

1) INT 21H , служба 01 для чтения с эхом

2) INT 16H , служба 01 для нажатия клавиши

Предположим, что программа, которая ждет ключа. Например, простой текстовый мастер, который ждет Y / N. Для вторя отжатый ключ, который один является предпочтительным? 21H или 16H.

Я думаю, что BIOS процедура должна вызываться, когда нет операционной системы (пример «нажмите F1 для продолжения» во время процедуры POST). Это все? Есть ли пример, который показывает операцию исключительно сделана одним из них и не так?

Для вторя отжатый ключ, который один является предпочтительным? 21H или 16H.

Конечно , не функция BIOS , так как он не будет ничего эхо!

INT 16H, служба 01 для нажатия клавиши

Эта функция будет проверять только если ключ доступен. Это не удалит его из буфера клавиатуры.

В общем, вы должны знать, что входные функции DOS могут использовать переадресацию. Вход не может прийти с клавиатуры вообще. Он может прийти из файла или другого источника.

Базовая система ввода-вывода BIOS. Прерывания BIOS. Области данных и таблицы BIOS

Первые 20 прерываний с номерами от 00Н до 1Fh закреплены за прерываниями, генерируемыми аппаратными средствами либо предназначенными для управления аппаратурой персонального компьютера. ISR этих прерываний вместе с не­которыми данными образуют так называемую базовую систему ввода-вывода или BIOS (Base Input-Output System). Все ISR и данные BIOSa записаны в ПЗУ. ISR, входящие в BIOS, представляют собой самый нижний уровень иерархической структуры программного обеспечения (ПО) управления аппаратными средствами компьютера. Они взаимодействуют с аппаратурой на уровне физических сигналов, портов, заданных адресов и в этой связи являются немобильной частью ПО. При появлении новых аппаратных средств приходится перерабатывать BIOS. Поэтому принято различать версии BIOS по дате разработки. Кроме того, для облегчения дополнений BIOSa новые периферийные устройства снабжаются своей секцией ПЗУ, а основной блок BIOS, при загрузке системы проверяет наличие дополнительных секций и «переключает» на них соответствующие прерывания.

Важной особенностью BIOSa является стандартный интерфейс с программой практически для всех персональных компьютеров на базе микропроцессоров семейства Intel. Другими словами, BIOS выполняет роль «экрана» между программами (в частности, программами MS-DOS) и большим разнообразием конкретных аппаратных средств. Например, для вывода символа на экран дисплея независимо от типа дисплея и используемого адаптера необходимо выполнить инструкцию INT 10h с теми же самыми значениями во внутренних регистрах. Все детали интерфейса программы с ВЮ5ом описываются в техническом справочнике BIOS.

При выполнении ISR BIOS для хранения данных используется зарезервированная область памяти, называемая областью данных BIOSa. Она начинается с адреса 40:00h и занимает 256 байт до адреса 40:FFh. Здесь располагается ряд таблиц, копируемых из ПЗУ при начальной загрузке системы и уточняемых по результатам тестирования узлов компьютера. При выполнении функций BIOS многие параметры изменяются. Например, корректируется адрес позиции курсора на экране, номер установленного режима адаптера дисплея и т.п. Другими словами, таблицы в области данных BIOSa отражают текущие параметры и состояние аппаратных средств компьютера.

5.7. Функции библиотеки С++ для доступа к обработчикам прерывания

Библиотечные функции С++, как правило, в конечном итоге обращаются к ISR BIOS или MS-DOS. В тех случаях, когда необходимо непосредственное обращение к BIOS или MS-DOS, используются специальные функции, описываемые далее.

int int86(int intno, union REGS *inregs, union REGS *outregs)

Функция загружает внутренние регистры микропроцессора значениями, записанными в объединении по шаблону union REGS, на начало которого указывает inregs, и выполняет прерывание с номером intno. Значения внутренних регистров на выходе из прерывания записываются в объединении по шаблону union REGS, на начало которого указывает outregs. Описание объединений выполняет точка вызова функции. Шаблон union REGS описан в заголовочном файле и представляет собой объединение двух структур:

unsigned int ax, bx, ex, dx, si, di, cflag, flags;

unsigned char al, ah, bl, bh, cl, ch, dl, dh;

struct WORDREGS x;

struct BYTEREGS h;

Структура WORDREGS используется для доступа к регистрам как двух­байтовым единицам. Структура BYTEREGS позволяет осуществлять доступ к отдельным байтам РОН. Поле структуры flags позволяет перед вызовом задать, а после вызова прочесть значение регистра флагов. Так как многие функции MS-DOS используют флаг переноса для сигнализации об ошибках в програм­ме-обработчике прерывания, в структуре WORDREGS специально выделено поле cflag для значения флага переноса.

Все функции int. () возвращают значение регистра АХ на выходе из ISR. Недостатком функции int86() является возможность доступа лишь к ограниченному числу регистров. При выполнении некоторых функций MS-DOS значения задаются и в сегментных регистрах. В таких (правда, достаточно редких) случаях следует использовать более общую функцию int86x():

int int86x(int intno, union REGS *inregs, union REGS *outregs, struct SREGS *segregs)

В отличие от int86() перед выполнением прерывания intno дополнительно устанавливаются сегментные регистры из структурной переменной по шаблону SREGS. В функцию передается указатель на эту структурную переменную. По возвращении из ISR в структурную переменную по шаблону SREGS дополни­тельно копируются значения всех сегментных регистров. Если необходимо выполнить обращение к функции MS-DOS (т. е. прерывание 21h с заданным значением АН), можно использовать функцию intdos(), всегда обращающуюся к прерыванию 21h.

int intdos(union REGS *inregs, union REGS *outregs)

В отличие от ранее рассмотренных функций данной функции не передается номер генерируемого прерывания, так как всегда генерируется прерывание 21h.

5.8. Предварительная подготовка к работе

1. Ознакомиться с аппаратными средствами системы прерывания.

2. Ознакомиться с программными средствами системы прерывания.

Порядок выполнения работы

По заданию преподавателя разработать алгоритм и реализовать программу подключения собственной подпрограммы обработки прерывания и использовать её в цепочке со стандартной подпрограммой обработки прерывания от одного из следующих устройств компьютера:

1. системный таймер;


3. контроллер накопителя на гибких магнитных дисках;

4. таймер реального времени;

5.контроллер накопителя на жёстком магнитном диске.

Содержание отчета

Отчет по лабораторной работе должен содержать:

— задание на лабораторную работу;

— блок-схему алгоритма с пояснениями;

— примеры запуска программы;

— структурная схема аппаратных средств, используемых при выполнении программы с необходимой степенью детализации блоков.

5.11. Контрольные вопросы

1. Что такое таблица векторов прерывания?

2. Что хранится в одной строчке таблицы векторов прерывания?

3. Какая информация сохраняется в стеке автоматически?

4. Какой из регистров процессора указывает на вершину стека?

5. Каким образом определяется точка входа в таблицу векторов прерывания?

6. Какую информацию следует сохранять в стеке в начале выполнения подпрограммы обработки прерывания?

7. Какие действия должна выполнить подпрограмма обработки прерывания перед своим завершением?

8. С какой частотой поступает запрос по линии прерывания IRQ0?

9. Сколько раз может вызываться прерывание от клавиатуры при однократном нажатии и отпускании произвольной клавиши?

10. Каким образом определяется приоритет при одновременном поступлении нескольких запросов на прерывание?

11. Чем определяется время реакции процессора на запрос прерывания?

12. Какие действия автоматически выполняются процессором при выходе из подпрограммы обработки прерывания?

Список литературы

  1. Цилькер Б.Я., Орлов С.А. Организация ЭВМ и систем. Учебник для вузов. СПб. Питер, 2006.
  2. Организация ЭВМ. 5-е изд./ К.Хамахер, З.Вранешич, С.Заки. – СПб. Питер; Киев: Издательская группа BHV , 2003. – 848 с.: ил.- (Серия «Классика computer science»).
  3. Скляров В.А. Применение ПЭВМ. Кн.1. Организация и управление ресурсами ПЭВМ. М. Высшая школа, 1992.
  4. Ларионов А.М., Горнец Н.Н. Периферийные устройства в вычислительных системах. М. Высшая школа,1991.
  5. Григорьев В.Л. Видеосистемы ПК фирмы IBM. М. Радио и связь,1993.
  6. Анисимов А.В., Валов А.А., Герасимов И.В., Петров Г.А., Родионов С.В., Филиппов Е.В., Чугунов Л.А. Основы организации вычислительных комплексов для решения задач автоматизации и управления: Учеб. Пособие / ГЭТУ. — СПб.,1995.

Содержание

Лабораторная работа №1. ИССЛЕДОВАНИЕ ВНУТРЕННЕГО ПРЕДСТАВЛЕНИЯ РАЗЛИЧНЫХ ФОРМАТОВ ДАННЫХ. 2

1.1. Общие положения. 2

1.2. Предварительная подготовка к работе. 13

1.3. Порядок выполнения работы. 13

1.4. Содержание отчета. 14

Лабораторная работа №2. ИССЛЕДОВАНИЕ ВИДЕОСИСТЕМЫ (ТЕКСТОВЫЙ РЕЖИМ). 2

2.1. Общие положения. 2

2.2. Видеорежимы и их краткая характеристика. 3

2.3. Функции консольного ввода-вывода. 6

2.4. Управление курсором. 7

2.5. Работа с текстовой информацией. 8

2.6. Скроллинг. Очистка окна и всего экрана. 9

2.7. Вывод информации в окно экрана. 10

2.8. Предварительная подготовка к работе. 13

2.9. Порядок выполнения работы. 13

2.10. Содержание отчета. 14

2.11. Контрольные вопросы. 14

Лабораторная работа № 3. ИССЛЕДОВАНИЕ ВИДЕОСИСТЕМЫ (ГРАФИЧЕСКИЙ РЕЖИМ). 15

3.1. Общие положения. 15

3.2. Инициализация и закрытие системы графики. 16

3.3. Обработка ошибок системы графики. 21

3.4. Определение и установка графического режима. 22

3.5. Управление цветами и палитрами. 24

3.6. Задание окна экрана. Определение и установка графических координат 24

3.7. Вывод текста в графическом режиме видеоадаптера. 26

3.8. Вывод графической информации. 30

3.8.1. Параметры и атрибуты графического вывода. 30

3.8.2. Чтение-запись отдельных пикселов. 36

3.8.3. Вывод отрезков прямых линий. 37

3.8.4. Вывод основных графических примитивов. 37

3.9. Предварительная подготовка к работе. 42

3.10. Порядок выполнения работы. 43

3.11. Содержание отчета. 43

3.12. Контрольные вопросы. 43

Лабораторная работа № 4. КЛАВИАТУРА IBM PC. ИСПОЛЬЗОВАНИЕ ПРЕРЫВАНИЙ. 45

4.1. Общие положения. 45

4.2. Аппаратные и программные средства ввода информации с клавиатуры 45

4.2.1. Аппаратные средства персонального компьютера для ввода информации с клавиатуры. 45

4.2.2. Анализ и преобразование скэн-кода. 46

4.2.3. Буфер клавиатуры. 48

4.3. Ввод информации с клавиатуры средствами MS-DOS. 50

4.3.1. Функции прерывания 21h MS-DOS для ввода информации с клавиатуры 50

4.3.2. Функции библиотеки С++. 51

4.4. Ввод информации с клавиатуры средствами BIOS. 52

4.5. Предварительная подготовка к работе. 42

4.6. Порядок выполнения работы. 53

4.7. Содержание отчета. 54

4.8. Контрольные вопросы. 54

Лабораторная работа № 5. ИСПОЛЬЗОВАНИЕ АППАРАТНЫХ ПРЕРЫВАНИЙ 55

5.1. Общие положения. 45

5.2. Аппаратные прерывания. 56

5.3. Немаскируемые прерывания. 59

5.4. Программные прерывания. 59

5.5. Исключительные ситуации. 60

5.6. Базовая система ввода-вывода BIOS. Прерывания BIOS. Области данных и таблицы BIOS. 60

5.7. Функции библиотеки С++ для доступа к обработчикам прерывания. 61

5.8. Предварительная подготовка к работе. 42

5.9. Порядок выполнения работы. 53

5.10. Содержание отчета. 54

5.11. Контрольные вопросы. 54

Список литературы. 54

Редактор Г. Г. Петров

Подписано в печать . Формат 60×84 1/16.

Бумага офсетная. Печать офсетная. Печ. л. .

Гарнитура « ». Тираж экз. Заказ

Издательство СПбГЭТУ «ЛЭТИ»

197376, С.-Петербург, ул. Проф. Попова, 5

Последнее изменение этой страницы: 2020-06-06; Нарушение авторского права страницы

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL