"П.Нортон "Программно-аппаратная организация компьютера IBM PC"" - читать интересную книгу автора

требуется изменять, когда изменилась процедура.
Другая причина использования программных прерываний для вызова
процедур связана с возможностью их замены. Рассмотрим пример. Как Вы
узнаете из главы 8, служебные процедуры для обслуживания дисплея выдают
звуковой сигнал с помощью динамика IBM/PC, каждый раз когда выдается код
CHR$(7). Предположим, что Вам необходимо подавить выдачу звукового
сигнала. Для этого можно написать программу, которая будет проверять какие
символы выдаются на экран и при появлении кода CHR$(7) заменяет его
пробелом. После окончания проверки эта программа должна передавать
управление обычной процедуре обслуживания дисплея.Фактически, нужно
сделать небольшое добавление перед стандартной процедурой обслуживания
дисплея. Чтобы задействовать эту программу необходимо заменить вектор
прерывания дисплея (прерывание 16) адресом Вашей программы.
Программные прерывания очень важны для работы IBM/PC. Большая часть
этой книги будет посвящена их более подробному описанию. В главе 4
описываются прерывания системы BIOS в ПЗУ. Чтобы Вы могли извлечь
максимальную пользу из этих системных функций, пакет программ, прилагаемый
к данной книге, содержит полный набор интерфейсных процедур, как
ассемблерных, позволяющих осуществлять доступ к служебным процедурам по
прерыванию из любых языков программирования (включая Бейсик и Паскаль),
так и вспомогательных процедур на Паскале, существенно облегчающих
использование ассемблерных процедур.
Прежде чем завершить рассмотрение прерываний, необходимо упомянуть
еще об одном необычном применении таблицы векторов прерываний. Таблица
векторов прерываний, располагающаяся в самом начале оперативной памяти,
предназначенная для хранения полных сегментированных адресов программ,
которые должны обслуживать соответствующие прерывания. Однако, в IBM/PC
использование таблицы векторов несколько шире. Хотя считается, что таблица
должна хранить только адреса программ, разработчики IBM/PC сочли ее очень
удобным местом для хранения адресов трех элементов, которые вовсе не
являются программами. Это адреса очень важных системных данных. Идея
заключается в том, чтобы использовать таблицу векторов прерываний в
качестве унифицированного хранилища важных сегментированных адресов - в
первую очередь, конечно, адресов программ, но, если необходимо, то и
данных. Таким образом, три номера прерываний, 29, 30 и 31 не используются
и соответствующие им вектора в таблице обнуляются, чтобы подготовить место
для хранения адресов трех важных таблиц данных. Естественно, что эти
номера прерываний не могут использоваться: если программа запросит
прерывание с номерами 29, 30 или 31, то управление будет передано в одну
из таблиц данных, которая начнет выполняться как программа.
В главе 6 мы более подробно рассмотрим ПЗУ и установим, что это за
таблица. Затем мы рассмотрим их по одной, в главах 7, 8, 9.


3.6. СТЕК

Стеки - это наиболее интересные и полезные средства современных
компьютеров. Вместе с прерываниями стеки обеспечивают эффективность работы
компьютеров.
Что такое стек? Стек - это место, в котором компьютер хранит рабочие