シミュレーター 3 で扱った main.asm は、「データ・メモリーの1番地をFFHに書き換える」だけの簡単なものです。 <PICデバイス=18F1320> Watchウィンドウにはデータ・メモリーの0番地と1番地を表示させていますが、main.asmが書き換えるのは1番地だけです。
確かめてみましょう。 Watchウィンドウの二つの値を各々ダブルクリックして80Hに書き換えて下さい。 そのまま Run の後 Halt してもWatchウィンドウに変化はありません。 MPLAB IDE Editor に表示されているソース・リストの中に緑色の矢印で実行中の行を示していますが、31行目( GOTO HOTZ )を示しています。 前回 Halt の続きから動かした為に GOTO HOTZ を繰り返していただけで、データ・メモリーにアクセスしていないことが原因です。
シミュレート中の仮想PICをリセットして、プログラム・メモリーの0番地からやり直させる必要があります。
下図に見える黄色のボタンをクリックしてリセットします。
上図はリセットの後で、Run Halt したWatchウィンドウです。 0番地は80Hのままで、1番地がFFHに書き換わっています。 他にも試してみてください。 FFHに書き換えるのではなくてF0Hに書き換えるためには26行目の 0FFH を 0F0H に書き換えて、ビルドすれば良いと思います。
さて、この記事のタイトルは「データ・メモリーを任意に書き換える」ですから、ここからが本題です。 main.asm では26行目で書き込む値をワーキングレジスタに書いて、27行目でワーキングレジスターの内容を、データ・メモリーの1番地に書き写しています。 reg1の値は12行目で1に定義しています。
MOVLW 0FFH
MOVWF reg1
26行目の 0FFH を他の値にすると書き込む値が変わり、12行目の 001H を他の値にすると書き込むアドレスが変わります。 いずれもビルドし直す必要があります。
ワーキングレジスタはPICの中にある唯一の汎用演算装置で、Wreg あるいは単に W と記述されることがあります。 プログラムに任意の値を記述してデータ・メモリーに書き込むためには一旦 W に値を入れて、W の値をデータ・メモリーに書き写すと言う手順で行います。
特別なケースでは次のようなニーモニックを使い、W を介さずに書き換えることが出来ます。
MOVFF fs , fd ; データ・メモリー f sの値をデータ・メモリー fdに書き写す。
CLRF f , a ; データ・メモリー f の値を0クリアする。
SETF f , a ; データ・メモリー f の値をFFHにセットする。
BCF f , b , a ; データ・メモリー f のビット b を0クリアする。
BSF f , b , a ; データ・メモリー f のビット b に1をセットする。
他に、何らかの演算結果をデータ・メモリーに書き込む命令がありますが、これらは演算が主な目的と考えて別の記事で紹介します。
一連の記事のインデックスは 「とにかくビルド!」の末尾をご覧下さい。
「楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。
確かめてみましょう。 Watchウィンドウの二つの値を各々ダブルクリックして80Hに書き換えて下さい。 そのまま Run の後 Halt してもWatchウィンドウに変化はありません。 MPLAB IDE Editor に表示されているソース・リストの中に緑色の矢印で実行中の行を示していますが、31行目( GOTO HOTZ )を示しています。 前回 Halt の続きから動かした為に GOTO HOTZ を繰り返していただけで、データ・メモリーにアクセスしていないことが原因です。
シミュレート中の仮想PICをリセットして、プログラム・メモリーの0番地からやり直させる必要があります。
下図に見える黄色のボタンをクリックしてリセットします。
上図はリセットの後で、Run Halt したWatchウィンドウです。 0番地は80Hのままで、1番地がFFHに書き換わっています。 他にも試してみてください。 FFHに書き換えるのではなくてF0Hに書き換えるためには26行目の 0FFH を 0F0H に書き換えて、ビルドすれば良いと思います。
さて、この記事のタイトルは「データ・メモリーを任意に書き換える」ですから、ここからが本題です。 main.asm では26行目で書き込む値をワーキングレジスタに書いて、27行目でワーキングレジスターの内容を、データ・メモリーの1番地に書き写しています。 reg1の値は12行目で1に定義しています。
MOVLW 0FFH
MOVWF reg1
26行目の 0FFH を他の値にすると書き込む値が変わり、12行目の 001H を他の値にすると書き込むアドレスが変わります。 いずれもビルドし直す必要があります。
ワーキングレジスタはPICの中にある唯一の汎用演算装置で、Wreg あるいは単に W と記述されることがあります。 プログラムに任意の値を記述してデータ・メモリーに書き込むためには一旦 W に値を入れて、W の値をデータ・メモリーに書き写すと言う手順で行います。
特別なケースでは次のようなニーモニックを使い、W を介さずに書き換えることが出来ます。
MOVFF fs , fd ; データ・メモリー f sの値をデータ・メモリー fdに書き写す。
CLRF f , a ; データ・メモリー f の値を0クリアする。
SETF f , a ; データ・メモリー f の値をFFHにセットする。
BCF f , b , a ; データ・メモリー f のビット b を0クリアする。
BSF f , b , a ; データ・メモリー f のビット b に1をセットする。
他に、何らかの演算結果をデータ・メモリーに書き込む命令がありますが、これらは演算が主な目的と考えて別の記事で紹介します。
一連の記事のインデックスは 「とにかくビルド!」の末尾をご覧下さい。
「楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。