ニーモニック |
オペランド |
意 味 |
動 作 |
フラグ |
クロック |
ADD |
Rd, Rr |
汎用レジスタ間の加算 |
Rd ← Rd + Rr |
HSVNZC |
1 |
ADC | Rd, Rr | キャリーを含めた汎用レジスタ間の加算 | Rd ← Rd + Rr + C | HSVNZC | 1 |
ADIW | Rd, K6 | 即値の語(ワード)長加算 | RdH:RdL ← RdH:RdL + K6 | SVNZC | 2 |
SUB | Rd, Rr | 汎用レジスタ間の減算 | Rd ← Rd - Rr | HSVNZC | 1 |
SUBI | Rd, K | 汎用レジスタから即値の減算 | Rd ← Rd - K | HSVNZC | 1 |
SBIW | Rd, K6 | 即値の語(ワード)長減算 | RdH:RdL ← RdH:RdL - K6 | SVNZC | 2 |
SBC | Rd, Rr | キャリーを含めた汎用レジスタ間の減算 | Rd ← Rd - Rr - C | HSVNZC | 1 |
SBCI | Rd, K | 汎用レジスタからキャリーと即値の減算 | Rd ← Rd - K - C | HSVNZC | 1 |
AND | Rd, Rr | 汎用レジスタ間の論理積(AND) | Rd ← Rd AND Rr | S0NZ | 1 |
ANDI | Rd, K | 汎用レジスタと即値の論理積(AND) | Rd ← Rd AND K | S0NZ | |
OR | Rd, Rr | 汎用レジスタ間の論理和(OR) | Rd ← Rd OR Rr | S0NZ | 1 |
ORI | Rd, K | 汎用レジスタと即値の論理和(OR) | Rd ← Rd OR K | S0NZ | 1 |
EOR | Rd, Rr | 汎用レジスタ間の排他的論理和(Ex-OR) | Rd ← Rd EOR Rr | S0NZ | 1 |
COM | Rd | 1の補数(論理反転) | Rd ← $FF - Rd | S0NZ | 1 |
NEG | Rd | 2の補数 | Rd ← $00 - Rd | HSVNZC | 1 |
SBR | Rd, K | 汎用レジスタの(複数)ビット設定(1) | Rd ← Rd OR K | S0NZ | 1 |
CBR | Rd, K | 汎用レジスタの(複数)ビット解除(0) | Rd ← Rd AND ($FF - K) | S0NZ | 1 |
INC | Rd | 汎用レジスタの増加(+1) | Rd ← Rd + 1 | SVNZC | 1 |
DEC | Rd | 汎用レジスタの減少(-1) | Rd ← Rd - 1 | SVNZC | 1 |
TST | Rd | 汎用レジスタのゼロとマイナス検査 | Rd ← Rd AND Rd | S0NZ | 1 |
CLR | Rd | 汎用レジスタの全0設定(=$00) | Rd ← Rd EOR Rd | , , ,0,0,0,1, |
1 |
SER | Rd | 汎用レジスタの全1設定(=$FF) | Rd ← $FF | |
1 |
MUL | Rd, Rr | 符号なし間の乗算 | R1:R0 ← RdxRr (UxU) | ZC | 2 |
MULS | Rd, Rr | 符号付き間の乗算 | R1:R0 ← RdxRr (SxS) | ZC | 2 |
MULSU | Rd, Rr | 符号付きと符号なしの乗算 | R1:R0 ← RdxRr (SxU) | ZC | 2 |
FMUL | Rd, Rr | 符号なし間の固定小数点乗算 | R1:R0 ← (RdxRr)<<1 (UxU) | ZC | 2 |
FMULS | Rd, Rr | 符号付き間の固定小数点乗算 | R1:R0 ← (RdxRr)<<1 (SxS) | ZC | 2 |
FMULSU | Rd, Rr | 符号付きと符号なしの固定小数点乗算 | R1:R0 ← (RdxRr)<<1 (SxU) | ZC | 2 |
ニーモニック |
オペランド |
意 味 |
動 作 |
フラグ |
クロック |
RJMP |
k | 相対無条件分岐 | PC ← PC + k + 1 | 2 |
|
IJMP | Zレジスタ間接無条件分岐 | PC ← Z | 2 |
||
JMP | k | 絶対無条件分岐 | PC ← k | 3 |
|
RCALL | k | 相対サブルーチン呼び出し | STACK ← PC, PC ← PC + k + 1 | 3 |
|
ICALL | Zレジスタ間接サブルーチン呼び出し | STACK ← PC, PC ← Z | 3 |
||
CALL | k | 絶対サブルーチン呼び出し | STACK ← PC, PC ← k | 4 |
|
RET | サブルーチンからの復帰 | PC ← STACK | 4 |
||
RETI | 割り込みからの復帰 | PC ← STACK | 4 |
||
CPSE | Rd, Rr | 汎用レジスタ間比較、一致でスキップ | Rd=Rrなら, PC ← PC + 2or3 | 1/2,3 | |
CP | Rd, Rr | 汎用レジスタ間の比較 | Rd - Rr | HSVNZC |
1 |
CPC | Rd, Rr | キャリーを含めた汎用レジスタ間の比較 | Rd - Rr - C | HSVNZC | 1 |
CPI | Rd, K | 汎用レジスタと即値の比較 | Rd - K | HSVNZC | 1 |
SBRC | Rr, b | 汎用レジスタのビットが解除(0)でスキップ | Rr(b)=0なら, PC ← PC + 2or3 | 1/2,3 | |
SBRS | Rr, b | 汎用レジスタのビットが設定(1)でスキップ | Rr(b)=1なら, PC ← PC + 2or3 | 1/2,3 | |
SBIC | P, b | I/Oレジスタのビットが解除(0)でスキップ | P(b)=0なら, PC ← PC + 2or3 | 1/2,3 | |
SBIS | P, b | I/Oレジスタのビットが設定(1)でスキップ | P(b)=1なら, PC ← PC + 2or3 | 1/2,3 | |
BRBS | s, k | ステータス フラグが設定(1)で分岐 | SREG(s)=1なら, PC ← PC + K + 1 | 1/2 | |
BRBC | s, k | ステータス フラグが解除(0)で分岐 |
SREG(s)=0なら, PC ← PC + K + 1 | 1/2 | |
BREQ | k | 一致で分岐 | Z=1なら, PC ← PC + K + 1 | 1/2 | |
BRNE | k | 不一致で分岐 | Z=0なら, PC ← PC + K + 1 | 1/2 | |
BRCS | k | キャリー フラグが設定(1)で分岐 | C=1なら, PC ← PC + K + 1 | 1/2 | |
BRCC | k | キャリー フラグが解除(0)で分岐 | C=0なら, PC ← PC + K + 1 | 1/2 | |
BRSH | k | 符号なしの≧で分岐 | C=0なら, PC ← PC + K + 1 | 1/2 | |
BRLO | k | 符号なしの<で分岐 | C=1なら, PC ← PC + K + 1 | 1/2 | |
BRMI | k | -(マイナス)で分岐 | N=1なら, PC ← PC + K + 1 | 1/2 | |
BRPL | k | +(プラス)で分岐 | N=0なら, PC ← PC + K + 1 | 1/2 | |
BRGE | k | 符号付きの≧で分岐 | (N EOR V)=0なら, PC ← PC + K + 1 | 1/2 | |
BRLT | k | 符号付きの<で分岐 | (N EOR V)=1なら, PC ← PC + K + 1 | 1/2 | |
BRHS | k | ハーフキャリー フラグが設定(1)で分岐 | H=1なら, PC ← PC + K + 1 | 1/2 | |
BRHC | k | ハーフキャリー フラグが解除(0)で分岐 | H=0なら, PC ← PC + K + 1 | 1/2 | |
BRTS | k | 一時フラグが設定(1)で分岐 | T=1なら, PC ← PC + K + 1 | 1/2 | |
BRTC | k | 一時フラグが解除(0)で分岐 | T=0なら, PC ← PC + K + 1 | 1/2 | |
BRVS | k | 2の補数溢れフラグが設定(1)で分岐 | V=1なら, PC ← PC + K + 1 | 1/2 | |
BRVC | k | 2の補数溢れフラグが解除(0)で分岐 | V=0なら, PC ← PC + K + 1 | 1/2 | |
BRIE | k | 割り込み許可で分岐 | I=1なら, PC ← PC + K + 1 | 1/2 | |
BRID | k | 割り込み禁止で分岐 | I=0なら, 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 | Xレジスタ間接での取得 | Rd ← (X) | 2 |
|
LD | Rd, X+ | 事後増加付きXレジスタ間接での取得 | Rd ← (X), X ← X + 1 | 2 |
|
LD | Rd, -X | 事前減少付きXレジスタ間接での取得 | X ← X - 1, Rd ← (X) | 2 |
|
LD | Rd, Y | Yレジスタ間接での取得 | Rd ← (Y) | 2 |
|
LD | Rd, Y+ | 事後増加付きYレジスタ間接での取得 | Rd ← (Y), Y ← Y + 1 | 2 |
|
LD | Rd, -Y | 事前減少付きYレジスタ間接での取得 | Y ← Y - 1, Rd ← (Y) | 2 |
|
LDD | Rd, Y+q | 変位付きYレジスタ間接での取得 | Rd ← (Y + q) | 2 |
|
LD | Rd, Z | Zレジスタ間接での取得 | Rd ← (Z) | 2 |
|
LD | Rd, Z+ | 事後増加付きZレジスタ間接での取得 | Rd ← (Z), Z ← Z + 1 | 2 |
|
LD | Rd, -Z | 事前減少付きZレジスタ間接での取得 | Z ← Z - 1, Rd ← (Z) | 2 |
|
LDD | Rd, Z+q | 変位付きZレジスタ間接での取得 | Rd ← (Z + q) | 2 |
|
LDS | Rd, k | データ空間(SRAM)から直接取得 | Rd ← (k) | 2 |
|
ST | X, Rr | Xレジスタ間接での設定 | (X) ← Rr | 2 |
|
ST | X+, Rr | 事後増加付きXレジスタ間接での設定 | (X) ← Rr, X ← X + 1 | 2 |
|
ST | -X, Rr | 事前減少付きXレジスタ間接での設定 | X ← X - 1, (X) ← Rr | 2 |
|
ST | Y, Rr | Yレジスタ間接での設定 | (Y) ← Rr | 2 |
|
ST | Y+, Rr | 事後増加付きYレジスタ間接での設定 | (Y) ← Rr, Y ← Y + 1 | 2 |
|
ST | -Y, Rr | 事前減少付きYレジスタ間接での設定 | Y ← Y - 1, (Y) ← Rr | 2 |
|
STD | Y+q, Rr | 変位付きYレジスタ間接での設定 | (Y + q) ← Rr | 2 |
|
ST | Z, Rr | Zレジスタ間接での設定 | (Z) ← Rr | 2 |
|
ST | Z+, Rr | 事後増加付きZレジスタ間接での設定 | (Z) ← Rr, Z ← Z + 1 | 2 |
|
ST | -Z, Rr | 事前減少付きZレジスタ間接での設定 | Z ← Z - 1, (Z) ← Rr | 2 |
|
STD | Z+q, Rr | 変位付きZレジスタ間接での設定 | (Z + q) ← Rr | 2 |
|
STS | k, Rr | データ空間(SRAM)へ直接設定 | (k) ← Rr | 2 |
|
LPM | プログラム領域からZレジスタ間接での取得 | R0 ← (Z) | 3 |
||
LPM | Rd, Z | 同上 (任意のレジスタへ) | Rd ← (Z) | 3 |
|
LPM | Rd, Z+ | 同上 (事後増加付き) | Rd ← (Z), Z ← Z + 1 | 3 |
|
SPM | プログラム領域へZ レジスタ間接での設定 | (Z) ← R1:R0 | - |
||
IN | Rd, P | I/Oレジスタからの入力 | Rd ← P | 1 |
|
OUT | P, Rr | I/Oレジスタへの出力 | P ← Rr | 1 |
|
PUSH | Rr | 汎用レジスタをスタックへ保存 | STACK ← Rr | 2 |
|
POP | Rd | スタックから汎用レジスタへ復帰 | Rd ← STACK | 2 |
ニーモニック |
オペランド |
意 味 |
動 作 |
フラグ |
クロック |
SBI | P, b | I/Oレジスタのビット設定(1) | I/O(P,b) ← 1 | 2 |
|
CBI | P, b | I/Oレジスタのビット解除(0) | I/O(P,b) ← 0 | 2 |
|
LSL | Rd | 論理的左シフト |
Rd(n+1) ← Rd(n), Rd(0) ← 0 | 1 |
|
LSR | Rd | 論理的右シフト | Rd(n) ← Rd(n+1), Rd(7) ← 0 | 1 |
|
ROL | Rd | キャリーを含めた左回転 | Rd(0) ← C, Rd(n+1) ← Rd(n), C ← Rd(7) | 1 |
|
ROR | Rd | キャリーを含めた右回転 | Rd(7) ← C, Rd(n) ← Rd(n+1), C ← Rd(0) | 1 |
|
ASR | Rd | 算術的右シフト | Rd(n) ← Rd(n+1), n=0〜6 | 1 |
|
SWAP | Rd | ニブル(4ビット)上位/下位交換 | Rd(7〜4) ⇔ Rd(3〜0) | 1 |
|
BSET | s | ステータス レジスタのビット設定(1) | SREG(s) ← 1 | 1 |
|
BCLR | s | ステータス レジスタのビット解除(0) | SREG(s) ← 0 | 1 |
|
BST | Rr, b | 汎用レジスタのビットを一時フラグへ移動 | T ← Rr(b) | 1 |
|
BLD | Rd, b | 一時フラグを汎用レジスタのビットへ移動 | Rd(b) ← T | 1 |
|
SEC | キャリー フラグを設定(1) | C ← 1 | 1 |
||
CLC | キャリー フラグを解除(0) | C ← 0 | 1 |
||
SEN | 負フラグを設定(1) | N ← 1 | 1 |
||
CLN | 負フラグを解除(0) | N ← 0 | 1 |
||
SEZ | ゼロ フラグを設定(1) | Z ← 1 | 1 |
||
CLZ | ゼロ フラグを解除(0) | Z ← 0 | 1 |
||
SEI | 全割り込み許可 | I ← 1 | 1 |
||
CLI | 全割り込み禁止 | I ← 0 | 1 |
||
SES | 符号フラグを設定(1) | S ← 1 | 1 |
||
CLS | 符号フラグを解除(0) | S ← 0 | 1 |
||
SEV | 2の補数溢れフラグを設定(1) | V ← 1 | 1 |
||
CLV | 2の補数溢れフラグを解除(0) | V ← 0 | 1 |
||
SET | 一時フラグを設定(1) | T ← 1 | 1 |
||
CLT | 一時フラグを解除(0) | T ← 0 | 1 |
||
SEH | ハーフキャリー フラグを設定(1) | H ← 1 | 1 |
||
CLH | ハーフキャリー フラグを解除(0) | H ← 0 | 1 |
ニーモニック |
オペランド |
意 味 |
動 作 |
フラグ |
クロック |
NOP | 無操作 | ||||
SLEEP | 休止形態開始 | ||||
WDR | ウォッチドッグ タイマ リセット | ||||
BREAK | 一時停止 | 内蔵デバッグWIRE機能専用 |