- ベストアンサー
Z80のアセンブリをアセンブルする際のエラーについて
- Z80のアセンブリをアセンブルする際に発生するエラーについて質問させていただきます。
- WindowsXPSP3上でZ-Vision6.42付録版を用いてZ80のアセンブリを勉強していますが、特定のコードがアセンブルできない問題が発生しています。
- エラーメッセージにはCan not open message file.などの内容が表示されます。アセンブルに成功する方法や、他のアセンブラソフトの推奨などを教えていただけると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Z80は昔いじってました。 まずは、エラー番号をマニュアルで調べましょう。 アセンブラによって、多少の方言があるので、正しく書いたつもりで間違っている場合もあります。 その製品はもってないで間違った指摘があるかもしれませんが >OBJ$0100,$01FF >FRE$1000,$1FFF こういう疑似命令はそれこそアセンブラ毎に違います。正しい書式かどうか確認してください。 あと、命令と引数が続けて書かれていますが、この表示だけの問題でしょうか? 1,2,9 行めに共通するのは$~という表現です。おそらく16進数だと思いますが、そのアセンブラでの表記方法はそれであってますか? ~hとするとか、0x~とするとか、これも方言があります。 11行目は L_TEST という命令やマクロが無いためのエラーだと思われます。 おそらく L_TEST: とラベルにするべきところでしょう。 アンダーバーがラベルとして使えるかも確認しましょう。
その他の回答 (1)
- HRI-Sankou
- ベストアンサー率32% (64/199)
OBJ $0100,$01FF FRE $1000,$1FFF CALL TEST END TEST: LD HL,1000 LD A,$FF LD B,32 L_TEST: LD (HL),A INC L DEC B JPNZ L_TEST RET こうだったとおもいます。 だいぶ昔なので忘れてしまいました。 オブジェクトとニールの間には、スペース 又は、Tabを、入れる LD HL,1000 ;コメント 参考にしてみて下さい。
補足
HRI-Sankouさん、ご回答頂き誠に感謝申しあげます。 HRI-Sankouさんのご指摘通り、コードを改変し以下の様にすると、アセンブルできました。 CALL TEST END TEST: LD HL,1000H LD A,0FFH LD B,32 L_TEST: LD (HL),A INC HL DEC B JP NZ,L_TEST RET 実行結果もきちんと1000H番地にFFが合計32byte書き込まれていました。 ご教示頂き、誠にありがとうございました。
補足
kmeeさん、ご回答頂き誠に感謝申し上げます。 ご指摘のあった箇所についてお答えさせて頂きます。 >まずは、エラー番号をマニュアルで調べましょう。 エラー番号をヘルプにて調べたのですが、何ゆえ試用版ですからそこまで掲載されていませんでした。(試用版では無い方は5万円以上しますので。。。) >こういう疑似命令はそれこそアセンブラ毎に違います。正しい書式かどうか確認してください。 まさしく仰る通りでした。 マニュアルを拝見したところ、OBJとFREと言う擬似命令はこのヴァージョンではサポートされておらず、代わりにORGと言う擬似命令が代わりに使えるようです。 >あと、命令と引数が続けて書かれていますが、この表示だけの問題でしょうか? これに関しては私の技術不足で。。。 正直調べようにも調べれませんでした。 >1,2,9 行めに共通するのは$~という表現です。おそらく16進数だと思いますが、そのアセンブラでの表記方法はそれであってますか? こちらの方も自分でマシン語を直接打って、確認してみたところ、 16進数で数値を記述する際、055FHと頭に0を付け、後ろにHを付けなければいけませんでした。 >11行目は L_TEST という命令やマクロが無いためのエラーだと思われます。 おそらく L_TEST: とラベルにするべきところでしょう。 こちらの方もまさしくkmeeさんの仰る通りでした。 >アンダーバーがラベルとして使えるかも確認しましょう。 こちらは問題なく使えるみたいです。 そして訂正したのが以下のソースになりました。 (最初は1行目にORG 0100Hと書いていたのですが、そうすると一行デバッグ実行の際、 0100H番地までクリックしないといけないので、ORG 0100Hは省きました。) CALL TEST END TEST: LD HL,1000H LD A,0FFH LD B,32 L_TEST: LD (HL),A INC HL DEC B JP NZ,L_TEST RET 以上でアセンブルも無事完了し、実行するときちんとメモリに値が書き込まれていました。 本当に沢山、ご教示頂き誠にありがとうございます。 なんとか実行までたどり着ける事が出来ました。