Какие номера прерываний зарезервированы за bios ms dos
Операционная система управляет программами, периферийными устройствами, словом, всем. Важную роль здесь играют прерывания. Прерывание представляет собой сигнал процессору, вырабатываемый программой, каким-либо устройством или самим процессором. Этот сигнал приостанавливает выполнение программы и запускает соответствующую функцию операционной системы для выполнения необходимых системных действий. Необходимость прерываний вызвана двумя причинами – специальными запросами на выполнение системных действий, например по вводу и выводу данных, а также возникновением ошибок при выполнении программ. Прерываниям присваиваются номера, например $10. Прерывания от $1F включительно зарезервированы для BIOS, а начиная с $20 до $62 - для операций MS-DOS. Прерывания хранятся в специальной таблице прерываний. В таблице 1 приведен перечень некоторых прерываний.
Прерывание из-за ошибки деления на нуль
Прерывания из-за переполнения при умножении
Функция печати копии экрана
Исключительная ситуация «неопределенный код операции»
Исключительная ситуация «код операции ESC»
Список установленного оборудования
Обслуживание дискового ввода- вывода
Обслуживание последовательного ввода вывода
Обслуживание ввода- вывода с клавиатуры
Программа начальной загрузки системы
Обслуживание системного таймера и часов
Часы таймера пользователя
Вызов функции MS-DOS
Адрес завершения программы
Адрес выхода Control-C
Адрес аварийного завершения из-за фатальной ошибки
Функция чтения по абсолютному адресу на диске
Функция записи по абсолютному адресу на диске
Функция «завершить и оставить резидентной»
В Паскале есть две процедуры для прямого обращения к функциям MS-DOS и BIOS -MSDos и Intr. Прерывания зависят от состояния регистров центрального процессора и заносят в эти регистры результат своей работы. Регистр – это внутреннее запоминающее устройство процессора для временного хранения обрабатываемой или управляющей информации. В модуле System имеется специальный тип Registers, который описывается следующим образом:
сase Integer of
0: (AX, BX, CX, BP, SI, DI, DS, ES, Flags: Word);
1: (AL, AH, BL, BH, CL, CH, DL, DH: Byte);
тип Registers представляет собой запись, состоящую только из вариативной части. В табл. Дан список регистров процессора 80х86.
Регистры общего назначения
Регистры данных (16-битные = 8 + 8 бит)
Базовый (индексный) регистр
Индексные регистры и регистровые указатели (16 бит)
Указатель базы регистра
Регистр- индекс источника
Регистр- индекс назначения
Сегментные регистры (16 бит)
Регистр командного указателя (16 бит)
Флаговый регистр
Сегментом называется область памяти размером 64 Кбайт, которая начинается по любому адресу, кратному 16. В области памяти, выделяемой программе, имеется три основных сегмента:
Сегмент кода содержит машинные команды, которые будут выполняться. Первая выполняемая команда находится в начале кодового сегмента и операционная система для выполнения программы передает управление по адресу данного сегмента.
Сегмент данных содержит данные и рабочие области, необходимые программе.
Сегмент стека содержит адреса для возврата в операционную систему и для возврата из программ в главную программу.
Особенность регистров общего назначения заключается в том, что возможна их адресация как в целом (т.е. одним словом), так и каждой однобайтовой части (например, AL- младшая половина, а AH – старшая половина). Регистр AX является сумматором и применяется для всех операций ввода – вывода, некоторых арифметических и строковых операций. Регистр BX может использоваться для расширенной адресации и вычислений. Регистр CX необходим для управления числом повторений циклов и операций сдвига. Регистр DX применяется для некоторых операций ввода- вывода и тех арифметических операций над большими числами, которые используют два регистра DX:AX. Регистровые указатели SP и BP обеспечивают системе доступ к данным в сегменте стека, реже они используются для вычислений. Индексные регистры SI (индекс источника) и DI (индекс назначений) могут применяться для расширенной адресации и операций сложения и вычитания. Регистр командного указателя содержит смещение указателя на команду, которая должна быть выполнена.
Флагом называют признак, установленный программно с целью указания особенностей выполнения стандартных операций,- это одноразрядный индикатор, отражающий выполнение или невыполнение определенного условия.
Процедуры, предназначенные для работы с регистрами процессора и прерывания MSDos и Intr модуля DOS:
Procedure MSDos (var regs: Registers);
Procedure Intr (number : Byte ; var regs: Registers);
Процедура Intr предназначена для обращения к прерыванию с указанным номером (первый параметр). Перед выполнением прерывания процедура загружает регистры процессора значением соответствующих полей записи regs. После выполнения прерывания содержимое этих регистров вновь записывается в соответствующую переменную. Процедура MSDos эквивалентна вызову процедуры Intr для прерывания $21.
Для прерывания $21 имеется несколько сотен функций MS-DOS , предназначенных для работы с файлами и дисками. Процедуры Паскаля, использующие все эти низкоуровневые операции, дают гораздо более удобные и безопасные способы их выполнения.
К работе с прерываниями следует прибегать, если в этом действительно есть необходимость. Это потенциально опасно, так как функции напрямую обращаются к операционной системе и выполняют системные операции. Неаккуратное обращение с ними может привести к потере части информации на дисках, и другим неприятным последствиям.
Операционная система управляет программами, периферийными устройствами, словом, всем. Важную роль здесь играют прерывания. Прерывание представляет собой сигнал процессору, вырабатываемый программой, каким-либо устройством или самим процессором. Этот сигнал приостанавливает выполнение программы и запускает соответствующую функцию операционной системы для выполнения необходимых системных действий. Необходимость прерываний вызвана двумя причинами – специальными запросами на выполнение системных действий, например по вводу и выводу данных, а также возникновением ошибок при выполнении программ. Прерываниям присваиваются номера, например $10. Прерывания от $1F включительно зарезервированы для BIOS, а начиная с $20 до $62 - для операций MS-DOS. Прерывания хранятся в специальной таблице прерываний. В таблице 1 приведен перечень некоторых прерываний.
Прерывание | Владелец | Назначение |
$00 | BIOS | Прерывание из-за ошибки деления на нуль |
$04 | BIOS | Прерывания из-за переполнения при умножении |
$05 | BIOS | Функция печати копии экрана |
$06 | BIOS | Исключительная ситуация «неопределенный код операции» |
$07 | BIOS | Исключительная ситуация «код операции ESC» |
$10 | BIOS | Обслуживание видеокарты |
$11 | BIOS | Список установленного оборудования |
$12 | BIOS | Размер памяти |
$13 | BIOS | Обслуживание дискового ввода- вывода |
$14 | BIOS | Обслуживание последовательного ввода вывода |
$16 | BIOS | Обслуживание ввода- вывода с клавиатуры |
$17 | BIOS | Обслуживание принтера |
$19 | BIOS | Программа начальной загрузки системы |
$1A | BIOS | Обслуживание системного таймера и часов |
$1B | BIOS | Клавиши Control-Break |
$1C | BIOS | Часы таймера пользователя |
$21 | MS-DOS | Вызов функции MS-DOS |
$22 | MS-DOS | Адрес завершения программы |
$23 | MS-DOS | Адрес выхода Control-C |
$24 | MS-DOS | Адрес аварийного завершения из-за фатальной ошибки |
$25 | MS-DOS | Функция чтения по абсолютному адресу на диске |
$26 | MS-DOS | Функция записи по абсолютному адресу на диске |
$27 | MS-DOS | Функция «завершить и оставить резидентной» |
В Паскале есть две процедуры для прямого обращения к функциям MS-DOS и BIOS -MSDos и Intr. Прерывания зависят от состояния регистров центрального процессора и заносят в эти регистры результат своей работы. Регистр – это внутреннее запоминающее устройство процессора для временного хранения обрабатываемой или управляющей информации. В модуле System имеется специальный тип Registers, который описывается следующим образом:
сase Integer of
0: (AX, BX, CX, BP, SI, DI, DS, ES, Flags: Word);
1: (AL, AH, BL, BH, CL, CH, DL, DH: Byte);
тип Registers представляет собой запись, состоящую только из вариативной части. В табл. Дан список регистров процессора 80х86.
Регистры общего назначения | |
Регистры данных (16-битные = 8 + 8 бит) | |
Регистр | Назначение |
AX = AH AL | Сумматор |
BX = BH BL | Базовый (индексный) регистр |
CX = CH CL | Счетный регистр |
DX = DH DL | Регистр данных |
Индексные регистры и регистровые указатели (16 бит) | |
Регистр | Назначение |
SP | Указатель стека |
BP | Указатель базы регистра |
SI | Регистр- индекс источника |
DI | Регистр- индекс назначения |
Сегментные регистры (16 бит) | |
Регистр | Назначение |
CS | Сегмент кода |
DS | Сегмент данных |
SS | Сегмент стека |
ES | Дополнительный сегмент |
Регистр командного указателя (16 бит) | |
IP | |
Флаговый регистр |
Сегментом называется область памяти размером 64 Кбайт, которая начинается по любому адресу, кратному 16. В области памяти, выделяемой программе, имеется три основных сегмента:
1. Сегмент кода содержит машинные команды, которые будут выполняться. Первая выполняемая команда находится в начале кодового сегмента и операционная система для выполнения программы передает управление по адресу данного сегмента.
2. Сегмент данных содержит данные и рабочие области, необходимые программе.
3. Сегмент стека содержит адреса для возврата в операционную систему и для возврата из программ в главную программу.
Особенность регистров общего назначения заключается в том, что возможна их адресация как в целом (т.е. одним словом), так и каждой однобайтовой части (например, AL- младшая половина, а AH – старшая половина). Регистр AX является сумматором и применяется для всех операций ввода – вывода, некоторых арифметических и строковых операций. Регистр BX может использоваться для расширенной адресации и вычислений. Регистр CX необходим для управления числом повторений циклов и операций сдвига. Регистр DX применяется для некоторых операций ввода- вывода и тех арифметических операций над большими числами, которые используют два регистра DX:AX. Регистровые указатели SP и BP обеспечивают системе доступ к данным в сегменте стека, реже они используются для вычислений. Индексные регистры SI (индекс источника) и DI (индекс назначений) могут применяться для расширенной адресации и операций сложения и вычитания. Регистр командного указателя содержит смещение указателя на команду, которая должна быть выполнена.
Флагом называют признак, установленный программно с целью указания особенностей выполнения стандартных операций,- это одноразрядный индикатор, отражающий выполнение или невыполнение определенного условия.
Процедуры, предназначенные для работы с регистрами процессора и прерывания MSDos и Intr модуля DOS:
Procedure MSDos (var regs: Registers);
Procedure Intr (number : Byte ; var regs: Registers);
Процедура Intr предназначена для обращения к прерыванию с указанным номером (первый параметр). Перед выполнением прерывания процедура загружает регистры процессора значением соответствующих полей записи regs. После выполнения прерывания содержимое этих регистров вновь записывается в соответствующую переменную. Процедура MSDos эквивалентна вызову процедуры Intr для прерывания $21.
Для прерывания $21 имеется несколько сотен функций MS-DOS , предназначенных для работы с файлами и дисками. Процедуры Паскаля, использующие все эти низкоуровневые операции, дают гораздо более удобные и безопасные способы их выполнения.
К работе с прерываниями следует прибегать, если в этом действительно есть необходимость. Это потенциально опасно, так как функции напрямую обращаются к операционной системе и выполняют системные операции. Неаккуратное обращение с ними может привести к потере части информации на дисках, и другим неприятным последствиям.
Практическая часть
1. Ввести программу.
2. Запустить на выполнение.
3. Пояснить работу процедур модуля DOS, предназначенных для выполнения системных операций (прерываний), обращения к памяти и портам ввода- вывода.
4. Ответить на контрольные вопросы
5. Оформить отчет
Задача 1 В качестве примера работы с прерываниями рассмотрим пример простой программы, в которой используется функция $2С для считывания показаний системных часов.
Операционная система управляет программами, периферийными устройствами, словом, всем. Важную роль здесь играют прерывания. Прерывание представляет собой сигнал процессору, вырабатываемый программой, каким-либо устройством или самим процессором. Этот сигнал приостанавливает выполнение программы и запускает соответствующую функцию операционной системы для выполнения необходимых системных действий. Необходимость прерываний вызвана двумя причинами – специальными запросами на выполнение системных действий, например по вводу и выводу данных, а также возникновением ошибок при выполнении программ. Прерываниям присваиваются номера, например $10. Прерывания от $1F включительно зарезервированы для BIOS, а начиная с $20 до $62 - для операций MS-DOS. Прерывания хранятся в специальной таблице прерываний. В таблице 1 приведен перечень некоторых прерываний.
Прерывание из-за ошибки деления на нуль
Прерывания из-за переполнения при умножении
Функция печати копии экрана
Исключительная ситуация «неопределенный код операции»
Исключительная ситуация «код операции ESC»
Список установленного оборудования
Обслуживание дискового ввода- вывода
Обслуживание последовательного ввода вывода
Обслуживание ввода- вывода с клавиатуры
Программа начальной загрузки системы
Обслуживание системного таймера и часов
Часы таймера пользователя
Вызов функции MS-DOS
Адрес завершения программы
Адрес выхода Control-C
Адрес аварийного завершения из-за фатальной ошибки
Функция чтения по абсолютному адресу на диске
Функция записи по абсолютному адресу на диске
Функция «завершить и оставить резидентной»
В Паскале есть две процедуры для прямого обращения к функциям MS-DOS и BIOS -MSDos и Intr. Прерывания зависят от состояния регистров центрального процессора и заносят в эти регистры результат своей работы. Регистр – это внутреннее запоминающее устройство процессора для временного хранения обрабатываемой или управляющей информации. В модуле System имеется специальный тип Registers, который описывается следующим образом:
сase Integer of
0: (AX, BX, CX, BP, SI, DI, DS, ES, Flags: Word);
1: (AL, AH, BL, BH, CL, CH, DL, DH: Byte);
тип Registers представляет собой запись, состоящую только из вариативной части. В табл. Дан список регистров процессора 80х86.
Регистры общего назначения
Регистры данных (16-битные = 8 + 8 бит)
Базовый (индексный) регистр
Индексные регистры и регистровые указатели (16 бит)
Указатель базы регистра
Регистр- индекс источника
Регистр- индекс назначения
Сегментные регистры (16 бит)
Регистр командного указателя (16 бит)
Флаговый регистр
Сегментом называется область памяти размером 64 Кбайт, которая начинается по любому адресу, кратному 16. В области памяти, выделяемой программе, имеется три основных сегмента:
Сегмент кода содержит машинные команды, которые будут выполняться. Первая выполняемая команда находится в начале кодового сегмента и операционная система для выполнения программы передает управление по адресу данного сегмента.
Сегмент данных содержит данные и рабочие области, необходимые программе.
Сегмент стека содержит адреса для возврата в операционную систему и для возврата из программ в главную программу.
Особенность регистров общего назначения заключается в том, что возможна их адресация как в целом (т.е. одним словом), так и каждой однобайтовой части (например, AL- младшая половина, а AH – старшая половина). Регистр AX является сумматором и применяется для всех операций ввода – вывода, некоторых арифметических и строковых операций. Регистр BX может использоваться для расширенной адресации и вычислений. Регистр CX необходим для управления числом повторений циклов и операций сдвига. Регистр DX применяется для некоторых операций ввода- вывода и тех арифметических операций над большими числами, которые используют два регистра DX:AX. Регистровые указатели SP и BP обеспечивают системе доступ к данным в сегменте стека, реже они используются для вычислений. Индексные регистры SI (индекс источника) и DI (индекс назначений) могут применяться для расширенной адресации и операций сложения и вычитания. Регистр командного указателя содержит смещение указателя на команду, которая должна быть выполнена.
Флагом называют признак, установленный программно с целью указания особенностей выполнения стандартных операций,- это одноразрядный индикатор, отражающий выполнение или невыполнение определенного условия.
Процедуры, предназначенные для работы с регистрами процессора и прерывания MSDos и Intr модуля DOS:
Procedure MSDos (var regs: Registers);
Procedure Intr (number : Byte ; var regs: Registers);
Процедура Intr предназначена для обращения к прерыванию с указанным номером (первый параметр). Перед выполнением прерывания процедура загружает регистры процессора значением соответствующих полей записи regs. После выполнения прерывания содержимое этих регистров вновь записывается в соответствующую переменную. Процедура MSDos эквивалентна вызову процедуры Intr для прерывания $21.
Для прерывания $21 имеется несколько сотен функций MS-DOS , предназначенных для работы с файлами и дисками. Процедуры Паскаля, использующие все эти низкоуровневые операции, дают гораздо более удобные и безопасные способы их выполнения.
К работе с прерываниями следует прибегать, если в этом действительно есть необходимость. Это потенциально опасно, так как функции напрямую обращаются к операционной системе и выполняют системные операции. Неаккуратное обращение с ними может привести к потере части информации на дисках, и другим неприятным последствиям.
В прошлом шаге мы использовали команду INT:
Int - это сокращение слова Interrupt что на русский переводиться как прерывание. Выглядит это команда так:
Я еще как бы хочу акцентировать внимание на проблемах, которые были связанны с появлением прерываний. Устройств всяких много - клавиатура, монитор, дисковод и так далее. Если не пользоваться прерываниями, то постоянно операционная система должна опрашивать устройства, нажата ли клавиша, хотите ли вывести данные на монитор и так далее. Намного проще оговорить некоторый механизм который и будет обращаться внимание операционной системы и процессора на необходимость проведения некоторых действий. Итак, давайте посмотрим на все это в динамике. Ваша программа что то считает. В этот момент нажимается клавиша. Программа должны быть прервана. И это будет сделано, управление будет передано специальному коду (процедура обработки прерывания) а потом Ваша программа будет выполняться дальше. То же самое когда мы вызываем прерывание для вывода символов на монитор (int 21h 04Ch) то сами генерируем прерывание. Зачем ? В этот момент может происходить считывание с дисковода или вывод других символов на экран. А тут мы не с того не с сего со своими символами. Так как прерывания могут наступать одновременно, то есть приоритет их обработки. Есть прерывание, которые выполняться в любом случае даже если идет обработка другого прерывания. Процедура обработки прерывания это программа. Вопрос в том только где она храниться. Базовая обработка прерывания храниться в BIOS и в самих микросхемах оборудования. Но использовать их довольно тяжело. Представьте, для того , что бы записать файл нужно завести двигатель дисковода, установить головку, дать команду перейти в тот сектор прочитать таблицу файлов, проверить что там нет файла и так далее так далее. Все эти задачи облегчает операционная система, которая предоставляет Вам прерывания более высоко уровня. Используя эти прерывания, Вы можете одним заходом создать файл, например. Различают прерывания по номерам:
Вот когда Вы вызываете прерывание (INT) Вы указываете еще и номер (21h) то есть, кто будет выполнять это действие.
Читайте также: