Программирование на Ассемблере
Почти все команды процессора MC68000 - 16-битные (без учета операндов),
а 16-битное слово может принимать 65536 различных значений. Поскольку
реальное число команд процессора намного меньше, то возможна ситуация,
когда процессор \"натолкнется\" на несуществующую команду. В этом случае
генерируется исключение \"неопознанная команда\". Деление на ноль.
Генерируется при попытке выполнения команды деления с нулевым делителем. CHK.
Генерируется командой CHK, если содержимое регистра данных выходит за
некоторый диапазон. TRAPV.
Генерируется по команде TRAPV, если установлен бит V регистра статуса. Нарушение привелегий.
Генерируется при попытке выполнения привелегированной команды в
пользовательском режиме. Трассировка.
Если бит трассировки в регистре статуса установлен, то данное исключение
генерируется после каждой выполненной машинной команды. Механизм
трассировки (пошагового выполнения) используется при отладке программ. Эмуляция команд Axxx.
Эмуляция команд Fxxx.
Если процессор при выполнении программы встречает слово, начинающееся с $A
или $F (например, $A010 или $F200), то генерируется соответствующее
исключение. Таким образом, используя вектора $28 и $2C, можно расширять
набор команд процессора. Прерывание по неинициализации.
Генерируется, когда неинициализированное внешнее устройство посылает запрос
на прерывание. Прерывание по верификации.
Генерируется при ошибке шины во время верификации прерывания от внешнего
устройства. Прерывания уровней 1-7.
Эти вектора содержат адреса подпрограмм-реакций на прерывания в
соответствии с их приоритетами: если уровень, указанный в регистре статуса,
больше уровня возникшего прерывания, то это перерывание игнорируется. TRAP.
Генерируются командами TRAP (от TRAP #0 до TRAP #15). Пользовательские вектора.
Эти вектора содержат адреса обработчиков прерываний от некоторых внешних
устройств. Мы не будем углубляться в детали механизма исключений, так как это выходит
за рамки нашей книги.
|