*注意!! 間違い等かなりあるはずですが気にしないで下さい。
参考文献:三洋電機(株) 三洋半導体ニュース3092A 「LC104C/108C」
参考URL:
http://marcus.mangakai.org/dc/vms/cpu.html作成: 齋藤 竜哉
junk@da.airnet.ne.jp多くの命令はSFR(ACCなど)を演算できます。 オペランドとして使用されるROM、RAM空間はつぎのアドレッシングモードを扱います。
イミディエイトデータ(#i8)
命令コード中に含まれる8ビット定数形式データを直接オペランドとして使用します。
直接アドレッシングデータ(d9)
RAM空間(RAM もしくは SFR)の内容を直接使用します。
間接アドレスレジスタ (@Ri)
RAM空間(RAM もしくは SFR)の指定されたアドレスの内容をアドレスとして利用します。
ビットアドレッシングデータ (b3)
0から7のビットのうち下位3ビットを整数形式のデータとして使用します。 0 を LSB、 7 をMSBとします。
絶対アドレッシングデータ (a12/a16)
ROM空間のロケーションを12ビットもしくは16ビット絶対アドレス形式で指定します。 12ビットアドレス形式の場合、の上位4ビットは影響しません。
このモードはセグメントごとにアクセスできます。両モードともアドレスはビッグエンディアンのバイトオーダーで与えられます。
相対アドレッシングデータ(r8/r16)
命令の指定するアドレスからオフセットされたROM空間を指定します。符号付8ビット、もしくは符号無し16ビットの空間を指定できます。
16ビットオフセットはリトルエンディアンのバイトオーダーで与えられます。
間接アドレスレジスタはPSW レジスタの IRBK0 と IRBK1のビットにより参照されるアドレスが次のようになります。
間接アドレスレジスタバンクIRBK1 | 間接アドレスレジスタバンクIRBK0 | オペランド | 読み込みアドレス | アクセス領域 |
0 | 0 | @R0 | 000 | RAM (000-0FF) |
@R1 | 001 | RAM (000-0FF) | ||
@R2 | 002 | SFR (100-1FF) | ||
@R3 | 003 | SFR (100-1FF) | ||
0 | 1 | @R0 | 004 | RAM (000-0FF) |
@R1 | 005 | RAM (000-0FF) | ||
@R2 | 006 | SFR (100-1FF) | ||
@R3 | 007 | SFR (100-1FF) | ||
1 | 0 | @R0 | 008 | RAM (000-0FF) |
@R1 | 009 | RAM (000-0FF) | ||
@R2 | 00A | SFR (100-1FF) | ||
@R3 | 00B | SFR (100-1FF) | ||
1 | 1 | @R0 | 00C | RAM (000-0FF) |
@R1 | 00D | RAM (000-0FF) | ||
@R2 | 00E | SFR (100-1FF) | ||
@R3 | 00F | SFR (100-1FF) |
ベクタテーブルとは割り込みに関するテーブルです。割り込み条件が発生した時にベクターテーブルにかかれているアドレスが実行されます。
ベクタ | アドレス | 割り込み要因 |
0 | 00 |
Reset |
1 | 03 |
INT0 割り込み (外部割込み) |
2 | 0B |
INT1 割り込み (外部割込み) |
3 | 13 |
INT2 割り込み (外部割込み) or T0L オーバフロー |
4 | 1B |
INT3 割り込み (外部割込み) /ベースタイマ オーバフロー |
5 | 23 |
T0H オーバフロー |
6 | 2B |
T1H or T1L オーバフロー |
7 | 33 |
SIO0 割り込み |
8 | 3B |
SIO1 割り込み< |
9 | 43 |
RFB 割り込み |
10 | 4B |
P3 割り込み |
Low Byte High Byte |
0 | 1 | 2, 3 | 4-7 | 8-F |
0 |
NOP |
BR r8 |
LD d9 |
LD @Ri |
CALL a12 |
1 |
CALLR r16 |
BRF r16 |
ST d9 |
ST @Ri |
|
2 |
CALLF a16 |
JMPF a16 |
MOV #i8,d9 |
MOV #i8,@Ri |
JMP a12 |
3 |
MUL |
BE #i8,r8 |
BE d9,r8 |
BE @Ri,#i8,r8 |
|
4 |
DIV |
BNE #i8,r8 |
BNE d9,r8 |
BNE @Ri,#i8,r8 |
BPC d9,b3,r8 |
5 | Reserve | Reserve |
DBNZ d9,r8 |
DBNZ @Ri,r8 |
|
6 |
PUSH d9 |
INC d9 |
INC @Ri |
BP d9,b3,r8 |
|
7 |
POP d9 |
DEC d9 |
DEC @Ri |
||
8 |
BZ r8 |
ADD #i8 |
ADD d9 |
ADD @Ri |
BN d9,b3,r8 |
9 |
BNZ r8 |
ADDC #i8 |
ADDC d9 |
ADDC @Ri |
|
A |
RET |
SUB #i8 |
SUB d9 |
SUB @Ri |
NOT1 d9,b3 |
B |
RETI |
SUBC #i8 |
SUBC d9 |
SUBC @Ri |
|
C |
ROR |
LDC |
XCH d9 |
XCH @Ri |
CLR1 d9,b3 |
D |
RORC |
OR #i8 |
OR d9 |
OR @Ri |
|
E |
ROL |
AND #i8 |
AND d9 |
AND @Ri |
SET1 d9,b3 |
F |
ROLC |
XOR #i8 |
XOR d9 |
XOR @Ri |
ADD
オペランドをアキュムレータ(ACC)に加算します。 CY,AC,OVビットは演算結果により変化します。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
ADD #i8 |
10000001 i7i6i5i4i3i2i1i0 |
2 | 1 | (ACC)=(ACC)+i#8 | ○ | ○ | ○ |
ADD d9 |
1000001d8 d7d6d5d4d3d2d1d0 |
2 | 1 | (ACC)=(ACC)+(d9) | ○ | ○ | ○ |
ADD @Ri |
100001i1i0 |
1 | 1 | (ACC)=(ACC)+((Ri)) i:0,1,2,3 | ○ | ○ | ○ |
ADDC
オペランドをキャリービット (CY)を含めて アキュムレータ(ACC)に加算します。 CY,AC,OVビットは演算結果により変化します。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
ADDC #i8 |
10010001 i7i6i5i4i3i2i1i0 |
2 | 1 | (ACC)=(ACC)+CY)+i#8 | ○ | ○ | ○ |
ADDC d9 |
1001001d8 d7d6d5d4d3d2d1d0 |
2 | 1 | (ACC)=(ACC)+(CY)+(d9) | ○ | ○ | ○ |
ADDC @Ri |
100101i1i0 |
1 | 1 | (ACC)=(ACC)+(CY)+((Ri)) i:0,1,2,3 | ○ | ○ | ○ |
SUB
オペランドをアキュムレータ(ACC)から減算します。 CY,AC,OVビットは演算結果により変化します。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
SUB #i8 |
10100001 i7i6i5i4i3i2i1i0 |
2 | 1 | (ACC)=(ACC)-i#8 | ○ | ○ | ○ |
SUB d9 |
1010001d8 d7d6d5d4d3d2d1d0 |
2 | 1 | (ACC)=(ACC)-(d9) | ○ | ○ | ○ |
SUB @Ri |
101001i1i0 |
1 | 1 | (ACC)=(ACC)-((Ri)) i:0,1,2,3 | ○ | ○ | ○ |
SUBC
オペランドをキャリービット (CY)を含めて アキュムレータ(ACC)から減算します。 CY,AC,OVビットは演算結果により変化します
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
SUBC #i8 |
10110001 i7i6i5i4i3i2i1i0 |
2 | 1 | (ACC)=(ACC)-(CY)-i#8 | ○ | ○ | ○ |
SUBC d9 |
1011001d8 d7d6d5d4d3d2d1d0 |
2 | 1 | (ACC)=(ACC)-(CY)-(d9) | ○ | ○ | ○ |
SUBC @Ri |
101101i1i0 |
1 | 1 | (ACC)=(ACC)-(CY)-((Ri)) i:0,1,2,3 | ○ | ○ | ○ |
INC
オペランドに1を加算します。PSW の各ビットには影響を与えません。この命令のポートに関するバイト、またはビット単位のアドレッシングではポートラッチが選択されます。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
INC d9 |
0110001d8 d7d6d5d4d3d2d1d0 |
2 | 1 |
(d9)=(d9)+1 |
|||
INC @Ri |
011001i1i0 |
1 | 1 |
((Ri))=((Ri))+1 i:0,1,2,3 |
DEC
オペランドから1を減算します。PSW の各ビットには影響を与えません。この命令のポートに関するバイト、またはビット単位のアドレッシングではポートラッチが選択されます。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
DEC d9 |
0111001d8 d7d6d5d4d3d2d1d0 |
2 | 1 |
(d9)=(d9)-1 |
|||
DEC @Ri |
011101i1i0 |
1 | 1 |
((Ri))=((Ri))-1 i:0,1,2,3 |
MUL
アキュムレータとC レジスタからなる16 ビットの値(ACC:上位,C:下位)とB レジスタの値を掛け算して、24 ビットの演算結果を、B(上位)、ACC(中位)、C(下位)に代入する。CY はクリアされ、OV は結果がオーバーフローするとセットされます。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
MUL |
00110000 |
1 | 7 |
(B),(ACC),(C)=(ACC),(C)×(B) |
○ | ○ |
DIV
アキュムレータとC レジスタからなる16 ビットの値をB レジスタの値で割り、商をACC とC レジスタに、余りをB レジスタに代入する。CY はクリアされ、余りが0 のときにのみOV がセットされます。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
DIV |
01000000 |
1 | 7 |
(C),(ACC)…(B)=(ACC),(C)/(B) |
○ | ○ |
AND
オペランド と アキュムレータ(ACC)の間で論理積(AND)をとります。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC |
OV |
AND #i8 |
11100001 i7i6i5i4i3i2i1i0 |
2 | 1 |
(ACC)=(ACC) AND #i8 |
|||
AND d9 |
1110001d8 d7d6d5d4d3d2d1d0 |
2 | 1 |
(ACC)=(ACC) AND (d9) |
|||
AND @Ri |
111001i1i0 |
1 | 1 |
(ACC)=(ACC) AND ((Ri)) i:0,1,2,3 |
OR
オペランド と アキュムレータ(ACC)の間で論理和(OR)をとります。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
OR #i8 |
11010001 i7i6i5i4i3i2i1i0 |
2 | 1 |
(ACC)=(ACC) OR #i8 |
|||
OR d9 |
1101001d8 d7d6d5d4d3d2d1d0 |
2 | 1 |
(ACC)=(ACC) OR (d9) |
|||
OR @Ri |
110101i1i0 |
1 | 1 |
(ACC)=(ACC) OR((Ri)) i:0,1,2,3 |
XOR
オペランド と アキュムレータ(ACC)の間で排他的論理和(XOR)をとります。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
XOR #i8 |
11110001 i7i6i5i4i3i2i1i0 |
2 | 1 |
(ACC)=(ACC) XOR #i8 |
|||
XOR d9 |
1111001d8 d7d6d5d4d3d2d1d0 |
2 | 1 |
(ACC)=(ACC) XOR (d9) |
|||
XOR @Ri |
111101i1i0 |
1 | 1 |
(ACC)=(ACC) XOR((Ri)) i:0,1,2,3 |
ROL
アキュムレータ(ACC)の内容を左ローテートします。ローテートしてしてシフトアウトしたビットはLSBに戻ります。 PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
ROL |
11100000 |
1 | 1 |
↓ A7 ←A6 ← A5 ← A4 A0 → A1 → A2 → A3 ↑ |
ROLC
アキュムレータ(ACC)の内容をCYビットを含めて左ローテートします。 MSBにはCYビットが入り、ローテートしてシフトアウトしたビットはCYビットに入ります。ACビット と OVビット には影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
ROLC |
11110000 |
1 | 1 |
↓CY ← A7 ← A6 ← A5 ← A4 →A0 → A1 → A2 → A3 →↑ |
○ |
ROR
アキュムレータ(ACC)の内容を右ローテートします。ローテートしてしてシフトアウトしたビットはMSBに戻ります。 PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
ROR |
11000000 |
1 | 1 |
A7→A6→A5→A4↓ ↑A0←A1←A2←A3 |
RORC
アキュムレータ(ACC)の内容を右ローテートします。LSBにはCYビットが入り、ローテートしてシフトアウトしたビットはCYビットに入ります。ACビット と OVビット には影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
RORC |
11010000 |
1 | 1 |
CY → A7 → A6 → A5 → A4↓ ↑ ← A0 ← A1 ← A2 ← A3 |
○ |
LD
オペランドの内容をアキュムレータ(ACC)に読み込みます。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
LD d9 |
0000001d8 d7d6d5d4d3d2d1d0 |
2 | 1 |
(ACC)=(d9) |
|||
LD @Ri |
000001i1i0 |
1 | 1 |
(ACC)=((Ri)) i:0,1,2,3 |
ST
アキュムレータ(ACC) の内容をオペランドで指定されたアドレスにセットします。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
ST d9 |
0001001d8 d7d6d5d4d3d2d1d0 |
2 | 1 |
(d9)=(ACC) |
|||
ST @Ri |
000101i1i0 |
1 | 1 |
((Ri))=(ACC) i:0,1,2,3 |
MOV
オペランド にイミディエートデータ(#i8)をセットします。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
MOV #i8,d9 |
0010001d8 d7d6d5d4d3d2d1d0 i7i6i5i4i3i2i1i0 |
3 | 2 |
(d9)=#i8 |
|||
MOV #i8,@Rj |
001001j1j0 i7i6i5i4i3i2i1i0 |
2 | 1 |
((Ri))=#i8 i:0,1,2,3 |
LDC
アキュムレータ(ACC)にROMからデータを読み込みます。TRR(TRH(上位) と TRL(下位)) で指定した 16 ビットに ACC を加えたアドレスの ROM の内容をACC に読み込みます。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
LDC |
11000001 |
1 | 2 |
(ACC)=((TRR+ACC)) [ROM] |
PUSH
レジスタの内容をスタックへ退避します。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 |
CY |
AC |
OV |
PUSH d9 |
0110000d8 d7d6d5d4d3d2d1d0 |
2 | 2 |
(SP)=(SP)+1,((SP))=(d9) |
POP
スタックからレジスタにデータを復帰します。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
POP d9 |
0111000d8 d7d6d5d4d3d2d1d0 |
2 | 2 |
(d9)=((SP)),(SP)=(SP)-1 |
XCH
オペランドの内容とアキュムレータ(ACC)の内容を入れ替えます。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
XCH d9 |
1100001d8 d7d6d5d4d3d2d1d0 |
2 | 1 |
(d9)←→(ACC) |
|||
XCH @Ri |
110001i1i0 |
1 | 1 |
(d9)←→((Ri)) i:0,1,2,3 |
JMP
12ビット絶対アドレス形式で指定されたアドレスに無条件ジャンプします。上位4ビットはJMP 命令があるアドレスと同じ値が使われます。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
JMP a12 |
001a111a10a9a8 a7a6a5a4a3a2a1a0 |
2 | 2 |
(PC)=(PC)+2,(PC11-00)=a12 |
JMPF
16ビット絶対アドレス形式で指定されたアドレスに無条件ジャンプします。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
JMPF a16 |
00100001 a15a14a13a12a11a10a9a8 a7a6a5a4a3a2a1a0 |
3 | 2 |
(PC)=a16 |
BR
符号付8ビット相対アドレス形式で指定されたアドレスに無条件ジャンプします。BR 命令の次のアドレスから起算して -7f〜+80 の範囲にジャンプできます。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
BR r8 |
00000001 r7r6r5r4r3r2r1r0 |
2 | 2 |
(PC)=(PC)+2,(PC)=(PC)+r8 |
BRF
16ビット相対アドレス形式で指定されたアドレスに無条件ジャンプします。BRF 命令の次のアドレスから起算して 0〜ffff の範囲にジャンプできます。16ビットを超えた分は考慮されないため、BRF命令より前のアドレスにもジャンプできます。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
BRF r16 |
00010001 r7r6r5r4r3r2r1r0 r15r14r13r12r11r10r9r8 |
3 | 4 |
(PC)=(PC)+3,(PC)=(PC)-1+r16 |
BZ
ACC=0の時、符号付8ビット相対アドレス形式で指定されたアドレスにジャンプします。BZ 命令の次のアドレスから起算して -7f〜+80 の範囲にジャンプできます。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
BZ r8 |
10000000 r7r6r5r4r3r2r1r0 |
2 | 2 |
(PC)=(PC)+2,if (ACC)=0 then (PC)=(PC)+r8 |
BNZ
ACC≠0の時、符号付8ビット相対アドレス形式で指定されたアドレスにジャンプします。BNZ 命令の次のアドレスから起算して -7f〜+80 の範囲にジャンプできます。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 |
CY |
AC |
OV |
BNZ r8 |
10010000 r7r6r5r4r3r2r1r0 |
2 | 2 |
(PC)=(PC)+2,if (ACC)≠ 0 then (PC)=(PC)+r8 |
BP
直接アドレス形式(d9)で指定されたビット(b3)が1の時、符号付8ビット相対アドレス形式で指定されたアドレスにジャンプします。BP 命令の次のアドレスから起算して -7f〜+80 の範囲にジャンプできます。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
BP d9,b3,r8 |
011d81b2b1b0 d7d6d5d4d3d2d1d0 r7r6r5r4r3r2r1r0 |
3 | 2 |
(PC)=(PC)+3,if (d9,b3)=1 then (PC)=(PC)+r8 |
直接アドレス形式(d9)で指定されたビット(b3)が1の時、そのビットをクリアしてから符号付8ビット相対アドレス形式で指定されたアドレスにジャンプします。BP 命令の次のアドレスから起算して -7f〜+80 の範囲にジャンプできます。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
BPC d9,b3,r8 |
010d81b2b1b0 d7d6d5d4d3d2d1d0 r7r6r5r4r3r2r1r0 |
3 | 2 |
(PC)=(PC)+3,if (d9,b3)=1 then {(d9,b3)=0,(PC)=(PC)+r8} |
BN
直接アドレス形式(d9)で指定されたビット(b3)が0の時、符号付8ビット相対アドレス形式で指定されたアドレスにジャンプします。BP 命令の次のアドレスから起算して -7f〜+80 の範囲にジャンプできます。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
BN d9,b3,r8 |
100d81b2b1b0 d7d6d5d4d3d2d1d0 r7r6r5r4r3r2r1r0 |
3 | 2 |
(PC)=(PC)+3,if (d9,b3)=0 then (PC)=(PC)+r8 |
DBNZ
オペランドで指定されたアドレスのデータを-1して結果が0の時に符号付8ビット相対アドレス形式で指定されたアドレスにジャンプします。BP 命令の次のアドレスから起算して -7f〜+80 の範囲にジャンプできます。PSW の各ビットには影響を与えません。この命令のポートに関するバイト、またはビット単位のアドレッシングではポートラッチが選択されます。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
DBNZ d9,r8 |
0101001d8 d7d6d5d4d3d2d1d0 r7r6r5r4r3r2r1r0 |
3 | 2 |
(PC)=(PC)+3,(d9)=(d9)-1, if (d9)≠0 then (PC)=(PC)+r8 |
|||
DBNZ @Ri,r8 |
010101i1i0 r7r6r5r4r3r2r1r0 |
2 | 2 |
(PC)=(PC)+3,((Ri))=((Ri))-1 i:0,1,2,3 , if (d9)≠0 then (PC)=(PC)+r8 |
BE
ACC または@R で指定したレジスタとオペランドの内容が一致する場合、符号付8ビット相対アドレス形式で指定されたアドレスにジャンプします。BP 命令の次のアドレスから起算して -7f〜+80 の範囲にジャンプできます。PSW の各ビットは演算結果により変化します。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
BE #i8,r8 |
00110001 i7i6i5i4i3i2i1i0 r7r6r5r4r3r2r1r0 |
3 | 2 |
(PC)=(PC)+3,if (ACC)=#i8 then (PC)=(PC)+r8, if (ACC) < #i8 then CY=1 ELSE CY=0 |
○ | ||
BE d9,r8 |
0011001d8 d7d6d5d4d3d2d1d0 r7r6r5r4r3r2r1r0 |
3 | 2 |
(PC)=(PC)+3,if (ACC)=(d) then (PC)=(PC)+r8, if (ACC) < (d) then CY=1 ELSE CY=0 |
○ | ||
BE @Rj,#i8,r8 |
001101j1j0 i7i6i5i4i3i2i1i0 r7r6r5r4r3r2r1r0 |
3 | 2 |
(PC)=(PC)+3,if ((Rj))=#i8 then (PC)=(PC)+r8, if ((Rj)) < #i8 then CY=1 ELSE CY=0 |
○ |
BNE
ACC または@R で指定したレジスタとオペランドの内容が一致しない場合、符号付8ビット相対アドレス形式で指定されたアドレスにジャンプします。BP 命令の次のアドレスから起算して -7f〜+80 の範囲にジャンプできます。PSW の各ビットは演算結果により変化します。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
BNE #i8,r8 |
01000001 i7i6i5i4i3i2i1i0 r7r6r5r4r3r2r1r0 |
3 | 2 |
(PC)=(PC)+3,if (ACC)≠#i8 then (PC)=(PC)+r8, if (ACC) < #i8 then CY=1 ELSE CY=0 |
○ | ||
BNE d9,r8 |
0100001d8 d7d6d5d4d3d2d1d0 r7r6r5r4r3r2r1r0 |
3 | 2 |
(PC)=(PC)+3,if (ACC) ≠(d) then (PC)=(PC)+r8, if (ACC) < (d) then CY=1 ELSE CY=0 |
○ | ||
BNE @Rj,#i8,r8 |
010001j1j0 i7i6i5i4i3i2i1i0 r7r6r5r4r3r2r1r0 |
3 | 2 |
(PC)=(PC)+3, if ((Rj)) ≠#i8 then (PC)=(PC)+r8, if ((Rj)) < #i8 then CY=1 ELSE CY=0 |
○ |
CALL
サブルーチンコール。指定アドレスは12ビット絶対アドレス形式で指定します。 上位4ビットは無視されます。リターンアドレス (CALL命令の指示されたアドレス)はスタック(SP)に退避されます。下位8ビットが上位8ビットより先に退避します。 PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
CALL a12 |
000a111a10a9a8 a7a6a5a4a3a2a1a0 |
2 | 2 |
(PC)=(PC)+2,(SP)=(SP)+1,((SP))=(PC7-0), (SP)=(SP)+1, ((SP)) =(PC15-8),(PC11-0)=a12 |
CALLF
サブルーチンコール。指定アドレスは16ビット絶対アドレス形式で指定します。 リターンアドレス (CALL命令の指示されたアドレス)はスタック(SP)に退避されます。下位8ビットが上位8ビットより先に退避します。 PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
CALLF a16 |
00100000 a15a14a13a12a11a10a9a8 a7a6a5a4a3a2a1a0 |
3 | 2 |
(PC)=(PC)+3,(SP)=(SP)+1,((SP))=(PC7-0), (SP)=(SP)+1, ((SP)) =(PC15-8),(PC)=a16 |
CALLR
サブルーチンコール。指定アドレスは16ビット相対アドレス形式で指定します。 リターンアドレスは次の命令のアドレスでスタック(SP)に退避されます。下位8ビットが上位8ビットより先に退避します。 PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
CALLR r16 |
00010000 r7r6r5r4r3r2r1r0 r15r14r13r12r11r10r9r8 |
3 | 4 |
(PC)=(PC)+3,(SP)=(SP)+1,((SP))=(PC7-0), (SP)=(SP)+1,((SP))=(PC15-8),(PC)=(PC)-1+r16 |
RET
サブルーチンから戻ります。プログラムカウンタ(PC) はスタック(SP)から復帰します。 上位8ビットが下位8ビットより先に復帰します。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
RET |
10100000 |
1 | 2 |
(PC15-8)=((SP)),(SP)=(SP)-1, (PC7-0)=((SP)),(SP)=(SP)-1 |
RETI
割り込み処理から戻ります。プログラムカウンタ(PC) はスタック(SP)から復帰します。上位8ビットが下位8ビットより先に復帰します。PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
RETI |
10110000 |
1 | 2 |
(PC15-8)=((SP)),(SP)=(SP)-1, (PC7-0)=((SP)),(SP)=(SP)-1 |
CLR1
オペランドで指定されたビットをクリアします。PSW の各ビットには影響を与えません。この命令のポートに関するバイト、またはビット単位のアドレッシングではポートラッチが選択されます。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
CLR1 d9,b3 |
110d81b2b1b0 d7d6d5d4d3d2d1d0 |
2 | 1 |
(d9,b3) = 0 |
SET1
オペランドで指定されたビットをセットします。 PSW の各ビットには影響を与えません。この命令のポートに関するバイト、またはビット単位のアドレッシングではポートラッチが選択されます。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
SET1 d9,b3 |
111d81b2b1b0 d7d6d5d4d3d2d1d0 |
2 | 1 |
(d9,b3) = 1 |
NOT1
オペランドで指定されたビットを反転します。PSW の各ビットには影響を与えません。この命令のポートに関するバイト、またはビット単位のアドレッシングではポートラッチが選択されます。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
NOT1 d9,b3 |
101d81b2b1b0 d7d6d5d4d3d2d1d0 |
2 | 1 |
(d9,b3) = not (d9,b3) |
NOP
なにもしません。PCカウンタのインクリメントのみ行います? PSW の各ビットには影響を与えません。
ニーモニック | 命令コード | バイト | サイクル | 動作 | CY | AC | OV |
NOP |
00000000 |
1 | 1 |