6809 命令表
レジスタ
← d → |
|
d 16 ビット・アキュームレータ・レジスタ。a,b をくっ付けたもの。d = a << 8 | b
|
a | b |
|
a 8 ビット・アキュームレータ・レジスタ
b 8 ビット・アキュームレータ・レジスタ
|
x |
|
x 16 ビット・インデックス・レジスタ
|
y |
|
y 16 ビット・インデックス・レジスタ
|
u |
|
u 16 ビット・インデックス/ユーザスタック・レジスタ
|
s |
|
s 16 ビット・インデックス/システムスタック・レジスタ
|
pc |
|
pc 16 ビット・プログラム・カウンタ・レジスタ
|
| cc |
|
cc 8 ビット・コンディション・コード・レジスタ
|
フラグ
|
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) |
アドレッシング
- イミディエイトアドレッシング
- 指定された値そのものを対象とする場合。
例) 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,d)オフセット | lda b,x | a = x[b] |
オート(ポスト)インクリメント | lda ,x+ | a = *x++ |
オート(プレ)デクリメント | ldd ,--y | d = *--y |
PCオフセット | lda LBL,pcr | a = *LBL |
のようなものがある。
- インハラント・アドレッシング
- abx,mul等オペランドの無いもの。
ただし、命令表では
レジスタ・アドレッシング (レジスタ同士の演算, pull/push)
リラティブアドレッシング(ブランチ命令)
など"その他"も含めている。
命令
- エンディアンは、ビッグエンディアン
-
メモリは、16ビットレジスタとの演算で無い限り、8ビット幅で扱われる。
(間接アドレッシングでの、ポインタは16ビット値)
- 略記
- オペランド,動作での略記
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 |
2 |
A6 |
4+ |
2+ |
B6 |
5 |
3 |
....**0. |
a = IM |
ldb |
IM |
|
|
|
C6 |
2 |
2 |
D6 |
4 |
2 |
E6 |
4+ |
2+ |
F6 |
5 |
3 |
....**0. |
b = IM |
ldd |
IM |
|
|
|
CC |
3 |
3 |
DC |
5 |
2 |
EC |
5+ |
2+ |
FC |
6 |
3 |
....**0. |
d = IM |
ldx |
IM |
|
|
|
8E |
3 |
3 |
9E |
5 |
2 |
AE |
5+ |
2+ |
BE |
6 |
3 |
....**0. |
x = IM |
ldy |
IM |
|
|
|
10 |
4 |
4 |
10 |
6 |
3 |
10 |
6+ |
3+ |
10 |
7 |
4 |
....**0. |
y = IM |
|
|
|
|
|
8E |
|
|
9E |
|
|
AE |
|
|
BE |
|
|
|
|
ldu |
IM |
|
|
|
CE |
3 |
3 |
DE |
5 |
2 |
EE |
5+ |
2+ |
FE |
6 |
3 |
....**0. |
u = IM |
lds |
IM |
|
|
|
10 |
4 |
4 |
10 |
6 |
3 |
10 |
6+ |
3+ |
10 |
7 |
4 |
....**0. |
s = IM |
|
|
|
|
|
CE |
|
|
DE |
|
|
EE |
|
|
FE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sta |
M |
|
|
|
|
|
|
97 |
4 |
2 |
A7 |
4+ |
2+ |
B7 |
5 |
3 |
....**0. |
M = a |
stb |
M |
|
|
|
|
|
|
D7 |
4 |
2 |
E7 |
4+ |
2+ |
F7 |
5 |
3 |
....**0. |
M = b |
std |
M |
|
|
|
|
|
|
DD |
5 |
2 |
ED |
5+ |
2+ |
FD |
6 |
3 |
....**0. |
M = d |
stx |
M |
|
|
|
|
|
|
9F |
5 |
2 |
AF |
5+ |
2+ |
BF |
6 |
3 |
....**0. |
M = x |
sty |
M |
|
|
|
|
|
|
10 |
6 |
3 |
10 |
6+ |
3+ |
10 |
7 |
4 |
....**0. |
M = y |
|
|
|
|
|
|
|
|
9F |
|
|
AF |
|
|
BF |
|
|
|
|
stu |
M |
|
|
|
|
|
|
DF |
5 |
2 |
EF |
5+ |
2+ |
FF |
6 |
3 |
....**0. |
M = u |
sts |
M |
|
|
|
|
|
|
10 |
6 |
3 |
10 |
6+ |
3+ |
10 |
7 |
4 |
....**0. |
M = s |
|
|
|
|
|
|
|
|
DF |
|
|
EF |
|
|
FF |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adda |
IM |
|
|
|
8B |
2 |
2 |
9B |
4 |
2 |
AB |
4+ |
2+ |
BB |
5 |
3 |
..*.**** |
a += IM |
addb |
IM |
|
|
|
CB |
2 |
2 |
DB |
4 |
2 |
EB |
4+ |
2+ |
FB |
5 |
3 |
..*.**** |
b += IM |
addd |
IM |
|
|
|
C3 |
4 |
3 |
D3 |
6 |
2 |
E3 |
6+ |
2+ |
F3 |
7 |
3 |
..*.**** |
d += IM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adca |
IM |
|
|
|
89 |
2 |
2 |
99 |
4 |
2 |
A9 |
4+ |
2+ |
B9 |
5 |
3 |
..*.**** |
a += IM + c |
adcb |
IM |
|
|
|
C9 |
2 |
2 |
D9 |
4 |
2 |
E9 |
4+ |
2+ |
F9 |
5 |
3 |
..*.**** |
b += IM + c |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
suba |
IM |
|
|
|
80 |
2 |
2 |
90 |
4 |
2 |
A0 |
4+ |
2+ |
B0 |
5 |
3 |
..?.**** |
a -= IM |
subb |
IM |
|
|
|
C0 |
2 |
2 |
D0 |
4 |
2 |
E0 |
4+ |
2+ |
F0 |
5 |
3 |
..?.**** |
b -= IM |
subd |
IM |
|
|
|
83 |
4 |
3 |
93 |
6 |
2 |
A3 |
6+ |
2+ |
B3 |
7 |
3 |
..?.**** |
d -= IM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sbca |
IM |
|
|
|
82 |
2 |
2 |
92 |
4 |
2 |
A2 |
4+ |
2+ |
B2 |
5 |
3 |
..?.**** |
a -= IM + c |
sbcb |
IM |
|
|
|
C2 |
2 |
2 |
D2 |
4 |
2 |
E2 |
4+ |
2+ |
F2 |
5 |
3 |
..?.**** |
b -= IM + c |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cmpa |
IM |
|
|
|
81 |
2 |
2 |
91 |
4 |
2 |
A1 |
4+ |
2+ |
B1 |
5 |
3 |
..?.**** |
a - IM |
cmpb |
IM |
|
|
|
C1 |
2 |
2 |
D1 |
4 |
2 |
E1 |
4+ |
2+ |
F1 |
5 |
3 |
..?.**** |
b - IM |
cmpd |
IM |
|
|
|
10 |
5 |
4 |
10 |
7 |
3 |
10 |
7+ |
3+ |
10 |
8 |
4 |
....**** |
d - IM |
|
|
|
|
|
83 |
|
|
93 |
|
|
A3 |
|
|
B3 |
|
|
|
|
cmpx |
IM |
|
|
|
8C |
4 |
3 |
9C |
6 |
2 |
AC |
6+ |
2+ |
BC |
7 |
3 |
....**** |
x - IM |
cmpy |
IM |
|
|
|
10 |
5 |
4 |
10 |
7 |
3 |
10 |
7+ |
3+ |
10 |
8 |
4 |
....**** |
y - IM |
|
|
|
|
|
8C |
|
|
9C |
|
|
AC |
|
|
BC |
|
|
|
|
cmpu |
IM |
|
|
|
11 |
5 |
4 |
11 |
7 |
3 |
11 |
7+ |
3+ |
11 |
8 |
4 |
....**** |
u - IM |
|
|
|
|
|
83 |
|
|
93 |
|
|
A3 |
|
|
B3 |
|
|
|
|
cmps |
IM |
|
|
|
11 |
5 |
4 |
11 |
7 |
3 |
11 |
7+ |
3+ |
11 |
8 |
4 |
....**** |
s - IM |
|
|
|
|
|
8C |
|
|
9C |
|
|
AC |
|
|
BC |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mul |
|
3D |
11 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
.....*.* |
d = a * b 符号無 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
anda |
IM |
|
|
|
84 |
2 |
2 |
94 |
4 |
2 |
A4 |
4+ |
2+ |
B4 |
5 |
3 |
....**0. |
a &= IM |
andb |
IM |
|
|
|
C4 |
2 |
2 |
D4 |
4 |
2 |
E4 |
4+ |
2+ |
F4 |
5 |
3 |
....**0. |
b &= IM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ora |
IM |
|
|
|
8A |
2 |
2 |
9A |
4 |
2 |
AA |
4+ |
2+ |
BA |
5 |
3 |
....**0. |
a |= IM |
orb |
IM |
|
|
|
CA |
2 |
2 |
DA |
4 |
2 |
EA |
4+ |
2+ |
FA |
5 |
3 |
....**0. |
b |= IM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
eora |
IM |
|
|
|
88 |
2 |
2 |
98 |
4 |
2 |
A8 |
4+ |
2+ |
B8 |
5 |
3 |
....**0. |
a ^= IM |
eorb |
IM |
|
|
|
C8 |
2 |
2 |
D8 |
4 |
2 |
E8 |
4+ |
2+ |
F8 |
5 |
3 |
....**0. |
b ^= IM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bita |
IM |
|
|
|
85 |
2 |
2 |
95 |
4 |
2 |
A5 |
4+ |
2+ |
B5 |
5 |
3 |
....**0. |
a & IM |
bitb |
IM |
|
|
|
C5 |
2 |
2 |
D5 |
4 |
2 |
E5 |
4+ |
2+ |
F5 |
5 |
3 |
....**0. |
b & IM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
clr |
M |
|
|
|
|
|
|
0F |
6 |
2 |
6F |
6+ |
2+ |
7F |
7 |
3 |
....0100 |
M = 0, c=0 |
clra |
|
4F |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....0100 |
a = 0, c=0 |
clrb |
|
5F |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....0100 |
b = 0, c=0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc |
M |
|
|
|
|
|
|
0C |
6 |
2 |
6C |
6+ |
2+ |
7C |
7 |
3 |
....***. |
++M |
inca |
|
4C |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....***. |
++a |
incb |
|
5C |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....***. |
++b |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dec |
M |
|
|
|
|
|
|
0A |
6 |
2 |
6A |
6+ |
2+ |
7A |
7 |
3 |
....**0. |
--M |
deca |
|
4A |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
--a |
decb |
|
5A |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
--b |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tst |
M |
|
|
|
|
|
|
0D |
6 |
2 |
6D |
6+ |
2+ |
7D |
7 |
3 |
....**0. |
M - 0 |
tsta |
|
4D |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
a - 0 |
tstb |
|
5D |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**0. |
b - 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
com |
M |
|
|
|
|
|
|
03 |
6 |
2 |
63 |
6+ |
2+ |
73 |
7 |
3 |
....**01 |
M = ~M, c=1 |
coma |
|
43 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**01 |
a = ~a, c=1 |
comb |
|
53 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**01 |
b = ~b, c=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
neg |
M |
|
|
|
|
|
|
00 |
6 |
2 |
60 |
6+ |
2+ |
70 |
7 |
3 |
..?.**** |
M = -M |
nega |
|
40 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**** |
a = -a |
negb |
|
50 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**** |
b = -b |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
asl/lsl |
M |
|
|
|
|
|
|
08 |
6 |
2 |
68 |
6+ |
2+ |
78 |
7 |
3 |
..?.**** |
M <<= 1 |
asla |
|
48 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**** |
a <<= 1 |
aslb |
|
58 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**** |
b <<= 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
asr |
M |
|
|
|
|
|
|
07 |
6 |
2 |
67 |
6+ |
2+ |
77 |
7 |
3 |
..?.**.* |
M >>= 1 符号付 |
asra |
|
47 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**.* |
a >>= 1 符号付 |
asrb |
|
57 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
..?.**.* |
b >>= 1 符号付 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lsr |
M |
|
|
|
|
|
|
04 |
6 |
2 |
64 |
6+ |
2+ |
74 |
7 |
3 |
....0*.* |
M >>>= 1 符号無 |
lsra |
|
44 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....0*.* |
a >>>= 1 符号無 |
lsrb |
|
54 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....0*.* |
b >>>= 1 符号無 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rol |
M |
|
|
|
|
|
|
09 |
6 |
2 |
69 |
6+ |
2+ |
79 |
7 |
3 |
....**** |
M = M << 1 | c はみ出した最上位ビット |
rola |
|
49 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
a = a << 1 | c が新たなcフラグになる |
rolb |
|
59 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
b = b << 1 | c |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ror |
M |
|
|
|
|
|
|
06 |
6 |
2 |
66 |
6+ |
2+ |
76 |
7 |
3 |
....**.* |
M = (M>>>1) | (c<<7) はみだした最下位 |
rora |
|
46 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**.* |
a = (a>>>1) | (c<<7) ビットが新たな |
rorb |
|
56 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**.* |
b = (b>>>1) | (c<<7) cフラグになる |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
leax |
M |
|
|
|
|
|
|
|
|
|
30 |
4+ |
2+ |
|
|
|
.....*.. |
x = &M leax ,u x = u |
leay |
M |
|
|
|
|
|
|
|
|
|
31 |
4+ |
2+ |
|
|
|
.....*.. |
y = &M leay -5,u y = u-5 |
leau |
M |
|
|
|
|
|
|
|
|
|
32 |
4+ |
2+ |
|
|
|
........ |
u = &M leau b,u u = u+(sint8_t)b |
leas |
M |
|
|
|
|
|
|
|
|
|
33 |
4+ |
2+ |
|
|
|
........ |
s = &M leas d,u s = u+d |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exg |
R0,R1 |
1E |
8 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
R1とR0を交換 |
tfr |
R0,R1 |
1F |
6 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
R1 = R0 R:d,x,y,u,s,pc,w,v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
abx |
|
3A |
3 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
x += (uint8_t)b 符号無加算 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
daa |
|
19 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**** |
BCD加算時のa補正 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sex |
|
1D |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
....**.. |
d = (sint8_t)b 符号拡張 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pshs |
RGs |
34 |
5 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
*--s = RG をレジスタ分(順固定) |
puls |
RGs |
35 |
5 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
RG = *s++ をレジスタ分(順固定) |
pshu |
RGs |
36 |
5 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
*--u = RG をレジスタ分(順固定) |
pulu |
RGs |
37 |
5 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
RG = *u++ をレジスタ分(順固定) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
andcc |
I |
|
|
|
1C |
3 |
2 |
|
|
|
|
|
|
|
|
|
-------- |
cc &= I |
orcc |
I |
|
|
|
1A |
3 |
2 |
|
|
|
|
|
|
|
|
|
-------- |
cc |= I |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sync |
|
13 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
割込待ち |
cwai |
I |
|
|
|
3C |
20 |
2 |
|
|
|
|
|
|
|
|
|
1------- |
cc & I して割込待ち |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
swi |
|
3F |
19 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
11.1.... |
ソフト割込発生 |
swi2 |
|
10 |
19 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
1....... |
ソフト割込発生1 |
|
|
3F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
swi3 |
|
11 |
19 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
1....... |
ソフト割込発生3 |
|
|
3F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rti |
|
3B |
6/15 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
???????? |
ccをpullして割込からreturn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rts |
|
39 |
5 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
return |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nop |
|
12 |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
なにもしない |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
jsr |
M |
|
|
|
|
|
|
9D |
7 |
2 |
AD |
7+ |
2+ |
BD |
8 |
3 |
........ |
絶対アドレス&Mでルーチン呼出 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
jmp |
M |
|
|
|
|
|
|
0E |
3 |
2 |
6E |
3+ |
2+ |
7E |
4 |
3 |
........ |
絶対アドレス&Mで goto |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bsr |
OFS1 |
8D |
7 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
1バイト相対アドレスで呼出 |
lbsr |
OFS2 |
17 |
9 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
2バイト相対アドレスで呼出 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bra |
OFS1 |
20 |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
1バイト相対アドレスでgoto |
lbra |
OFS2 |
16 |
5 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
2バイト相対アドレスでgoto |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
brn |
OFS1 |
21 |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
2バイトnop, (1バイトskip) |
lbrn |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
4バイトnop |
|
|
21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bhi |
OFS1 |
22 |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号無 > 分岐. (c|z) == 0 |
lbhi |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bls |
OFS1 |
23 |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号無 <= 分岐. (c|z) == 1 |
lbls |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bcc/bhs |
OFS1 |
24 |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号無 >= 分岐. c == 0 |
lbcc |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bcs/blo |
OFS1 |
25 |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号無 < 分岐. c == 1 |
lbcs |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bne |
OFS1 |
26 |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
!= 分岐. z == 0 |
lbne |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
beq |
OFS1 |
27 |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
== 分岐. z == 1 |
lbeq |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bvc |
OFS1 |
28 |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
v == 0 分岐. |
lbvc |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bvs |
OFS1 |
29 |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
v == 1 分岐. |
lbls |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bpl |
OFS1 |
2A |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
正か零で分岐. n == 0 |
lbpl |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
2A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bmi |
OFS1 |
2B |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
負で分岐. n == 1 |
lbmi |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
2B |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bge |
OFS1 |
2C |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号付 >= 分岐. (n ^ v) == 0 |
lbge |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
2C |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
blt |
OFS1 |
2D |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号付 < 分岐. (n ^ v) == 1 |
lblt |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
2D |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bgt |
OFS1 |
2E |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号付 > 分岐. (z|(n^v)) == 0 |
lbgt |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
2E |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ble |
OFS1 |
2F |
3 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
符号付 >= 分岐. (z|(n^v)) == 1 |
lble |
OFS2 |
10 |
5/6 |
4 |
|
|
|
|
|
|
|
|
|
|
|
|
........ |
|
|
|
2F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
インデックス・アドレッシングのポストバイト
|
アドレッシング |
非インダイレクトモード |
インダイレクトモード |
形式 |
ポストバイト |
〜 |
# |
形式 |
ポストバイト |
〜 |
# |
コンスタント オフセット |
ゼロ・オフセット |
,R |
1RR00100 |
0 |
0 |
[,R] |
1RR10100 |
3 |
0 |
5ビット・オフセット |
N,R |
0RRnnnnn |
1 |
0 |
----- |
-------- |
- |
- |
8ビット・オフセット |
N,R |
1RR01000 |
1 |
1 |
[N,R] |
1RR11000 |
4 |
1 |
16ビット・オフセット |
N,R |
1RR01001 |
4 |
2 |
[N,R] |
1RR11001 |
7 |
2 |
アキューム レータ オフセット |
aレジスタ・オフセット |
a,R |
1RR00110 |
1 |
0 |
[a,R] |
1RR10110 |
4 |
0 |
bレジスタ・オフセット |
b,R |
1RR00101 |
1 |
0 |
[b,R] |
1RR10101 |
4 |
0 |
dレジスタ・オフセット |
d,R |
1RR01011 |
4 |
0 |
[d,R] |
1RR11011 |
7 |
0 |
オート インクリメント デクリメント |
ポスト・インクリメント+1 |
,R+ |
1RR00000 |
2 |
0 |
----- |
-------- |
- |
- |
ポスト・インクリメント+2 |
,R++ |
1RR00001 |
3 |
0 |
[,R++] |
1RR10001 |
6 |
0 |
プレ・デクリメント-1 |
,-R |
1RR00010 |
2 |
0 |
----- |
-------- |
- |
- |
プレ・デクリメント-2 |
,--R |
1RR00011 |
3 |
0 |
[,--R] |
1RR10011 |
6 |
0 |
PCオフセット |
8ビット・オフセット |
n,pcr |
1xx01100 |
1 |
1 |
[N,pcr] |
1xx11100 |
4 |
1 |
16ビット・オフセット |
n,pcr |
1xx01101 |
5 |
2 |
[N,pcr] |
1xx11101 |
8 |
2 |
エクステンド |
16ビット・アドレス |
--- |
-------- |
- |
- |
[NN] |
10011111 |
5 |
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 | pc,u,y,x,dp,b,a,cc 順に退避
| $FFF4 | SW2 | pc,u,y,x,dp,b,a,cc 順に退避
| $FFF6 | FIRQ | pc,cc 順に退避
| $FFF8 | IRQ | pc,u,y,x,dp,b,a,cc 順に退避
| $FFFA | SW1 | pc,u,y,x,dp,b,a,cc 順に退避
| $FFFC | NMI | pc,u,y,x,dp,b,a,cc 順に退避
| $FFFE | RESTART | dp=$00 cc=%x1x1xxxx
|
参考文献
6809ハンドブック,
Nifty OS9フォーラム,
雑誌 Oh!FM, I/O など。
|