- •Микропроцессор мс68000
- •Обработка исключительных ситуаций.
- •Виды исключительных ситуаций.
- •Многократные ис.
- •Практическая часть.
- •1100 Lea 1200,a5 адрес начала сообщения
- •1100 Move.L a7,a0 копирование указателя стека
- •111Е move.L d1,d2 иначе выполняется операция вычитания
- •100А move.B #247,d7 установка функции ввода символа с
- •103С chk d1,d2 проверка размерности
- •1108 Cmpa.L a5,a6 конец строки?
- •Контрольные вопросы и задания
- •1. В чем состоит различие между прерываниями и исключительными ситуациями?
- •1. Напишите подпрограмму перехода из пользовательского режима в режим супервизора с использованием команды эмулятора.
100А move.B #247,d7 установка функции ввода символа с
клавиатуры
CLR.L D0 очистка регистра D0
TRAP #14 ввести символ в D0
CMPI.B #$D,D0 нажат Enter?
BEQ $103С если Да, то перейти к проверке на
размерность
CMPI.B #'0',D0 введенный символ меньше '0'?
BLT $100A если Да, то это не цифра - повторить ввод
CMPI.B #'F',D0 введенный символ больше 'F'?
BGT $100A если Да, то это не цифра - повторить ввод
CMPI.B #'@',D0 введенный символ '@'?
BEQ $100A если Да, то повторить ввод
MOVE.B #248,D7 отображение введенного символа на экран
TRAP #14
MOVE.B #235,D7 выбор функции преобразования ASCII символа
в шестнадцатиричную цифру.
TRAP #14 младшие 4 бита регистра D0 соответствуют
введенной цифре
LSL.L #4,D2 умножаем содержимое регистра D2 на 16
ADD.L D0,D2 прибавляем новую цифру
BRA $100A ввод следующей цифры
103С chk d1,d2 проверка размерности
1100 LEA $1200,A5 адрес начала строки
LEA $1210,A6 адрес конца строки
1108 Cmpa.L a5,a6 конец строки?
BNE $110E åñëè Äà, òî
RTE возврат из подпрограммы,
110E BTST #2,$FF0003 иначе проверяем готов терминал к выводу
символа
BEQ $110E если Нет, то ожидаем готовности,
MOVE.B (A5)+,$FF0007 иначе выводим символ
BRA $1108 вывод следующего символа
1200 DC.W $0D20
DC.W 'OU'
DC.W 'T '
DC.W 'OF'
DC.W ' R'
DC.W 'AN'
DC.W 'GE'
DC.W 00
Введите программу по адресам, указанным в листинге. Установите точку останова по адресу $103E, а затем запустите программу командой G 1000. После запуска программа будет ожидать ввода шестнадцатиричного числа, не более длинного слова (необходимо обратить внимание, что CHK проверяет только младшее слово указанных в команде регистров, т.е если вы введете число больше FFFF, то не смотря на это сравниваться будут только младшие 16 бит), ввод заканчивается нажатием клавиши Enter. Затем программа с помощью команды CHK проверяет размерность введенного числа, и, если оно меньше нуля или больше числа, хранящегося в регистре D1, то выдается сообщение 'OUT OF RANGE' и необходимо заново ввести число.
Контрольные вопросы и задания
Вопросы:
1. В чем состоит различие между прерываниями и исключительными ситуациями?
2. Какие данные сохраняются в стеке при генерации ИС "ошибка шины" и "ошибка адреса"?
3. Какова стандартная последовательность обработки ИС?
4. В чем разница в обработке прерываний с автовектором и с неавтоматическим вектором?
5. После генерации ИС "ошибка адреса" старшее слово стека было равно $E521. Объясните назначение этого слова и значение его содержимого?
6. Можно ли в подпрограмме обработки ИС "нарушение привилегированности команды" использовать команду TRAP #14?
7. Объясните принцип вложенности ИС?
8. Для чего служит маска прерываний в системном байте регистра статуса?
9. Пусть одновременно поступил запрос на прерывание от внешнего устройства с приоритетом, равным 7, и ИС "ошибка шины". Объясните действия процессора.
10. Будет ли выполнятся прерывание с приоритетом равным 5, если маска приоритета также равна 5?
11. Будет ли выполнятся прерывание с приоритетом равным 5, если в это время обрабатывается ИС "деление на ноль"?
12. Какие действия выполняет процессор при получении запроса на прерывание от внешнего устроуства?
13. Какое прерывание называют немаскируемым, и в чем его отличие от других?
14. Какая из перечисленных ИС имеет наивысший приоретет при одновременном возникновении, а какая низший:
·ошибка шины;
·немаскируемое прерывание;
·TRAP #14;
·команда эмулятора?
15. Объясните отличие в выполнение ИС reset от стандартной схемы обработки ИС?
16. Как можно перейти из пользовательского режима в режим супервизора?
17. Какие виды ИС вам известны?
18. Какие ИС относятся к внутренним?
19. Какие ИС относятся к внешним?
20. Как вычисляется вектор ИС?
21. Какую область памяти отводят для таблицы векторов ИС?
22. Какие команды являются привилегированными?
23. Как обрабатывается ИС "ошибка адреса"?
24. Как обрабатывается ИС "ошибка шины"?
25. Для чего служат ИС:
·команда TRAP
·эмулятор
·команда CHK
Задания