ATmega128. Набор инструкций

Набор инструкций

 

Мнемокод Операнды Описание Действие Флаги Кол. машинных циклов Арифметические и логические инструкции ADD1 Rd, Rr Сложить два регистра Rd <— Rd + Rr Z,C,N,V,H 1 ADC Rd, Rr Сложить два регистра с переносом Rd <— Rd + Rr + C Z,C,N,V,H 1 ADIW Rdl,K Сложить слово с константой Rdh:Rdl <— Rdh:Rdl + K Z,C,N,V,S 2 SUB Rd, Rr Вычесть два регистра Rd <— Rd - Rr Z,C,N,V,H 1 SUBI Rd, K Вычесть константу из регистра Rd <— Rd - K Z,C,N,V,H 1 SBC Rd, Rr Вычесть два регистра с учетом переноса Rd <— Rd - Rr - C Z,C,N,V,H 1 SBCI Rd, K Вычесть константу из регистра с учетом переноса Rd <— Rd - K - C Z,C,N,V,H 1 SBIW Rdl,K Вычесть константу из слова Rdh:Rdl <— Rdh:Rdl-K Z,C,N,V,S 2 AND Rd, Rr Логическое И между регистрами Rd <— Rd · Rr Z,N,V 1 ANDI Rd, K Логическое И между регистром и константой Rd <— Rd · K Z,N,V 1 OR Rd, Rr Логическое ИЛИ между регистрами Rd <— Rd v Rr Z,N,V 1 ORI Rd, K Логическое ИЛИ между регистром и константой Rd <— Rd v K Z,N,V 1 EOR Rd, Rr Искл. ИЛИ между регистрами Rd <— Rd Е Rr Z,N,V 1 COM Rd Дополнение до 0b11111111 ($FF), инверсия Rd <— $FF - Rd Z,C,N,V 1 NEG Rd Дополнение до 0b00000000 ($00) Rd <— $00 - Rd Z,C,N,V,H 1 SBR Rd, K Установка бит (бита) в регистре Rd <— Rd v K Z,N,V 1 CBR Rd, K Сброс бит (бита) в регистре Rd <— Rd · ($FF - K) Z,N,V 1 INC Rd Инкремент Rd <— Rd + 1 Z,N,V 1 DEC Rd Декремент Rd <— Rd - 1 Z,N,V 1 TST Rd Проверка на ноль или минус Rd <— Rd . Rd Z,N,V 1 CLR Rd Сброс регистра Rd <— Rd Е Rd Z,N,V 1 SER Rd Установка регистра Rd <— $FF Нет 1 MUL Rd, Rr Умножение без знака R1:R0 <— RdxRr Z, C 2 MULS Rd, Rr Умножение со знаком R1:R0 <— RdxRr Z, C 2 MULSU Rd, Rr Умножение знакового с беззнаковым числом R1:R0 <— Rd x Rr Z, C 2 FMUL Rd. Rr Дробное умножение без знака R1:R0 <— (RdxRr) << 1 Z, C 2 FMULS Rd, Rr Дробное умножение со знаком R1:R0 <— (RdxRr) << 1 Z, C 2 FMULSU Rd, Rr Дробное умножение знакового с беззнаковым числом R1:R0 <— (RdxRr) << 1 Z, C 2 Инструкции перехода RJMP k Относительный переход PC <— PC + k +1 Нет 2 IJMP   Косвенный переход по указателю (Z) PC <— Z Нет 2 JMP k Безусловный переход PC <— k Нет 3 RCALL k Относительный вызов процедуры PC <— PC + k + 1 Нет 3 ICALL   Косвенный вызов процедуры по указателю (Z) PC <— Z Нет 3 CALL k Безусловный вызов процедуры PC <— k Нет 4 RET   Возврат из подпрограммы PC <— STACK Нет 4 RETI   Возврат из прерывания PC <— STACK I 4 CPSE Rd,Rr Сравнение и пропуск, если равно if (Rd = Rr) PC <— PC + 2 или 3 Нет 1/2/3 CP Rd,Rr Сравнение Rd-Rr Z, N,V,C,H 1 CPC Rd,Rr Сравнение с учетом переноса Rd - Rr-C Z, N,V,C,H 1 CPI Rd,K Сравнение регистра с константой Rd-K Z, N,V,C,H 1 SBRC Rr,b Пропуск, если бит в регистре сброшен if (Rr(b)=O)PC <— PC + 2 или 3 Нет 1 /2/3 SBRS Rr, b Пропуск, если бит в регистре установлен if (Rr(b)=1)PC <— PC+ 2 или 3 Нет 1/2/3 SBIC P, b Пропуск, если бит в регистре ввода-вывода сброшен if (P(b)=O)PC <— PC + 2 или 3 Нет 1 /2/3 SBIS P, b Пропуск, если бит в регистре ввода-вывода установлен if (P(b)=1)PC <— PC + 2 или 3 Нет 1 /2/3 BRBS s, k Переход, если флаг состояния установлен if (SREG(s) = 1) then PC <— PC+k + 1 Нет 1/2 BRBC s, k Переход, если флаг состояния сброшен if (SREG(s) = 0) then PC <— PC+k + 1 Нет 1 /2 BREQ k Переход, если равно if (Z = 1) then PC <— PC + k + 1 Нет 1 /2 BRNE k Переход, если не равно if (Z = 0) then PC <— PC + k + 1 Нет 1 /2 BRCS k Переход, если перенос установлен if (C = 1)then PC <— PC + k+ 1 Нет 1 /2 BRCC k Переход, если перенос сброшен if (C = 0) then PC <— PC + k + 1 Нет 1 /2 BRSH k Переход, если больше или равно if (C = 0) then PC <— PC + k + 1 Нет 1 /2 BRLO k Переход, если меньше if (C = 1) then PC <— PC + k+ 1 Нет 1 /2 BRMI k Переход, если минус if (N = 1)then PC <— PC + k + 1 Нет 1 /2 BRPL k Переход, если плюс if (N = 0) then PC <— PC + k + 1 Нет 1 /2 BRGE k Переход, если больше или равно с учетом знака if (N e V= 0) then PC <— PC + k + 1 Нет 1 /2 BRLT k Переход, если меньше нуля с учетом знака if (N e V= 1) then PC <— PC + k + 1 Нет 1 /2 BRHS k Переход, если флаг Н установлен if (H = 1)then PC <— PC + k + 1 Нет 1 /2 BRHC k Переход, если флаг Н сброшен if (H = 0) then PC <— PC + k + 1 Нет 1 /2 BRTS k Переход, если флаг Т установлен if (T = 1)then PC <— PC + k +1 Нет 1 /2 BRTC k Переход, если флаг Т сброшен if (T = 0) then PC <— PC + k + 1 Нет 1 /2 BRVS k Переход, если флаг V установлен if (V = 1)then PC <— PC + k+ 1 Нет 1 /2 BRVC k Переход, если флаг V сброшен if (V = 0) then PC <— PC + k + 1 Нет 1 /2 BRIE k Переход, если прерывания разрешены if ( I = 1)then PC <— PC + k + 1 Нет 1 /2 BRID k Переход, если прерывания запрещены if ( I = 0) then PC <— PC + k + 1 Нет 1 /2 Инструкции передачи данных MOV Rd, Rr Запись из регистра в регистр Rd <— Rr Нет 1 MOVW Rd, Rr Перезапись слова между регистрами Rd+1:Rd <— Rr+1:Rr Нет 1 LDI Rd, K Запись константы в регистр Rd <— K Нет 1 LD Rd, X Косвенное считывание из памяти в регистр Rd <— (X) Нет 2 LD Rd, X+ Косвенное считывание из памяти в регистр и инкр. Rd <— (X), X <— X + 1 Нет 2 LD Rd,-X Предварительный декремент, а затем косвенное считывание из памяти в регистр X <— X - 1, Rd <— (X) Нет 2 LD Rd,Y Косвенное считывание из памяти в регистр Rd <— (Y) Нет 2 LD Rd, Y+ Косвенное считывание из памяти в регистр и инкр. Rd <— (Y), Y <— Y + 1 Нет 2 LD Rd,-Y Предварительный декремент, а затем косвенное считывание из памяти в регистр Y <— Y - 1, Rd <— (Y) Нет 2 LDD Rd,Y+q Косвенное считывание из памяти в регистр со смещением Rd <— (Y + q) Нет 2 LD Rd, Z Косвенное считывание из памяти в регистр Rd <— (Z) Нет 2 LD Rd, Z+ Косвенное считывание из памяти в регистр и инкр. Rd <— (Z),Z <— Z+1 Нет 2 LD Rd.-Z Предварительный декремент, а затем косвенное считывание из памяти в регистр Z <— Z - 1, Rd <— (Z) Нет 2 LDD Rd, Z+q Косвенное считывание из памяти в регистр со смещением Rd <— (Z + q) Нет 2 LDS Rd, k Непосредственное чтение из ОЗУ в регистр Rd <— (k) Нет 2 ST X, Rr Косвенная запись (X) <— Rr Нет 2 ST X+, Rr Косвенная запись и послед. инкремент (X) <— Rr, X <— X + 1 Нет 2 ST -X, Rr Предв. декремент и косвенная запись X <— X - 1, (X) <— Rr Нет 2 ST Y, Rr Косвенная запись (Y) <— Rr Нет 2 ST Y+, Rr Косвенная запись и послед. инкремент (Y) <— Rr, Y <— Y + 1 Нет 2 ST -Y, Rr Предв. декремент и косвенная запись Y <— Y - 1, (Y) <— Rr Нет 2 STD Y+q,Rr Косвенная запись со смещением (Y + q) <— Rr Нет 2 ST Z, Rr Косвенная запись (Z) <— Rr Нет 2 ST Z+, Rr Косвенная запись и послед. инкремент (Z) <— Rr, Z <— Z + 1 Нет 2 ST -Z. Rr Предв. декремент и косвенная запись Z <— Z - 1, (Z) <— Rr Нет 2 STD Z+q,Rr Косвенная запись со смещением (Z + q) <— Rr Нет 2 STS k, Rr Непосредственная запись в ОЗУ (k) <— Rr Нет 2 LPM   Чтение из памяти программ R0 <— (Z) Нет 3 LPM Rd, Z Чтение из памяти программ Rd <— (Z) Нет 3 LPM Rd, Z+ Чтение из памяти программ и последующий инкремент Rd <— (Z), Z <— Z+1 Нет 3 ELPM   Расширенное чтение из памяти программ R0 <— (RAMPZ:Z) Нет 3 ELPM Rd, Z Расширенное чтение из памяти программ Rd <— (RAMPZ:Z) Нет 3 ELPM Rd, Z+ Расширенное чтение из памяти программ и последующие инкремент Rd <— (RAMPZ:Z), RAMPZ:Z <— RAMPZ:Z+1 Нет 3 SPM   Запись в память программ (Z) <— R1 :R0 Нет - IN Rd, P Считывание из порта ввода-вывода в регистр Rd <— P Нет 1 OUT P, Rr Запись из регистра в порт ввода-вывода P <— Rd Нет 1 PUSH Rr Помещение содержимого регистра в стек STACK <— Rr Нет 2 POP Rd Извлечение из стека в регистр Rd <— STACK Нет 2 Битовые инструкции и инструкции тестирования бит SBI P,b Установка бита в регистре ввода-вывода l/O(P,b) <— 1 Нет 2 CBI P,b Сброс бита в регистре ввода-вывода l/O(P,b) <— 0 Нет 2 LSL Rd Логический сдвиг влево Rd(n+1) <— Rd(n), Rd(0) <— 0 Z,C,N,V 1 LSR Rd Логический сдвиг вправо Rd(n) <— Rd(n+1), Rd(7) <— 0 Z,C,N,V 1 ROL Rd Вращение влево через перенос Rd(0)<— C,Rd(n+1)<— Rd(n),C <— Rd(7) Z,C,N,V 1 ROR Rd Вращение вправо через перенос Rd(7) <— C,Rd(n)<— Rd(n+1),C <— Rd(0) Z,C,N,V 1 ASR Rd Арифметический сдвиг вправо Rd(n)<— Rd(n+1), n=0..6 Z,C,N,V 1 SWAP Rd Обмен тетрадами Rd(3..0) <— Rd(7..4), Rd(7..4) <— Rd(3..0) Нет 1 BSET s Установка флага регистра SREG SREG(s) <— 1 SREG(s) 1 BCLR s Сброс флага регистра SREG SREG(s) <— 0 SREG(s) 1 BST Rr, b Запись бита регистра в T T <— Rr(b) T 1 BLD Rd, b Чтение из T в бит регистра Rd(b) <— T Нет 1 SEC   Установка переноса C <— 1 C 1 CLC   Сброс переноса C <— 0 C 1 SEN   Установка флага N N <— 1 N 1 CLN   Сброс флага N N <— 0 N 1 SEZ   Установка флага нуля Z Z <— 1 Z 1 CLZ   Сброс флага нуля Z Z <— 0 Z 1 SEI   Общее разрешение прерываний l<— 1 I 1 CLI   Общий запрет прерываний l <— 0 I 1 SES   Установка флага S S <— 1 S 1 CLS   Сброс флага S S <— 0 S 1 SEV   Установка флага V в регистре SREG V <— 1 V 1 CLV   Сброс флага V в регистре SREG V <— 0 V 1 SET   Установка флага T в регистре SREG T <— 1 T 1 CLT   Сброс флага T в регистре SREG T <— 0 T 1 SEH   Установка флага Н в регистре SREG H <— 1 H 1 CLH   Сброс флага Н в регистре SREG H <— 0 H 1 Инструкции управления микроконтроллером NOP   Нет операции   Нет 1 SLEEP   Перевод в режим сна (см. подробное описание режима сна) Нет 1 WDR   Сброс сторожевого таймера (см. подробное описание сторожевого таймера) Нет 1 BREAK   Прерывание Только для встроенной отладки Нет -







Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.