6309命令表
6809 との違い
- レジスタ増加。
- e(8),f(8),w(16),q(32),v(16),md(8)
- 命令 増加。
- レジスタ同士の演算。
16ビット演算。16ビット掛算。割り算。
指定ビット同士の演算。
ブロック転送。
など。
- エミュレーション・モードとネイティブ・モードがある。
- ネイティブモードでは、動作が速くなる命令が多々ある。
- 0割算割込, 未定義命令割込がかかる。
-
- 未定義命令は無く、未定義アドレッシングの挙動に違いがある。
-
レジスタ
a |
b |
e |
f |
|
a 8 ビット・アキュームレータ・レジスタ
b 8 ビット・アキュームレータ・レジスタ
|
← d → |
← w → |
|
e 8 ビット・アキュームレータ・レジスタ. 6309新設.
|
← |
q |
→ |
|
f 8 ビット・アキュームレータ・レジスタ. 6309新設.
|
|
|
d 16 ビット・アキュームレータ・レジスタ。
a,b をくっ付けたもの。 d = a << 8 | b
w 16 ビット・アキュームレータ/インデックス・レジスタ. 6309新設.
e,f をくっ付けたもの。 w = e << 8 | f
q 32 ビット・アキュームレータ・レジスタ. 6309新設.
d,w をくっ付けたもの。 q = d << 16 | w
|
|
x |
|
x 16 ビット・インデックス・レジスタ
|
|
y |
|
y 16 ビット・インデックス・レジスタ
|
|
u |
|
u 16 ビット・インデックス/ユーザスタック・レジスタ
|
|
s |
|
s 16 ビット・インデックス/システムスタック・レジスタ
|
|
pc |
|
pc 16 ビット・プログラム・カウンタ・レジスタ
|
|
v |
|
v 16 ビット・レジスタ. 6309新設. (リセットしても値が消えない)
|
|
cc |
|
cc 8 ビット・コンディション・コード・レジスタ
|
|
md |
|
md 8 ビット・モード&ステータス・レジスタ. 6309新設.
|
|
n |
|
n (8/16) ゼロ・レジスタ. (6309新設).
※実レジスタでなく、レジスタ同士の演算の指定で0として機能する仮想のレジスタ
|
フラグ
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
CCレジスタ |
E |
F |
H |
I |
N |
Z |
V |
C |
bit 0 | c | キャリー・フラグ | 桁上がり,桁下がり |
bit 1 | v | オーバーフロー・フラグ | 符号付き演算での桁溢れ |
bit 2 | z | ゼロ・フラグ | ゼロか(1) 否か(0) |
bit 3 | n | ネガティブ・フラグ | 負か(1) 否か(0) |
bit 4 | i | IRQマスク・フラグ | IRQ割込禁止をするか(1) 否か(0) |
bit 5 | h | ハーフ・キャリー・フラグ | BCD足算用に8bitのadd,adcでbit3からのキャリー(以外の命令では不定) |
bit 6 | f | FIRQマスク・フラグ | FIRQ割込禁止をするか(1) 否か(0) |
bit 7 | e | エントリ・フラグ | 割込ですべてのレジスタを退避したか(1)、PC,CCのみか(0) |
bit 0 | (W) | 0=エミュレート 1=ネイティブ |
bit 1 | (W) | FIRQのレジスタ退避モード. 0:PC,CCのみ 1:すべてのレジスタ |
bit 6 | (R) | 未定義命令時にon |
bit 7 | (R) | 0割算エラー時 on |
アドレッシング
- イミディエイトアドレッシング
- 指定された値そのものを対象とする場合。
例) lda #$20 a = 0x20
ldb #-1 b = -1
※数値のメモリ格納順番は、ビックエンディアン。
- エクステンド・アドレッシング
- 指定された値をアドレスとして、そのメモリの値を対照とする場合。
例) lda $FC00 a = *(char*)0xFC00
lda >$FC00 ※自動でダイレクトページ・アドレッシングに
ならないように強制する場合
- ダイレクト・アドレッシング
- dp レジスタの値をアドレスの上位 8ビットの値として
下位 8ビットのみを指定する場合。
例) lda <$10 a = dp[0x10] ※dpをポインタに見立てて
- インデックス・アドレッシング
- インデックス・レジスタやPC・レジスタと相対値とで表されるアドレス
のメモリを対象とする場合。
さらいに、
- 非インダイレクト・モード
- 直接アドレスが示すメモリ
例) lda $10,x a = x[0x10]
- インダイレクト・モード
- 間接アドレッシング。
メモリの中身をポインタとしてその指しているメモリ
例) lda [$10,x] a = *x[0x10]
があり、さらに、細かくみると、
ゼロ・オフセット | lda ,y | a = *y |
n(5,8,16)ビット・オフセット | lda 4,w | a = w[4] |
レジスタ(a,b,e,f,d,w)オフセット | lda b,x | a = x[b] |
オート(ポスト)インクリメント | lda ,x+ | a = *x++ |
オート(プレ)デクリメント | ldd ,--y | d = *--y |
PCオフセット | lda LBL,pcr | a = *LBL |
のようなものがある。
- インハラント・アドレッシング
- abx,mul等オペランドの無いもの。
ただし、命令表では
レジスタ・アドレッシング (レジスタ同士の演算, pull/push)
リラティブアドレッシング(ブランチ命令)
など"その他"も含めている。
未定義アドレッシングの違い
レジスタ同士の演算において、未定義レジスタ番号を指定した場合、6809 は -1 だったのが 6309 は 0。
(この表ではアセンブラにあわせて nレジスタと表現)
また exg a,x のようなサイズの違うレジスタ同士の演算で、16ビット側レジスタの値は、
6809では下位バイトが対象になるが、
6309では8ビットレジスタが16ビットレジスタペアになったときに対応する位置が対象となる。
exg a,x なら 6309では xの上位バイトが対象となる。
※ 実のところ、サイズ違いの演算は
あまり未定義アドレッシングと意識せずに使用されていたと思われ
(アセンブラで普通に指定できてたと思う)、
オーソドックスに組まれたと思われるソフトが
6309にCPU換装して動かなくなる原因はこのへんだったらしい(?)。
エミュレーション・モードとネイティブ・モードの違い
- エミュレーション・モードでは命令は6809と同じクロック数だが、
ネイティブ・モードでは、クロックアップされる命令がある。
- エミュレーション・モードでは 新設された w レジスタは
割り込みで退避されないが、ネイティブ・モードでは、
割り込みでのレジスタ退避で w も退避されるようになる。
pc,u,y,x,dp,w,d,cc の順。
dp と d の間に入るため、6809エミュレーション時とは大きな非互換となる。
命令
- エンディアンは、ビッグエンディアン
- ニーモニックの頭の + は、6309専用命令の印。
-
メモリは、16ビットレジスタとの演算で無い限り、8ビット幅で扱われる。
(間接アドレッシングでの、ポインタは16ビット値)
- 略記
OP | オペコード
|
---|
〜 | クロック数。()は6309ネイティブ・モード時の値。
|
---|
# | バイト数
|
---|
- オペランド,動作での略記
R | レジスタ. 使えるレジスタは命令ごとによる
|
---|
I,J | イミディエイト値(即値).
|
---|
M | メモリ.
|
---|
IM | メモリかイミディエイト値
|
---|
RGs | push/pullできるレジスタ郡. pc,s/u,y,x,dp,b,a,cc
|
---|
OFS1 | 1バイトのPCリラティブ(相対)値. 基準はその分岐命令の次のアドレス.
|
---|
OFS2 | 2バイトのPCリラティブ(相対)値. 〃
|
---|
|
ニーモニック |
オペランド |
インハラント |
イミディエイト |
ダイレクト |
インデックス |
エクステンド |
フラグ |
動作 |
OP |
~ |
# |
OP |
~ |
# |
OP |
~ |
# |
OP |
~ |
# |
OP |
~ |
# |
EFHINZVC |
(C/Java言語風表現) |
|
lda |
IM |
|
|
|
86 |
2 |
2 |
96 |
4(3) |
2 |
A6 |
4+ |
2+ |
B6 |
5(4) |
3 |
....**0. |
a = IM |
|
ldb |
IM |
|
|
|
C6 |
2 |
2 |
D6 |
4(3) |
2 |
E6 |
4+ |
2+ |
F6 |
5(4) |
3 |
....**0. |
b = IM |
+ |
lde |
IM |
|
|
|
11 |
3 |
3 |
11 |
5(4) |
3 |
11 |
5+ |
3+ |
11 |
6(5) |
4 |
....**0. |
e = IM |
|
|
|
|
|
|
86 |
|
|
96 |
|
|
A6 |
|
|
B6 |
|
|
|
|
+ |
ldf |
IM |
|
|
|
11 |
3 |
3 |
11 |
5(4) |
3 |
11 |
5+ |
3+ |
11 |
6(5) |
4 |
....**0. |
f = IM |
|
|
|
|
|
|
C6 |
|
|
D6 |
|
|
E6 |
|
|
F6 |
|
|
|
|
|
ldd |
IM |
|
|
|
CC |
3 |
3 |
DC |
5(4) |
2 |
EC |
5+ |
2+ |
FC |
6(5) |
3 |
....**0. |
d = IM |
|
ldx |
IM |
|
|
|
8E |
3 |
3 |
9E |
5(4) |
2 |
AE |
5+ |
2+ |
BE |
6(5) |
3 |
....**0. |
x = IM |
|
ldy |
IM |
|
|
|
10 |
4 |
4 |
10 |
6(5) |
3 |
10 |
6+ |
3+ |
10 |
7(6) |
4 |
....**0. |
y = IM |
|
|
|
|
|
|
8E |
|
|
9E |
|
|
AE |
|
|
BE |
|
|
|
|
|
ldu |
IM |
|
|
|
CE |
3 |
3 |
DE |
5(4) |
2 |
EE |
5+ |
2+ |
FE |
6(5) |
3 |
....**0. |
u = IM |
|
lds |
IM |
|
|
|
10 |
4 |
4 |
10 |
6(5) |
3 |
10 |
6+ |
3+ |
10 |
7(6) |
4 |
....**0. |
s = IM |
|
|
|
|
|
|
CE |
|
|
DE |
|
|
EE |
|
|
FE |
|
|
|
|
+ |
ldw |
IM |
|
|
|
10 |
4 |
4 |
10 |
6(5) |
3 |
10 |
6+ |
3+ |
10 |
7(6) |
4 |
....**0. |
w = IM |
|
|
|
|
|
|
86 |
|
|
96 |
|
|
A6 |
|
|
B6 |
|
|
|
|
+ |
ldq |
IM |
|
|
|
CD |
5 |
5 |
10 |
8(7) |
3 |
10 |
8+ |
3+ |
10 |
9(8) |
4 |
....**.. |
q = IM |
|
|
|
|
|
|
|
|
|
DC |
|
|
EC |
|
|
FC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sta |
M |
|
|
|
|
|
|
97 |
4(3) |
2 |
A7 |
4+ |
2+ |
B7 |
5(4) |
3 |
....**0. |
M = a |
|
stb |
M |
|
|
|
|
|
|
D7 |
4(3) |
2 |
E7 |
4+ |
2+ |
F7 |
5(4) |
3 |
....**0. |
M = b |
+ |
ste |
M |
|
|
|
|
|
|
11 |
5(4) |
3 |
11 |
5+ |
3+ |
11 |
6(5) |
4 |
....**0. |
M = e |
|
|
|
|
|
|
|
|
|
97 |
|
|
A7 |
|
|
B7 |
|
|
|
|
+ |
stf |
M |
|
|
|
|
|
|
11 |
5(4) |
3 |
11 |
5+ |
3+ |
11 |
6(5) |
4 |
....**0. |
M = f |
|
|
|
|
|
|
|
|
|
D7 |
|
|
E7 |
|
|
F7 |
|
|
|
|
|
std |
M |
|
|
|
|
|
|
DD |
5(4) |
2 |
ED |
5+ |
2+ |
FD |
6(5) |
3 |
....**0. |
M = d |
|
stx |
M |
|
|
|
|
|
|
9F |
5(4) |
2 |
AF |
5+ |
2+ |
BF |
6(5) |
3 |
....**0. |
M = x |
|
sty |
M |
|
|
|
|
|
|
10 |
6(5) |
3 |
10 |
6+ |
3+ |
10 |
7(6) |
4 |
....**0. |
M = y |
|
|
|
|
|
|
|
|
|
9F |
|
|
AF |
|
|
BF |
|
|
|
|
|
stu |
M |
|
|
|
|
|
|
DF |
5(4) |
2 |
EF |
5+ |
2+ |
FF |
6(5) |
3 |
....**0. |
M = u |
|
sts |
M |
|
|
|
|
|
|
10 |
6(5) |
3 |
10 |
6+ |
3+ |
10 |
7(6) |
4 |
....**0. |
M = s |
|
|
|
|
|
|
|
|
|
DF |
|
|
EF |
|
|
FF |
|
|
|
|
+ |
stw |
M |
|
|
|
|
|
|
10 |
6(5) |
3 |
10 |
6+ |
3+ |
10 |
7(6) |
4 |
....**0. |
M = w |
|
|
|
|
|
|
|
|
|
97 |
|
|
A7 |
|
|
B7 |
|
|
|
|
+ |
stq |
M |
|
|
|
|
|
|
10 |
8(7) |
3 |
10 |
8+ |
3+ |
10 |
9(8) |
4 |
....**.. |
M = q |
|
|
|
|
|
|
|
|
|
DD |
|
|
ED |
|
|
FD |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adda |
IM |
|
|
|
8B |
2 |
2 |
9B |
4(3) |
2 |
AB |
4+ |
2+ |
BB |
5(4) |
3 |
..*.**** |
a += IM |
|
addb |
IM |
|
|
|
CB |
2 |
2 |
DB |
4(3) |
2 |
EB |
4+ |
2+ |
FB |
5(4) |
3 |
..*.**** |
b += IM |
+ |
adde |
IM |
|
|
|
11 |
3 |
3 |
11 |
5(4) |
3 |
11 |
5+ |
3+ |
11 |
6(5) |
4 |
..*.**** |
e += IM |
|
|
|
|
|
|
8B |
|
|
9B |
|
|
AB |
|
|
BB |
|
|
|
|
+ |
addf |
IM |
|
|
|
11 |
3 |
3 |
11 |
5(4) |
3 |
11 |
5+ |
3+ |
11 |
6(5) |
4 |
..*.**** |
f += IM |
|
|
|
|
|
|
CB |
|
|
DB |
|
|
EB |
|
|
FB |
|
|
|
|
|
addd |
IM |
|
|
|
C3 |
4(3) |
3 |
D3 |
6(4) |
2 |
E3 |
6+(5+) |
2+ |
F3 |
7(5) |
3 |
..*.**** |
d += IM |
+ |
addw |
IM |
|
|
|
10 |
5(4) |
4 |
10 |
7(5) |
3 |
10 |
7+(6+) |
3+ |
10 |
8(6) |
4 |
..*.**** |
w += IM |
|
|
|
|
|
|
8B |
|
|
9B |
|
|
AB |
|
|
BB |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adca |
IM |
|
|
|
89 |
2 |
2 |
99 |
4(3) |
2 |
A9 |
4+ |
2+ |
B9 |
5(4) |
3 |
..*.**** |
a += IM + c |
|
adcb |
IM |
|
|
|
C9 |
2 |
2 |
D9 |
4(3) |
2 |
E9 |
4+ |
2+ |
F9 |
5(4) |
3 |
..*.**** |
b += IM + c |
+ |
adcd |
IM |
|
|
|
10 |
5(4) |
4 |
10 |
7(5) |
3 |
10 |
7+(6+) |
3+ |
10 |
8(6) |
4 |
....**** |
d += IM + c |
|
|
|
|
|
|
89 |
|
|
99 |
|
|
A9 |
|
|
B9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
suba |
IM |
|
|
|
80 |
2 |
2 |
90 |
4(3) |
2 |
A0 |
4+ |
2+ |
B0 |
5(4) |
3 |
..?.**** |
a -= IM |
|
subb |
IM |
|
|
|
C0 |
2 |
2 |
D0 |
4(3) |
2 |
E0 |
4+ |
2+ |
F0 |
5(4) |
3 |
..?.**** |
b -= IM |
+ |
sube |
IM |
|
|
|
11 |
3 |
3 |
11 |
5(4) |
3 |
11 |
5+ |
3+ |
11 |
6(5) |
4 |
..?.**** |
e -= IM |
|
|
|
|
|
|
80 |
|
|
90 |
|
|
A0 |
|
|
B0 |
|
|
|
|
+ |
subf |
IM |
|
|
|
11 |
3 |
3 |
11 |
5(4) |
3 |
11 |
5+ |
3+ |
11 |
6(5) |
4 |
..?.**** |
f -= IM |
|
|
|
|
|
|
C0 |
|
|
D0 |
|
|
E0 |
|
|
F0 |
|
|
|
|
|
subd |
IM |
|
|
|
83 |
4(3) |
3 |
93 |
6(4) |
2 |
A3 |
6+(5+) |
2+ |
B3 |
7(5) |
3 |
..?.**** |
d -= IM |
+ |
subw |
IM |
|
|
|
10 |
5(4) |
4 |
10 |
7(5) |
3 |
10 |
7+(6+) |
3+ |
10 |
8(6) |
4 |
..?.**** |
w -= IM |
|
|
|
|
|
|
80 |
|
|
90 |
|
|
A0 |
|
|
B0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sbca |
IM |
|
|
|
82 |
2 |
2 |
92 |
4(3) |
2 |
A2 |
4+ |
2+ |
B2 |
5(4) |
3 |
..?.**** |
a -= IM + c |
|
sbcb |
IM |
|
|
|
C2 |
2 |
2 |
D2 |
4(3) |
2 |
E2 |
4+ |
2+ |
F2 |
5(4) |
3 |
..?.**** |
b -= IM + c |
+ |
sbcd |
IM |
|
|
|
10 |
5(4) |
4 |
10 |
7(5) |
3 |
10 |
7+(6+) |
3+ |
10 |
8(6) |
4 |
....**** |
d -= IM + c |
|
|
|
|
|
|
82 |
|
|
92 |
|
|
A2 |
|
|
B2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cmpa |
IM |
|
|
|
81 |
2 |
2 |
91 |
4(3) |
2 |
A1 |
4+ |
2+ |
B1 |
5(4) |
3 |
..?.**** |
a - IM |
|
cmpb |
IM |
|
|
|
C1 |
2 |
2 |
D1 |
4(3) |
2 |
E1 |
4+ |
2+ |
F1 |
5(4) |
3 |
..?.**** |
b - IM |
+ |
cmpe |
IM |
|
|
|
11 |
3 |
3 |
11 |
5(4) |
3 |
11 |
5+ |
3+ |
11 |
6(5) |
4 |
..?.**** |
e - IM |
|
|
|
|
|
|
81 |
|
|
91 |
|
|
A1 |
|
|
B1 |
|
|
|
|
+ |
cmpf |
IM |
|
|
|
11 |
3 |
3 |
11 |
5(4) |
3 |
11 |
5+ |
3+ |
11 |
6(5) |
4 |
..?.**** |
f - IM |
|
|
|
|
|
|
C1 |
|
|
D1 |
|
|
E1 |
|
|
F1 |
|
|
|
|
|
cmpd |
IM |
|
|
|
10 |
5(4) |
4 |
10 |
7(5) |
3 |
10 |
7+(6+) |
3+ |
10 |
8(6) |
4 |
....**** |
d - IM |
|
|
|
|
|
|
83 |
|
|
93 |
|
|
A3 |
|
|
B3 |
|
|
|
|
|
cmpx |
IM |
|
|
|
8C |
4(3) |
3 |
9C |
6(4) |
2 |
AC |
6+(5+) |
2+ |
BC |
7(5) |
3 |
....**** |
x - IM |
|
cmpy |
IM |
|
|
|
10 |
5(4) |
4 |
10 |
7(5) |
3 |
10 |
7+(6+) |
3+ |
10 |
8(6) |
4 |
....**** |
y - IM |
|
|
|
|
|
|
8C |
|
|
9C |
|
|
AC |
|
|
BC |
|
|
|
|
|
cmpu |
IM |
|
|
|
11 |
5(4) |
4 |
11 |
7(5) |
3 |
11 |
7+(6+) |
3+ |
11 |
8(6) |
4 |
....**** |
u - IM |
|
|
|
|
|
|
83 |
|
|
93 |
|
|
A3 |
|
|
B3 |
|
|
|
|
|
cmps |
IM |
|
|
|
11 |
5(4) |
4 |
11 |
7(5) |
3 |
11 |
7+(6+) |
3+ |
11 |
8(6) |
4 |
....**** |
s - IM |
|
|
|
|
|
|
8C |
|
|
9C |
|
|
AC |
|
|
BC |
|
|
|
|
+ |
cmpw |
IM |
|
|
|
10 |
5(4) |
4 |
10 |
7(5) |
3 |
10 |
7+(6+) |
3+ |
10 |
8(6) |
4 |
....**** |
w - IM |
|
|
|
|
|
|
81 |
|
|
91 |
|
|
A1 |
|
|
B1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mul |
|
3D |
11(10) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
.....*.* |
d = a * b 符号無 |
+ |
muld |
IM |
|
|
|
11 |
28 |
4 |
11 |
30 |
3 |
11 |
30+ |
3+ |
11 |
31 |
4 |
....**.. |
d = d * IM |
|
|
|
|
|
|
8F |
|
|
9F |
(29) |
|
AF |
|
|
BF |
(30) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
divd |
IM |
|
|
|
11 |
25 |
3 |
11 |
27 |
3 |
11 |
27+ |
3+ |
11 |
28 |
4 |
....**** |
b=d/IM,a=d%IM |
|
|
|
|
|
|
8D |
|
|
9D |
(26) |
|
AD |
|
|
BD |
(27) |
|
|
値の有効範囲に制限があるので注意 |
+ |
divq |
IM |
|
|
|
11 |
34 |
4 |
11 |
36 |
3 |
11 |
36+ |
3+ |
11 |
37 |
4 |
....**** |
w=q/IM,d=q%IM |
|
|
|
|
|
|
8E |
|
|
9E |
(35) |
|
AE |
|
|
BE |
(36) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
aim |
I,M |
|
|
|
|
|
|
02 |
6 |
3 |
62 |
7+ |
3+ |
72 |
7 |
4 |
....**0. |
M &= I |
|
anda |
IM |
|
|
|
84 |
2 |
2 |
94 |
4(3) |
2 |
A4 |
4+ |
2+ |
B4 |
5(4) |
3 |
....**0. |
a &= IM |
|
andb |
IM |
|
|
|
C4 |
2 |
2 |
D4 |
4(3) |
2 |
E4 |
4+ |
2+ |
F4 |
5(4) |
3 |
....**0. |
b &= IM |
+ |
andd |
IM |
|
|
|
10 |
5(4) |
4 |
10 |
7(5) |
3 |
10 |
7+(6+) |
3+ |
10 |
8(6) |
4 |
....**0. |
d &= IM |
|
|
|
|
|
|
84 |
|
|
94 |
|
|
A4 |
|
|
B4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
oim |
I,M |
|
|
|
|
|
|
01 |
6 |
3 |
61 |
7+ |
3+ |
71 |
7 |
4 |
....**0. |
M |= I |
|
ora |
IM |
|
|
|
8A |
2 |
2 |
9A |
4(3) |
2 |
AA |
4+ |
2+ |
BA |
5(4) |
3 |
....**0. |
a |= IM |
|
orb |
IM |
|
|
|
CA |
2 |
2 |
DA |
4(3) |
2 |
EA |
4+ |
2+ |
FA |
5(4) |
3 |
....**0. |
b |= IM |
+ |
ord |
IM |
|
|
|
10 |
5(4) |
4 |
10 |
7(5) |
3 |
10 |
7+(6+) |
3+ |
10 |
8(6) |
4 |
....**0. |
d |= IM |
|
|
|
|
|
|
8A |
|
|
9A |
|
|
AA |
|
|
BA |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
eim |
I,M |
|
|
|
|
|
|
05 |
6 |
3 |
65 |
7+ |
3+ |
75 |
7 |
4 |
....**0. |
M ^= I |
|
eora |
IM |
|
|
|
88 |
2 |
2 |
98 |
4(3) |
2 |
A8 |
4+ |
2+ |
B8 |
5(4) |
3 |
....**0. |
a ^= IM |
|
eorb |
IM |
|
|
|
C8 |
2 |
2 |
D8 |
4(3) |
2 |
E8 |
4+ |
2+ |
F8 |
5(4) |
3 |
....**0. |
b ^= IM |
+ |
eord |
IM |
|
|
|
10 |
5(4) |
4 |
10 |
7(5) |
3 |
10 |
7+(6+) |
3+ |
10 |
8(6) |
4 |
....**0. |
d ~= IM |
|
|
|
|
|
|
88 |
|
|
98 |
|
|
A8 |
|
|
B8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
tim |
I,M |
|
|
|
|
|
|
0B |
4 |
3 |
6B |
5+ |
3+ |
7B |
5 |
4 |
....**0. |
M & I |
|
bita |
IM |
|
|
|
85 |
2 |
2 |
95 |
4(3) |
2 |
A5 |
4+ |
2+ |
B5 |
5(4) |
3 |
....**0. |
a & IM |
|
bitb |
IM |
|
|
|
C5 |
2 |
2 |
D5 |
4(3) |
2 |
E5 |
4+ |
2+ |
F5 |
5(4) |
3 |
....**0. |
b & IM |
+ |
bitd |
IM |
|
|
|
10 |
5(4) |
4 |
10 |
7(5) |
3 |
10 |
7+(6+) |
3+ |
10 |
8(6) |
4 |
....**0. |
d & IM |
|
|
|
|
|
|
85 |
|
|
95 |
|
|
A5 |
|
|
B5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
clr |
M |
|
|
|
|
|
|
0F |
6(5) |
2 |
6F |
6+ |
2+ |
7F |
7(6) |
3 |
....0100 |
M = 0, c=0 |
|
clra |
|
4F |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....0100 |
a = 0, c=0 |
|
clrb |
|
5F |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....0100 |
b = 0, c=0 |
+ |
clre |
|
11 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....0100 |
e = 0, c=0 |
|
|
|
4F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
clrf |
|
11 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....0100 |
f = 0, c=0 |
|
|
|
5F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
clrd |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....0100 |
d = 0, c=0 |
|
|
|
4F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
clrw |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....0100 |
w = 0, c=0 |
|
|
|
5F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc |
M |
|
|
|
|
|
|
0C |
6(5) |
2 |
6C |
6+ |
2+ |
7C |
7(6) |
3 |
....***. |
++M |
|
inca |
|
4C |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....***. |
++a |
|
incb |
|
5C |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....***. |
++b |
+ |
ince |
|
11 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....***. |
++e |
|
|
|
4C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
incf |
|
11 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....***. |
++f |
|
|
|
5C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
incd |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....***. |
++d |
|
|
|
4C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
incw |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....***. |
++w |
|
|
|
5C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dec |
M |
|
|
|
|
|
|
0A |
6(5) |
2 |
6A |
6+ |
2+ |
7A |
7(6) |
3 |
....**0. |
--M |
|
deca |
|
4A |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
--a |
|
decb |
|
5A |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
--b |
+ |
dece |
|
11 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
--e |
|
|
|
4A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
decf |
|
11 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
--f |
|
|
|
5A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
decd |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
--d |
|
|
|
4A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
decw |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
--w |
|
|
|
5A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tst |
M |
|
|
|
|
|
|
0D |
6(4) |
2 |
6D |
6+(5+) |
2+ |
7D |
7(5) |
3 |
....**0. |
M - 0 |
|
tsta |
|
4D |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
a - 0 |
|
tstb |
|
5D |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
b - 0 |
+ |
tste |
|
11 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
e - 0 |
|
|
|
4D |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
tstf |
|
11 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
f - 0 |
|
|
|
5D |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
tstd |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
d - 0 |
|
|
|
4D |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
tstw |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
w - 0 |
|
|
|
5D |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
com |
M |
|
|
|
|
|
|
03 |
6(5) |
2 |
63 |
6+ |
2+ |
73 |
7(6) |
3 |
....**01 |
M = ~M, c=1 |
|
coma |
|
43 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**01 |
a = ~a, c=1 |
|
comb |
|
53 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**01 |
b = ~b, c=1 |
+ |
come |
|
11 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**01 |
e = ~e, c=1 |
|
|
|
43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
comf |
|
11 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**01 |
f = ~f, c=1 |
|
|
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
comd |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**01 |
d = ~d, c=1 |
|
|
|
43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
comw |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**01 |
w = ~w, c=1 |
|
|
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
neg |
M |
|
|
|
|
|
|
00 |
6(5) |
2 |
60 |
6+ |
2+ |
70 |
7(6) |
3 |
..?.**** |
M = -M |
|
nega |
|
40 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**** |
a = -a |
|
negb |
|
50 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**** |
b = -b |
+ |
negd |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
d = -d |
|
|
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
asl/lsl |
M |
|
|
|
|
|
|
08 |
6(5) |
2 |
68 |
6+ |
2+ |
78 |
7(6) |
3 |
..?.**** |
M <<= 1 |
|
asla |
|
48 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**** |
a <<= 1 |
|
aslb |
|
58 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**** |
b <<= 1 |
+ |
asld |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**** |
d <<= 1 |
|
|
|
48 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
asr |
M |
|
|
|
|
|
|
07 |
6(5) |
2 |
67 |
6+ |
2+ |
77 |
7(6) |
3 |
..?.**.* |
M >>= 1 符号付 |
|
asra |
|
47 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**.* |
a >>= 1 符号付 |
|
asrb |
|
57 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**.* |
b >>= 1 符号付 |
+ |
asrd |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**.* |
d >>= 1 符号付 |
|
|
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lsr |
M |
|
|
|
|
|
|
04 |
6(5) |
2 |
64 |
6+ |
2+ |
74 |
7(6) |
3 |
....0*.* |
M >>>= 1 符号無 |
|
lsra |
|
44 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....0*.* |
a >>>= 1 符号無 |
|
lsrb |
|
54 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....0*.* |
b >>>= 1 符号無 |
+ |
lsrd |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....0*.* |
d >>>= 1 符号無 |
|
|
|
44 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
lsrw |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....0*.* |
w >>>= 1 符号無 |
|
|
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rol |
M |
|
|
|
|
|
|
09 |
6(5) |
2 |
69 |
6+ |
2+ |
79 |
7(6) |
3 |
....**** |
M = M << 1 | c はみ出した最上位ビ |
|
rola |
|
49 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
a = a << 1 | c ットが新たな cフラ |
|
rolb |
|
59 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
b = b << 1 | c グになる. |
+ |
rold |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
d = d << 1 | c 他cpuでのrcl,rocl |
|
|
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
に相当し, 巡回ロー |
+ |
rolw |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
w = w << 1 | c テートでない。 |
|
|
|
59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ror |
M |
|
|
|
|
|
|
06 |
6(5) |
2 |
66 |
6+ |
2+ |
76 |
7(6) |
3 |
....**.* |
M = (M>>>1) | (c<<7) はみだした |
|
rora |
|
46 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**.* |
a = (a>>>1) | (c<<7) 最下位ビッ |
|
rorb |
|
56 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**.* |
b = (b>>>1) | (c<<7) トが新たな |
+ |
rord |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**.* |
d = (d>>>1) | (c<<15) c フラグに |
|
|
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
なる |
+ |
rorw |
|
10 |
3(2) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
....**.* |
w = (w>>>1) | (c<<15) |
|
|
|
56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
leax |
M |
|
|
|
|
|
|
|
|
|
30 |
4+ |
2+ |
|
|
|
.....*.. |
x = &M leax ,u x = u |
|
leay |
M |
|
|
|
|
|
|
|
|
|
31 |
4+ |
2+ |
|
|
|
.....*.. |
y = &M leax -5,u x = u-5 |
|
leau |
M |
|
|
|
|
|
|
|
|
|
32 |
4+ |
2+ |
|
|
|
........ |
u = &M leax b,u x = u+(sint8_t)b |
|
leas |
M |
|
|
|
|
|
|
|
|
|
33 |
4+ |
2+ |
|
|
|
........ |
s = &M leax d,u x = u+d |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exg |
R0,R1 |
1E |
8(5) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
R1とR0を交換 |
|
tfr |
R0,R1 |
1F |
6(4) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
R1 = R0 R:d,x,y,u,s,pc,w,v |
+ |
addr |
R0,R1 |
10 |
4 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
R1 += R0 a,b,cc,dp,n,n,e,f |
|
|
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
レジスタは基本的に |
+ |
adcr |
R0,R1 |
10 |
4 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
R1 += R0 + c 同じ幅同士のこと。 |
|
|
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
違う幅同士の挙動は |
+ |
subr |
R0,R1 |
10 |
4 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
R1 -= R0 色々あり、また6809 |
|
|
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
との互換性はない。 |
+ |
sbcr |
R0,R1 |
10 |
4 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
R1 -= R0 + c |
|
|
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
andr |
R0,R1 |
10 |
4 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
....**R. |
R1 &= R0 |
|
|
|
34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
orr |
R0,R1 |
10 |
4 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
....**R. |
R1 |= R0 |
|
|
|
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
eorr |
R0,R1 |
10 |
4 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
....**R. |
R1 ^= R0 |
|
|
|
36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
cmpr |
R0,R1 |
10 |
4 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
R1 - R0 |
|
|
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
abx |
|
3A |
3(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
x += (uint8_t)b 符号無加算 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
daa |
|
19 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
BCD加算時のa補正 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sex |
|
1D |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**.. |
d = (sint8_t)b |
+ |
sexw |
|
14 |
4 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**.. |
q = (sint16_t)w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
band |
M:I,R:J |
|
|
|
|
|
|
11 |
7(6) |
4 |
|
|
|
|
|
|
........ |
(RのJビット) &= (MのIビット) |
|
|
|
|
|
|
|
|
|
30 |
|
|
|
|
|
|
|
|
|
R:a,b,cc,n |
+ |
biand |
M:I,R:J |
|
|
|
|
|
|
11 |
7(6) |
4 |
|
|
|
|
|
|
........ |
(RのJビット) &= ~(MのIビット) |
|
|
|
|
|
|
|
|
|
31 |
|
|
|
|
|
|
|
|
|
|
+ |
bor |
M:I,R:J |
|
|
|
|
|
|
11 |
7(6) |
4 |
|
|
|
|
|
|
........ |
(RのJビット) |= (MのIビット) |
|
|
|
|
|
|
|
|
|
32 |
|
|
|
|
|
|
|
|
|
|
+ |
bior |
M:I,R:J |
|
|
|
|
|
|
11 |
7(6) |
4 |
|
|
|
|
|
|
........ |
(RのJビット) |= ~(MのIビット) |
|
|
|
|
|
|
|
|
|
33 |
|
|
|
|
|
|
|
|
|
|
+ |
beor |
M:I,R:J |
|
|
|
|
|
|
11 |
7(6) |
4 |
|
|
|
|
|
|
........ |
(RのJビット) ^= (MのIビット) |
|
|
|
|
|
|
|
|
|
34 |
|
|
|
|
|
|
|
|
|
|
+ |
bieor |
M:I,R:J |
|
|
|
|
|
|
11 |
7(6) |
4 |
|
|
|
|
|
|
........ |
(RのJビット) ^= ~(MのIビット) |
|
|
|
|
|
|
|
|
|
35 |
|
|
|
|
|
|
|
|
|
|
+ |
ldbt |
M:I,R:J |
|
|
|
|
|
|
11 |
7(6) |
4 |
|
|
|
|
|
|
........ |
(RのJビット) = (MのIビット) |
|
|
|
|
|
|
|
|
|
36 |
|
|
|
|
|
|
|
|
|
|
+ |
stbt |
M:I,R:J |
|
|
|
|
|
|
11 |
8(7) |
4 |
|
|
|
|
|
|
....**.. |
(MのIビット) = (RのJビット) |
|
|
|
|
|
|
|
|
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
tfm |
R0+,R1+ |
11 |
6+3n |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
.....1.. |
do{*R1++ = *R0++;} while(--w) |
|
|
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R1,R0:d,x,y,u,s |
+ |
tfm |
R0-,R1- |
11 |
6+3n |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
.....1.. |
do{*R1-- = *R0--;} while(--w) |
|
|
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
tfm |
R0+,R1 |
11 |
6+3n |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
.....1.. |
do{*R1 = *R0++;} while(--w) |
|
|
|
3A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
tfm |
R0,R1+ |
11 |
6+3n |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
.....1.. |
do{*R1++ = *R0;} while(--w) |
|
|
|
3B |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pshs |
RGs |
34 |
5(4) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
*--s = RG をレジスタ分(順固定) |
+ |
pshsw |
|
10 |
6 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
*--s = w RGs:pc,s,y,x,dp,b,a,cc |
|
|
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
puls |
RGs |
35 |
5(4) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
RG = *s++ をレジスタ分(順固定) |
+ |
pulsw |
|
10 |
6 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
w = *s++ |
|
|
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pshu |
RGs |
36 |
5(4) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
*--u = RG をレジスタ分(順固定) |
+ |
pshuw |
|
10 |
6 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
*--u = w RGs:pc,s,y,x,dp,b,a,cc |
|
|
|
3A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pulu |
RGs |
37 |
5(4) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
RG = *u++ をレジスタ分(順固定) |
+ |
puluw |
|
10 |
6 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
w = *u++ |
|
|
|
3B |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
tstmd |
I |
|
|
|
11 |
5 3 |
|
|
|
|
|
|
|
|
|
|
.....*.. |
md & I |
|
|
|
|
|
|
3C |
|
|
|
|
|
|
|
|
|
|
|
|
|
+ |
ldmd |
I |
|
|
|
11 |
5 3 |
|
|
|
|
|
|
|
|
|
|
........ |
md = I |
|
|
|
|
|
|
3D |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
andcc |
I |
|
|
|
1C |
3 |
2 |
|
|
|
|
|
|
|
|
|
-------- |
cc &= I |
|
orcc |
I |
|
|
|
1A |
3 |
2 |
|
|
|
|
|
|
|
|
|
-------- |
cc |= I |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sync |
|
13 |
2(2) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
割込待ち |
|
cwai |
I |
|
|
|
3C |
20(22) |
2 |
|
|
|
|
|
|
|
|
|
1------- |
cc & I して割込待ち |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
swi |
|
3F |
19(21) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
11.1.... |
ソフト割込発生 |
|
swi2 |
|
10 |
19(21) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
1....... |
ソフト割込発生1 |
|
|
|
3F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
swi3 |
|
11 |
19(21) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
1....... |
ソフト割込発生3 |
|
|
|
3F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rti |
|
3B |
6/15 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
???????? |
ccをpullして割込からreturn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rts |
|
39 |
5(4) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
return |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nop |
|
12 |
2(1) |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
なにもしない |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
jsr |
M |
|
|
|
|
|
|
9D |
7(6) |
2 |
AD |
7+(6+) |
2+ |
BD |
8(7) |
3 |
........ |
絶対アドレス&Mでルーチン呼出 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
jmp |
M |
|
|
|
|
|
|
0E |
3(2) |
2 |
6E |
3+ |
2+ |
7E |
4(3) |
3 |
........ |
絶対アドレス&Mで goto |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bsr |
OFS1 |
8D |
7(6) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
1バイト相対アドレスで呼出 |
|
lbsr |
OFS2 |
17 |
9(7) |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
2バイト相対アドレスで呼出 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bra |
OFS1 |
20 |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
1バイト相対アドレスでgoto |
|
lbra |
OFS2 |
16 |
5(4) |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
2バイト相対アドレスでgoto |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
brn |
OFS1 |
21 |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
2バイトnop, (1バイトskip) |
|
lbrn |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
4バイトnop |
|
|
|
21 |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bhi |
OFS1 |
22 |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号無 > 分岐. (c|z) == 0 |
|
lbhi |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
22 |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bls |
OFS1 |
23 |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号無 <= 分岐. (c|z) == 1 |
|
lbls |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
23 |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bcc/bhs |
OFS1 |
24 |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号無 >= 分岐. c == 0 |
|
lbcc |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
24 |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bcs/blo |
OFS1 |
25 |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号無 < 分岐. c == 1 |
|
lbcs |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
25 |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bne |
OFS1 |
26 |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
!= 分岐. z == 0 |
|
lbne |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
26 |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
beq |
OFS1 |
27 |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
== 分岐. z == 1 |
|
lbeq |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
27 |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bvc |
OFS1 |
28 |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
v == 0 分岐. |
|
lbvc |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
28 |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bvs |
OFS1 |
29 |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
v == 1 分岐. |
|
lbls |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
29 |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bpl |
OFS1 |
2A |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
正か零で分岐. n == 0 |
|
lbpl |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
2A |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bmi |
OFS1 |
2B |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
負で分岐. n == 1 |
|
lbmi |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
2B |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bge |
OFS1 |
2C |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号付 >= 分岐. (n ^ v) == 0 |
|
lbge |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
2C |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
blt |
OFS1 |
2D |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号付 < 分岐. (n ^ v) == 1 |
|
lblt |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
2D |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bgt |
OFS1 |
2E |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号付 > 分岐. (z|(n^v)) == 0 |
|
lbgt |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
2E |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ble |
OFS1 |
2F |
3(3) |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号付 >= 分岐. (z|(n^v)) == 1 |
|
lble |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
|
2F |
(5) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
インデックス・アドレッシングのポストバイト
|
アドレッシング |
非インダイレクトモード |
インダイレクトモード |
形式 |
バイト |
〜 |
# |
形式 |
バイト |
〜 |
# |
コンスタント オフセット |
ゼロ・オフセット |
,R |
1RR00100 |
0(0) |
0 |
[,R] |
1RR10100 |
3(3) |
0 |
5ビット・オフセット |
N,R |
0RRnnnnn |
1(1) |
0 |
----- |
-------- |
---- |
- |
8ビット・オフセット |
N,R |
1RR01000 |
1(1) |
1 |
[N,R] |
1RR11000 |
4(4) |
1 |
16ビット・オフセット |
N,R |
1RR01001 |
4(3) |
2 |
[N,R] |
1RR11001 |
7(6) |
2 |
アキュームレータ オフセット |
aレジスタ・オフセット |
a,R |
1RR00110 |
1(1) |
0 |
[a,R] |
1RR10110 |
4(4) |
0 |
bレジスタ・オフセット |
b,R |
1RR00101 |
1(1) |
0 |
[b,R] |
1RR10101 |
4(4) |
0 |
dレジスタ・オフセット |
d,R |
1RR01011 |
4(2) |
0 |
[d,R] |
1RR11011 |
7(5) |
0 |
eレジスタ・オフセット |
e,R |
1RR00111 |
1(1) |
0 |
[e,R] |
1RR10111 |
4(4) |
0 |
fレジスタ・オプセット |
f,R |
1RR01010 |
1(1) |
0 |
[f,R] |
1RR11010 |
4(4) |
0 |
wレジスタ・オフセット |
w,R |
1RR01110 |
1(1) |
0 |
[w,R] |
1RR11110 |
4(4) |
0 |
オート インクリメント デクリメント |
ポスト・インクリメント +1 |
,R+ |
1RR00000 |
2(1) |
0 |
----- |
-------- |
---- |
- |
ポスト・インクリメント +2 |
,R++ |
1RR00001 |
3(2) |
0 |
[,R++] |
1RR10001 |
6(5) |
0 |
プレ・デクリメント -1 |
,-R |
1RR00010 |
2(1) |
0 |
----- |
-------- |
---- |
- |
プレ・デクリメント -2 |
,--R |
1RR00011 |
3(2) |
0 |
[,--R] |
1RR10011 |
6(5) |
0 |
wオフセット |
ゼロ・オフセット |
,w |
10001111 |
0(0) |
0 |
[,w] |
10010000 |
3(3) |
0 |
16ビット・オフセット |
NN,w |
10101111 |
2(2) |
2 |
[NN,w] |
10110000 |
5(5) |
2 |
ポスト・インクリメント +2 |
,w++ |
11001111 |
1(1) |
0 |
[,w++] |
11010000 |
4(4) |
0 |
プレ・デクリメント -2 |
,--w |
11101111 |
1(1) |
0 |
[,--w] |
11110000 |
4(4) |
0 |
PCオフセット |
8ビット・オフセット |
n,pcr |
1xx01100 |
1(1) |
1 |
[N,pcr] |
1xx11100 |
4(4) |
1 |
16ビット・オフセット |
n,pcr |
1xx01101 |
5(3) |
2 |
[N,pcr] |
1xx11101 |
8(6) |
2 |
エクステンド |
16ビット・アドレス |
--- |
-------- |
---- |
- |
[NN] |
10011111 |
5(4) |
2 |
- R : x y u s
RR: 00=x, 01=y, 10=u, 11=s
- 1RR10010 または 1RR11111 で RR=00 でないとき、未定義トラップがかかる。
- クロック数(〜)やバイト数(#) は、命令のモノに追加される増分値。
- オフセット値は、すべて符号付で計算される。
5ビットのときは -16〜15
8ビットのときは -128〜127
16ビットのときは -32768〜32767
当然 a,b,d などのレジスタも同様。
- PCオフセットの指定方法としては
ADR,pcr | 結果はADR. ADRまでの相対値をアセンブラが自動で計算する. |
OFS,pc | 結果は pc+OFS. ユーザに任せる。 |
の2種類がある。
ただし、アセンブラによっては、
ADR,pc
として pc を指定しても pcr と同じ動作をするものもあるので注意。
割り込みベクタ
$FFF2 | SW3 |
| $FFF4 | SW2 |
| $FFF6 | FIRQ |
| $FFF8 | IRQ |
| $FFFA | SW1 |
| $FFFC | NMI |
| $FFFE | RESTART | dp=$00 cc=%x1x1xxxx
|
FIRQ 発生時にスタックに積むレジスタは、
mdレジスタのbit1に設定された値が
0 なら pc,cc のみ
1 なら すべてのレジスタ
となる。
割込発生時に退避されるレジスタは
エミュレートモード時は pc,u,y,x,dp,b,a,cc
ネイティブモード時は pc,u,y,x,dp,w,b,a,cc
となる。
参考文献
6809ハンドブック,
Nifty OS9フォーラム,
雑誌 Oh!FM, I/O など。
|