| 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 |