Z80(TI-83 +)は、CALLに取り組んで停止します
-
23-09-2019 - |
質問
IはTI-83 +電卓(Z80プロセッサ)用のアプリケーションをアセンブルするたびに、それはCALLで動作を停止します。ここで(「こんにちは」)の例である - それだけで罰金を実行開始しますが、CALL命令で電卓がフリーズ。私はCALLの前に置くものは何でもうまく動作し、私は後に入れたものは実行されません。これは、アドレスではなく、ラベルを表示するコードの分解、です。私はそれを読みやすくするために、どこでそれらの秋DB線を表示する「をタッチアップ」している。
私はこの問題のアセンブリ(RAMにロードされている)「プログラム」を書いていたことがありません。唯一の問題は、私が(フラッシュROMに保存されている)、「アプリケーション」を実行しているのを知っていることを、彼らは自己修正することができないということであり、ページングが必要なので、別のページ上のデータにアクセスすることはできませんことを。これは自己修正ではなく、1ページだけを持っている...私が間違っ完了を持って何?
0080 218900 LD HL, 0089h
0083 cd9900 CALL 0099h ; --- App stops here
0086 c38f00 JP 008fh
0089 48656c6c6f00 DB "Hello", 0
008f fd360500 LD (IY+05h), 0
0093 ef RST 28h ; B_CALL (
0094 364c DB 4C36h ; _ReloadAppEntryVecs)
0096 ef RST 28h ; B_CALL (
0097 2740 DB 4027h ; _JForceCmdNoChar) --- App should end here
0099 7e LD A, (HL) ; --- Call goes to here
009a ef RST 28h ; B_CALL (
009b 0445 DB 4504h ; _PutC)
009d fe00 CP 0
009f c8 RET Z
00a0 23 INC HL
00a1 18f6 JR 0099h
解決
どうやら、あなたはアドレス0080Hに組み立てています。 3FFFH実際、ROMのページ0にロックされているによると、 - アドレス範囲0000Hはので、これは正しいことはできませんこの例では、あなたが4000Hに組み立てを。あなたの問題があるので、あなたのCALLは、ファームウェアではなく、あなたのアプリケーションの一部に飛び込むされていること。
他のヒント
あなたはそれが予想されるアドレスにRAMにロードされるように、あなたの.asmファイル内の適切ORGディレクティブを選択する必要があります。どこにそれがあるかもしれない。
所属していません StackOverflow