每次我组装为TI-83 +计算器(Z80处理器)的应用程序,它停止在CALL运行。下面是一个例子(“你好”) - 它开始运行得很好,但在CALL指令计算器冻结。什么我打电话之前把工作蛮好的,什么我把后不运行。这是代码的反汇编,显示地址,而不是标签。我曾经“感动起来”,以示DB线,其中那些在秋季,使其更易于阅读。

我从未有过这个问题写入组件“程序”(其被加载到RAM)。唯一的问题,我知道与运行“应用程序”(这是保存在Flash ROM中)是他们不能自我修改,那是因为寻呼是必要的,一个单独的页面上访问数据是不可能的。这不是自我修改和只有一页......我做了什么错?

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。所以,你的问题是,你的电话是跳跃到固件,而不是你的应用程序的一部分。

其他提示

这里的一个存储器地图我发现在Ti-83 +。你不能在地址$ 0080来加载这个程序,这就是ROM生活在那里。它被加载在其他地方。这作品一段时间,直到你犯了一个JP或CALL。 $ 0099不跳你的预期跳转地址的号召,它跳进ROM。这是一个快速结束。

您需要那么它能够在预期的地址加载到RAM中选择您的.asm适当ORG指令。只要可能是

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top