Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LK_MashZavYP_Akchurin_2011.pdf
Скачиваний:
191
Добавлен:
10.06.2015
Размер:
8.79 Mб
Скачать

-v27 для C27x.

-v28 для C28x.

-v28 –C2xlp_src_compatible - для C28x с поддержкой дополнительных инструкций C2xlp.

8.5. Команды ассемблера

Всего определено… команд, разделенных по категориям:

Категория

Кол-во

С регистрами общего назначения XAR0 – XAR7

14

С регистром указателя сегмента памяти данных DP

3

С регистром указателя стека SP

30

С регистрами AX (AH, AL)

38

16-разрядные с регистрами ACC

26

32-разрядные с регистрами ACC

44

64-разрядные с регистрами ACC

9

С регистрами P или XT

21

Перемножение 16х16

20

Перемножение 32х32

13

Прямой доступ к памяти

17

Ввод/вывод

3

Программная память

5

Ветвление, вызов, возврат

31

С регистром прерываний IER

9

С регистрами статуса ST0, ST1

18

Разного назначения

10

Итого

311

8.5.1. Операции с регистрами XAR0-XAR7

Мнемоника

Код

XARn

 

 

 

Пример

 

 

операции

 

 

 

 

 

 

ADDB XARn,

1101

1nnn

0CCC

CCCC

 

XARn = XARn

#7bit

 

 

 

 

 

+ 0:7bit;

 

ADRK #8bit

1111

1100

IIII

IIII

 

XAR(ARP)

=

 

 

 

 

 

 

XAR(ARP)

+

 

 

 

 

 

 

0:8bit;

 

 

 

 

 

 

 

Сравнение

 

CMPR 0

0101

0100

0001

1101

 

AR0

c

402

CMPR 1

 

 

 

 

1001

 

AR(ARP) на

 

CMPR 2

 

 

 

 

1000

 

=

 

CMPR 3

 

 

 

 

1100

 

>

 

 

 

 

 

 

 

 

<

 

 

 

 

 

 

 

 

!=

 

MOV AR6,loc16

0101

1110

LLLL

LLLL

 

AR6/7

=

MOV AR7,loc16

 

 

 

 

 

[loc16];

 

 

 

 

 

 

 

 

AR6/7H

=

 

 

 

 

 

 

 

unchanged;

 

MOV loc16,ARn

0111

1nnn

LLLL

LLLL

 

[loc16] = ARn;

MOV XARn,PC

0011

1110

0101

1nnn

 

XARn = 0:PC;

MOVB

 

1101

0110

CCCC

CCCC

 

AR6/7 = 0:8bit;

AR6,#8bit

 

 

0111

 

 

 

AR6/7H

=

MOVB

 

 

 

 

 

 

unchanged;

 

AR7,#8bit

 

 

 

 

 

 

 

 

MOVB

 

1101

0nnn

CCCC

CCCC

 

XARn = 0:8bit;

XAR0…5, #8bit

1011

1110

 

 

 

 

 

MOVB

XAR6,

1011

0110

 

 

 

 

 

#8bit

 

 

 

 

 

 

 

 

MOVB

XAR7,

 

 

 

 

 

 

 

#8bit

 

 

 

 

 

 

 

 

MOVL

 

0011

1010

LLLL

LLLL

 

[loc32]

=

loc32,XAR0

1011

0010

 

 

 

XARn;

 

MOVL

 

1010

1010

 

 

 

 

 

loc32,XAR1

1010

0010

 

 

 

 

 

MOVL

 

1010

1000

 

 

 

 

 

loc32,XAR2

1010

0000

 

 

 

 

 

MOVL

 

1100

0010

 

 

 

 

 

loc32,XAR3

1100

0011

 

 

 

 

 

MOVL

 

 

 

 

 

 

 

 

loc32,XAR4

 

 

 

 

 

 

 

MOVL

 

 

 

 

 

 

 

 

loc32,XAR5

 

 

 

 

 

 

 

MOVL

 

 

 

 

 

 

 

 

loc32,XAR6

 

 

 

 

 

 

 

MOVL

 

 

 

 

 

 

 

 

loc32,XAR7

 

 

 

 

 

 

 

MOVL

XAR0,

1000

1110

LLLL

LLLL

 

XARn

=

403

loc32

 

1000

1011

 

 

 

[loc32];

 

MOVL

XAR1,

1000

0110

 

 

 

 

 

loc32

 

1000

0010

 

 

 

 

 

MOVL

XAR2,

1000

1010

 

 

 

 

 

loc32

 

1000

0011

 

 

 

 

 

MOVL

XAR3,

1100

0100

 

 

 

 

 

loc32

 

1100

0101

 

 

 

 

 

MOVL

XAR4,

 

 

 

 

 

 

 

loc32

 

 

 

 

 

 

 

 

MOVL

XAR5,

 

 

 

 

 

 

 

loc32

 

 

 

 

 

 

 

 

MOVL

XAR6,

 

 

 

 

 

 

 

loc32

 

 

 

 

 

 

 

 

MOVL

XAR7,

 

 

 

 

 

 

 

loc32

 

 

 

 

 

 

 

 

MOVL

XAR0,

1000

1110

00СС

СССС

СССС

XARn

=

#22bit

 

1000

1011

 

 

СССС

0:22bit;

 

MOVL

XAR1,

1000

0110

 

 

СССС

 

 

#22bit

 

1000

0010

 

 

СССС

В КОП добав-

MOVL

XAR2,

1000

1010

 

 

 

лены 16 бит

 

#22bit

 

1000

0011

 

 

 

 

 

MOVL

XAR3,

0111

0100

 

 

 

 

 

#22bit

 

0111

0101

 

 

 

 

 

MOVL

XAR4,

 

 

 

 

 

 

 

#22bit

 

 

 

 

 

 

 

 

MOVL

XAR5,

 

 

 

 

 

 

 

#22bit

 

 

 

 

 

 

 

 

MOVL

XAR6,

 

 

 

 

 

 

 

#22bit

 

 

 

 

 

 

 

 

MOVL

XAR7,

 

 

 

 

 

 

 

#22bit

 

 

 

 

 

 

 

 

MOVZ

 

0101

1nnn

LLLL

LLLL

 

ARn = [loc16];

AR0…5n,loc16

1000

1000

 

 

 

ARnH = 0;

 

MOVZ

 

1000

0000

 

 

 

 

 

AR6,loc16

 

 

 

 

 

 

 

MOVZ

 

 

 

 

 

 

 

 

AR7,loc16

 

 

 

 

 

 

 

SBRK #8bit

1111

1011

CCCC

CCCC

 

XAR(ARP)

=

 

 

 

 

 

 

 

XAR(ARP)

404

 

 

 

 

 

 

0:8bit;

SUBB XARn,

1101

1nnn

1CCC

CCCC

 

XARn = XARn

#7bit

 

 

 

 

 

− 0:7bit;

8.5.2. Операции загрузки регистра DP

Регистр DP содержит адрес памяти данных.

Мнемоника

Код опе-

XARn

 

 

 

Пример

 

 

рации

 

 

 

 

 

 

MOV

1111

10СС

СССС

СССС

 

DP(9:0) = 10bit;

DP,#10bit

 

 

 

 

 

DP(15:10)

=

 

 

 

 

 

 

unchanged;

 

MOVW

0111

0110

0001

1111

СССС

DP(15:0)

=

DP,#16bit

 

 

 

 

СССС

16bit;

 

 

 

 

 

 

СССС

 

 

 

 

 

 

 

СССС

 

 

MOVZ

1011

10СС

СССС

СССС

 

DP(9:0) = 10bit;

DP,#10bit

 

 

 

 

 

DP(15:10) = 0;

 

8.5.3. Операции с регистром SP

Мнемоника

Код

XARn

 

 

Пример

 

 

 

операции

 

 

 

 

 

 

ADDB SP,#7bit

1111

1110

0ССС

СССС

SP = SP + 0:7bit;

 

POP ACC

0000

0110

1011

1110

SP −= 2;

 

 

 

 

 

 

 

ACC = [SP];

 

 

POP AR1:AR0

0111

0110

0000

0111

SP −= 2;

 

 

 

 

 

 

 

AR0 = [SP];

 

 

 

 

 

 

 

AR1 = [SP+1];

 

 

 

 

 

 

 

AR1H:AR0H

=

без

 

 

 

 

 

изменений;

 

 

POP AR3:AR2

0111

0110

0000

0101

SP −= 2;

 

 

 

 

 

 

 

AR2= [SP];

 

 

 

 

 

 

 

AR3 = [SP+1];

 

 

 

 

 

 

 

AR3H:AR2H

=

без

 

 

 

 

 

изменений;

 

 

POP AR5:AR4

0111

0110

0000

0110

SP −= 2;

 

 

 

 

 

 

 

AR5 = [SP];

 

 

 

 

 

 

 

AR4= [SP+1];

 

 

405

 

 

 

 

 

AR5H:AR4H = без

 

 

 

 

 

изменений;

POP

0000

0000

000

0011

SP −= 2;

AR1H:AR0H

 

 

 

 

AR0H = [SP];

 

 

 

 

 

AR1H = [SP+1];

 

 

 

 

 

AR1:AR0 = без изме-

 

 

 

 

 

нений;

POP DBGIER

0111

0110

0001

0010

SP −= 1;

 

 

 

 

 

DBGIER = [SP];

POP DP:ST1

0111

0110

0000

0001

SP −= 2;

 

 

 

 

 

ST1 = [SP];

 

 

 

 

 

DP = [SP+1];

POP DP

0111

0110

0000

0011

SP −= 1;

 

 

 

 

 

DP = [SP];

POP IFR

0000

0000

0000

0010

SP −= 1;

 

 

 

 

 

IFR = [SP];

POP loc16

0010

1010

LLLL

LLLL

SP -= 1;

 

 

 

 

 

[loc16] = [SP];

POP P

0111

0110

0001

0001

SP −= 2;

 

 

 

 

 

P = [SP];

POP RPC

0000

0000

0000

0111

SP −= 2;

 

 

 

 

 

RPC = [SP];

POP ST0

0111

0110

0001

0011

SP −= 1;

 

 

 

 

 

ST0 = [SP];

POP ST1

0111

0110

0000

0000

SP −= 1;

 

 

 

 

 

ST1 = [SP];

POP T:ST0

0111

0110

0001

0101

SP −= 2;

 

 

 

 

 

T = [SP];

 

 

 

 

 

ST0 = [SP+1];

 

 

 

 

 

TL = без изменений;

POP XT

0111

0110

 

 

SP −= 2;

 

 

 

 

 

XT = [SP];

POP XAR0

0011

1010

1011

1110

SP −= 2;

POP XAR1

1011

0010

 

 

XARn = [SP];

POP XAR2

1010

1010

 

 

 

POP XAR3

1010

0010

 

 

 

POP XAR4

1010

1000

 

 

 

POP XAR5

1010

0000

 

 

 

406

POP XAR6

1100

0010

 

 

 

POP XAR7

1100

0011

 

 

 

PUSH ACC

0001

1110

1011

1101

[SP] = ACC;

 

 

 

 

 

SP += 2;

PUSH AR0:AR1

0111

0110

0000

1101

[SP] = AR0;

PUSH AR3:AR2

 

 

 

 

[SP+1] = AR1;

PUSH AR5:AR4

 

 

 

 

SP += 2;

PUSH AR3:AR2

0111

0110

0000

1111

[SP] = AR2;

 

 

 

 

 

[SP+1] = AR3;

 

 

 

 

 

SP += 2;

PUSH AR5:AR4

0111

0110

0000

1100

[SP] = AR4;

 

 

 

 

 

[SP+1] = AR5;

 

 

 

 

 

SP += 2;

PUSH

0000

0000

0000

0101

[SP] = AR0H;

AR1H:AR0H

 

 

 

 

[SP+1] = AR1H;

 

 

 

 

 

SP += 2;

PUSH DBGIER

0111

0110

0000

1110

[SP] = DBGIER;

 

 

 

 

 

SP += 1;

PUSH DP:ST1

0111

0110

0000

0000

[SP] = DP;

 

 

 

 

 

SP += 1;

PUSH DP

0111

0110

0000

1011

[SP] = ST1;

 

 

 

 

 

[SP+1] = DP;

 

 

 

 

 

SP += 2;

PUSH IFR

0111

0110

0000

1010

[SP] = IFR;

 

 

 

 

 

SP += 1;

PUSH loc16

0010

0010

LLLL

LLLL

[SP] = [loc16];

 

 

 

 

 

SP += 1;

PUSH P

0111

0110

0001

1101

[SP] = P;

 

 

 

 

 

SP += 2;

PUSH RPC

0000

0000

0000

0100

[SP] = RPC;

 

 

 

 

 

SP += 2;

PUSH ST0

0111

0110

0001

1000

[SP] = ST0;

 

 

 

 

 

SP += 1;

PUSH ST1

0111

0110

0000

1000

[SP] = ST1;

 

 

 

 

 

SP += 1;

407

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]