IRQ -режим обнаружения запросов на прерывание от внешних устройств.
при IRQ=1 вывод IRQ/ микропроцессора реагирует как на низкий уровень сигнала на этом выводе, так и на перепад из высокого уровня в низкий.
при IRQ=0 ОЭВМ реагирует только на перепад из высокого в низкий уровень на входе IRQ.
Регистр команд программирования (PROG), расположенный по адресу 001СН, используется для установки режима при программировании ППЗУ.
Регистр команд программирования
Назначение | 0 | 0 | 0 | 0 | 0 | LAT | 0 | PGM |
Установка после RESET | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
LAT-бит определяет доступ к триггеру программирования ППЗУ.
при LAT=1-разрешен доступ к данным ППЗУ и адресной шине для программирования на следующем цикле записи байта.
при LAT=0-доступ запрещен.
Бит LAT может быть записан и прочитан.
PGM-разрешение/запрет программирования.
при PGM=1 напряжение программирования подается на ППЗУ.
при PGM=0 напряжение программирования отключено.
Если бит LAT сброшен, PGM не может быть установлен в 1.
Центральный процессор содержит 5 регистров, показанных на рис. 1-3. Регистры центрального процессора не являются частью карты памяти.
Рис. 3 Регистры ЦП.
Аккумулятор(A)-это 8-битный регистр общего назначения, в котором хранятся операнды, результаты арифметических операций, а также данные, с которыми производятся какие-либо операции. Аккумулятор также используется и для логических операций.
Индексный регистр (X)-используется либо при индексном режиме адресации, либо как вспомогательный аккумулятор. Этот регистр может быть загружен как непосредственно, так и из памяти, может быть сохранен в ячейке памяти или сравнен с ее содержимым.
Программный счетчик (PC)-это 13-битовый регистр, содержащий адрес команды, следующей за выполняемой, либо адрес операнда, входящего в код программы. Шина адреса MC68HC705C8 имеет разрядность 13 бит, что позволяет адресовать 8 Кб памяти.
Указатель стека (SP), как и программный счетчик, является 13-битным регистром, содержащим адрес следующей (свободной) ячейки стека. Во время начальной установки, либо при выполнении команды "Сброс указателя стека" (RSP), в указатель записывается адрес 00FFH. Затем это значение уменьшается по мере записи данных в стек. При обращении к памяти 7 старших бит указателя постоянно имеют значение 0000011В. Эти 7 бит добавляются к шести младшим битам для получения адреса от 00FFH до 00C0H. Подпрограммы и прерывания могут, таким образом, использовать до 64 ячеек памяти под стек. Если все ячейки заполнены, то указатель стека автоматически устанавливается в исходную позицию и записанная в стек информация теряется. Вызов подпрограммы использует 2 ячейки стека, прерывание-5 ячеек.
Регистр признаков (СС) содержит 5 флагов, устанавливающихся в зависимости от результата выполнения арифметических и других команд. Этими флагами являются: флаг полупереноса (Н), флаг отрицательного результата (N), флаг нулевого результата (Z), бит маски прерываний (I) и флаг переноса (С).
Флаг полупереноса(Н)-используется для операций с числами в двоично-десятичном коде и изменяется при операциях сложения (ADD) и сложения с флагом переноса (ADC). Бит Н устанавливается в 1 при возникновении переноса из бита 3 в бит 4.
Бит маскирования прерываний (I)-запрещает все маскируемые прерывания при установке его в 1. Бит I автоматически устанавливается при возникновении любого прерывания сразу же после сохранения регистров в стеке, но до передачи управления по вектору прерывания. Если внешнее прерывание происходит в тот момент, когда ,бит I установлен в 1, то запрос на прерывание фиксируется и обрабатывается после сброса бита I. После обслуживания прерывания, команда возврата из прерывания (RTI) восстанавливает содержимое регистров. Таким образом, после обработки прерывания I-бит сбрасывается, а при начальной установке ОЭВМ бит I устанавливается в 1 и может быть сброшен программно.
Флаг отрицательного результата (N) устанавливается в 1, если результат последней операции является отрицательным числом, и сбрасывается в противоположном случае.
Флаг нулевого результата (Z) устанавливается в 1, если результатом последней операции является 0 и сбрасывается в противоположном случае.
Флаг Перенос (заем) (С) индицирует, что произошел перенос в результате операции сложения, либо заем при вычитании. Операции сдвига и циклического сдвига происходят через этот бит, что дает возможность осуществлять операции сдвига с операндами из нескольких слов.
1.4. Режимы адресации.
ОЭВМ МС68НС705С8 использует восемь режимов адресации, определяющих способ доступа к данным, требуемым для выполнения команд. Способы адресации, поддерживаемые ОЭВМ МС68НС05С8, перечислены ниже:
неявная;
непосредственная;
прямая;
расширенная;
индексная без смещения;
индексная с 8-разрядным смещением;
индексная с 16-разрядным смещением;
относительная.
Команды с неявной адресацией либо не имеют операндов, либо содержат указание на операнд в мнемонике команды. К таким командам относятся, например, команды возврата из прерывания (RTI), останова (STOP) и т.д. Неявный тип адресации имеют команды работы с данными в регистрах микропроцессора, например, установить флаг переноса (SEC), увеличение числа, хранящегося в аккумуляторе, на единицу (INCA), и другие. Команды с неявной адресацией не требуют обращения к памяти и имеют длину один байт. В Таблице 1-1 приведен список команд, которые используют неявную адресацию.
Таблица 1-1. Команды, использующие неявную адресацию.
Команда | Мнемоника |
Арифметический сдвиг влево | ASLA, ASLX |
Арифметический сдвиг вправо | ASRA, ASRX |
Сбросить флаг переноса | CLC |
Сбросить флаг маскирования прерываний | CLI |
Обнулить | CLRA, CLRX |
Дополнение | COMA, COMX |
Декремент на 1 | DECA, DECX |
Инкремент на 1 | INCA, INCX |
Логический сдвиг влево | LSLA, LSLX |
Логический сдвиг вправо | LSRA, LSRX |
Умножение | MUL |
Изменить знак | NEGA, NEGX |
Нет операции | NOP |
Циклический сдвиг влево через флаг переноса | ROLA, ROLX |
Циклический сдвиг вправо через флаг переноса | RORA, RORX |
Инициализация указателя стека | RSP |
Возврат из прерывания | RTI |
Возврат из подпрограммы | RTS |
Установить флаг переноса | SEC |
Установить бит маскирования прерываний | SEI |
Разрешить IRQ\ и останов генератора синхроимпульсов | STOP |
Программное прерывание | SWI |
Запись содержимого аккумулятора в индексный регистр | TAX |
Проверить на отрицательность и равенство нулю | TSTA, TSTX |
Запись содержимого индексного регистра в аккумулятор | TXA |
Разрешить прерывание и останов процессора | WAIT |
Пример:
0200 4С INCA Инкремент аккумулятора
Производимые действия:
$0200 $4C [1], [2], [3]
Объяснение:
[1] процессор читает код операции $4C - инкремент аккумулятора;
[2], [3] процессор считывает содержимое аккумулятора, увеличивает на 1, запоминает новую величину в аккумуляторе, в соответствии с результатом устанавливает биты в регистре флагов.
При непосредственной адресации операнд первый операнд находится в аккумуляторе или индексном регистре, а второй является частью кода команды. Команды с непосредственной адресацией не требуют адреса памяти и имеют длину два байта. Код команды содержится в первом байте, а операнд во втором байте. Таблица 1-2 содержит команды, использующие непосредственную адресацию.
Таблица 1-2. Команды, использующие непосредственную адресацию.
Команда | Мнемоника |
Сложение с флагом переноса | ADC |
Сложение | ADD |
Логическое И | AND |
Битовое сравнение ячейки памяти с аккумулятором | BIT |
Сравнение аккумулятора и ячейки памяти | CMP |
Сравнение индексного регистра и ячейки памяти | CPX |
Исключающее ИЛИ ячейки памяти и аккумулятора | EOR |
Загрузить аккумулятор содержимым ячейки памяти | LDA |
Загрузить индексный регистр содержимым ячейки памяти | LDX |
Операция ИЛИ | ORA |
Вычитание с флагом переноса | SBC |
Вычитание | SUB |
Пример:
0200 А6 02 LDA #$02 Загрузить аккумулятор константой $02
Производимые действия:
$0200 $A6 [1]
$0201 $02 [2]
Объяснение:
[1] ЦП читает код операции $A6 - загрузить аккумулятор константой, следующей за кодом операции
[2] ЦП читает константу $02 по адресу $0201 и записывает ее в аккумулятор.
Команды с прямой адресацией имеют доступ к первым 256 ячейкам памяти и имеют длину два байта. Первым байтом является код команды, второй байт представляет собой младший байт адреса операнда. При использовании прямой адресации ЦП автоматически устанавливает в $00 старший байт адреса операнда. Исключение составляют команды BRSET и BRCLR, занимающие три байта и использующие прямую адресацию для доступа к операнду и относительную адресацию для определения точки перехода. В Таблице 1-3 представлены команды, которые используют режим прямой адресации к памяти.
Таблица 1-3. Команды, использующие прямую адресацию к памяти.
Команда | Мнемоника |
Сложение с флагом переноса | ADC |
Сложение | ADD |
Логическое И | AND |
Арифметический сдвиг влево | ASL |
Арифметический сдвиг вправо | ASR |
Сбросить бит в ячейке памяти | BCLR |
Битовое сравнение ячейки памяти и аккумулятора | BIT |
Переход, если бит n установлен | BRCLR |
Переход, если бит n сброшен | BRSET |
Сбросить бит в памяти | BCLR |
Установить бит в памяти | BSET |
Очистить | CLR |
Сравнение аккумулятора и ячейки памяти | CMP |
Дополнение | COM |
Сравнение индексного регистра и ячейки памяти | CPX |
Декремент на 1 | DEC |
Исключающее ИЛИ ячейки памяти и аккумулятора | EOR |
Инкремент на 1 | INC |
Безусловный переход | JMP |
Вызов подпрограммы | JSR |
Загрузить аккумулятор содержимым ячейки памяти | LDA |
Загрузить индексный регистр содержимым ячейки памяти | LDX |
Логический сдвиг влево | LSL |
Логический сдвиг вправо | LSR |
Изменение знака | NEG |
ИЛИ | ORA |
Циклический сдвиг влево через флаг переноса | ROL |
Циклический сдвиг вправо через флаг переноса | ROR |
Вычитание с флагом переноса | SBC |
Записать содержимое аккумулятора в ячейку памяти | STA |
Записать содержимое индексного регистра в ячейку памяти | STX |
Вычитание | SUB |
Проверка знака и равенства нулю | TST |
Пример: