太陽光発電 | 無線 | パソコン通信 | ファミコン | 迷路 |
---|---|---|---|---|
PC−1245 | MSX | PC−9800 | PDA | あとがき |
命令 | 説明 | 使用例 |
---|---|---|
POKE | 指定した番地に指定した値を書き込む命令。 1バイトずつ書き込む他、行が続く限り連続して書き込むことも可能。 PC−1245では&は16進数にする働きがある。 &FFと書いても255と書いても同じ。 | @POKE &C100,&79 APOKE 49409,&C4,$00 BPOKE &C400,55 |
PEEK | 指定した番地の値を読み出す命令。 POKEと違って1バイトずつしか読み出せない。 直接実行して画面に値を表示することもできるし、 入力例のように変数に代入することもできる。 | @PEEK &C100 AA=PEEK 49408 |
CALL | 指定した番地からマシン語ルーチンを 実行する命令。プログラムが間違っていると暴走する。 | @CALL &C100 ACALL 49408 |
CLOADM | テープやWAVファイルからマシン語プログラムを読み込む命令。 読み込む番地を指定したり、ファイル名を指定できるが、 特に指定しなくてもSAVE時の通りに読み込まれるので問題ない。 | @CLOADM ACLOADM "ABC" BCLOADM &C100 CCLOADM "ABC";&C100 |
CSAVEM | テープにマシン語プログラムを書き出す命令だが、Winに付属のサウンドレコーダで WAVファイルにしてしまうのがお手軽。 ファイル名は省略できるが、開始アドレスと終了アドレスは省略できない。 | @CSAVEM "ABC";&C100,&C106 ACSAVEM &C100,&C106 |
10 PRINT "" 20 POKE &F805,124,64,127,64,124,127,73,127,73,127 30 CALL &11E0 40 FOR A=0 TO 99:NEXT AAアセンブラで2桁目から山田と表示してみる (スクロール可:スマホの方)
ORG $C100 LIDP $F800 ;DP←$F800 LII 59 ;I←59(…5×12−1) LIA 0 ;A←0 FILD ;(DP)〜(DP+I)←A(…左12桁のクリア) LIDP $F868 ;DP←$F868 LII 19 ;I←19(…5×4−1) FILD ;(DP)〜(DP+I)←A(…右4桁のクリア) LIB $00 ;FONTのアドレスの上位(一度アセンブル後、改めて設定※) LIA $00 ;FONTのアドレスの下位(一度アセンブル後、改めて設定※) CAL $11F1 ;X←BA−1(…BIOSの機能呼出し) LIB $F8 ;B←$F8 LIA $05 ;A←$05 CAL $11F5 ;Y←BA−1(…BIOSの機能呼出し) LIA 9 ;A←9 PUSH ;スタックにAの値を入れる TRAN: IXL ;X←X+1,A←(X) IYS ;Y←Y+1,(Y)←A LOOP TRAN ;スタックの値+1回ループ CAL $11E0 ;LCDをON(…BIOSの機能呼出し) LIA $FF ;A←$FF PUSH ;スタックにAの値を入れる PUSH ;スタックにAの値を入れる WWLP: WAIT $FF ;時間待ち LOOP WWLP LOOP WWLP RTN FONT: DB 124,64,127,64,124 ;山 DB 127,73,127,73,127 ;田 ※一度アセンブルしてFONTの配置されるアドレスを確定後、改めてその値をセットし、再度アセンブルする。
ORG $C100 LIA $FF ;A←$FF LIDP ONTEI ;DP←ONTEI LAB1: STD ;(DP)←A LIA 5 ;A←5 PUSH LAB2: LIP $5F ;P←$5F ORIM $52 ;(P)←(P)or$52 OUTC CAL $11E0 LIDP ONTEI ;DP←ONTEI LDD ;A←(DP) LP $00 ;P←Iレジスタ EXAM ;(P)←→A LIDP $4000 ;DP←$4000 FILD ;(DP)〜(DP+I)←A LOOP LAB2 LIDP ONTEI ;DP←ONTEI LDD ;A←(DP) DECA ;A←A−1 JRNZM LAB1 ;IF Z=0 THEN LAB1 RTN ONTEI: DS 1 ※低い周波数から高い周波数まで上がっていく効果音が出ます。
レジスタ名 | 説明 | 使用例 |
---|---|---|
DP | 外部RAMにアクセスするための16ビットのレジスタ | LIDP $C100 |
P | 内部RAMにアクセスするための7ビットのレジスタ | LP $04 |
Q | 内部RAMにアクセスするための7ビットのレジスタ | LIQ $04 |
R | 内部RAMにアクセスするための7ビットのレジスタ。 このレジスタはCALL命令やPUSH命令が使用するスタック・ポインタであるので、 ユーザが値を変更するとしばしば暴走する。 | LIR $04 |
アドレス | レジスタ名 | 使われ方 |
---|---|---|
00 | I | カウンタ |
01 | J | カウンタ |
02 | A | アキュムレータ |
03 | B | アキュムレータ予備 |
04 | X(下位) | 外部RAMポインタ(読み込み用) |
05 | X(上位) | 外部RAMポインタ(読み込み用) |
06 | Y(下位) | 外部RAMポインタ(書き込み用) |
07 | Y(上位) | 外部RAMポインタ(書き込み用) |
08 | K | 汎用レジスタ |
09 | L | 汎用レジスタ |
0A | M | 汎用レジスタ |
0B | N | 汎用レジスタ |
0C〜 | 汎用RAM | |
〜5B | システム・スタック | |
5C | IA | I/Oポート・レジスタ |
5D | IB | I/Oポート・レジスタ |
5E | FO | I/Oポート・レジスタ |
5F | OUTC | コントロール・ポート・レジスタ |
太陽光発電 | 無線 | パソコン通信 | ファミコン | 迷路 |
---|---|---|---|---|
PC−1245 | MSX | PC−9800 | PDA | あとがき |