
- •1.Эвм и ее архитектура. Назначение аппаратных средств.
- •2.Принцип работы компьютера
- •3.Системный блок и его предназначение
- •6. Мониторы. Классификация дисплеев
- •7, 23. Клавиатура. Технологии реализации клавиатур. Клавиатура и принципы ее работы.
- •10. Основные команды сопроцессора.
- •11.Типы данных сопроцессора
- •12.Программирование вычислений с вещественными числами
- •13. Программирование вычислений с целыми числами
- •14.Прерывания
- •15. Аппаратные и программные прерывания
- •16. Маскируемые и немаскируемые прерывания(не все!!!)
- •17. Прерывания bios
- •18. Прерывания dos
- •20 Функции прерывания dos int 21h.
- •21. Управление вводом-выводом
- •22. Резидентные программы
- •23. Клавиатура и принципы ее работы
- •24. Ввод символов с клавиатуры
- •25. Таймер
- •26. Установка даты и времени
- •27. Параллельный порт.
- •28. Последовательный порт
- •30. Программирование диска
- •31. Создание файла, его переименование. Удаления файла.
- •32.Создание каталога и его удаление. Установка текущего каталога
14.Прерывания
Аппаратные и программные прерывания
Прерывания - это готовые процедуры, которые компьютер вызывает для выполнения определенной задачи. Существуют аппаратные и программные прерывания. Аппаратные прерывания инициируются аппаратурой, либо с системной платы, либо с карты расширения. Они могут быть вызваны сигналом микросхемы таймера, сигналом от принтера, нажатием клавиши от клавиатуры и множеством других причин. Аппаратные прерывания не координируются с работой программного обеспечения. Когда вызывается прерывание, процессор оставляет свою работу, выполняет прерывание, а затем возвращается на прежнее место. Для того, чтобы иметь возможность вернуться точно в нужное место программы, адрес этого места (CS:IP) запоминается на стеке вместе с регистром флагов. Затем в CS:IP загружается адрес программы обработки прерывания и ей передается управление.
Программы обработки прерываний иногда называют драйверами прерываний. Они всегда заканчиваются инструкцией IRET (возврат из прерывания), которая завершает процесс, начатый прерыванием, возвращая старые значения CS:IP и регистра флагов, давая тем самым программе возможность продолжить выполнение из того же состояния.
С другой стороны программные прерывания на самом деле ничего не прерывают. Это обычные процедуры, которые вызываются вашими программами для выполнения рутинной работы, такой, как обработка нажатия клавиши на клавиатуре, или выход на экран. Эти программы находятся не внутри вашей программы, а в операционной системе, и механизм прерываний дает возможность обратиться к ним. Программные прерывания могут вызываться друг из друга. Например, все прерывания обработки ввода с клавиатуры DOS используют прерывания обработки ввода с клавиатуры BIOS для получения символ из буфера клавиатуры. Аппаратное прерывание может получить управление при выполнении программного прерывания. При этом не возникает конфликтов, так как каждая подпрограмма обработки прерывания сохраняет значения всех используемых ею регистров и затем восстанавливает их при выходе, тем самым не оставляя следов того, что она занимала процессор.
Адреса программ прерываний называют векторами. Каждый вектор имеет длину 4 байта. В первом слове хранится значение IP, а во втором - CS. Младшие 1024 байта памяти содержат векторы прерываний, таким образом, есть место для 256 векторов. Вместе взятые они называются таблицей векторов. Вектор для прерывания 0 начинается с ячейки 0000:0000, для прерывания 1 - с ячейки 0000:0004, 2 - с 0000:0008 и т.д. Если вы посмотрите на 4 байта, начиная с адреса 0000:0020, в которых содержится вектор прерывания 8Н (прерывание времени суток), то вы обнаружите там A5FE00F0. Имейте ввиду, что младший байт слова расположен сначала, и что порядок - IP:CS, это 4-байтовое значение переводится в FOOO:FEA5. Это стартовый адрес ПЗУ, выполняющей прерывание 8Н.
Контроллер прерываний и приоритеты, опознания источника прерываний
Для управления аппаратными прерываниями во всех типах IBM PC используется микросхема программируемого контроллера прерываний INTEL 8259. Так как в каждый момент времени может поступить не один запрос, микросхема имеет схему приоритетов. Имеется 8 уровней приоритетов, кроме АТ, у которого их 16, и обращения к соответствующим уровням обозначаются сокращениями от IRQ0 до IRQ7 (от IRQ0 AOIRQ15), что означает запрос на прерывание. Максимальный приоритет соответствует уровню 0. Добавочные 8 уровней для АТ обрабатываются второй микросхемой 8259; этот второй набор уровней имеет приоритет между IRQ2 и IRQ3. Запросы на прерывание 0-7 соответствуют векторам прерываний от 8Н до 0FH; для АТ запросы на прерывания 8-15 обслуживаются векторами от 70Н до 77Н.
Аппаратные прерывания в порядке приоритета
Прерыванию времени суток дан максимальный приоритет, поскольку если оно будет постоянно теряться, то будут неверными показания системных часов. Прерывание от клавиатуры вызывается при нажатии или отпускании клавиши; оно вызывает цепь событий, которая обычно заканчивается тем, что код клавиши помещается в буфер клавиатуры (откуда он затем может быть получен программными прерываниями).
Микросхема 8259 имеет три однобайтовых регистра, которые управляют восемью линиями аппаратных прерываний. Регистр запроса на прерывание (IRR) устанавливает соответствующий бит, когда линия прерывания сигнализирует о запросе. Затем микросхема автоматически проверяет, не обрабатывается ли другое прерывание. При этом она запрашивает информацию регистра обслуживания (ISR). Дополнительная цепь отвечает за схему приоритетов. Наконец, перед вызовом прерывания проверяется регистр маски прерывания (IMR), чтобы узнать, разрешено ли в данный момент прерывание данного уровня. Как правило, программисты обращаются только к регистру маски прерываний через порт 21Н и командному регистру прерываний через порт 20Н.
Маскируемые и немаскируемые прерывания(НЕ ВСЕ!!!)
Программы на ассемблере могут запретить аппаратные прерывания,
перечисленные выше. Это маскируемые прерывания; другие аппаратные прерывания, возникающие при некоторых ошибках (таких, как деление на ноль), не могут быть маскированы. Существуют две причины для запрета аппаратных прерываний. В первом случае все прерывания блокируются, с тем, чтобы критическая часть кода была выполнена целиком, прежде чем машина произведет какое-либо другое действие. Например, прерывания запрещают при изменении вектора аппаратного прерывания, чтобы избежать выполнения прерывания, когда вектор изменен на половину.
Во втором случае маскируются только определенные аппаратные прерывания. Это делается, когда некоторые прерывания могут взаимодействовать с операциями, критичными к временным интервалам. Например, точно рассчитанная по времени процедура ввода/вывода не может себе позволить быть прерванной длительным дисковым прерыванием.
Выполнение прерываний зависит от значения флага прерывания (бит 9) в регистре флагов. Когда этот бит равен О, разрешены все прерывания, которые разрешает маска. Когда он равен 1, все аппаратные прерывания запрещены.
Прерывания BIOS
В компьютерах IBM PC ROM находится по адресу FFFF0H. При включении компьютера процессор устанавливает состояние сброса, осуществляет контроль четности. В регистре CS устанавливает значение FFFF0H, а в регистре IP - нуль. Первая выполняемая команда по этому адресу FFFF:0 или FFFF0, что является точкой входа в BIOS. Система BIOS проверяет различные порты компьютера для определения и инициализации подключенных устройств. Затем BIOS создает в начале памяти (по адресу 0) таблицу прерываний, которая содержит адреса обработчиков прерываний, и выполняет две операции: INT 11Н (запрос списка присоединенного оборудования) и INT 12Н (запрос размера физической памяти).
Следующим шагом BIOS определяет, имеется ли на диске или дискете операционная система DOS. Если обнаружена системная дискета, то BIOS выполняет прерывание INT 19Н для доступа к первому сектору диска, содержащему блок начальной загрузки. Этот блок представляет собой программу, которая считывает системные файлы IBMBIO.COM и IBMDOS.COM с диска в память. После этого память будет иметь следующее распределение:
Таблица векторов прерываний
Данные BIOS
IBMBIO.COM и IBMDOS.COM
Резидентная часть COMMAND.COM
Доступная память для прикладных программ
Транзитная часть COMMAND.COM
Конец RAM (ОЗУ)
ROM BASIC
ROM BIOS
Внешние устройства передают сигнал внимания через контакт INTR в процессор. Процессор реагирует на этот запрос, если флаг прерывания IF установлен в 1 (прерывание разрешено), и, в большинстве случаев, игнорирует запрос, если флаг IF установлен в 0 (прерывание запрещено).
Операнд в команде прерывания, например INT 12Н, содержит тип прерывания, который идентифицирует запрос. Для каждого типа система содержит адрес в таблице векторов прерываний, начинающийся по адресу 0000. Так как в таблице имеется 256 четырехбайтовых элементов, то она занимает первые 1024 байта памяти от 0 до 3FF. Каждый элемент таблицы указывает на подпрограмму обработки указанного типа прерывания и содержит адрес кодового сегмента и смещение, которые при прерывании устанавливаются в регистры CS и IP соответственно.
Таблица: Список элементов таблицы векторов прерываний
Прерывания 00 - IF относятся к BIOS, а прерывания 20 - FF относятся к DOS и BASIC.
Прерывание заносит в стек содержимое флагового регистра, регистра CS и регистра IP. Например, для прерывания INT 12Н, которое возвращает в регистре АХ размер памяти, адрес элемента таблицы равен 0048 (12Н х 4 = 48Н). Операция выделяет четырехбайтовый элемент по адресу 0048 и заносит два байта в регистр IP и два байта в регистр - CS. Адрес, который получается в регистровой паре CS:IP, представляет собой адрес начала подпрограмм в области BIOS, которая получает управление. Возврат из этой подпрограммы осуществляется командой IRET (INTERRUPT RETURN), которая восстанавливает флаги и регистры CS и IP из стека и передает управление на команду, следующую за выполненной командой прерывания.
Рассмотрим основные прерывания BIOS.
INT 05Н - печать экрана. Осуществляет вывод содержимого экрана на печатающее устройство. Прерывание INT 05Н выполняет данную операцию из программы, а нажатие клавиши Ctrl/PrtSc с клавиатуры. Данная операция маскирует прерывания и сохраняет позицию курсора.
INT 11Н - запрос списка присоединенного оборудования. Определяет наличие различных устройств в системе и результата помещает в регистр АХ. При включении компьютера система выполняет эту операцию и сохраняет содержимое регистра АХ в памяти по адресу 4 ЮН. Биты в АХ принимают следующие значения:
INT 12Н - запрос размера физической памяти. Возвращает в регистр АХ размер памяти в килобайтах. Например, 200Н соответствует памяти 512 Кбайт. Данная операция позволяет осуществлять проверку соответствия размера программы объему доступной памяти.
INT 19Н - перезапуск системы. Данная операция при доступном диске считывает сектор 1 с дорожки 0 в область начальной загрузки в памяти (сегмент 0, смещение 7С00) и передает управление поэтому адресу. Если дисковод не доступен, то операция передает управление через INT 18Н в среду Бейсик. Данная программа не очищает экран и не инициализирует данные BIOS; ее можно использовать из программы.
INT 1АН - запрос и установка текущего времени и даты. Считывает или записывает показания часов в соответствии со значением в регистре АН. Для определения продолжительности выполнения программы, можно перед началом ее выполнения установить часы в 0, а после считать текущее время. Отчет времени идет приблизительно 18,2 раза в секунду. Значение в регистре АН соответствует следующим операциям:
АН=00 - это запрос времени. В регистре СХ устанавливается старшая часть значения, а в регистре DX
младшая. Если после запроса прошло 24 часа, то в регистре AL будет не нулевое значение.
АН=01 - это установка времени. Время устанавливается по регистрам: старшая часть значения устанавливается в регистр СХ, а младшая часть значения - в регистр DX. Временем и датой для компьютеров АТ управляют коды 02 и 06.
Прерывания DOS
Прерывания от INT 20Н до INT 62Н зарезервированы для операций DOS. К основным операциям DOS относятся:
INT 20Н - завершение программы. Запрос завершает выполнение программы и передает управление в DOS. Данный запрос обычно находится в основной процедуре.
INT 21Н - запрос функции DOS. Основная операция DOS, вызывающая определенную функцию в соответствии с кодом в регистре АН.
Рассмотрим основные базовые функции для прерывания INT 21Н.
00- это завершение программы. Данная операция аналогична прерыванию INT 20Н, т.е.
mov ah,00h ; в регистр АН помещаем код функции
int 21 h ; завершения программы
01- ввод символа клавиатуры с эхом на экран.
02- вывод на экран.
05- вывод символа на печать.
06- прямой ввод с клавиатуры и вывод на экран.
07- ввод с клавиатуры без эха и без проверки Ctrl/Break.
08- ввод с клавиатуры без эха с проверки Ctrl/Break.
08- вывод строки символов на экран.
13 - удаление файла с диска.
16- создание файла.
17- переименование файла.
19 - определение текущего дисковода.
23- определение размера файла.
2А - получение даты (СХ- год, DH - месяц, DL-день).
2В - установка даты.
2С - получение времени (СН - час, CL - мин., DH - сек, DL - 1/100 с).
2D - установка времени
Начиная с версии 2.0, в DOS применяются расширенные функции. К ним относятся:
30 - получение номера версии DOS в регистре АХ.
31 - завершение программы, после которого она остается резидентной в памяти.
39 - создание подкаталога.
ЗА - удаление подкаталога.
ЗВ - установка текущего каталога.
3F - чтение из файла или ввод с устройства.
40 - запись в файл или ввод на устройство.
41 - удаление файла из каталога.
49 - освобождение выделенной памяти.
4А - изменение длины блока выделенной памяти.
4В - загрузка /выполнение программы (подпрограммы).
56 - переименование файла.
5В - создание нового файла.
Все базовые функции приведены в Прилож. 1.
INT 27Н - завершение программы, оставляющее ее резидентной. Эта операция позволяет сохранить COM-программу в памяти.