Z - флаг нулевого результата (ZeroFlag)



Устанавливается в 1, если результат арифметической, логической операции или операции пересылки данных равен 0. Сброс МК не влияет на значение бита нулевого результата.

N - флаг отрицательного результата (NegativeFlag).

Устанавливается по значению разряда D7 результата операции пересылки данных, арифметической или логической операции. Сброс МК не влияет на значение бита отрицательного результата. В микропроцессорной технике принят следующий стандарт: если разряд D7 является разрядом знака числа, то:

N=D7=0 - число положительное

N=D7=1 - число отрицательное.

H - флаг дополнительного переноса (Halt-CarryFlag).

Устанавливается в 1 при возникновении переноса между разрядами D3 и D4 аккумулятора при выполнении операций сложения ADD и сложения с переносом ADC. Этот признак необходим, если при обработке численных значений используют двоично-десятичный код (BCD). Сброс МК не влияет на значение бита дополнительного переноса.

V - флаг переполнения (Overflow)

Устанавливается в 1, если при выполнении арифметической операции получается результат, выходящий за пределы диапазона чисел, которые представлены в дополнительном коде со знаком. Теория систем счисления устанавливает следующее правило формирования флага переполнения: при сложении переполнение происходит только в том случае, если слагаемые имеют одинаковые знаки, а знак суммы отличается от знака слагаемых. На языке алгебры логики это правило записывается так:

V=A7&M7& Ú & &R7

Этот признак используется командами ветвления BGT, BGE, BLE, BLT. Сброс МК не влияет на значение бита переполнения.

I -  глобальная маска прерывания.

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

 

Способы адресации

Для выборки операндов из памяти МК семейства HCS08 используют следующие способы адресации:

· Неявная (INH - Inherent);

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

· Прямая (DIR - Direct);

· Прямая расширенная (EXT -Extended);

· Индексная (IX -Indexed);

· Индексная со смещением в один байт (IX1 –Indexed, 8 bitoffset);

· Индексная со смещением в два байта (IX2 –Indexed, 16 bitoffset)

· Индексная с постинкрементированием(IX+ - Indexedwithpostincrementer);

· Индексная со смещением в один байт с постинкрементированием(IX1+ - Indexed, 8 bitoffsetwithpostincrementer);

· Индексная по указателю стека со смещением в один байт (SP1 – Stackpointer, 8 bitoffset)

· Индексная по указателю стека со смещением в два байта (SP2 - Stackpointer, 16 bitoffset)

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

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

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

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

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

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

 

Примеры:

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

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

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

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

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

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

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

 

Примеры:

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

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

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

ORA $0A  ;Выполнить операцию поразрядного ИЛИ над содержимым АCC и содержимым ;ячейки памяти с адресом $000А. Результат поместить в ACC.

 

 


Дата добавления: 2018-04-04; просмотров: 409; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!