[新連載開始]W65C02マイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
私としてはW65C02をさわるのは全く初めてです。何から何まで未経験です。さてどうなりますでしょうか。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第47回]
●ASL,LSR,ROL,ROR
ASLはメモリの値を左に1ビットシフトします。
最下位ビットには0が入りシフト前の最上位ビットの値がCに入ります。
C<−7 6 5 4 3 2 1 0<−0
オペランド無しのASL命令はアキュムレータを左シフトします。
演算の結果によってN、Z、Cフラグがセット、リセットされます。
以下の命令があります。
| ニーモニック |
マシン語コード |
アセンブラ書式 |
バイト数 |
クロック数 |
| ASL a |
0E |
ASL $1234 |
3 |
6 |
| ASL a,x |
1E |
ASL $1234,x |
3 |
7 |
| ASL zp |
06 |
ASL $12 |
2 |
5 |
| ASL zp,x |
16 |
ASL $12,x |
2 |
6 |
| ASL A |
0A |
ASL |
1 |
2 |
a a,x zp zp,xはアドレッシングモードです。
aは絶対アドレスでzpはゼロページです。
,xはxの値で修飾することを示します。
Aはアキュムレータです(アセンブラ書式ではオペランド無しになります)。
W65C02のアドレッシングモードは[第4回]で説明していますので適宜参照してください。
LSRはメモリの値を右に1ビットシフトします。
最上位ビットには0が入りシフト前の最下位ビットの値がCに入ります。
0−>7 6 5 4 3 2 1 0−>C
オペランド無しのLSR命令はアキュムレータを右シフトします。
演算の結果によってN、Z、Cフラグがセット、リセットされます。
以下の命令があります。
| ニーモニック |
マシン語コード |
アセンブラ書式 |
バイト数 |
クロック数 |
| LSR a |
4E |
LSR $1234 |
3 |
6 |
| LSR a,x |
5E |
LSR $1234,x |
3 |
7 |
| LSR zp |
46 |
LSR $12 |
2 |
5 |
| LSR zp,x |
56 |
LSR $12,x |
2 |
6 |
| LSR A |
4A |
LSR |
1 |
2 |
ROLはCを含めてメモリの値を左に1ビット回転します。
最下位ビットにはCの値が入り最上位ビットの値がCに入ります。
C<−7 6 5 4 3 2 1 0<−C
オペランド無しのROL命令はアキュムレータを左シフトします。
演算の結果によってN、Z、Cフラグがセット、リセットされます。
以下の命令があります。
| ニーモニック |
マシン語コード |
アセンブラ書式 |
バイト数 |
クロック数 |
| ROL a |
2E |
ROL $1234 |
3 |
6 |
| ROL a,x |
3E |
ROL $1234,x |
3 |
7 |
| ROL zp |
26 |
ROL $12 |
2 |
5 |
| ROL zp,x |
36 |
ROL $12,x |
2 |
6 |
| ROL A |
2A |
ROL |
1 |
2 |
RORはCを含めてメモリの値を右に1ビット回転します。
最上位ビットにはCの値が入り最下位ビットの値がCに入ります。
C−>7 6 5 4 3 2 1 0−>C
オペランド無しのRORL命令はアキュムレータを左シフトします。
演算の結果によってN、Z、Cフラグがセット、リセットされます。
以下の命令があります。
| ニーモニック |
マシン語コード |
アセンブラ書式 |
バイト数 |
クロック数 |
| ROR a |
6E |
ROR $1234 |
3 |
6 |
| ROR a,x |
7E |
ROR $1234,x |
3 |
7 |
| ROR zp |
66 |
ROR $12 |
2 |
5 |
| ROR zp,x |
76 |
ROR $12,x |
2 |
6 |
| ROR A |
6A |
ROR |
1 |
2 |
W65C02マイコンボードの製作[第47回]
2026.8.18 upload
前へ
ホームページトップへ戻る