こんばんは吉川です
先日よりお騒がせしていたH8tinyの動作が不安定な件、
解決しました。
リストファイルを調べていてやっと気が付きました。
分かってみれば、お恥ずかしいのですがプログラムミスで原因は
以下の行でした。
−−−−−−−−−−−−
JMP @009
?008
〜
?009
〜
RTS
−−−−−−−−−−−−
これはローカルラベルを使ってサブルーチン内で分岐する所なので
すが、「@?009」と書くべき所を、ここだけ「?」を忘れてました。
結果、ここからアドレス「0009H」に飛んでしまっていたのです、
RTSを通らないので、スタックを浪費して不安定になっていたようです。
失敗の言い訳を言わせてもらうと
①、Z80のアセンブラでは、こういうローカルラベルの書き方で
失敗した事はなかった。
②、日立のアセンブラマニュアルにもローカルラベルの例として
数字だけの書き方が示されていた。
③、このような書き方はアセンブラがエラーを出してくれると思い込んでいた。
(アドレス指定が10進表記でも出来るとは思わなかった)
ということで、ローカルラベルといえども数字だけを使うのは止めた方が
よいですね。
アルファベットが入ってれば(A01とか)アセンブラがエラーを出してくれる
事を確認できました。
ではまた