A/ACC | 8bit | アキュムレータ※1 |
B | 8bit | Bレジスタ※1 |
R0 - R7 | 8bit | 汎用レジスタ R0/R1/R2/R3/R4/R5/R6/R7 最大4バンク定義することができ(内蔵RAMと共有)、バンクを切り替えて使用可 |
PSW | 8bit | プログラムステータスワード※1 |
SP | 8bit | スタックポインタ※2 |
DPTR | 16bit | データポインタ※3 |
PC | 16bit | プログラムカウンタ |
※1 | ビットアクセス可 |
※2 | 内蔵RAM 0x00 - 0xff のポインタ |
※3 | 上位8ビットをDPH、下位8ビットをDPLとしてSFR経由でアクセス可 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
CY | AC | F0 | RS1 | RS0 | OV | - | P |
CY |
| |||||||||||||||
AC |
| |||||||||||||||
F0 | 汎用フラグ※1 | |||||||||||||||
RS1/RS0 |
| |||||||||||||||
OV |
| |||||||||||||||
- | 汎用フラグ※1 | |||||||||||||||
P |
|
※1 | 演算などの影響は受けないため、ユーザーが自由に使用可 |
B | オペランドサイズが8ビット |
W | オペランドサイズが16ビット |
# | 8/16ビットの即値データ |
#11 | 絶対アドレス(上位5bitはPC、下位11bit) |
#16 | 絶対アドレス(0x0000 - 0xffff) |
d | 相対アドレス(-128 - 127) |
Rn | カレントバンクの汎用レジスタR0 - R7 |
@Ri | カレントバンクの汎用レジスタR0, R1で、レジスタが指しているアドレスの内容 |
direct | ダイレクト領域アドレス |
$ | 命令が置かれている先頭アドレス |
[3:0] | 下位4ビット(3 - 0 ビット) |
[7:0] | 下位8ビット(7 - 0 ビット) |
[15:8] | 上位8ビット(15 - 8 ビット) |
- | 変化なし |
* | 命令の実行により変化 |
0 | 0にクリア |
1 | 1をセット |
1ステート = 12クロック |
命令群 | サイズ | ニーモニック | 機能 | CAO | 命令長 | ステート | 補足 |
MOV | B- | MOV A,Rn | A ← Rn | --- | 1 | 1 | |
B- | MOV A,direct | A ← direct | --- | 2 | 1 | ||
B- | MOV A,@Ri | A ← @Ri | --- | 1 | 1 | ||
B- | MOV A,# | A ← # | --- | 2 | 1 | ||
B- | MOV Rn,A | Rn ← A | --- | 1 | 1 | ||
B- | MOV Rn,direct | Rn ← direct | --- | 2 | 2 | ||
B- | MOV Rn,# | Rn ← # | --- | 2 | 1 | ||
B- | MOV direct,A | direct ← A | --- | 2 | 1 | ||
B- | MOV direct,Rn | direct ← Rn | --- | 2 | 2 | ||
B- | MOV direct,direct | direct ← direct | --- | 3 | 2 | ||
B- | MOV direct,@Ri | direct ← @Ri | --- | 2 | 2 | ||
B- | MOV direct,# | direct ← # | --- | 3 | 2 | ||
B- | MOV @Ri,A | @Ri ← A | --- | 1 | 1 | ||
B- | MOV @Ri,direct | @Ri ← direct | --- | 2 | 2 | ||
B- | MOV @Ri,# | @Ri ← # | --- | 2 | 1 | ||
-W | MOV DPTR,# | DPTR ← # | --- | 3 | 2 | ||
MOVC | B- | MOVC A,@A+DPTR | A ← @A+DPTR | --- | 1 | 2 | |
B- | MOVC A,@A+PC | A ← @A+PC | --- | 1 | 2 | ||
MOVX | B- | MOVX A,@DPTR | A ← @DPTR | --- | 1 | 2 | |
B- | MOVX @DPTR,A | @DPTR ← A | --- | 1 | 2 | ||
B- | MOVX A,@Ri | A ← @Ri | --- | 1 | 2 | ||
B- | MOVX @Ri,A | @Ri ← A | --- | 1 | 2 | ||
PUSH | B- | PUSH direct | SP ← SP + 1 : (SP) ← direct | --- | 2 | 2 | |
POP | B- | POP direct | direct ← (SP) : SP ← SP - 1 | --- | 2 | 2 |
命令群 | サイズ | ニーモニック | 機能 | CAO | 命令長 | ステート | 補足 |
XCH | B- | XCH A,Rn | A ⇔ Rn | --- | 1 | 1 | |
B- | XCH A,direct | A ⇔ direct | --- | 2 | 1 | ||
B- | XCH A,@Ri | A ⇔ @Ri | --- | 1 | 1 | ||
XCHD | B- | XCHD A,@Ri | A[3:0] ⇔ @Ri[3:0] | --- | 1 | 1 |
命令群 | サイズ | ニーモニック | 機能 | CAO | 命令長 | ステート | 補足 |
ADD | B- | ADD A,Rn | A ← A + Rn | *** | 1 | 1 | |
B- | ADD A,direct | A ← A + direct | *** | 2 | 1 | ||
B- | ADD A,@Ri | A ← A + @Rn | *** | 1 | 1 | ||
B- | ADD A,# | A ← A + # | *** | 2 | 1 | ||
ADDC | B- | ADDC A,Rn | A ← A + Rn + C | *** | 1 | 1 | |
B- | ADDC A,direct | A ← A + direct + C | *** | 2 | 1 | ||
B- | ADDC A,@Ri | A ← A + @Rn + C | *** | 1 | 1 | ||
B- | ADDC A, # | A ← A + # + C | *** | 2 | 1 | ||
SUBB | B- | SUBB A,Rn | A ← A - Rn - C | *** | 1 | 1 | |
B- | SUBB A,direct | A ← A - direct - C | *** | 2 | 1 | ||
B- | SUBB A,@Ri | A ← A - @Rn - C | *** | 1 | 1 | ||
B- | SUBB A, # | A ← A - # - C | *** | 2 | 1 | ||
INC | B- | INC A | A ← A + 1 | --- | 1 | 1 | |
B- | INC Rn | Rn ← Rn + 1 | --- | 1 | 1 | ||
B- | INC direct | direct ← direct + 1 | --- | 2 | 1 | ||
B- | INC @Ri | @Ri ← @Ri + 1 | --- | 1 | 1 | ||
-W | INC DPTR | DPTR ← DPTR + 1 | --- | 1 | 2 | ||
DEC | B- | DEC A | A ← A - 1 | --- | 1 | 1 | |
B- | DEC Rn | Rn ← Rn - 1 | --- | 1 | 1 | ||
B- | DEC direct | direct ← direct - 1 | --- | 2 | 1 | ||
B- | DEC @Ri | @Ri ← @Ri - 1 | --- | 1 | 1 | ||
MUL | B- | MUL AB | A = [A * B] % 256 B = [A * B] / 256 | 0-* | 1 | 4 | |
DIV | B- | DIV AB | A = A / B B = A % B | 0-* | 1 | 4 | |
DA | B- | DA A | BCD補正 | *-- | 1 | 1 |
命令群 | サイズ | ニーモニック | 機能 | CAO | 命令長 | ステート | 補足 |
ANL | B- | ANL Rn | A ← A and Rn | --- | 1 | 1 | |
B- | ANL A,direct | A ← A and direct | --- | 2 | 1 | ||
B- | ANL A,@Ri | A ← A and @Ri | --- | 1 | 1 | ||
B- | ANL A,# | A ← A and # | --- | 2 | 1 | ||
B- | ANL direct,A | direct ← direct and A | --- | 2 | 1 | ||
B- | ANL direct,# | direct ← direct and # | --- | 3 | 2 | ||
ORL | B- | ORL A,Rn | A ← A or Rn | --- | 1 | 1 | |
B- | ORL A,direct | A ← A or direct | --- | 2 | 1 | ||
B- | ORL A,@Ri | A ← A or @Ri | --- | 1 | 1 | ||
B- | ORL A,# | A ← A or # | --- | 2 | 1 | ||
B- | ORL direct,A | direct ← direct or A | --- | 2 | 1 | ||
B- | ORL direct,# | direct ← direct or # | --- | 3 | 2 | ||
XRL | B- | XRL A,Rn | A ← A xor Rn | --- | 1 | 1 | |
B- | XRL A,direct | A ← A xor direct | --- | 2 | 1 | ||
B- | XRL A,@Ri | A ← A xor @Ri | --- | 1 | 1 | ||
B- | XRL A,# | A ← A xor # | --- | 2 | 1 | ||
B- | XRL direct,A | direct ← direct xor A | --- | 2 | 1 | ||
B- | XRL direct,# | direct ← direct xor # | --- | 3 | 2 | ||
CLR | B- | CLR A | A ← 0 | --- | 1 | 1 | |
CPL | B- | CPL A | A ← A ^ 0xff | --- | 1 | 1 |
命令群 | サイズ | ニーモニック | 機能 | CAO | 命令長 | ステート | 補足 |
JMP | -- | AJMP #11 | PC ← PC[15:11] or #11 | --- | 2 | 2 | |
-- | LJMP #16 | PC ← #16 | --- | 3 | 2 | ||
-- | SJMP rel | PC ← $+2+d | --- | 2 | 2 | ||
-- | JMP @A+DPTR | PC ← @A+DPTR | --- | 1 | 2 | ||
Jxx | -- | JC rel | if CY=1 then PC ← $+2+d | --- | 2 | 2 | |
-- | JNC rel | if CY=0 then PC ← $+2+d | --- | 2 | 2 | ||
-- | JB bit,rel | if bit=1 then PC ← $+3+d | --- | 3 | 2 | ||
-- | JNB bit,rel | if bit=0 then PC ← $+3+d | --- | 3 | 2 | ||
-- | JZ rel | if A=0 then PC ← $+2+d | --- | 2 | 2 | ||
-- | JNZ rel | if A<>0 then PC ← $+2+d | --- | 2 | 2 | ||
-- | JBC bit,rel | if bit=1 then [PC ← $+3+d : bit=0] | --- | 3 | 2 | ||
CJNE | -- | CNJE A,direct,rel | if A<>direct then PC ← $+3+d | *-- | 3 | 2 | |
-- | CNJE A,#,rel | if A<># then PC ← $+3+d | *-- | 3 | 2 | ||
-- | CNJE Rn,#,rel | if Rn<># then PC ← $+3+d | *-- | 3 | 2 | ||
-- | CNJE @Ri,#,rel | if @Ri<># then PC ← $+3+d | *-- | 3 | 2 | ||
DJNE | -- | DNJE Rn,rel | Rn ← Rn - 1 if Rn<>0 then PC ← $+2+d | --- | 2 | 2 | |
-- | DNJE direct,rel | direct ← direct - 1 if direct<>0 then PC ← $+3+d | --- | 3 | 2 | ||
CALL | -- | ACALL #11 | SP ← SP + 1 : (SP) ← $+3[7:0] SP ← SP + 1 : (SP) ← $+3[15:8] PC ← PC[15:11] or #11 | --- | 2 | 2 | |
-- | LCALL #16 | SP ← SP + 1 : (SP) ← $+2[7:0] SP ← SP + 1 : (SP) ← $+2[15:8] PC ← #16 | --- | 3 | 2 | ||
RET | -- | RET | PC[15:8] ← (SP) : SP ← SP - 1 PC[7:0] ← (SP) : SP ← SP - 1 | --- | 1 | 2 | |
-- | RETI | PC[15:8] ← (SP) : SP ← SP - 1 PC[7:0] ← (SP) : SP ← SP - 1 | --- | 1 | 2 |
命令群 | サイズ | ニーモニック | 機能 | CAO | 命令長 | ステート | 補足 |
RL | B- | RL A | --- | 1 | 1 | ||
RLC | B- | RLC A | *-- | 1 | 1 | ||
RR | B- | RR A | --- | 1 | 1 | ||
RRC | B- | RRC A | *-- | 1 | 1 | ||
SWAP | B- | SWAP A | A[7:4] ⇔ A[3:0] | --- | 1 | 1 |
命令群 | サイズ | ニーモニック | 機能 | CAO | 命令長 | ステート | 補足 |
CLR | - | CLR C | CY = 0 | 0-- | 1 | 1 | |
- | CLR bit | bit = 0 | --- | 2 | 1 | ||
SETB | - | SETB C | CY = 1 | 1-- | 1 | 1 | |
- | SETB bit | bit = 1 | --- | 2 | 1 | ||
CPL | - | CPL C | C = not C | *-- | 1 | 1 | |
- | CPL bit | bit = not bit | --- | 2 | 1 | ||
ANL | - | ANL C,bit | C = C and bit | *-- | 2 | 2 | |
- | ANL C,/bit | C = C and [not bit] | *-- | 2 | 2 | ||
ORL | - | ORL C,bit | C = C or bit | *-- | 2 | 2 | |
- | ORL C,/bit | C = C or [not bit] | *-- | 2 | 2 | ||
MOV | - | MOV C,bit | C = bit | *-- | 2 | 1 | |
- | MOV bit,C | bit = C | --- | 2 | 2 |
命令群 | サイズ | ニーモニック | 機能 | CAO | 命令長 | ステート | 補足 |
NOP | - | NOP | 何もしない | --- | 1 | 1 |
実装済み |
未実装 |
未定義命令 |
未定義命令・未定義 |
H/L | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
0 | NOP | AJMP #11 |
LJMP #16 |
RR A |
INC A |
INC direct |
INC @R0 |
INC @R1 |
INC R0 |
INC R1 |
INC R2 |
INC R3 |
INC R4 |
INC R5 |
INC R6 |
INC R7 |
1 | JBC bit,rel |
ACALL #11 |
LCALL #16 |
RRC A |
DEC A |
DEC direct |
DEC @R0 |
DEC @R1 |
DEC R0 |
DEC R1 |
DEC R2 |
DEC R3 |
DEC R4 |
DEC R5 |
DEC R6 |
DEC R7 |
2 | JB bit,rel |
AJMP #11 |
RET | RL A |
ADD A,# |
ADD A,direct |
ADD A,@R0 |
ADD A,@R1 |
ADD A,R0 |
ADD A,R1 |
ADD A,R2 |
ADD A,R3 |
ADD A,R4 |
ADD A,R5 |
ADD A,R6 |
ADD A,R7 |
3 | JNB bit,rel |
ACALL #11 |
RETI | RLC A |
ADDC A,# |
ADDC A,direct |
ADDC A,@R0 |
ADDC A,@R1 |
ADDC A,R0 |
ADDC A,R1 |
ADDC A,R2 |
ADDC A,R3 |
ADDC A,R4 |
ADDC A,R5 |
ADDC A,R6 |
ADDC A,R7 |
4 | JC rel |
AJMP #11 |
ORL direct,A |
ORL direct,# |
ORL A,# |
ORL A,direct |
ORL A,@R0 |
ORL A,@R1 |
ORL A,R0 |
ORL A,R1 |
ORL A,R2 |
ORL A,R3 |
ORL A,R4 |
ORL A,R5 |
ORL A,R6 |
ORL A,R7 |
5 | JNC rel |
ACALL #11 |
ANL direct,A |
ANL direct,# |
ANL A,# |
ANL A,direct |
ANL A,@R0 |
ANL A,@R1 |
ANL A,R0 |
ANL A,R1 |
ANL A,R2 |
ANL A,R3 |
ANL A,R4 |
ANL A,R5 |
ANL A,R6 |
ANL A,R7 |
6 | JZ rel |
AJMP #11 |
XRL direct,A |
XRL direct,# |
XRL A,# |
XRL A,direct |
XRL A,@R0 |
XRL A,@R1 |
XRL A,R0 |
XRL A,R1 |
XRL A,R2 |
XRL A,R3 |
XRL A,R4 |
XRL A,R5 |
XRL A,R6 |
XRL A,R7 |
7 | JNZ rel |
ACALL #11 |
ORL C,bit |
JMP @A+DPTR |
MOV A,# |
MOV direct,# |
MOV @R0,# |
MOV @R1,# |
MOV R0,# |
MOV R1,# |
MOV R2,# |
MOV R3,# |
MOV R4,# |
MOV R5,# |
MOV R6,# |
MOV R7,# |
8 | SJMP rel |
AJMP #11 |
ANL C,bit |
MOVC A,@A+PC |
DIV AB |
MOV direct,direct |
MOV direct,@R0 |
MOV direct,@R1 |
MOV direct,R0 |
MOV direct,R1 |
MOV direct,R2 |
MOV direct,R3 |
MOV direct,R4 |
MOV direct,R5 |
MOV direct,R6 |
MOV direct,R7 |
9 | MOV DPTR,#16 |
ACALL #11 |
MOV bit,C |
MOVC A,@A+DPTR |
SUBB A,# |
SUBB A,direct |
SUBB A,@R0 |
SUBB A,@R1 |
SUBB A,R0 |
SUBB A,R1 |
SUBB A,R2 |
SUBB A,R3 |
SUBB A,R4 |
SUBB A,R5 |
SUBB A,R6 |
SUBB A,R7 |
A | ORL C,/bit |
AJMP #11 |
MOV C,bit |
INC DPTR |
MUL AB |
MOV @R0,direct |
MOV @R1,direct |
MOV R0,direct |
MOV R1,direct |
MOV R2,direct |
MOV R3,direct |
MOV R4,direct |
MOV R5,direct |
MOV R6,direct |
MOV R7,direct |
|
B | ANL C,/bit |
ACALL #11 |
CPL bit |
CPL C |
CJNE A,#,rel |
CJNE A,direct,rel |
CJNE @R0,#,rel |
CJNE @R1,#,rel |
CJNE R0,#,rel |
CJNE R1,#,rel |
CJNE R2,#,rel |
CJNE R3,#,rel |
CJNE R4,#,rel |
CJNE R5,#,rel |
CJNE R6,#,rel |
CJNE R7,#,rel |
C | PUSH direct |
AJMP #11 |
CLR bit |
CLR C |
SWAP A |
XCH A,direct |
XCH A,@R0 |
XCH A,@R1 |
XCH A,R0 |
XCH A,R1 |
XCH A,R2 |
XCH A,R3 |
XCH A,R4 |
XCH A,R5 |
XCH A,R6 |
XCH A,R7 |
D | POP direct |
ACALL #11 |
SETB bit |
SETB C |
DA A |
DJNZ direct,rel |
XCHD A,@R0 |
XCHD A,@R1 |
DJNZ R0,rel |
DJNZ R1,rel |
DJNZ R2,rel |
DJNZ R3,rel |
DJNZ R4,rel |
DJNZ R5,rel |
DJNZ R6,rel |
DJNZ R7,rel |
E | MOVX A,@DPTR |
AJMP #11 |
MOVX A,@R0 |
MOVX A,@R1 |
CLR A |
MOV A,direct |
MOV A,@R0 |
MOV A,@R1 |
MOV A,R0 |
MOV A,R1 |
MOV A,R2 |
MOV A,R3 |
MOV A,R4 |
MOV A,R5 |
MOV A,R6 |
MOV A,R7 |
F | MOVX @DPTR,A |
ACALL #11 |
MOVX @R0,A |
MOVX @R1,A |
CPL A |
MOV direct,A |
MOV @R0,A |
MOV @R1,A |
MOV R0,A |
MOV R1,A |
MOV R2,A |
MOV R3,A |
MOV R4,A |
MOV R5,A |
MOV R6,A |
MOV R7,A |