ОДНОКРИСТАЛЬНЫЕ МИКРОКОНТРОЛЛЕРЫ

MC68HC08

MOTOROLA

Основные характеристики

MC68HC08 - КМОП технология - с 1994 г.

n  Одинаковое 8-разрядное процессорное ядро, на порядок более производительное, чем M68HC05

n  8 Мгц - внутренняя тактовая частота шины (4мгц для HC08AS48)

n  CSIC - Customer Specified Integrated Circuits design strategy - определяемая пользователем архитектура на базе набора стандартных модулей

n  Объектная совместимость снизу вверх с M6805, M68HC05

n  16 методов адресации

n  64k - общее адресное пространство

n  ПЗУ - до 56К (HC08LN56) (масочное, однократно программируемое, с УФ стиранием, с электрическим стиранием)

n  ОЗУ - до 1.5К

n  7 портов ввода / вывода

n  Поддержка прямого доступа к памяти (НС708XL36)

n  Отсутствует возможность обращения к внешней памяти

n  Таймер 16-разрядный до 6 каналов IC, OC (Input Capture, Output Compare)

n  COP (Computer Operate Properly) Watchdog таймер

n  SPI - Serial Peripheral Interface - синхронный последовательный канал связи

n  SCI - Serial Communication Interface - асинхронный последовательный канал связи, Гц

n  АЦП - до 16 каналов, 8 бит

n  ШИМ - (PWM - Pulse Width Modulation) (HC708MP16) - управление громкостью звука, яркостью изображения, управление электродвигателями

n  Котроллер жидкокристаллического индикатора (HC08LN56)

n  24 источника прерывания, в т. ч. 6 источников RESET, приоритет которых выше приоритета прерываний

n  64- выводной QFP или 52-выводной PLCC корпус

Обозначения

OP - код операции;

<- - операция присвоения;

: - операция конкатенации;

ad8 - прямой восьмиразрядный адрес 8-разрядного или 16-разрядного регистра; ad8 - адрес старшего байта; ad8+1 - адрес младшего байта;

ad16 - прямой шестнадцатиразрядный адрес 8-разрядной ячейки памяти ;

ADMAX - максимальный адрес в системе: $FFFF для НС08, $1FFF для MC86HC705C8

d - непосредственные 8-разрядные или 16-разрядные данные;

d8 - непосредственные 8-разрядные данные;

d16, d16h, d16l - непосредственные 16-разрядные данные, старший и младший байты;

of8 - восьмиразрядное смещение без знака;

of16, of16h, of16l - шестнадцатиразрядное смещение без знака, старший и младший байты;

rel - приращение адреса из множества [-128,+127] в командах условного перехода, прибавляемого к адресу следующей за командой перехода команды;

D, S - префиксы, явно указывающие на принадлежность соответс­твенно к приемнику и источнику операнда;

(ad) - содержимое байта либо слова, адресуемого адресом ad;

cad - метка в ассемблере, обозначающая адрес команды, на кото­рую осуществляется переход; абсолютное значение адреса заменяется ас­семблером на относительное приращение rel, равное расстоянию в байтах между адресом следующей за текущей команды и меткой cad.

Регистры

7 0

A - Аккумулятор

15 8

7 0

H

X H:X - объед-й индексный регистр

Reset

0 - совмест-ть с HC05

ОДНОКРИСТАЛЬНЫЕ МИКРОКОНТРОЛЛЕРЫ

MC68HC08

MOTOROLA

Основные характеристики

MC68HC08 - КМОП технология - с 1994 г.

n  Одинаковое 8-разрядное процессорное ядро, на порядок более производительное, чем M68HC05

n  8 Мгц - внутренняя тактовая частота шины (4мгц для HC08AS48)

n  CSIC - Customer Specified Integrated Circuits design strategy - определяемая пользователем архитектура на базе набора стандартных модулей

n  Объектная совместимость снизу вверх с M6805, M68HC05

n  16 методов адресации

n  64k - общее адресное пространство

n  ПЗУ - до 56К (HC08LN56) (масочное, однократно программируемое, с УФ стиранием, с электрическим стиранием)

n  ОЗУ - до 1.5К

n  7 портов ввода / вывода

n  Поддержка прямого доступа к памяти (НС708XL36)

n  Отсутствует возможность обращения к внешней памяти

n  Таймер 16-разрядный до 6 каналов IC, OC (Input Capture, Output Compare)

n  COP (Computer Operate Properly) Watchdog таймер

n  SPI - Serial Peripheral Interface - синхронный последовательный канал связи

n  SCI - Serial Communication Interface - асинхронный последовательный канал связи, Гц

n  АЦП - до 16 каналов, 8 бит

n  ШИМ - (PWM - Pulse Width Modulation) (HC708MP16) - управление громкостью звука, яркостью изображения, управление электродвигателями

n  Котроллер жидкокристаллического индикатора (HC08LN56)

n  24 источника прерывания, в т. ч. 6 источников RESET, приоритет которых выше приоритета прерываний

n  64- выводной QFP или 52-выводной PLCC корпус

Обозначения

OP - код операции;

<- - операция присвоения;

: - операция конкатенации;

ad8 - прямой восьмиразрядный адрес 8-разрядного или 16-разрядного регистра; ad8 - адрес старшего байта; ad8+1 - адрес младшего байта;

ad16 - прямой шестнадцатиразрядный адрес 8-разрядной ячейки памяти ;

ADMAX - максимальный адрес в системе: $FFFF для НС08, $1FFF для MC86HC705C8

d - непосредственные 8-разрядные или 16-разрядные данные;

d8 - непосредственные 8-разрядные данные;

d16, d16h, d16l - непосредственные 16-разрядные данные, старший и младший байты;

of8 - восьмиразрядное смещение без знака;

of16, of16h, of16l - шестнадцатиразрядное смещение без знака, старший и младший байты;

rel - приращение адреса из множества [-128,+127] в командах условного перехода, прибавляемого к адресу следующей за командой перехода команды;

D, S - префиксы, явно указывающие на принадлежность соответс­твенно к приемнику и источнику операнда;

(ad) - содержимое байта либо слова, адресуемого адресом ad;

cad - метка в ассемблере, обозначающая адрес команды, на кото­рую осуществляется переход; абсолютное значение адреса заменяется ас­семблером на относительное приращение rel, равное расстоянию в байтах между адресом следующей за текущей команды и меткой cad.

Регистры

7 0

A - Аккумулятор

15 8

7 0

H

X H:X - объед-й индексный регистр

Reset

0 - совмест-ть с HC05

$00FF по Reset

SP ô, на свободную ячейку

$FFFE по Reset

PC

V

1

1

H

I

N

Z

C

CCR

Флаги

CCR - Condition Code Register - регистр флагов

V - (oVerflow) - переполнение;

H - (Half carry) - перенос из 3-го разряда в 4-ый;

I - (Interrupt) - маска прерывания: 1 - все прерывания запрещены;

N - (Negativ) - отрицательный результат команды;

Z - (Zero) - нулевой результат команды;

C - (Carry) - перенос;

+ - флаг устанавливается в 0 или 1;

- - флаг не изменяется;

0 - флаг устанавливается в 0;

1 - флаг устанавливается в 1;

? - флаг неопределен.

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

1.   Подразумеваемая (INH)

OP

7 0

OP

Операнд(ы) (A, H:X, H, X) кодируется в OP

TXA; (A) <- (X)

PSHX; ((SP)) <- (X); (SP)<-(SP)-1

DIV; (A) <- (H:A)/(X); (H) <- (H:A)mod(X)

TSX; (H:X) <- (SP)+1

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

OP #d

OP

d8

Операнд в команде

OP

d16h

d16l

Со старшего байта

n  один или два байта в зависимости от разрядности регистра, участвующего в команде

ADD #d8; A)<-(A)+ d8

LDHX #d16; (H:X) <- d16

3.   Прямая (DIR)

OP ad8

OP

ad8

Старший байт 00

n  область RAM - наиболее часто используемые данные

n  сокращение на 1 цикл времени

ADD ad8; (A) <- (A)+(ad8)

JMP ad8; (PC) <- ad8

n  (ad8):(ad8+1разряядная адресация:

LDHX ad8; (H:X) <- (ad8):(ad8+1)

STHX ad8; (ad8):(ad8+1) <- (H:X)

4. Расширенная (EXT)

OP ad16

OP

ad16h

ad16l

n  Ассемблер сам определяет ad8 либо ad16

ADD ad16; (A)<-(A)+(ad16)

JMP ad16; (PC) <- ad16

5.   Индексная без смещения (IX) (нет в НС11)

OP, X

OP

n  (H:X) - исполнительный адрес

n  (H)<-$00 - совместимость с HC05

n  перемещение указателя по таблице

ADD, X; (A)<-(A)+((H:X))

JMP, X; (PC) <- (H:X)

6.   Индексная с 8-битным смещением (IX8)

OP of8,X

OP

of8

Без знака

n  - of8+(H:X) - исполнительный адрес

n  выделение к-ого элемента в таблице; к - в (H:X)

НЕ нашли? Не то? Что вы ищете?

ADD of8,X; (A)<-(A)+(of8+(H:X))

JMP of8,X; (PC) <- of8+(H:X)

7.   Индексная с 16-битным смещением (IX16) (нет в НС11)

OP of16,X

OP

of16h

of16l

Без знака

n  - of16+(H:X) - исполнительный адрес

n  выделение к-ого элемента в таблицеж; к - в (H:X)

n  ассемблер сам определяет of8 либо of16

ADD of16,X; (A)<-(A)+(of16+(H:X))

JMP of16,X; (PC) <- of16+(H:X)

8. По указателю стека с 8-битным смещением (SP8) (только в НС08)

OP of8,SP

9E

OP

of8

Без знака

n  - of8+(SP) - исполнительный адрес

n  доступ к данным стека

ADD of8,SP; (A)<-(A)+(of8+(SP))

9. По указателю стека с 16-битным смещением (SP16) (только в НС08)

OP of16,SP

9E

OP

of16h

of16l

n  - of16+(SP) - исполнительный адрес

n  доступ к данным стека

n  ассемблер сам определяет of8 либо of16

n  если прерывания запрещены - SP - еще один индексный регистр

ADD of16,SP; (A)<-(A)+(of16+(SP))

10. Относительная - в командах условного перехода (REL)

OP cad

OP

rel

Со знаком [-128, +127]

n  rel+(PC) - исполнительный адрес

n  ассемблер сам вычисляет rel

BCS cad; Если (C)=1, (PC)<-(PC)+rel

11. Непосредственная - прямая (только в НС08)

MOV #d8,Dad8; (Dad8) <- d8

OP

d8

ad8

12. Прямая - прямая (DD) (только в НС08)

MOV Sad8,Dad8; (Dad8) <- (Sad8)

OP

Sad8

Dad8

13. Индексная постинкрементная - прямая (IX+D) (только в НС08)

MOV X+, Dad8; (Dad8)<-((H:X)); (H:X)<-(H:X)+1

OP

Dad8

n  пересылка таблицы через последовательный канал

14. Прямая - индексная постинкрементная (DIX+) (только в НС08)

MOV Sad8, X+; ((H:X))<-(Sad8); (H:X)<-(H:X)+1

OP

Sad8

n  прием таблицы через последовательный канал

15. Индексная постинкрементная - относительная (IX+REL) (только в НС08)

CBEQ X+,cad; Если (A)=((H:X)), (PC)<-(PC)+rel; (H:X)<-(H:X)+1

OP

rel

16. Индексная постинкрементная с 8-битным смещением - относительная (IX8+REL) (только в НС08)

CBEQ of8,X+,cad; Если (A)=(of8+(H:X)), (PC)<-(PC)+rel; (H:X)<-(H:X)+1

OP

of8

rel

Система команд

В таблицах описания команд принята групповая форма записи, в которой операнды aop могут иметь все основные (со 2 по 9) типы адресации. Например,

запись команды

ADD aop

должна раскрываться соответственно множеством следующих команд:

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

ADD #d8

IMM

(A)<-(A)+ d8

++-+++

2

2

ADD

ADD ad8

DIR

(A)<-(A)+(ad8)

++-+++

3

2

without

ADD ad16

EXT

(A)<-(A)+(ad16)

++-+++

4

3

carry

ADD, X

IX

++-+++

2

3

ADD of8,X

IX8

(A)<-(A)+(of8+(H:X))

++-+++

3

2

ADD of16,X

IX16

(A)<-(A)+(of16+(H:X))

++-+++

4

3

ADD of8,SP

SP8

(A)<-(A)+(of8+(SP))

++-+++

4

3

Два байта в

ADD of16,SP

SP16

(A)<-(A)+(of16+(SP))

++-+++

5

4

коде опер.

Для команд сохранения (STA, STX), естественно отсутствует непосредственная адресация.

Следует отметить, что значение числа циклов цк, за которое команда должна выполняться и числа байт в команде бт, естественно, определяются конкретным способом адресации операндов. При групповой форме записи в таблицах команд в этих столбцах стоит звездочка. В выше приведенной таблице для каждого конкрет­ного способа адресации операндов указано числа циклов цк и числа байт бт, которые должны использоваться во всех групповых командах, а не только в команде ADD.

1.   Команды пересылки

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

LDA aop

*

(A) <- (aop)

0--++-

*

*

Load A

STA aop

*

(aop) <- (A)

0--++-

*

*

Store A

LDX aop

*

(X) <-( aop)

0--++-

*

*

Load X

STX aop

*

(aop) <- (X)

0--++-

*

*

Store X

LDHX #d16

IMM

(H:X) <- d16

0--++-

3

3

Load HX

LDHX ad8

DIR

(H:X) <- (ad8):(ad8+1)

0--++-

4

2

Со старшего

STHX ad8

DIR

(ad8):(ad8+1) <- (H:X)

0--++-

4

2

Со старшего

TXA

INH

(A) <- (X)

------

1

1

Transfer

TAX

INH

(X) <- (A)

------

1

1

TPA

INH

(A) <- (CCR)

------

1

1

PSW=CCR

TAP

INH

(CCR) <-( A)

++++++

1

1

TXS

INH

(SP) <- (H:X)-1

------

2

1

Stack

TSX

INH

(H:X) <- (SP)+1

------

2

1

На последнее записанное

MOV Sad8,Dad8

DD

(Dad8) <- (Sad8)

0--++-

5

3

MOVe

MOV Sad8,X+

DIX+

((H:X))<-(Sad8);

(H:X)<-(H:X)+1

0--++-

4

2

Два операнда в команде

MOV #d8,Dad8

IMD

(Dad8) <- d8

0--++-

4

3

MOV X+,Dad8

IX+D

(Dad8)<-((H:X));

(H:X)<-(H:X)+1

0--++-

4

2

PSHA

INH

((SP)) <- (A); (SP)<-(SP)-1

------

2

1

Push A

PSHH

INH

((SP)) <- (H); (SP)<-(SP)-1

------

2

1

Push H

PSHX

INH

((SP)) <- (X); (SP)<-(SP)-1

------

2

1

Push X

PULA

INH

(SP)<-(SP)+1; (A) <- ((SP))

------

2

1

Pull A

PULH

INH

(SP)<-(SP)+1; (H) <- ((SP))

------

2

1

Pull H

PULX

INH

(SP)<-(SP)+1; (X) <- ((SP))

------

2

1

Pull X

NSA

INH

(A) <- (A).3-0 : (A).7-4

------

3

1

Nibble Swap Accumulator

2. Команды логической обработки

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

AND aop

*

(A)<-(A)&(aop)

0--++-

*

*

Поразрядно

BIT aop

*

(A)&(aop);

0--++-

*

*

BIT test

ORA aop

*

(A)<-(A)|(aop)

0--++-

*

*

EOR aop

*

(A)<-(A)Å(aop)

0--++-

*

*

ExclusiveOR

CLRA

INH

(A) <- 0

+--++-

1

1

CLeaR A

CLRX

INH

(X) <- 0

+--++-

1

1

CLeaR X

CLRH

INH

(H) <- 0

+--++-

1

1

CLeaR H

CLR ad8

DIR

(ad8) <- 0

+--++-

3

2

CLR, X

IX

((H:X)) <- 0

+--++-

2

1

CLR of8,X

IX8

(of8+(H:X)) <- 0

+--++-

3

2

CLR of8,SP

SP8

(of8+(SP)) <- 0

+--++-

4

3

BCLR n, ad8

DIR

(ad8).n <- 0

------

4

2

Bit CLiaR

COMA

INH

(A) <- $FF-(A)

+--++-

1

1

COMplementA

COMX

INH

(X) <- $FF-(X)

+--++-

1

1

COMplementX

COM ad8

DIR

(ad8) <- $FF-(ad8)

+--++-

4

2

Поразрядное

COM, X

IX

((H:X)) <- $FF-((H:X))

+--++-

3

1

дополнение

COM of8,X

IX8

(of8+(H:X))<-$FF-(of8+(H:X))

+--++-

4

2

COM of8,SP

SP8

(of8+(SP)) <- $FF-(of8+(SP))

+--++-

5

3

ASLA

ASLX

ASL ad8

ASL, X

ASL of8,X

ASL of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

C<-b7<-b6<-...<-b1<-b0<-0

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

Arithmetic Shift Left.

На один разряд. То же, что и LSL

ASRA

ASRX

ASR ad8

ASR, X

ASR of8,X

ASR of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

Ú>b7Â>b6->...->b1->b0->C

ÀÄÄÄÙ

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

Arithmetic Shift Right

На один разряд.

LSLA

LSLX

LSL ad8

LSL, X

LSL of8,X

LSL of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

C<-b7<-b6<-...<-b1<-b0<-0

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

Logical Shift Left.

На один разряд. То же, что и ASL

LSRA

LSRX

LSR ad8

LSR, X

LSR of8,X

LSR of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

0->b7->b6->...->b1->b0->C

+--0++

1

1

4

3

4

5

1

1

2

1

2

2

Logical Shift Right

На один разряд.

ROLA

ROLX

ROL ad8

ROL, X

ROL of8,X

ROL of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Циклический сдвиг влево аккумулятора, индексного регистра X, и. т.д.. Содержание:

ÚC<-b7<-b6<-...<-b1<-b0<¿

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

ROtate Left through carry.

На один разряд.

RORA

RORX

ROR ad8

ROR, X

ROR of8,X

ROR of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Циклический сдвиг вправо аккумулятора, индексного регистра X, и. т.д. Содержание:

Ú>b7->b6->...->b1->b0->C¿

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

+--0++

1

1

4

3

4

5

1

1

2

1

2

2

ROtate Right through carry

На один разряд.

3. Команды арифметической обработки

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

ADD aop

*

(A) <- (A)+(aop)

++-+++

*

*

ADD

ADC aop

*

(A) <- (A)+(aop)+(C)

++-+++

*

*

ADD, Carry

AIS #d8

IMM

(SP) <- (SP)+d8

------

2

2

Со знаком

AIX #d8

IMM

(H:X) <- (H:X)+d8

------

2

2

Со знаком

SUB aop

*

(A) <- (A)-(aop)

+--+++

*

*

SUBtract

SBC aop

*

(A) <- (A)-(aop)-(C)

+--+++

*

*

SUBtract

CMP aop

*

(A)-(aop)

+--+++

*

*

CoMPare A

CPX aop

*

(X)-(aop)

+--+++

*

*

ComPare X

TSTA

INH

(A)-0

0--++-

1

1

TeST for

TSTX

INH

(X)-0

0--++-

1

1

negative

TST ad8

DIR

(ad8)-0

0--++-

3

2

or zero

TST, X

IX

((H:X))-0

0--++-

2

1

TST of8,X

IX8

(of8+(H:X))-0

0--++-

3

2

TST of8,SP

SP8

(of8+(SP))-0

0--++-

4

3

CPHX #d16

IMM

(H:X)-d16

+--+++

*

*

CoMPare H:X

CPHX ad8

DIR

(H:X)-(ad8)

+--+++

*

*

CoMPare H:X

INCA

INH

(A) <- (A)+1

+--++-

1

1

INCrement A

INCX

INH

(X) <- (X)+1

+--++-

1

1

INCrement X

INC ad8

DIR

(ad8) <- (ad8)+1

+--++-

4

2

INC, X

IX

((H:X)) <- ((H:X))+1

+--++-

3

1

INC of8,X

IX8

(of8+(H:X)) <- (of8+(H:X))+1

+--++-

4

2

INC of8,SP

SP8

(of8+(SP)) <- (of8+(SP))+1

+--++-

5

3

DECA

INH

(A) <- (A)-1

+--++-

1

1

DECrement A

DECX

INH

(X) <- (X)-1

+--++-

1

1

DECrement X

DEC ad8

DIR

(ad8) <- (ad8)-1

+--++-

4

2

DEC, X

IX

((H:X)) <- ((H:X))-1

+--++-

3

1

DEC of8,X

IX8

(of8+(H:X)) <- (of8+(H:X))-1

+--++-

4

2

DEC of8,SP

SP8

(of8+(SP)) <- (of8+(SP))-1

+--++-

5

3

NEGA

INH

(A) <- -(A)

+--++-

1

1

NEGate A

NEGX

INH

(X) <- -(X)

+--++-

1

1

NEGate X

NEG ad8

DIR

(ad8) <- -(ad8)

+--++-

4

2

NEG, X

IX

((H:X)) <- -((H:X))

+--++-

3

1

NEG of8,X

IX8

(of8+(H:X)) <- -(of8+(H:X))

+--++-

4

2

NEG of8,SP

SP8

(of8+(SP)) <- -(of8+(SP))

+--++-

5

3

MUL

INH

(X:A) <- (X)*(A)

-0---0

5

1

MULtiply

Без знака

DIV

INH

(A) <- (H:A)/(X)

(H) <- (H:A)mod(X)

----++

7

1

DIVide

Остаток

DAA

INH

Двоично-десят. коррекция (A)

?--+++

2

1

Decimal Adjust Accum.

4.   Команды перехода

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

JMP ad8

DIR

(PC) <- ad8

------

2

2

JuMP

JMP ad16

EXT

(PC) <- ad16

------

3

3

JMP, X

IX

(PC) <- (H:X)

------

2

1

JMP of8,X

IX8

(PC) <- of8+(H:X)

------

3

2

JMP of16,X

IX16

(PC) <- of16+(H:X)

------

4

3

JSR ad8

DIR

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- ad8

------

2

2

JuMP To Subroutine

JSR ad16

EXT

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- ad16

------

3

3

JSR, X

IX

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- (H:X)

------

2

1

JSR of8,X

IX8

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- of8+(H:X)

------

3

2

JSR of16,X

IX16

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- of16+(H:X)

------

4

3

SWI

INH

(PC)<-(PC)+1;

((SP))<-(PCL); (SP)<-(SP)-1; ((SP))<-(PCH); (SP)<-(SP)-1; ((SP))<-(X); (SP)<-(SP)-1; ((SP))<-(A); (SP)<-(SP)-1; ((SP))<-(CCR); (SP)<-(SP)-1; (I)<-1

(PC)<-(ADMAX-3):(ADMAX-2) (вектор программного прерывания SWI)

--1---

9

1

SoftWare Interrupt. Регистр H не запоминается для совместимости с HC05

RTI

INH

(SP)<-(SP)+1; (CCR)<-((SP));

(SP)<-(SP)+1; (A)<-((SP));

(SP)<-(SP)+1; (X)<-((SP));

(SP)<-(SP)+1; (PCH)<-((SP));

(SP)<-(SP)+1; (PCL)<-((SP));

++++++

7

1

ReTurn from Interrupt

RTS

INH

(SP)<-(SP)+1; (PCH)<-((SP));

(SP)<-(SP)+1; (PCL)<-((SP));

------

4

1

ReTurn from Subroutine

BRA cad

REL

(PC)<-(PC)+rel

------

3

2

BRanch Always

BSR cad

REL

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- (PC)+rel

------

4

2

Branch to SubRoutine

BCC cad

REL

Если (C)=0, (PC)<-(PC)+rel

------

3

2

Branch if Carry Clear

BCS cad

REL

Если (C)=1, (PC)<-(PC)+rel

------

3

2

Branch if Carry Set

BEQ cad

REL

Если (Z)=1, (PC)<-(PC)+rel

------

3

2

Branch if Equal

BNE cad

REL

Если (Z)=0, (PC)<-(PC)+rel

------

3

2

Branch if Not Equal

BPL cad

REL

Если (Z)=0, (PC)<-(PC)+rel

------

3

2

Branch if Plus

BMI cad

REL

Если (Z)=1, (PC)<-(PC)+rel

------

3

2

Branch if Minus

BHCC cad

REL

Если (H)=0, (PC)<-(PC)+rel

------

3

2

Branch Half Carry Clear

BHCS cad

REL

Если (H)=1, (PC)<-(PC)+rel

------

3

2

Branch Half Carry Set

BMC cad

REL

Если (I)=0, (PC)<-(PC)+rel

------

3

2

Branch if interrupt Mask Clear

BMS cad

REL

Если (I)=1, (PC)<-(PC)+rel

------

3

2

Branch if interrupt Mask Set

BIL cad

REL

Если ()=0,

(PC)<-(PC)+rel

------

3

2

Branch if Low

BIH cad

REL

Если ()=1,

(PC)<-(PC)+rel

------

3

2

Branch if High

BLO cad

REL

Если (C)=1, (PC)<-(PC)+rel

------

3

2

Branch if Lower

BLS cad

REL

Если (C)|(Z)=1,

(PC)<-(PC)+rel

------

3

2

Branch if Lower or Same (BCS)

BHI cad

REL

Если (C)|(Z)=0,

(PC)<-(PC)+rel

------

3

2

Branch if Higher

BHS cad

REL

Если (C)=0, (PC)<-(PC)+rel

------

3

2

Branch if Higher or Same (BCC)

BLT cad

REL

Если (N)Å(V)=1,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Less Then

BLE cad

REL

Если (Z)|(N)Å(V)=1,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Less Then or Equal

BGT cad

REL

Если (Z)|(N)Å(V)=0,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Greater Then

BGE cad

REL

Если (N)Å(V)=0,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Greater Then or Equal

BRCLR n, ad8,cad

DIR

REL

Если (ad8).n=0,

(PC)<-(PC)+rel

-----+

5

3

Branch if bit CLeaR

BRSET n, ad8,cad

DIR

REL

Если (ad8).n=1,

(PC)<-(PC)+rel; (C)<-(ad8).n

-----+

5

3

Branch if bit Set

BRN cad

IMM

(PC)<-(PC)+2

------

3

2

Branch Never

CBEQA #d8,cad

IMM,

REL

Если (A)=d8, (PC)<-(PC)+rel

------

4

3

Compare, Branch if Equal

CBEQX #d8,cad

IMM,

REL

Если (X)=d8, (PC)<-(PC)+rel

------

4

3

CBEQ ad8,cad

DIR,

REL

Если (A)=(ad8),

(PC)<-(PC)+rel

------

5

3

CBEQ X+,cad

IX+,

REL

Если (A)=((H:X)),

(PC)<-(PC)+rel;

(H:X)<-(H:X)+1

------

4

2

CBEQ of8,X+,cad

IX8+

REL

Если (A)=(of8+(H:X)),

(PC)<-(PC)+rel

(H:X)<-(H:X)+1

------

5

3

CBEQ of8,SP, cad

SP8

REL

Если (A)=(of8+(SP)),

(PC)<-(PC)+rel

------

6

4

DBNZA cad

REL

(A)<-(A)-1;

Если (A)¹0, (PC)<-(PC)+rel

------

3

2

Decrement, Branch if Not Zero

DBNZX cad

REL

(H:X)<-(H:X)-1;

Если (H:X)¹0, (PC)<-(PC)+rel

------

3

2

DBNZ ad8,cad

DIR,

REL

(ad8)<-(ad8)-1;

Если (ad8)¹0, (PC)<-(PC)+rel

------

5

3

DBNZ X, cad

IX,

REL

((H:X))<-((H:X))-1;

Если ((H:X))¹0,

(PC)<-(PC)+rel;

------

4

2

DBNZ of8,X, cad

IX8

REL

(of8+(H:X))<-(of8+(H:X))-1;

Если (of8+(H:X)) ¹ 0,

(PC)<-(PC)+rel

------

5

3

DBNZ of8,SP, cad

SP8

REL

(of8+(SP))<-(of8+(SP))-1;

Если (of8+(SP)) ¹ 0,

(PC)<-(PC)+rel

------

6

4

NOP

INH

(PC)<-(PC)+1

------

1

1

No OPeration

5.   Команды управления

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

CLC

INH

(C) <- 0

-----0

1

1

CLear C

SEC

INH

(C) <- 1

-----1

1

1

SEt C

CLI

INH

(I) <- 0 - разрешение прерываний, один цикл дополнительная задержка в исполнении для выполнения следующей команды (RTI)

--0---

1+1

1

CLear I

SEI

INH

(I) <- 1 - запрет прерываний

--1---

1+1

1

SEt I

WAIT

INH

(I) <- 0; Останов процессора до прерывания. Периферийные блоки тактируются

--0---

1

1

Сокращает мощность потребления

STOP

INH

(I) <- 0; Останов генератора тактов до прихода внешнего сигнала ,

--0---

1

1

Сокращает мощность потребления

RSP

INH

(SP) <- $FF - сброс указателя стека

------

1

1

Reset Stack Pointer

FF по Reset

SP ô, на свободную ячейку

$FFFE по Reset

PC

V

1

1

H

I

N

Z

C

CCR

Флаги

CCR - Condition Code Register - регистр флагов

V - (oVerflow) - переполнение;

H - (Half carry) - перенос из 3-го разряда в 4-ый;

I - (Interrupt) - маска прерывания: 1 - все прерывания запрещены;

N - (Negativ) - отрицательный результат команды;

Z - (Zero) - нулевой результат команды;

C - (Carry) - перенос;

+ - флаг устанавливается в 0 или 1;

- - флаг не изменяется;

0 - флаг устанавливается в 0;

1 - флаг устанавливается в 1;

? - флаг неопределен.

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

1.   Подразумеваемая (INH)

OP

7 0

OP

Операнд(ы) (A, H:X, H, X) кодируется в OP

TXA; (A) <- (X)

PSHX; ((SP)) <- (X); (SP)<-(SP)-1

DIV; (A) <- (H:A)/(X); (H) <- (H:A)mod(X)

TSX; (H:X) <- (SP)+1

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

OP #d

OP

d8

Операнд в команде

OP

d16h

d16l

Со старшего байта

n  один или два байта в зависимости от разрядности регистра, участвующего в команде

ADD #d8; A)<-(A)+ d8

LDHX #d16; (H:X) <- d16

3.   Прямая (DIR)

OP ad8

OP

ad8

Старший байт 00

n  область RAM - наиболее часто используемые данные

n  сокращение на 1 цикл времени

ADD ad8; (A) <- (A)+(ad8)

JMP ad8; (PC) <- ad8

n  (ad8):(ad8+1разряядная адресация:

LDHX ad8; (H:X) <- (ad8):(ad8+1)

STHX ad8; (ad8):(ad8+1) <- (H:X)

4. Расширенная (EXT)

OP ad16

OP

ad16h

ad16l

n  Ассемблер сам определяет ad8 либо ad16

ADD ad16; (A)<-(A)+(ad16)

JMP ad16; (PC) <- ad16

5.   Индексная без смещения (IX) (нет в НС11)

OP, X

OP

n  (H:X) - исполнительный адрес

n  (H)<-

ОДНОКРИСТАЛЬНЫЕ МИКРОКОНТРОЛЛЕРЫ

MC68HC08

MOTOROLA

Основные характеристики

MC68HC08 - КМОП технология - с 1994 г.

n  Одинаковое 8-разрядное процессорное ядро, на порядок более производительное, чем M68HC05

n  8 Мгц - внутренняя тактовая частота шины (4мгц для HC08AS48)

n  CSIC - Customer Specified Integrated Circuits design strategy - определяемая пользователем архитектура на базе набора стандартных модулей

n  Объектная совместимость снизу вверх с M6805, M68HC05

n  16 методов адресации

n  64k - общее адресное пространство

n  ПЗУ - до 56К (HC08LN56) (масочное, однократно программируемое, с УФ стиранием, с электрическим стиранием)

n  ОЗУ - до 1.5К

n  7 портов ввода / вывода

n  Поддержка прямого доступа к памяти (НС708XL36)

n  Отсутствует возможность обращения к внешней памяти

n  Таймер 16-разрядный до 6 каналов IC, OC (Input Capture, Output Compare)

n  COP (Computer Operate Properly) Watchdog таймер

n  SPI - Serial Peripheral Interface - синхронный последовательный канал связи

n  SCI - Serial Communication Interface - асинхронный последовательный канал связи, Гц

n  АЦП - до 16 каналов, 8 бит

n  ШИМ - (PWM - Pulse Width Modulation) (HC708MP16) - управление громкостью звука, яркостью изображения, управление электродвигателями

n  Котроллер жидкокристаллического индикатора (HC08LN56)

n  24 источника прерывания, в т. ч. 6 источников RESET, приоритет которых выше приоритета прерываний

n  64- выводной QFP или 52-выводной PLCC корпус

Обозначения

OP - код операции;

<- - операция присвоения;

: - операция конкатенации;

ad8 - прямой восьмиразрядный адрес 8-разрядного или 16-разрядного регистра; ad8 - адрес старшего байта; ad8+1 - адрес младшего байта;

ad16 - прямой шестнадцатиразрядный адрес 8-разрядной ячейки памяти ;

ADMAX - максимальный адрес в системе: $FFFF для НС08, $1FFF для MC86HC705C8

d - непосредственные 8-разрядные или 16-разрядные данные;

d8 - непосредственные 8-разрядные данные;

d16, d16h, d16l - непосредственные 16-разрядные данные, старший и младший байты;

of8 - восьмиразрядное смещение без знака;

of16, of16h, of16l - шестнадцатиразрядное смещение без знака, старший и младший байты;

rel - приращение адреса из множества [-128,+127] в командах условного перехода, прибавляемого к адресу следующей за командой перехода команды;

D, S - префиксы, явно указывающие на принадлежность соответс­твенно к приемнику и источнику операнда;

(ad) - содержимое байта либо слова, адресуемого адресом ad;

cad - метка в ассемблере, обозначающая адрес команды, на кото­рую осуществляется переход; абсолютное значение адреса заменяется ас­семблером на относительное приращение rel, равное расстоянию в байтах между адресом следующей за текущей команды и меткой cad.

Регистры

7 0

A - Аккумулятор

15 8

7 0

H

X H:X - объед-й индексный регистр

Reset

0 - совмест-ть с HC05

$00FF по Reset

SP ô, на свободную ячейку

$FFFE по Reset

PC

V

1

1

H

I

N

Z

C

CCR

Флаги

CCR - Condition Code Register - регистр флагов

V - (oVerflow) - переполнение;

H - (Half carry) - перенос из 3-го разряда в 4-ый;

I - (Interrupt) - маска прерывания: 1 - все прерывания запрещены;

N - (Negativ) - отрицательный результат команды;

Z - (Zero) - нулевой результат команды;

C - (Carry) - перенос;

+ - флаг устанавливается в 0 или 1;

- - флаг не изменяется;

0 - флаг устанавливается в 0;

1 - флаг устанавливается в 1;

? - флаг неопределен.

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

1.   Подразумеваемая (INH)

OP

7 0

OP

Операнд(ы) (A, H:X, H, X) кодируется в OP

TXA; (A) <- (X)

PSHX; ((SP)) <- (X); (SP)<-(SP)-1

DIV; (A) <- (H:A)/(X); (H) <- (H:A)mod(X)

TSX; (H:X) <- (SP)+1

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

OP #d

OP

d8

Операнд в команде

OP

d16h

d16l

Со старшего байта

n  один или два байта в зависимости от разрядности регистра, участвующего в команде

ADD #d8; A)<-(A)+ d8

LDHX #d16; (H:X) <- d16

3.   Прямая (DIR)

OP ad8

OP

ad8

Старший байт 00

n  область RAM - наиболее часто используемые данные

n  сокращение на 1 цикл времени

ADD ad8; (A) <- (A)+(ad8)

JMP ad8; (PC) <- ad8

n  (ad8):(ad8+1разряядная адресация:

LDHX ad8; (H:X) <- (ad8):(ad8+1)

STHX ad8; (ad8):(ad8+1) <- (H:X)

4. Расширенная (EXT)

OP ad16

OP

ad16h

ad16l

n  Ассемблер сам определяет ad8 либо ad16

ADD ad16; (A)<-(A)+(ad16)

JMP ad16; (PC) <- ad16

5.   Индексная без смещения (IX) (нет в НС11)

OP, X

OP

n  (H:X) - исполнительный адрес

n  (H)<-$00 - совместимость с HC05

n  перемещение указателя по таблице

ADD, X; (A)<-(A)+((H:X))

JMP, X; (PC) <- (H:X)

6.   Индексная с 8-битным смещением (IX8)

OP of8,X

OP

of8

Без знака

n  - of8+(H:X) - исполнительный адрес

n  выделение к-ого элемента в таблице; к - в (H:X)

НЕ нашли? Не то? Что вы ищете?

ADD of8,X; (A)<-(A)+(of8+(H:X))

JMP of8,X; (PC) <- of8+(H:X)

7.   Индексная с 16-битным смещением (IX16) (нет в НС11)

OP of16,X

OP

of16h

of16l

Без знака

n  - of16+(H:X) - исполнительный адрес

n  выделение к-ого элемента в таблицеж; к - в (H:X)

n  ассемблер сам определяет of8 либо of16

ADD of16,X; (A)<-(A)+(of16+(H:X))

JMP of16,X; (PC) <- of16+(H:X)

8. По указателю стека с 8-битным смещением (SP8) (только в НС08)

OP of8,SP

9E

OP

of8

Без знака

n  - of8+(SP) - исполнительный адрес

n  доступ к данным стека

ADD of8,SP; (A)<-(A)+(of8+(SP))

9. По указателю стека с 16-битным смещением (SP16) (только в НС08)

OP of16,SP

9E

OP

of16h

of16l

n  - of16+(SP) - исполнительный адрес

n  доступ к данным стека

n  ассемблер сам определяет of8 либо of16

n  если прерывания запрещены - SP - еще один индексный регистр

ADD of16,SP; (A)<-(A)+(of16+(SP))

10. Относительная - в командах условного перехода (REL)

OP cad

OP

rel

Со знаком [-128, +127]

n  rel+(PC) - исполнительный адрес

n  ассемблер сам вычисляет rel

BCS cad; Если (C)=1, (PC)<-(PC)+rel

11. Непосредственная - прямая (только в НС08)

MOV #d8,Dad8; (Dad8) <- d8

OP

d8

ad8

12. Прямая - прямая (DD) (только в НС08)

MOV Sad8,Dad8; (Dad8) <- (Sad8)

OP

Sad8

Dad8

13. Индексная постинкрементная - прямая (IX+D) (только в НС08)

MOV X+, Dad8; (Dad8)<-((H:X)); (H:X)<-(H:X)+1

OP

Dad8

n  пересылка таблицы через последовательный канал

14. Прямая - индексная постинкрементная (DIX+) (только в НС08)

MOV Sad8, X+; ((H:X))<-(Sad8); (H:X)<-(H:X)+1

OP

Sad8

n  прием таблицы через последовательный канал

15. Индексная постинкрементная - относительная (IX+REL) (только в НС08)

CBEQ X+,cad; Если (A)=((H:X)), (PC)<-(PC)+rel; (H:X)<-(H:X)+1

OP

rel

16. Индексная постинкрементная с 8-битным смещением - относительная (IX8+REL) (только в НС08)

CBEQ of8,X+,cad; Если (A)=(of8+(H:X)), (PC)<-(PC)+rel; (H:X)<-(H:X)+1

OP

of8

rel

Система команд

В таблицах описания команд принята групповая форма записи, в которой операнды aop могут иметь все основные (со 2 по 9) типы адресации. Например,

запись команды

ADD aop

должна раскрываться соответственно множеством следующих команд:

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

ADD #d8

IMM

(A)<-(A)+ d8

++-+++

2

2

ADD

ADD ad8

DIR

(A)<-(A)+(ad8)

++-+++

3

2

without

ADD ad16

EXT

(A)<-(A)+(ad16)

++-+++

4

3

carry

ADD, X

IX

++-+++

2

3

ADD of8,X

IX8

(A)<-(A)+(of8+(H:X))

++-+++

3

2

ADD of16,X

IX16

(A)<-(A)+(of16+(H:X))

++-+++

4

3

ADD of8,SP

SP8

(A)<-(A)+(of8+(SP))

++-+++

4

3

Два байта в

ADD of16,SP

SP16

(A)<-(A)+(of16+(SP))

++-+++

5

4

коде опер.

Для команд сохранения (STA, STX), естественно отсутствует непосредственная адресация.

Следует отметить, что значение числа циклов цк, за которое команда должна выполняться и числа байт в команде бт, естественно, определяются конкретным способом адресации операндов. При групповой форме записи в таблицах команд в этих столбцах стоит звездочка. В выше приведенной таблице для каждого конкрет­ного способа адресации операндов указано числа циклов цк и числа байт бт, которые должны использоваться во всех групповых командах, а не только в команде ADD.

1.   Команды пересылки

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

LDA aop

*

(A) <- (aop)

0--++-

*

*

Load A

STA aop

*

(aop) <- (A)

0--++-

*

*

Store A

LDX aop

*

(X) <-( aop)

0--++-

*

*

Load X

STX aop

*

(aop) <- (X)

0--++-

*

*

Store X

LDHX #d16

IMM

(H:X) <- d16

0--++-

3

3

Load HX

LDHX ad8

DIR

(H:X) <- (ad8):(ad8+1)

0--++-

4

2

Со старшего

STHX ad8

DIR

(ad8):(ad8+1) <- (H:X)

0--++-

4

2

Со старшего

TXA

INH

(A) <- (X)

------

1

1

Transfer

TAX

INH

(X) <- (A)

------

1

1

TPA

INH

(A) <- (CCR)

------

1

1

PSW=CCR

TAP

INH

(CCR) <-( A)

++++++

1

1

TXS

INH

(SP) <- (H:X)-1

------

2

1

Stack

TSX

INH

(H:X) <- (SP)+1

------

2

1

На последнее записанное

MOV Sad8,Dad8

DD

(Dad8) <- (Sad8)

0--++-

5

3

MOVe

MOV Sad8,X+

DIX+

((H:X))<-(Sad8);

(H:X)<-(H:X)+1

0--++-

4

2

Два операнда в команде

MOV #d8,Dad8

IMD

(Dad8) <- d8

0--++-

4

3

MOV X+,Dad8

IX+D

(Dad8)<-((H:X));

(H:X)<-(H:X)+1

0--++-

4

2

PSHA

INH

((SP)) <- (A); (SP)<-(SP)-1

------

2

1

Push A

PSHH

INH

((SP)) <- (H); (SP)<-(SP)-1

------

2

1

Push H

PSHX

INH

((SP)) <- (X); (SP)<-(SP)-1

------

2

1

Push X

PULA

INH

(SP)<-(SP)+1; (A) <- ((SP))

------

2

1

Pull A

PULH

INH

(SP)<-(SP)+1; (H) <- ((SP))

------

2

1

Pull H

PULX

INH

(SP)<-(SP)+1; (X) <- ((SP))

------

2

1

Pull X

NSA

INH

(A) <- (A).3-0 : (A).7-4

------

3

1

Nibble Swap Accumulator

2. Команды логической обработки

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

AND aop

*

(A)<-(A)&(aop)

0--++-

*

*

Поразрядно

BIT aop

*

(A)&(aop);

0--++-

*

*

BIT test

ORA aop

*

(A)<-(A)|(aop)

0--++-

*

*

EOR aop

*

(A)<-(A)Å(aop)

0--++-

*

*

ExclusiveOR

CLRA

INH

(A) <- 0

+--++-

1

1

CLeaR A

CLRX

INH

(X) <- 0

+--++-

1

1

CLeaR X

CLRH

INH

(H) <- 0

+--++-

1

1

CLeaR H

CLR ad8

DIR

(ad8) <- 0

+--++-

3

2

CLR, X

IX

((H:X)) <- 0

+--++-

2

1

CLR of8,X

IX8

(of8+(H:X)) <- 0

+--++-

3

2

CLR of8,SP

SP8

(of8+(SP)) <- 0

+--++-

4

3

BCLR n, ad8

DIR

(ad8).n <- 0

------

4

2

Bit CLiaR

COMA

INH

(A) <- $FF-(A)

+--++-

1

1

COMplementA

COMX

INH

(X) <- $FF-(X)

+--++-

1

1

COMplementX

COM ad8

DIR

(ad8) <- $FF-(ad8)

+--++-

4

2

Поразрядное

COM, X

IX

((H:X)) <- $FF-((H:X))

+--++-

3

1

дополнение

COM of8,X

IX8

(of8+(H:X))<-$FF-(of8+(H:X))

+--++-

4

2

COM of8,SP

SP8

(of8+(SP)) <- $FF-(of8+(SP))

+--++-

5

3

ASLA

ASLX

ASL ad8

ASL, X

ASL of8,X

ASL of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

C<-b7<-b6<-...<-b1<-b0<-0

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

Arithmetic Shift Left.

На один разряд. То же, что и LSL

ASRA

ASRX

ASR ad8

ASR, X

ASR of8,X

ASR of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

Ú>b7Â>b6->...->b1->b0->C

ÀÄÄÄÙ

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

Arithmetic Shift Right

На один разряд.

LSLA

LSLX

LSL ad8

LSL, X

LSL of8,X

LSL of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

C<-b7<-b6<-...<-b1<-b0<-0

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

Logical Shift Left.

На один разряд. То же, что и ASL

LSRA

LSRX

LSR ad8

LSR, X

LSR of8,X

LSR of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

0->b7->b6->...->b1->b0->C

+--0++

1

1

4

3

4

5

1

1

2

1

2

2

Logical Shift Right

На один разряд.

ROLA

ROLX

ROL ad8

ROL, X

ROL of8,X

ROL of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Циклический сдвиг влево аккумулятора, индексного регистра X, и. т.д.. Содержание:

ÚC<-b7<-b6<-...<-b1<-b0<¿

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

ROtate Left through carry.

На один разряд.

RORA

RORX

ROR ad8

ROR, X

ROR of8,X

ROR of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Циклический сдвиг вправо аккумулятора, индексного регистра X, и. т.д. Содержание:

Ú>b7->b6->...->b1->b0->C¿

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

+--0++

1

1

4

3

4

5

1

1

2

1

2

2

ROtate Right through carry

На один разряд.

3. Команды арифметической обработки

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

ADD aop

*

(A) <- (A)+(aop)

++-+++

*

*

ADD

ADC aop

*

(A) <- (A)+(aop)+(C)

++-+++

*

*

ADD, Carry

AIS #d8

IMM

(SP) <- (SP)+d8

------

2

2

Со знаком

AIX #d8

IMM

(H:X) <- (H:X)+d8

------

2

2

Со знаком

SUB aop

*

(A) <- (A)-(aop)

+--+++

*

*

SUBtract

SBC aop

*

(A) <- (A)-(aop)-(C)

+--+++

*

*

SUBtract

CMP aop

*

(A)-(aop)

+--+++

*

*

CoMPare A

CPX aop

*

(X)-(aop)

+--+++

*

*

ComPare X

TSTA

INH

(A)-0

0--++-

1

1

TeST for

TSTX

INH

(X)-0

0--++-

1

1

negative

TST ad8

DIR

(ad8)-0

0--++-

3

2

or zero

TST, X

IX

((H:X))-0

0--++-

2

1

TST of8,X

IX8

(of8+(H:X))-0

0--++-

3

2

TST of8,SP

SP8

(of8+(SP))-0

0--++-

4

3

CPHX #d16

IMM

(H:X)-d16

+--+++

*

*

CoMPare H:X

CPHX ad8

DIR

(H:X)-(ad8)

+--+++

*

*

CoMPare H:X

INCA

INH

(A) <- (A)+1

+--++-

1

1

INCrement A

INCX

INH

(X) <- (X)+1

+--++-

1

1

INCrement X

INC ad8

DIR

(ad8) <- (ad8)+1

+--++-

4

2

INC, X

IX

((H:X)) <- ((H:X))+1

+--++-

3

1

INC of8,X

IX8

(of8+(H:X)) <- (of8+(H:X))+1

+--++-

4

2

INC of8,SP

SP8

(of8+(SP)) <- (of8+(SP))+1

+--++-

5

3

DECA

INH

(A) <- (A)-1

+--++-

1

1

DECrement A

DECX

INH

(X) <- (X)-1

+--++-

1

1

DECrement X

DEC ad8

DIR

(ad8) <- (ad8)-1

+--++-

4

2

DEC, X

IX

((H:X)) <- ((H:X))-1

+--++-

3

1

DEC of8,X

IX8

(of8+(H:X)) <- (of8+(H:X))-1

+--++-

4

2

DEC of8,SP

SP8

(of8+(SP)) <- (of8+(SP))-1

+--++-

5

3

NEGA

INH

(A) <- -(A)

+--++-

1

1

NEGate A

NEGX

INH

(X) <- -(X)

+--++-

1

1

NEGate X

NEG ad8

DIR

(ad8) <- -(ad8)

+--++-

4

2

NEG, X

IX

((H:X)) <- -((H:X))

+--++-

3

1

NEG of8,X

IX8

(of8+(H:X)) <- -(of8+(H:X))

+--++-

4

2

NEG of8,SP

SP8

(of8+(SP)) <- -(of8+(SP))

+--++-

5

3

MUL

INH

(X:A) <- (X)*(A)

-0---0

5

1

MULtiply

Без знака

DIV

INH

(A) <- (H:A)/(X)

(H) <- (H:A)mod(X)

----++

7

1

DIVide

Остаток

DAA

INH

Двоично-десят. коррекция (A)

?--+++

2

1

Decimal Adjust Accum.

4.   Команды перехода

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

JMP ad8

DIR

(PC) <- ad8

------

2

2

JuMP

JMP ad16

EXT

(PC) <- ad16

------

3

3

JMP, X

IX

(PC) <- (H:X)

------

2

1

JMP of8,X

IX8

(PC) <- of8+(H:X)

------

3

2

JMP of16,X

IX16

(PC) <- of16+(H:X)

------

4

3

JSR ad8

DIR

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- ad8

------

2

2

JuMP To Subroutine

JSR ad16

EXT

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- ad16

------

3

3

JSR, X

IX

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- (H:X)

------

2

1

JSR of8,X

IX8

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- of8+(H:X)

------

3

2

JSR of16,X

IX16

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- of16+(H:X)

------

4

3

SWI

INH

(PC)<-(PC)+1;

((SP))<-(PCL); (SP)<-(SP)-1; ((SP))<-(PCH); (SP)<-(SP)-1; ((SP))<-(X); (SP)<-(SP)-1; ((SP))<-(A); (SP)<-(SP)-1; ((SP))<-(CCR); (SP)<-(SP)-1; (I)<-1

(PC)<-(ADMAX-3):(ADMAX-2) (вектор программного прерывания SWI)

--1---

9

1

SoftWare Interrupt. Регистр H не запоминается для совместимости с HC05

RTI

INH

(SP)<-(SP)+1; (CCR)<-((SP));

(SP)<-(SP)+1; (A)<-((SP));

(SP)<-(SP)+1; (X)<-((SP));

(SP)<-(SP)+1; (PCH)<-((SP));

(SP)<-(SP)+1; (PCL)<-((SP));

++++++

7

1

ReTurn from Interrupt

RTS

INH

(SP)<-(SP)+1; (PCH)<-((SP));

(SP)<-(SP)+1; (PCL)<-((SP));

------

4

1

ReTurn from Subroutine

BRA cad

REL

(PC)<-(PC)+rel

------

3

2

BRanch Always

BSR cad

REL

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- (PC)+rel

------

4

2

Branch to SubRoutine

BCC cad

REL

Если (C)=0, (PC)<-(PC)+rel

------

3

2

Branch if Carry Clear

BCS cad

REL

Если (C)=1, (PC)<-(PC)+rel

------

3

2

Branch if Carry Set

BEQ cad

REL

Если (Z)=1, (PC)<-(PC)+rel

------

3

2

Branch if Equal

BNE cad

REL

Если (Z)=0, (PC)<-(PC)+rel

------

3

2

Branch if Not Equal

BPL cad

REL

Если (Z)=0, (PC)<-(PC)+rel

------

3

2

Branch if Plus

BMI cad

REL

Если (Z)=1, (PC)<-(PC)+rel

------

3

2

Branch if Minus

BHCC cad

REL

Если (H)=0, (PC)<-(PC)+rel

------

3

2

Branch Half Carry Clear

BHCS cad

REL

Если (H)=1, (PC)<-(PC)+rel

------

3

2

Branch Half Carry Set

BMC cad

REL

Если (I)=0, (PC)<-(PC)+rel

------

3

2

Branch if interrupt Mask Clear

BMS cad

REL

Если (I)=1, (PC)<-(PC)+rel

------

3

2

Branch if interrupt Mask Set

BIL cad

REL

Если ()=0,

(PC)<-(PC)+rel

------

3

2

Branch if Low

BIH cad

REL

Если ()=1,

(PC)<-(PC)+rel

------

3

2

Branch if High

BLO cad

REL

Если (C)=1, (PC)<-(PC)+rel

------

3

2

Branch if Lower

BLS cad

REL

Если (C)|(Z)=1,

(PC)<-(PC)+rel

------

3

2

Branch if Lower or Same (BCS)

BHI cad

REL

Если (C)|(Z)=0,

(PC)<-(PC)+rel

------

3

2

Branch if Higher

BHS cad

REL

Если (C)=0, (PC)<-(PC)+rel

------

3

2

Branch if Higher or Same (BCC)

BLT cad

REL

Если (N)Å(V)=1,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Less Then

BLE cad

REL

Если (Z)|(N)Å(V)=1,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Less Then or Equal

BGT cad

REL

Если (Z)|(N)Å(V)=0,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Greater Then

BGE cad

REL

Если (N)Å(V)=0,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Greater Then or Equal

BRCLR n, ad8,cad

DIR

REL

Если (ad8).n=0,

(PC)<-(PC)+rel

-----+

5

3

Branch if bit CLeaR

BRSET n, ad8,cad

DIR

REL

Если (ad8).n=1,

(PC)<-(PC)+rel; (C)<-(ad8).n

-----+

5

3

Branch if bit Set

BRN cad

IMM

(PC)<-(PC)+2

------

3

2

Branch Never

CBEQA #d8,cad

IMM,

REL

Если (A)=d8, (PC)<-(PC)+rel

------

4

3

Compare, Branch if Equal

CBEQX #d8,cad

IMM,

REL

Если (X)=d8, (PC)<-(PC)+rel

------

4

3

CBEQ ad8,cad

DIR,

REL

Если (A)=(ad8),

(PC)<-(PC)+rel

------

5

3

CBEQ X+,cad

IX+,

REL

Если (A)=((H:X)),

(PC)<-(PC)+rel;

(H:X)<-(H:X)+1

------

4

2

CBEQ of8,X+,cad

IX8+

REL

Если (A)=(of8+(H:X)),

(PC)<-(PC)+rel

(H:X)<-(H:X)+1

------

5

3

CBEQ of8,SP, cad

SP8

REL

Если (A)=(of8+(SP)),

(PC)<-(PC)+rel

------

6

4

DBNZA cad

REL

(A)<-(A)-1;

Если (A)¹0, (PC)<-(PC)+rel

------

3

2

Decrement, Branch if Not Zero

DBNZX cad

REL

(H:X)<-(H:X)-1;

Если (H:X)¹0, (PC)<-(PC)+rel

------

3

2

DBNZ ad8,cad

DIR,

REL

(ad8)<-(ad8)-1;

Если (ad8)¹0, (PC)<-(PC)+rel

------

5

3

DBNZ X, cad

IX,

REL

((H:X))<-((H:X))-1;

Если ((H:X))¹0,

(PC)<-(PC)+rel;

------

4

2

DBNZ of8,X, cad

IX8

REL

(of8+(H:X))<-(of8+(H:X))-1;

Если (of8+(H:X)) ¹ 0,

(PC)<-(PC)+rel

------

5

3

DBNZ of8,SP, cad

SP8

REL

(of8+(SP))<-(of8+(SP))-1;

Если (of8+(SP)) ¹ 0,

(PC)<-(PC)+rel

------

6

4

NOP

INH

(PC)<-(PC)+1

------

1

1

No OPeration

5.   Команды управления

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

CLC

INH

(C) <- 0

-----0

1

1

CLear C

SEC

INH

(C) <- 1

-----1

1

1

SEt C

CLI

INH

(I) <- 0 - разрешение прерываний, один цикл дополнительная задержка в исполнении для выполнения следующей команды (RTI)

--0---

1+1

1

CLear I

SEI

INH

(I) <- 1 - запрет прерываний

--1---

1+1

1

SEt I

WAIT

INH

(I) <- 0; Останов процессора до прерывания. Периферийные блоки тактируются

--0---

1

1

Сокращает мощность потребления

STOP

INH

(I) <- 0; Останов генератора тактов до прихода внешнего сигнала ,

--0---

1

1

Сокращает мощность потребления

RSP

INH

(SP) <- $FF - сброс указателя стека

------

1

1

Reset Stack Pointer

- совместимость с HC05

n  перемещение указателя по таблице

ADD, X; (A)<-(A)+((H:X))

JMP, X; (PC) <- (H:X)

6.   Индексная с 8-битным смещением (IX8)

OP of8,X

OP

of8

Без знака

n  - of8+(H:X) - исполнительный адрес

n  выделение к-ого элемента в таблице; к - в (H:X)

НЕ нашли? Не то? Что вы ищете?

ADD of8,X; (A)<-(A)+(of8+(H:X))

JMP of8,X; (PC) <- of8+(H:X)

7.   Индексная с 16-битным смещением (IX16) (нет в НС11)

OP of16,X

OP

of16h

of16l

Без знака

n  - of16+(H:X) - исполнительный адрес

n  выделение к-ого элемента в таблицеж; к - в (H:X)

n  ассемблер сам определяет of8 либо of16

ADD of16,X; (A)<-(A)+(of16+(H:X))

JMP of16,X; (PC) <- of16+(H:X)

8. По указателю стека с 8-битным смещением (SP8) (только в НС08)

OP of8,SP

9E

OP

of8

Без знака

n  - of8+(SP) - исполнительный адрес

n  доступ к данным стека

ADD of8,SP; (A)<-(A)+(of8+(SP))

9. По указателю стека с 16-битным смещением (SP16) (только в НС08)

OP of16,SP

9E

OP

of16h

of16l

n  - of16+(SP) - исполнительный адрес

n  доступ к данным стека

n  ассемблер сам определяет of8 либо of16

n  если прерывания запрещены - SP - еще один индексный регистр

ADD of16,SP; (A)<-(A)+(of16+(SP))

10. Относительная - в командах условного перехода (REL)

OP cad

OP

rel

Со знаком [-128, +127]

n  rel+(PC) - исполнительный адрес

n  ассемблер сам вычисляет rel

BCS cad; Если (C)=1, (PC)<-(PC)+rel

11. Непосредственная - прямая (только в НС08)

MOV #d8,Dad8; (Dad8) <- d8

OP

d8

ad8

12. Прямая - прямая (DD) (только в НС08)

MOV Sad8,Dad8; (Dad8) <- (Sad8)

OP

Sad8

Dad8

13. Индексная постинкрементная - прямая (IX+D) (только в НС08)

MOV X+, Dad8; (Dad8)<-((H:X)); (H:X)<-(H:X)+1

OP

Dad8

n  пересылка таблицы через последовательный канал

14. Прямая - индексная постинкрементная (DIX+) (только в НС08)

MOV Sad8, X+; ((H:X))<-(Sad8); (H:X)<-(H:X)+1

OP

Sad8

n  прием таблицы через последовательный канал

15. Индексная постинкрементная - относительная (IX+REL) (только в НС08)

CBEQ X+,cad; Если (A)=((H:X)), (PC)<-(PC)+rel; (H:X)<-(H:X)+1

OP

rel

16. Индексная постинкрементная с 8-битным смещением - относительная (IX8+REL) (только в НС08)

CBEQ of8,X+,cad; Если (A)=(of8+(H:X)), (PC)<-(PC)+rel; (H:X)<-(H:X)+1

OP

of8

rel

Система команд

В таблицах описания команд принята групповая форма записи, в которой операнды aop могут иметь все основные (со 2 по 9) типы адресации. Например,

запись команды

ADD aop

должна раскрываться соответственно множеством следующих команд:

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

ADD #d8

IMM

(A)<-(A)+ d8

++-+++

2

2

ADD

ADD ad8

DIR

(A)<-(A)+(ad8)

++-+++

3

2

without

ADD ad16

EXT

(A)<-(A)+(ad16)

++-+++

4

3

carry

ADD, X

IX

++-+++

2

3

ADD of8,X

IX8

(A)<-(A)+(of8+(H:X))

++-+++

3

2

ADD of16,X

IX16

(A)<-(A)+(of16+(H:X))

++-+++

4

3

ADD of8,SP

SP8

(A)<-(A)+(of8+(SP))

++-+++

4

3

Два байта в

ADD of16,SP

SP16

(A)<-(A)+(of16+(SP))

++-+++

5

4

коде опер.

Для команд сохранения (STA, STX), естественно отсутствует непосредственная адресация.

Следует отметить, что значение числа циклов цк, за которое команда должна выполняться и числа байт в команде бт, естественно, определяются конкретным способом адресации операндов. При групповой форме записи в таблицах команд в этих столбцах стоит звездочка. В выше приведенной таблице для каждого конкрет­ного способа адресации операндов указано числа циклов цк и числа байт бт, которые должны использоваться во всех групповых командах, а не только в команде ADD.

1.   Команды пересылки

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

LDA aop

*

(A) <- (aop)

0--++-

*

*

Load A

STA aop

*

(aop) <- (A)

0--++-

*

*

Store A

LDX aop

*

(X) <-( aop)

0--++-

*

*

Load X

STX aop

*

(aop) <- (X)

0--++-

*

*

Store X

LDHX #d16

IMM

(H:X) <- d16

0--++-

3

3

Load HX

LDHX ad8

DIR

(H:X) <- (ad8):(ad8+1)

0--++-

4

2

Со старшего

STHX ad8

DIR

(ad8):(ad8+1) <- (H:X)

0--++-

4

2

Со старшего

TXA

INH

(A) <- (X)

------

1

1

Transfer

TAX

INH

(X) <- (A)

------

1

1

TPA

INH

(A) <- (CCR)

------

1

1

PSW=CCR

TAP

INH

(CCR) <-( A)

++++++

1

1

TXS

INH

(SP) <- (H:X)-1

------

2

1

Stack

TSX

INH

(H:X) <- (SP)+1

------

2

1

На последнее записанное

MOV Sad8,Dad8

DD

(Dad8) <- (Sad8)

0--++-

5

3

MOVe

MOV Sad8,X+

DIX+

((H:X))<-(Sad8);

(H:X)<-(H:X)+1

0--++-

4

2

Два операнда в команде

MOV #d8,Dad8

IMD

(Dad8) <- d8

0--++-

4

3

MOV X+,Dad8

IX+D

(Dad8)<-((H:X));

(H:X)<-(H:X)+1

0--++-

4

2

PSHA

INH

((SP)) <- (A); (SP)<-(SP)-1

------

2

1

Push A

PSHH

INH

((SP)) <- (H); (SP)<-(SP)-1

------

2

1

Push H

PSHX

INH

((SP)) <- (X); (SP)<-(SP)-1

------

2

1

Push X

PULA

INH

(SP)<-(SP)+1; (A) <- ((SP))

------

2

1

Pull A

PULH

INH

(SP)<-(SP)+1; (H) <- ((SP))

------

2

1

Pull H

PULX

INH

(SP)<-(SP)+1; (X) <- ((SP))

------

2

1

Pull X

NSA

INH

(A) <- (A).3-0 : (A).7-4

------

3

1

Nibble Swap Accumulator

2. Команды логической обработки

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

AND aop

*

(A)<-(A)&(aop)

0--++-

*

*

Поразрядно

BIT aop

*

(A)&(aop);

0--++-

*

*

BIT test

ORA aop

*

(A)<-(A)|(aop)

0--++-

*

*

EOR aop

*

(A)<-(A)Å(aop)

0--++-

*

*

ExclusiveOR

CLRA

INH

(A) <- 0

+--++-

1

1

CLeaR A

CLRX

INH

(X) <- 0

+--++-

1

1

CLeaR X

CLRH

INH

(H) <- 0

+--++-

1

1

CLeaR H

CLR ad8

DIR

(ad8) <- 0

+--++-

3

2

CLR, X

IX

((H:X)) <- 0

+--++-

2

1

CLR of8,X

IX8

(of8+(H:X)) <- 0

+--++-

3

2

CLR of8,SP

SP8

(of8+(SP)) <- 0

+--++-

4

3

BCLR n, ad8

DIR

(ad8).n <- 0

------

4

2

Bit CLiaR

COMA

INH

(A) <- $FF-(A)

+--++-

1

1

COMplementA

COMX

INH

(X) <- $FF-(X)

+--++-

1

1

COMplementX

COM ad8

DIR

(ad8) <- $FF-(ad8)

+--++-

4

2

Поразрядное

COM, X

IX

((H:X)) <- $FF-((H:X))

+--++-

3

1

дополнение

COM of8,X

IX8

(of8+(H:X))<-$FF-(of8+(H:X))

+--++-

4

2

COM of8,SP

SP8

(of8+(SP)) <- $FF-(of8+(SP))

+--++-

5

3

ASLA

ASLX

ASL ad8

ASL, X

ASL of8,X

ASL of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

C<-b7<-b6<-...<-b1<-b0<-0

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

Arithmetic Shift Left.

На один разряд. То же, что и LSL

ASRA

ASRX

ASR ad8

ASR, X

ASR of8,X

ASR of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

Ú>b7Â>b6->...->b1->b0->C

ÀÄÄÄÙ

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

Arithmetic Shift Right

На один разряд.

LSLA

LSLX

LSL ad8

LSL, X

LSL of8,X

LSL of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

C<-b7<-b6<-...<-b1<-b0<-0

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

Logical Shift Left.

На один разряд. То же, что и ASL

LSRA

LSRX

LSR ad8

LSR, X

LSR of8,X

LSR of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Сдвиг аккумулятора

Сдвиг индексного регистра X

и. т.д. Содержание:

0->b7->b6->...->b1->b0->C

+--0++

1

1

4

3

4

5

1

1

2

1

2

2

Logical Shift Right

На один разряд.

ROLA

ROLX

ROL ad8

ROL, X

ROL of8,X

ROL of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Циклический сдвиг влево аккумулятора, индексного регистра X, и. т.д.. Содержание:

ÚC<-b7<-b6<-...<-b1<-b0<¿

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

+--+++

1

1

4

3

4

5

1

1

2

1

2

2

ROtate Left through carry.

На один разряд.

RORA

RORX

ROR ad8

ROR, X

ROR of8,X

ROR of8,SP

IMM

IMM

DIR

IX

IX8

SP8

Циклический сдвиг вправо аккумулятора, индексного регистра X, и. т.д. Содержание:

Ú>b7->b6->...->b1->b0->C¿

ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

+--0++

1

1

4

3

4

5

1

1

2

1

2

2

ROtate Right through carry

На один разряд.

3. Команды арифметической обработки

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

ADD aop

*

(A) <- (A)+(aop)

++-+++

*

*

ADD

ADC aop

*

(A) <- (A)+(aop)+(C)

++-+++

*

*

ADD, Carry

AIS #d8

IMM

(SP) <- (SP)+d8

------

2

2

Со знаком

AIX #d8

IMM

(H:X) <- (H:X)+d8

------

2

2

Со знаком

SUB aop

*

(A) <- (A)-(aop)

+--+++

*

*

SUBtract

SBC aop

*

(A) <- (A)-(aop)-(C)

+--+++

*

*

SUBtract

CMP aop

*

(A)-(aop)

+--+++

*

*

CoMPare A

CPX aop

*

(X)-(aop)

+--+++

*

*

ComPare X

TSTA

INH

(A)-0

0--++-

1

1

TeST for

TSTX

INH

(X)-0

0--++-

1

1

negative

TST ad8

DIR

(ad8)-0

0--++-

3

2

or zero

TST, X

IX

((H:X))-0

0--++-

2

1

TST of8,X

IX8

(of8+(H:X))-0

0--++-

3

2

TST of8,SP

SP8

(of8+(SP))-0

0--++-

4

3

CPHX #d16

IMM

(H:X)-d16

+--+++

*

*

CoMPare H:X

CPHX ad8

DIR

(H:X)-(ad8)

+--+++

*

*

CoMPare H:X

INCA

INH

(A) <- (A)+1

+--++-

1

1

INCrement A

INCX

INH

(X) <- (X)+1

+--++-

1

1

INCrement X

INC ad8

DIR

(ad8) <- (ad8)+1

+--++-

4

2

INC, X

IX

((H:X)) <- ((H:X))+1

+--++-

3

1

INC of8,X

IX8

(of8+(H:X)) <- (of8+(H:X))+1

+--++-

4

2

INC of8,SP

SP8

(of8+(SP)) <- (of8+(SP))+1

+--++-

5

3

DECA

INH

(A) <- (A)-1

+--++-

1

1

DECrement A

DECX

INH

(X) <- (X)-1

+--++-

1

1

DECrement X

DEC ad8

DIR

(ad8) <- (ad8)-1

+--++-

4

2

DEC, X

IX

((H:X)) <- ((H:X))-1

+--++-

3

1

DEC of8,X

IX8

(of8+(H:X)) <- (of8+(H:X))-1

+--++-

4

2

DEC of8,SP

SP8

(of8+(SP)) <- (of8+(SP))-1

+--++-

5

3

NEGA

INH

(A) <- -(A)

+--++-

1

1

NEGate A

NEGX

INH

(X) <- -(X)

+--++-

1

1

NEGate X

NEG ad8

DIR

(ad8) <- -(ad8)

+--++-

4

2

NEG, X

IX

((H:X)) <- -((H:X))

+--++-

3

1

NEG of8,X

IX8

(of8+(H:X)) <- -(of8+(H:X))

+--++-

4

2

NEG of8,SP

SP8

(of8+(SP)) <- -(of8+(SP))

+--++-

5

3

MUL

INH

(X:A) <- (X)*(A)

-0---0

5

1

MULtiply

Без знака

DIV

INH

(A) <- (H:A)/(X)

(H) <- (H:A)mod(X)

----++

7

1

DIVide

Остаток

DAA

INH

Двоично-десят. коррекция (A)

?--+++

2

1

Decimal Adjust Accum.

4.   Команды перехода

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

JMP ad8

DIR

(PC) <- ad8

------

2

2

JuMP

JMP ad16

EXT

(PC) <- ad16

------

3

3

JMP, X

IX

(PC) <- (H:X)

------

2

1

JMP of8,X

IX8

(PC) <- of8+(H:X)

------

3

2

JMP of16,X

IX16

(PC) <- of16+(H:X)

------

4

3

JSR ad8

DIR

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- ad8

------

2

2

JuMP To Subroutine

JSR ad16

EXT

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- ad16

------

3

3

JSR, X

IX

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- (H:X)

------

2

1

JSR of8,X

IX8

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- of8+(H:X)

------

3

2

JSR of16,X

IX16

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- of16+(H:X)

------

4

3

SWI

INH

(PC)<-(PC)+1;

((SP))<-(PCL); (SP)<-(SP)-1; ((SP))<-(PCH); (SP)<-(SP)-1; ((SP))<-(X); (SP)<-(SP)-1; ((SP))<-(A); (SP)<-(SP)-1; ((SP))<-(CCR); (SP)<-(SP)-1; (I)<-1

(PC)<-(ADMAX-3):(ADMAX-2) (вектор программного прерывания SWI)

--1---

9

1

SoftWare Interrupt. Регистр H не запоминается для совместимости с HC05

RTI

INH

(SP)<-(SP)+1; (CCR)<-((SP));

(SP)<-(SP)+1; (A)<-((SP));

(SP)<-(SP)+1; (X)<-((SP));

(SP)<-(SP)+1; (PCH)<-((SP));

(SP)<-(SP)+1; (PCL)<-((SP));

++++++

7

1

ReTurn from Interrupt

RTS

INH

(SP)<-(SP)+1; (PCH)<-((SP));

(SP)<-(SP)+1; (PCL)<-((SP));

------

4

1

ReTurn from Subroutine

BRA cad

REL

(PC)<-(PC)+rel

------

3

2

BRanch Always

BSR cad

REL

((SP))<-(PCL);(SP)<-(SP)-1;

((SP))<-(PCH);(SP)<-(SP)-1;

(PC) <- (PC)+rel

------

4

2

Branch to SubRoutine

BCC cad

REL

Если (C)=0, (PC)<-(PC)+rel

------

3

2

Branch if Carry Clear

BCS cad

REL

Если (C)=1, (PC)<-(PC)+rel

------

3

2

Branch if Carry Set

BEQ cad

REL

Если (Z)=1, (PC)<-(PC)+rel

------

3

2

Branch if Equal

BNE cad

REL

Если (Z)=0, (PC)<-(PC)+rel

------

3

2

Branch if Not Equal

BPL cad

REL

Если (Z)=0, (PC)<-(PC)+rel

------

3

2

Branch if Plus

BMI cad

REL

Если (Z)=1, (PC)<-(PC)+rel

------

3

2

Branch if Minus

BHCC cad

REL

Если (H)=0, (PC)<-(PC)+rel

------

3

2

Branch Half Carry Clear

BHCS cad

REL

Если (H)=1, (PC)<-(PC)+rel

------

3

2

Branch Half Carry Set

BMC cad

REL

Если (I)=0, (PC)<-(PC)+rel

------

3

2

Branch if interrupt Mask Clear

BMS cad

REL

Если (I)=1, (PC)<-(PC)+rel

------

3

2

Branch if interrupt Mask Set

BIL cad

REL

Если ()=0,

(PC)<-(PC)+rel

------

3

2

Branch if Low

BIH cad

REL

Если ()=1,

(PC)<-(PC)+rel

------

3

2

Branch if High

BLO cad

REL

Если (C)=1, (PC)<-(PC)+rel

------

3

2

Branch if Lower

BLS cad

REL

Если (C)|(Z)=1,

(PC)<-(PC)+rel

------

3

2

Branch if Lower or Same (BCS)

BHI cad

REL

Если (C)|(Z)=0,

(PC)<-(PC)+rel

------

3

2

Branch if Higher

BHS cad

REL

Если (C)=0, (PC)<-(PC)+rel

------

3

2

Branch if Higher or Same (BCC)

BLT cad

REL

Если (N)Å(V)=1,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Less Then

BLE cad

REL

Если (Z)|(N)Å(V)=1,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Less Then or Equal

BGT cad

REL

Если (Z)|(N)Å(V)=0,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Greater Then

BGE cad

REL

Если (N)Å(V)=0,

(Операнды со знаком)

(PC)<-(PC)+rel

------

3

2

Branch if Greater Then or Equal

BRCLR n, ad8,cad

DIR

REL

Если (ad8).n=0,

(PC)<-(PC)+rel

-----+

5

3

Branch if bit CLeaR

BRSET n, ad8,cad

DIR

REL

Если (ad8).n=1,

(PC)<-(PC)+rel; (C)<-(ad8).n

-----+

5

3

Branch if bit Set

BRN cad

IMM

(PC)<-(PC)+2

------

3

2

Branch Never

CBEQA #d8,cad

IMM,

REL

Если (A)=d8, (PC)<-(PC)+rel

------

4

3

Compare, Branch if Equal

CBEQX #d8,cad

IMM,

REL

Если (X)=d8, (PC)<-(PC)+rel

------

4

3

CBEQ ad8,cad

DIR,

REL

Если (A)=(ad8),

(PC)<-(PC)+rel

------

5

3

CBEQ X+,cad

IX+,

REL

Если (A)=((H:X)),

(PC)<-(PC)+rel;

(H:X)<-(H:X)+1

------

4

2

CBEQ of8,X+,cad

IX8+

REL

Если (A)=(of8+(H:X)),

(PC)<-(PC)+rel

(H:X)<-(H:X)+1

------

5

3

CBEQ of8,SP, cad

SP8

REL

Если (A)=(of8+(SP)),

(PC)<-(PC)+rel

------

6

4

DBNZA cad

REL

(A)<-(A)-1;

Если (A)¹0, (PC)<-(PC)+rel

------

3

2

Decrement, Branch if Not Zero

DBNZX cad

REL

(H:X)<-(H:X)-1;

Если (H:X)¹0, (PC)<-(PC)+rel

------

3

2

DBNZ ad8,cad

DIR,

REL

(ad8)<-(ad8)-1;

Если (ad8)¹0, (PC)<-(PC)+rel

------

5

3

DBNZ X, cad

IX,

REL

((H:X))<-((H:X))-1;

Если ((H:X))¹0,

(PC)<-(PC)+rel;

------

4

2

DBNZ of8,X, cad

IX8

REL

(of8+(H:X))<-(of8+(H:X))-1;

Если (of8+(H:X)) ¹ 0,

(PC)<-(PC)+rel

------

5

3

DBNZ of8,SP, cad

SP8

REL

(of8+(SP))<-(of8+(SP))-1;

Если (of8+(SP)) ¹ 0,

(PC)<-(PC)+rel

------

6

4

NOP

INH

(PC)<-(PC)+1

------

1

1

No OPeration

5.   Команды управления

Мнемоника

Спос

адр.

Содержание

Флаги

VHINZC

Цк

Бт

Примечание

CLC

INH

(C) <- 0

-----0

1

1

CLear C

SEC

INH

(C) <- 1

-----1

1

1

SEt C

CLI

INH

(I) <- 0 - разрешение прерываний, один цикл дополнительная задержка в исполнении для выполнения следующей команды (RTI)

--0---

1+1

1

CLear I

SEI

INH

(I) <- 1 - запрет прерываний

--1---

1+1

1

SEt I

WAIT

INH

(I) <- 0; Останов процессора до прерывания. Периферийные блоки тактируются

--0---

1

1

Сокращает мощность потребления

STOP

INH

(I) <- 0; Останов генератора тактов до прихода внешнего сигнала ,

--0---

1

1

Сокращает мощность потребления

RSP

INH

(SP) <- $FF - сброс указателя стека

------

1

1

Reset Stack Pointer