Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
409
Добавлен:
06.01.2022
Размер:
33.47 Mб
Скачать

Маска прерываний

С помощью признака прерываний I в регистре признаков можно блокировать вход прерываний IRQ, Переход к прерывающей программе происходит только в том случае, если сигнал IRQ подается в ЦПЭ и признак 1 установлен в исходное состояние. Поэтому этот признак называется также маской прерываний. Ее можно установить или сбросить с помощью соответствующих команд SEI и CLI, указанных в табл. 21.6. При переходе к прерывающей программе маска устанавливается автоматически, для того чтобы эту программу нельзя было вызвать снова, прежде чем она закончится. Выполнение программы, которое осуществляется при прерывании, иллюстрирует рис. 21.5.

По управляющей шине NMI (Non maskable Interrupt) можно переходить ко второй прерывающей программе, начальный адрес которой записан в ячейках FFFC (старший байт) и FFFD (младший байт). При этом способе прерываний маска прерываний не опрашивается, поэтому обе прерывающие программы тоже можно вложить друг в друга.

Третья прерывающая программа может начинаться командой SWI (Software Interrupt). Ее начальный адрес тоже будет записан не в программе, а в ячейках FFFA и FFFB. При этом преимущество (по отношению к обычной команде перехода) состоит в том, что содержимое рабочих регистров без дополнительных команд временно запоминается в стеке. Возврат происходит по команде RTI. Маска прерываний не контролируется.

Повторный пуск.

Дополнительную возможность для вмешательства в выполняемую программу с помощью управляющего сигнала предоставляет вход «Reset» на ЦПЭ. Этот вход используется для пуска машины. Если управляющий сигнал «Reset» воспринят ЦПЭ, то он загружает программный счетчик адресом повторного пуска. Этот адрес должен быть постоянно записан в ячейках FFFE и FFFF. Перечень различных начальных адресов приведен на рис. 21.6.

После повторного пуска в указателе стека может быть записано случайное число. Поэтому в начале программы с помощью команды LDS необходимо загрузить определенный адрес в указатель стека, если предусматривается какая-либо операция со стеком.

21.4. Отладочные средства

Как уже упоминалось, микро-ЭВМ, как правило, используются не как вычислительные машины с изменяемой программой, а как управляющие вычислительные устройства с постоянной программой. При этом программа записывается в программируемые постоянные запоминающие устройства (ППЗУ).

В предыдущих разделах было показано, как с помощью программирующих таблиц можно составить программу непосредственно в шестнадцатеричном коде. Готовую программу с помощью программатора можно записать в ППЗУ и таким образом ввести ее в структуру микроЭВМ, показанную на рис. 21.1. Однако в большинстве случаев такая программа не работает, так как в ней содержатся ошибки. Это объясняется тем, что приведенная структура микро-ЭВМ не дает возможности корректировать программы, а поиск ошибок затруднен и занимает много времени.

В данном разделе излагаются некоторые методы разработки и отладки программ до их записи в ППЗУ.

Рис. 21.5. Блок-схема обработки прерывания IRQ и возврата RTI.

Рис. 21.6. Заполнение ячеек памяти начальными адресами прерывающей программы.

21.4.1. ОТЛАДОЧНАЯ МИКРО-ЭВМ

В связи с тем что на этапе отладки в программу необходимо вносить изменения, она должна быть записана в отладочное ОЗУ. Структура отладочной микроЭВМ соответствует рабочей микро-ЭВМ с постоянной программой, но в ОЗУ выделяется область для памяти программ.

Типовое распределение памяти рабочей ЭВМ приведено на рис. 21.7. ПЗУ с записанными программами располагается в верхней части области памяти так, чтобы можно было разместить адреса повторного пуска и прерываний в соответствии с рис. 21.6. ОЗУ данных целесообразно расположить в нижней части области памяти для того, чтобы иметь возможность использовать укороченную адресацию.

Поскольку при заполнении стека адреса убывают, то по первой команде программы пользователя в указатель стека записывается верхний адрес, назначенный для ПЗУ. В зависимости от количества необходимых подпрограмм и уровней прерываний нужно предусмотреть соответствующее количество зон памяти.

Распределение памяти соответствующей отладочной ЭВМ представлено на рис. 21.8. Память программ располагается в ОЗУ, кроме верхних двух ячеек FFFE и FFFF, в которых хранится адрес повторного пуска. Для повторного пуска можно использовать переключатель, с помощью которого через шину данных опрашиваются адреса FFFE и FFFF. В рабочей ЭВМ объем памяти обычно значительно меньше теоретически возможного объема 64 К. Поэтому при распределении памяти средняя ее зона остается свободной (рис. 21.7). В этой зоне отладочной ЭВМ располагают систему монитора. Она состоит из ПЗУ, содержащего сервисную программу, ОЗУ для временного хранения информации, а также программ ввода-вывода. Важнейшей составной частью программы монитора являются программы ввода и вывода информации.

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

Программа вывода производит вывод содержимого аккумулятора в 16-ричном коде или в виде знаков телетайпа. Из этих двух программ состоит сервисная программа, которая вызывается с помощью специальной клавиши.

Индикация содержимого ячейки памяти. Осуществляются ввод требуемого адреса ячейки М в виде четырехразрядного шестнадцатеричного числа и индикация содержимого ячейки в виде двухразрядного шестнадцатеричного числа (рис. 21.9). Это содержимое можно модифицировать путем ввода новых чисел.

Рис.21.8. Отладочная микро-ЭВМ. Рис. 21.7. Рабочая микро-ЭВМ.

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

С помощью последних двух команд сервисная программа позволяет записать программу пользователя в отведенную область ОЗУ. После этого производится изменение адреса повторного пуска: начальный адрес сервисной программы заменяется на начальный адрес программы пользователя и дается сигнал сброса.

Однако обычно для начала программы монитора устанавливается постоянный начальный адрес.

Рис. 21.9. Индикация после вызова адреса ячейки памяти FCOO и ввода числа 8Е.

Тогда для пуска программы пользователя необходима специальная программа (GO), которая считывает начальный адрес с клавиатуры и записывает его в программный счетчик.

Многие программы монитора дополнительно снабжены командами перфорации (PUNCH) и загрузки (LOAD). Благодаря этим командам можно выводить и вводить программу пользователя с помощью перфоленты через телетайп. Если телетайпа нет, то ее можно с помощью модема записать на магнитную ленту. В настоящее время многие микро-ЭВМ содержат записанную в ПЗУ программу монитора. В качестве примера можно указать EUROCOM-1 фирмы Eltec. GmbH в Майнце, которая уже имеется для DM 350.

21.4.2. СИСТЕМА ОТЛАДКИ

В предыдущем разделе было показано, что с помощью программы монитора можно создать и проверить программу пользователя.

Рис. 21.10. Структура системы отладки.

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

Для быстрой и удобной работы с ассемблером необходима дисковая память (например- гибкий диск) с соответствующей операционной системой. Тогда процесс перевода происходит автоматически. Схематично такая система отладки представлена на рис. 21.10. Стоимость ее создания сравнительно высока (от 20 до 50 тыс. западногерманских марок). Дисковая операционная система может также использоваться при компиляции программ с таких языков высокого уровня, как, например, ФОРТРАН, БЭЙСИК, ПАСКАЛЬ.

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

С целью коррекции программы пользователя нередко используется дизассемблер, который переводит программу обратно в символическую форму и выдает ее на печать. Такой системой отладки является, например, EVK 300 фирмы AMI. Эта система содержит ПЗУ объемом 2 Кбайт для ассемблера и дизассемблера и обеспечивает возможность программирования ППЗУ. Вместе с пультом управления она стоит около 3000 западногерманских марок.