October 18 2017 03:00:48
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
глобальная маска прерывания
МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА НС08

Установка маски прерывания в 1 запрещает все прерывания, кроме программного по команде SWI. Если запрос на прерывание появится, когда маска I=0, то центральный процессор сохранит в стеке содержимое программного счетчика PC, аккумулятора АСС, младшего байта индексного регистра X и регистра признаков, установит бит I в 1 и перейдет на выполнение подпрограммы обработки прерывания. Если запрос на прерывание появится, когда флаг I=1, то запрос на прерывание будет запомнен. МК начнет обрабатывать запрос на прерывание сразу, как только бит I будет очищен. Инструкция RTI (возврат из прерывания) сбрасывает бит I в 0 автоматически. CPU08 имеет две специальные команды: CLI - очистить бит маски, SEI - установить бит маски. В состоянии сброса бит I устанавливается в 1, что запрещает аппаратные прерывания. Разрешение аппаратных прерываний (установка I в 0) может быть выполнено только программно командой CLI.

3.2.2. СПОСОБЫ АДРЕСАЦИИ

По сравнению с МК НС05 система адресации CPU08 претерпела существенное развитие. Для выборки операндов из памяти МК семейства НС08 используют следующие способы адресации:

• Неявная (INH - Inherent).

• Непосредственная (IMM - Immediate).

• Прямая (DIR - Direct).

• Прямая расширенная (EXT - Extended).

• Индексная (IX - Indexed ).

• Индексная со смещением в один байт (IX1 - Indexed, 8 bit offset).

• Индексная со смещением в два байта (IX2 - Indexed, 16 bit offset).

• Индексная с постинкрементированием (IX+ - Indexed with post incrementer).

• Индексная со смещением в один байт с постинкрементированием (IX1 + - Indexed, 8 bit offset with post incrementer).

• Индексная по указателю стека со смещением в один байт (SP1 - Stack pointer, 8 bit offset).

• Индексная по указателю стека со смещением в два байта (SP2 - Stack pointer, 16 bit offset)..

• Относительная (REL- Relative).

Неявная адресация

К инструкциям с неявной адресацией относятся команды, которые не требуют для своего выполнения каких-либо операндов, например команда STOP или команда возврата из прерывания RTI.

Неявную адресацию имеют инструкции, которые содержат адрес операнда в коде команды, например команда установки бита переноса SEC или команда инкремента аккумулятора INCA. Все команды с неявной адресацией имеют длину в 1 байт и состоят только из кода операции.

Непосредственная адресация

Код операции команды с непосредственной адресацией размещается в первом байте. Сразу же за кодом операции следует 1 байт данных. Эти данные не могут быть изменены в ходе выполнения программы, т.к. они расположены непосредственно в памяти программ, т.е. в ПЗУ. Большинство команд с непосредственной адресацией имеют длину 2 байта. Условное обозначение операнда в мнемонике команды - #opr.

Примеры:

ADD #opr   ; 3апись команды ADD с непосредственной адресацией

; в общем виде.

ADD #3       ; Сложить содержимое аккумулятора АСС с числом 3,

    ; результат записать в АСС.

ORA #$0А  ; Выполнить операцию поразрядного ИЛИ над содержимым АСС

; и шестнадцатеричным числом 0А. результат записать в АСС.

Прямая адресация

Команды с прямой адресацией имеют длину 2 байта. Первый байт предназначен для кода команды, второй байт содержит адрес ячейки памяти, где хранится операнд. Так как МК семейства НС08 имеют адресное пространство, превышающее диапазон $00...$FF, то во втором байте команды задается только младший байт адреса, а старший автоматически устанавливается $00. Условное обозначение адреса в мнемонике команды - opr.

Примеры:

ADD opr      ; 3апись команды ADD с прямой адресацией в общем виде.

ADD $31     ; Сложить содержимое аккумулятора АСС с содержимым ячейки

; памяти с адресом $0031. Результат поместить в АСС.

ORA $0А    ; Выполнить операцию поразрядного ИЛИ над АСС и

; содержимым ячейки памяти с адресом $000А. Результат

; поместить в АСС.

Прямая расширенная адресация

Команды с прямой расширенной адресацией имеют длину 3 байта. Первый байт предназначен для кода команды, второй и третий байты содержат адрес ячейки памяти, где хранится операнд. Команды с прямой расширенной адресацией позволяют работать со всем адресным пространством МК. Мнемонические обозначения команд с прямой и прямой расширенной адресацией совпадают. При трансляции программ не следует заботиться о том, что инструкции с прямой и прямой расширенной адресацией имеют одинаковую мнемонику. Программа ассемблер самостоятельно подставит код необходимой операции, проанализировав численное значение адреса opr.

Примеры:

ADD opr      ;3апись команды ADD с прямой расширенной адресацией в

; общем виде.

ADD $01E1 ;Сложить содержимое аккумулятора АСС с содержимым ячейки

; памяти с адресом $01Е1. Результат поместить в АСС.

LDX $01E1 ;3агрузить в младший байт индексного регистра X содержимое

; ячейки памяти с адресом $01Е1.

Индексная адресация

Команды с индексной адресацией имеют длину 1 байт, в котором расположен код операции. Адрес операнда находится в 2-байтовом индексном регистре Н:Х.

Примеры:

ADD ,X   ;3апись команды ADD с индексной адресацией в общем ;виде.

ADD ,X   ;Сложить содержимое аккумулятора АСС с содержимым ячейки

; памяти, адрес которой находится в индексном регистре Н:Х.

LDA ,Х    ;3агрузить в аккумулятор АСС содержимое ячейки памяти,

; адрес которой находится в индексном регистре Н:Х.

Индексная адресация со смещением 1 байт

Команды с данным типом адресации имеют длину 2 байта. Первый байт содержит код операции, а второй - беззнаковую константу, которая носит название "смещение". В определении адреса операнда участвует индексный регистр Н:Х, который содержит код базового адреса. Центральный процессор вычисляет адрес операнда путем сложения содержимого индексного регистра Н:Х с кодом второго байта команды. После сложения адрес операнда представляется в 2-байтовом формате.

Примеры:

ADD opr,X    ;3апись команды ADD с индексной адресацией со смещением в

; один байт в общем виде.

ADD $80,X   ;Сложить содержимое аккумулятора АСС с содержимым

; ячейки памяти, адрес которой равен (Н:Х) + 128.

LDA $ 1,Х     ;3агрузить в аккумулятор АСС содержимое ячейки ;памяти,

; адрес которой равен (Н:Х) + 1.

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.03 секунд 2,254,997 уникальных посетителей