Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Встроенные математические функции.
| Функция
| Описание
| | $acos(x)
| Арккосинус в диапазоне [0, π], x [-1, 1]
| | $asin(x)
| Арксинус в диапазоне [-π/2, π/2], x [-1, 1]
| | $atanx)
| Арктангенс в диапазоне [-π/2, π/2]
| | $atan2(x, y)
| Арктангенс от y/x в диапазоне [-π, π]
| | $ceil(x)
| Округление до ближайшего целого, меньшего,
чем x с плавающей точкой
| | $cos(x)
| Косинус от x
| | $cosh(x)
| Косинус гиперболический от x
| | $cvf(n)
| Превращает целое в формат с плавающей точкой
| | $cvi(x)
| Превращает число с плавающей точкой в целое
| | $exp(x)
| Экспонента от x
| | $fabs(x)
| Абсолютное значение от х
| | $floor(x)
| Округление до ближайшего целого, большего,
чем x с плавающей точкой
| | $fmod(x, y)
| Остаток от деления x/y, знак как для x
| | $int(x)
| Возвращает 1, если x целое, иначе 0
| | $ldexp(x, n)
| Умножение х на 2 в степени n
| | $log(x)
| Натуральный логарифм
| | $log10(x)
| Десятичный логарифм
| | $max(x, y,...z)
| Наибольшее из списка
| | $min(x, y,...z)
| Наименьшее из списка
| | $pow(x, y)
| Х в степени y
| | $round(x)
| Округление до ближайшего целого
| | $sgn(x)
| Знак числа. 1 для положительного, 0 для отрицательного
| | $sin(x)
| Синус от х
| | $sinh(x)
| Синус гиперболический от х
| | $sqrt(x)
| Квадратный корень из х
| | $tan(x)
| Тангенс от х
| | $tanh(x)
| Тангенс гиперболический от х
| | $trunc(x)
| Ближайшее целое по отношению к 0
| Режимы работы ассемблера. Возможны 3 режима:
· -v27 для C27x.
· -v28 для C28x.
· -v28 –C2xlp_src_compatible - для C28x с поддержкой дополнительных инструкций C2xlp.
Команды ассемблера
Всего определено… команд, разделенных по категориям:
| Категория
| Кол-во
| | С регистрами общего назначения XAR0 – XAR7
|
| | С регистром указателя сегмента памяти данных DP
|
| | С регистром указателя стека SP
|
| | С регистрами AX (AH, AL)
|
| | 16-разрядные с регистрами ACC
|
| | 32-разрядные с регистрами ACC
|
| | 64-разрядные с регистрами ACC
|
| | С регистрами P или XT
|
| | Перемножение 16х16
|
| | Перемножение 32х32
|
| | Прямой доступ к памяти
|
| | Ввод/вывод
|
| | Программная память
|
| | Ветвление, вызов, возврат
|
| | С регистром прерываний IER
|
| | С регистрами статуса ST0, ST1
|
| | Разного назначения
|
| | Итого
|
|
Операции с регистрами XAR0-XAR7
| Мнемоника
| Код операции
| XARn
|
|
|
| Пример
| | ADDB XARn, #7bit
|
| 1nnn
| 0CCC
| CCCC
|
| XARn = XARn + 0:7bit;
| | ADRK #8bit
|
|
| IIII
| IIII
|
| XAR(ARP) = XAR(ARP) + 0:8bit;
| |
CMPR 0
CMPR 1
CMPR 2
CMPR 3
|
|
|
|
|
| Сравнение AR0 c AR(ARP) на
=
>
<
!=
| | MOV AR6,loc16
MOV AR7,loc16
|
|
| LLLL
| LLLL
|
| AR6/7 = [loc16];
AR6/7H = unchanged;
| | MOV loc16,ARn
|
| 1nnn
| LLLL
| LLLL
|
| [loc16] = ARn;
| | MOV XARn,PC
|
|
|
| 1nnn
|
| XARn = 0:PC;
| | MOVB AR6,#8bit
MOVB AR7,#8bit
|
|
| CCCC
| CCCC
|
| AR6/7 = 0:8bit;
AR6/7H = unchanged;
| | MOVB XAR0…5, #8bit
MOVB XAR6, #8bit
MOVB XAR7, #8bit
|
| 0nnn
| CCCC
| CCCC
|
| XARn = 0:8bit;
| | MOVL loc32,XAR0
MOVL loc32,XAR1
MOVL loc32,XAR2
MOVL loc32,XAR3
MOVL loc32,XAR4
MOVL loc32,XAR5
MOVL loc32,XAR6
MOVL loc32,XAR7
|
|
| LLLL
| LLLL
|
| [loc32] = XARn;
| | MOVL XAR0, loc32
MOVL XAR1, loc32
MOVL XAR2, loc32
MOVL XAR3, loc32
MOVL XAR4, loc32
MOVL XAR5, loc32
MOVL XAR6, loc32
MOVL XAR7, loc32
|
|
| LLLL
| LLLL
|
| XARn = [loc32];
| | MOVL XAR0, #22bit
MOVL XAR1, #22bit
MOVL XAR2, #22bit
MOVL XAR3, #22bit
MOVL XAR4, #22bit
MOVL XAR5, #22bit
MOVL XAR6, #22bit
MOVL XAR7, #22bit
|
|
| 00СС
| СССС
| СССС
СССС
СССС
СССС
| XARn = 0:22bit;
В КОП добавлены 16 бит
| | MOVZ AR0…5n,loc16
MOVZ AR6,loc16
MOVZ AR7,loc16
|
| 1nnn
| LLLL
| LLLL
|
| ARn = [loc16];
ARnH = 0;
| | SBRK #8bit
|
|
| CCCC
| CCCC
|
| XAR(ARP) = XAR(ARP) − 0:8bit;
| | SUBB XARn, #7bit
|
| 1nnn
| 1CCC
| CCCC
|
| XARn = XARn − 0:7bit;
|
Операции загрузки регистра DP
Регистр DP содержит адрес памяти данных.
| Мнемоника
| Код операции
| XARn
|
|
|
| Пример
| | MOV DP,#10bit
|
| 10СС
| СССС
| СССС
|
| DP(9:0) = 10bit;
DP(15:10) = unchanged;
| | MOVW DP,#16bit
|
|
|
|
| СССС
СССС СССС СССС
| DP(15:0) = 16bit;
| | MOVZ DP,#10bit
|
| 10СС
| СССС
| СССС
|
| DP(9:0) = 10bit;
DP(15:10) = 0;
|
Операции с регистром SP
| Мнемоника
| Код операции
| XARn
|
|
| Пример
| | ADDB SP,#7bit
|
|
| 0ССС
| СССС
| SP = SP + 0:7bit;
| | POP ACC
|
|
|
|
| SP −= 2;
ACC = [SP];
| | POP AR1:AR0
|
|
|
|
| SP −= 2;
AR0 = [SP];
AR1 = [SP+1];
AR1H:AR0H = без изменений;
| | POP AR3:AR2
|
|
|
|
| SP −= 2;
AR2= [SP];
AR3 = [SP+1];
AR3H:AR2H = без изменений;
| | POP AR5:AR4
|
|
|
|
| SP −= 2;
AR5 = [SP];
AR4= [SP+1];
AR5H:AR4H = без изменений;
| | POP AR1H:AR0H
|
|
|
|
| SP −= 2;
AR0H = [SP];
AR1H = [SP+1];
AR1:AR0 = без изменений;
| | POP DBGIER
|
|
|
|
| SP −= 1;
DBGIER = [SP];
| | POP DP:ST1
|
|
|
|
| SP −= 2;
ST1 = [SP];
DP = [SP+1];
| | POP DP
|
|
|
|
| SP −= 1;
DP = [SP];
| | POP IFR
|
|
|
|
| SP −= 1;
IFR = [SP];
| | POP loc16
|
|
| LLLL
| LLLL
| SP -= 1;
[loc16] = [SP];
| | POP P
|
|
|
|
| SP −= 2;
P = [SP];
| | POP RPC
|
|
|
|
| SP −= 2;
RPC = [SP];
| | POP ST0
|
|
|
|
| SP −= 1;
ST0 = [SP];
| | POP ST1
|
|
|
|
| SP −= 1;
ST1 = [SP];
| | POP T:ST0
|
|
|
|
| SP −= 2;
T = [SP];
ST0 = [SP+1];
TL = без изменений;
| | POP XT
|
|
|
|
| SP −= 2;
XT = [SP];
| | POP XAR0
POP XAR1
POP XAR2
POP XAR3
POP XAR4
POP XAR5
POP XAR6
POP XAR7
|
|
|
|
| SP −= 2;
XARn = [SP];
| | PUSH ACC
|
|
|
|
| [SP] = ACC;
SP += 2;
| | PUSH AR0:AR1
PUSH AR3:AR2
PUSH AR5:AR4
|
|
|
|
| [SP] = AR0;
[SP+1] = AR1;
SP += 2;
| | PUSH AR3:AR2
|
|
|
|
| [SP] = AR2;
[SP+1] = AR3;
SP += 2;
| | PUSH AR5:AR4
|
|
|
|
| [SP] = AR4;
[SP+1] = AR5;
SP += 2;
| | PUSH AR1H:AR0H
|
|
|
|
| [SP] = AR0H;
[SP+1] = AR1H;
SP += 2;
| | PUSH DBGIER
|
|
|
|
| [SP] = DBGIER;
SP += 1;
| | PUSH DP:ST1
|
|
|
|
| [SP] = DP;
SP += 1;
| | PUSH DP
|
|
|
|
| [SP] = ST1;
[SP+1] = DP;
SP += 2;
| | PUSH IFR
|
|
|
|
| [SP] = IFR;
SP += 1;
| | PUSH loc16
|
|
| LLLL
| LLLL
| [SP] = [loc16];
SP += 1;
| | PUSH P
|
|
|
|
| [SP] = P;
SP += 2;
| | PUSH RPC
|
|
|
|
| [SP] = RPC;
SP += 2;
| | PUSH ST0
|
|
|
|
| [SP] = ST0;
SP += 1;
| | PUSH ST1
|
|
|
|
| [SP] = ST1;
SP += 1;
|
|