.ORG
ディレクティブが正しくないようです。プロセッサはアドレス 0 で命令の実行を開始しますが、そこにデータを配置しました。同様に、10 バイトのデータがありますが、それらを配置するのは 8 バイトだけです。ラベルを付けていないため、データの目的がわかりません。それは指示であるはずですか?液晶ディスプレイの数字ですか?
プログラムが何をしようとしているのかを説明するコメントをコードに追加していただけると助かります。スタック ポインタを設定し、ポートの方向を設定する部分はわかりますが、ループを分析しようとはしません。何をするつもりか教えてください。
まず、場所を変えてみることができ.ORG
ます。多くの場合、プログラムには「main:」というラベルの付いた部分があり、最初の命令は.ORG $0
main へのジャンプになります。このようにして、データをプログラムの先頭に配置することができます。これにより.ORG $08
、コード内で見つけやすくなりますが、誤って実行されることはありません。
.INCLUDE "M32DEF.INC"
.ORG $00
jmp main
.ORG $08
digits: .DB $FC,$30,$6E,$7A,$B2,$DA,$DE,$70,$FE,$FA
main:
LDI R16,$01 ; set stack pointer
OUT SPH,R16
LDI R16,$00
OUT SPL,R16
and so on