double arrow

Средства диалогового режима

Все ГИС – технологии построены на диалоговом (интерактивном) режиме. Для этого микропроцессор использует три вида средств: средства доступа к памяти, порты, прерывания.

Средства доступа к памяти включают микропроцессор и программные средства.

Механизм адресации к памяти в компьютерах типа IBM PC использует два компонента: сегментное значение CS, DS, SS, которое кратно границе параграфа (16 байт) и относительное значение IP, SI, DI, которое указывает на байт, расположенный в заданном смещении относительно сегмента. Этими двумя значениями указывается полный адрес. Их еще называют адресным вектором или просто вектором. Физический адрес образуется так:

1) значение сегмента адреса сдвигается на 4 бита влево с заполнением разрядов справа нулями;

2) к образовавшемуся 20 - битовому значению прибавляется значение смещения адреса. При возникновении переполнения берутся только младшие пять шестнадцатеричных цифр результата.

Обычно физический адрес записывается парой значений, разделенных двоеточием: segment: offset. Например, записи 0151:1Bh соответствует следующий адрес.

+
0 1 5 1 0

1 В

0 1 5 2 В

Один и тот же адрес может быть представлен по-разному. Например, адресу 0152В может соответствовать следующая запись — 0000:0152Вh, или 152: 000Вh, 0100:052Вh и др.

Порты представляют собой устройства, которые соединяют процессор с периферийными устройствами. Порты имеют адреса или номера и используются для передачи данных на периферийные устройства или приема их с периферийных устройств. Через порт процессор получает сигналы с устройств ввода и посылает сигналы на устройства вывода. Теоретически процессор может управлять до 65 536 портами, начиная с нулевого порта.

Для ввода в регистр AL (байт) или АХ (слово) передаются данные из порта. Для вывода данные передаются из регистра AL или АХ в порт.

Рассмотрим пример назначения порта, связывающего процессор с принтером для вывода символов.

В этом случае алгоритм будет таким:

а) в регистр AL записывается значение выводимого символа,

б) установкой одного из значений: 0,1,2 в регистр DX осуществляется выбор порта для вывода (0 - LPT1, 1 – LPT2, 2 – LPT3). Если выбрать нуль, то DX=0.

в) функцией AH=0 осуществляется передача символа с регистра AL в порт.

Чтобы осуществить передачу символа необходимо приостановить выполнение программы или осуществить ее прерывание.

Прерывания – это операции, которые приостанавливают выполнение программ для специальных системных действий.

Прерывания необходимы по следующим причинам: преднамеренный запрос ввода – вывода на различные периферийные устройства, непредвиденные программные ошибки. Прерывания привлекают внимание компьютера для выполнения передачи данных, исправления программ. Всеми прерываниями управляет система BIOS.

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

После включения DOS процессор принимает сигналы от внешних устройств. Если флаг прерывания IF в регистре флагов установлен в 1, то процессор реагирует на сигнал (запрос) устройства, если нет, то игнорирует его.

Операнд в команде прерывания содержит тип прерывания. Для каждого типа прерывания имеется 4 – байтовый элемент в таблице адресов (векторов) прерываний (табл.2). Поскольку существует 256 типов прерываний, то вся таблица адресов занимает 256*4=1024 байта, памяти от 0 до 3FF. Каждый 4 – байтовый элемент содержит адрес начала подпрограммы в области BIOS, которая получает управление по обработке прерывания.

Таблица 2. Таблица адресов прерываний.

адрес   функция прерывания
0 – 3 4 – 7 8 – B C – F 10 – 13 14 – 17 18 – 1F 20 – 23 24 – 27 28 – 37 38 – 3B 3C – 3F 40 – 43 44 – 47 48 – 4B 4C – 4F 50 – 53 54 – 57 58 – 5B 5C – 5F 60 – 63 64 – 67 68 – 6B 6C – 6F 70 – 73 74 – 77 78 – 7B 7C – 7F 80 – 83 84 – 87 88 – 8B 8C – 8F 90 – 93 94 – 97 98 – 9B 9C – 9F A0 – FF 100 – 1FF 200 – 217 218 – 303 3C4 –3FF 6,7 A,B,C,D E F 1A 1B 1C 1D 1E 1F 28 – 3F 40 – 7F 80 – 85 86 – F0 F1 – FF Деление на нуль Пошаговый режим (трассировка DEBUG) Немаскированное прерывание (NMI) Точка останова (используется в DEBUG) Переполнение регистра Печать экрана Зарезервировано Сигнал от таймера Сигнал от клавиатуры Используется в компьютерах AT Сигнал для дискетного дисковода Используется для принтера Управление дисплеем Запрос оборудования Запрос размера памяти Дисковые операции в/в Управление коммуникационным адаптером Кассетные операции и специальные функции АТ Ввод с клавиатуры Вывод на принтер Обращение к BASIC, встроенному в ROM Перезапуск системы Запрос и установка времени и даты Прерывание от клавиатуры Прерывание от таймера Адрес таблицы параметров дисплея Адрес таблицы параметров дисковода Адрес таблицы графических символов Нормальное завершение программы (DOS) Обращение к функциям DOS Адрес обработки завершения задачи (DOS) Адрес реакции по CTRL/BREAK (DOS) Адрес реакции на фатальную ошибку (DOS) Абсолютное чтение с диска (DOS) Абсолютная запись на диск (DOS) Создание резидентной программы (DOS) Другие функции DOS Зарезервировано Зарезервировано для BASIC Используется BASIC – интерпретатором Зарезервировано

Примечание: прерывания 00 – 1F относятся к BIOS.

прерывания 20 – FF относятся к DOS и BASIC.

Например, если тип прерывания равен 05h (печать экрана), то по адресу 05h*4=14h в четырех - байтовый элемент заносится значение адреса (сегмента CS и смещения IP) подпрограммы, которое осуществит печать содержимого экрана.

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

Следуя таблице прерываний для рассматриваемого примера на печать следует использовать прерывание с номером 17. После его осуществления произойдет передача символа на принтер.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: