Система команд в режиме THUMB
|
Ярлыки
_GetPixelIndex
(1)
_SetPixelIndex
(1)
3-phase
(1)
800x480
(1)
АЦП
(1)
генератор
(1)
синхронный усилитель
(2)
структура
(1)
учебный курс
(1)
шаговый двигатель
(1)
ШИМ
(2)
accert
(1)
AD7608
(1)
AD8429
(1)
ADC
(5)
amplifer
(1)
arccos
(1)
arcsin
(1)
arctang
(2)
arctg
(3)
ARM
(2)
arm_sqrt_q15
(2)
assembler
(6)
ASSERT
(1)
atan
(2)
bit
(1)
Bitband
(1)
boot
(3)
bootlloader
(1)
BUTTON
(1)
C
(5)
C#
(1)
CAN
(2)
CC2530
(5)
CMSIS
(4)
command
(1)
Cordic
(1)
Core746I
(1)
CubeMX
(4)
DBGMCU
(2)
debug
(2)
debug.ini
(1)
delegate
(1)
Digital Potentiometers
(1)
DigitalPOT
(1)
Discovery
(1)
DMA
(9)
DMA2D
(1)
DSP
(1)
DSP library
(1)
DWT
(1)
EFM32
(5)
EmWin
(9)
EXTI
(1)
FATFS
(1)
FMC
(2)
FreeRTOS
(2)
gl868-dual cmux
(1)
GPIO
(4)
GUI
(2)
GUIBuilder
(1)
GUIDRV_CompactColor_16
(1)
HAL
(3)
HappyGecko
(1)
Hard Fault
(2)
heap
(1)
I2C
(1)
ID
(1)
ILI9320
(1)
ILI9325
(1)
Initialisation
(1)
InitLTDC
(1)
Instrumentithion
(1)
Interrupt
(4)
ITR
(1)
JTAG
(1)
Keil
(5)
LCDConf
(2)
lock-in
(1)
LTCD
(1)
LTDC
(3)
main
(1)
memory
(1)
MINI_STM32 Revision 01
(1)
nBoot0
(1)
NVIC
(1)
OnePulse
(2)
OSAL
(4)
pack
(1)
phase
(1)
printf
(3)
Pulse
(1)
PWM
(12)
RCC
(2)
RCR
(1)
Register
(1)
RESET
(2)
RS232
(3)
RSS
(1)
RTC
(3)
RTOS-RTX
(1)
RTT
(1)
RTX-RTOS
(1)
SDCard
(1)
SDRAM
(6)
Segger
(2)
SPI
(3)
sqrt
(3)
SSD1298
(1)
SSD1963
(1)
Standart Peripherial Library
(3)
STANDBAY
(1)
startup
(1)
STemWin
(8)
stepper motor
(1)
STlink
(2)
STM32
(17)
STM32429ZI
(1)
STM32Cube
(1)
STM32DBG.IN
(1)
STM32F
(28)
STM32F0
(4)
STM32F1
(13)
STM32F4
(10)
STM32F4 Discovery
(1)
STM32F407ZG
(1)
STM32F429
(2)
STM32F746
(1)
STOP
(1)
string
(1)
struct
(1)
SWD
(1)
SWD JTAG
(1)
Synhronization
(1)
system_stm32f4xx.c
(1)
SystemInit
(1)
SysTick
(1)
task
(4)
telit
(1)
TIM
(27)
typedef
(1)
UART
(1)
USART
(9)
viewer
(2)
WM_PAINT
(1)
Z-stack
(5)
ZigBee
(5)
суббота, 7 декабря 2013 г.
ARM command
STM32 Assembler
Арифметические операции
ADD | ADD R0, R1, Operand2 ADD R0, R1, 12bit const. | Сложение R0 = R1 + R2 | N, Z, C, V | S | |
ADC | ADC R0, R1, R2 ADC R0, R1, 8bit const | Сложение с учётом переноса R0 = R1 + R2 + C | N, Z, C, V | S | |
ADDW | ADD R0, R1, 12bit const. | Сложение с 12bit константой | N, Z, C, V | ||
SUB | SUB R0, R1, R2 SUB R0, R1, 12bit const. | Вычитание R0 = R1 - R2 | N, Z, C, V | S | |
SBC | SBC R0, R1, R2 SBC R0, R1, 8bit const. | Вычитание с учётом переноса R0 = R1 - R2 - C | N, Z, C, V | S | |
SUBW | SUB R0, R1, 12bit const. | Вычитание с 12bit константой | N, Z, C, V | ||
RSB | RSB R0, R1, R2 RSB R0, R1, 8bit const. RSB R0, R1, R2, ASR#23 | Вычитание с противоположным порядком аргументов. R0 = R2 - R1 или R0 = 8bit const - R1 | N, Z, C, V | S |
Умножение. Деление.
MUL MLA MLS | R0 = R1 x R2 R0 = (R1 x R2) + R3 R0 = R3 - (R1 x R2) | Умножение. 32bit результат Умножение и сложение Умножение и вычитание | N, Z | S | |
UMULL UMLAL SMULL SMLAL | RLo, RHi = R2 x R3 RLo, RHi += R2 x R3 RLo, RHi = R2 x R3 RLo, RHi += R2 x R3 | Умножение. 64bit результат Умножение и сложение Умножение со знаком. 64bit результат Умножение со знаком и сложение | |||
UDIV SDIV | R0 = R1 / R2 R0 = R1 / R2 | Деление без знака Деление со знаком |
Доступ к памяти
ADR | ADR R0, label +/- 12bit ADR.W R0, label +/- 32bit | Загрузка адреса метки в регистр. | |||
LDR STR | LDR R0, [R1, #8bit const.]! - прединкремент LDR R0, [R1], #8bit const. - постинкремент LDRB R0, [R1] - без инкремента STRB R0, [R1], #1 | Загрузка/сохранение регистра в режиме адресации со смещением. B=байт, SB=байт со знаком (только загрузка) H=полуслово, SH=полуслово со знаком (только загрузка) | |||
LDR STR | LDR R0, [R1, R2, {LSL#0..3}] STR R0, [R1, R2, {LSL#0..3}] | Смещение задаётся третьим регистром. B, SB, H, SH работают аналогично | |||
LDR LDRD | LDR R0, label LDRD R0, R1, label | Смещение задаётся адресом метки. B, SB, H, SH работают аналогично Невозможно применить к STR/STRD. | |||
LDRT STRT | Непривилегированный доступ. Аналогичны простому LDR/STR. | ||||
LDRD STRD | LDRD R0, R1, [R2, #10bit const.]! - прединкремент LDRD R0, R1, [R2], #10bit const. - постинкремент LDRD R0, R1, [R2] - без инкремента STRD R0, R1, [R2] | Загрузка/сохранение двух регистров в режиме адресации со смещением. Константа должна быть кратна 4. | |||
LDM STM | LDM R0, {R1-R3} LDM R0!, {R1-R3} - постинкремент R0 IA, DB, FD, EA - см. описание | Загрузка/сохранение множества регистров. IA - с увеличением адреса DB - с уменьшением адреса. | |||
PUSH POP | PUSH {R0, R2-R7, R12} POP {R0, R2-R7, R12} | Загрузка/чтение из стека | |||
LDREX STREX | LDREX R1, [R2, #10bit const.] STREX R0, R1, [R2, #10bit const.] | Эксклюзивное чтение/запись регистра. B=байт, H=полуслово. | |||
CLREX | CLREX (без параметров) | Сброс признака эксклюзивного доступа. |
Перемещение и обработка данных
MOV MVN | MOV R0, R1 MOV R0, 16bit const. MVN R0, R1 | Загрузка/перемещение регистров Загрузка 16-бит в мл. полуслово, сброс старшего Перемещение регистра с инверсией | N, Z, C, V | S | |
MOVT | MOVT R0, 16bit const. | Загр. 16bit в старшее полуслово. Младш. остаётся без изменений. | |||
CMP CMN | CMP R0, R1 CMN R0, R1 | Сравнение Сравнение с противоположным знаком | N, Z, C, V | S | |
TST | TST R0, Operand2 | Проверить значение битов по маске | N, Z, C | S | |
TEQ | TEQ R0, Operand2 | Проверить равенство двух величин | N, Z | S | |
REV REV16 REVSH RBIT | REV R0, R1 | Изменение порядка битов или байтов в слове | |||
CLZ | CLZ R0, R1 | Подсчет количества ведущих нулей |
Логические операции
AND ORR EOR BIC ORN | И ИЛИ Исключающее ИЛИ Сброс битов по маске. И-НЕ ИЛИ-НЕ | 0 в маске сбрасывает биты. Второй Operand2 для всех команд 1 в маске устанавливает биты 1 в маске инвертирует биты 1 в маске сбрасывает биты 0 в маске устанавливает биты | N, Z, C | S |
Операции сдвига
ASR LSL LSR ROR RRX | Арифметический сдвиг вправо Логический сдвиг влево Логический сдвиг вправо Циклический сдвиг вправо Сдвиг вправо на 1 позицию через перенос | N, Z, C | S |
Ветвление. Подпрограммы.
B | B label | Переход к метке | |||
BX | BX R0 | Переход по адресу в регистре | |||
BL | BL label | Выполнить подпрограмму label | |||
BLX | BLX R0 | Выполнить подпрограмму по адресу в регистре | |||
BX LR | BX LR | Возврат из подпрограммы | |||
CBZ CBNZ | CBZ R0, label CBNZ R0, label | Переход, если R0 = 0 Переход, если R0 != 0 | |||
TBB TBH | TBB [R0, R1] TBH [R0, R1, LSL #1] | Табличный переход по индексу. Короткий переход. Длиннй переход | |||
IT | IT{x{y{z}}} cond | Блок условно исполняемых инструкций |
Работа с битовыми полями
BFC | BFC R0, #lsb, #width | Сброс поля в ноль | |||
BFI | BFI R0, R1, #lsb, #width | Копирует младшие биты R1 в поле R0 | |||
UBFX | UBFX R0, R1, #lsb, #width | Копирует поле R1 в мл. биты R0 с заполнением нулями | |||
SBFX | SBFX R0, R1, #lsb, #width | Копирует поле R1 в мл. биты R0 с расширением знака | |||
UXTB UXTH | UXTB R0, R1 {, ROR #8,16,24} | Преобразование байта с заполнением нулями Преобразование полуслова | |||
SXTB SXTH | SXTB R0, R1 {, ROR #8,16,24} | Преобразование байта с расширением знака Преобразование полуслова |
Преобразование данных с насыщением
SSAT USAT | SSAT Rd, #n, Rm {, shift #s} USAT Rd, #n, Rm {, shift #s} | Число со знаком в число со знаком, Число со знаком в число без знака | Q |
Управление системой
MRS MSR | MRS R0, PSR MSR PSR, R0 | Чтение/запись специальных регистров. | |||
CPSIE CPSID | Разрешение/запрет прерываний | ||||
WFE | WFE | Ожидать событие | |||
WFI | WFI | Ожидать прерывание | |||
BKPT | Точка останова | ||||
DMB DSB | DMB | Барьер синхронизации доступа к ОЗУ | |||
ISB | ISB | Сброс конвейера | |||
SEV | SEV | Дёрнуть ножкой события для внешних камней | |||
SVC | SVC 8bit const. | Вызов системного сервиса | |||
NOP | NOP |
Суффиксы условного исполнения
EQ | Z = 1 | Равенство | |
NE | Z = 0 | Неравенство | |
CS, HS | C = 1 | Больше или равно, беззнаковое сравнение | |
CC, LO | C = 0 | Меньше, беззнаковое сравнение | |
MI | N = 1 | Отрицательное значение, меньше нуля | |
PL | N = 0 | Положительное значение, больше или равно нулю | |
VS | V = 1 | Переполнение | |
VС | V = 0 | Нет переполнения | |
HI | C = 1 и Z=0 | Больше, беззнаковое сравнение | |
LS | C = 0 или Z=1 | Меньше или равно, беззнаковое сравнение | |
GE | N = V | Больше или равно, знаковое сравнение | |
LT | N != V | Меньше, знаковое сравнение | |
GT | Z = 0 и N = V | Больше, знаковое сравнение | |
LE | Z = 1 и N != V | Меньше или равно, знаковое сравнение | |
AL | 1 | Безусловное исполнение |
Встроенные псевдоинструкции компиллятора
MOV32 | MOV32 R0, 32bit const. (label) | Загрузить слово в регистр. | |
LDR | LDR R0, =label | Загрузить 32bit адрес метки или #число | |
ADRL | ADRL R0, label | Загрузить 32bit адрес метки |
Подписаться на:
Сообщения (Atom)