Z80(TI-83 +)停止在CALL上工作

c47*_*57p 5 assembly z80 calculator texas-instruments

每次我组装TI-83 +计算器(Z80处理器)的应用程序时,它都会停止在CALL上运行.这是一个示例("Hello") - 它开始运行得很好,但计算器在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
Run Code Online (Sandbox Code Playgroud)

Nie*_*jou 9

显然,你正在组装以解决0080h问题.这可能不正确,因为地址范围0000h - 3FFFh被锁定到ROM页面0.实际上,根据这个例子,你组装到4000h.所以你的问题是你的CALL跳进固件,而不是你的应用程序的一部分.

  • 是的,那是一个愚蠢的时刻.我投入'ORG 4000h'现在它可以工作了.我现在又遇到了另一个问题......我'PutC'没有什么东西可以进入屏幕 - 可能是一个愚蠢的错误.哎呀 - 我曾经编的第再用语言是8080汇编程序,而现在它已经这么长时间我的汇编代码看起来像,它是由一个黑猩猩. (2认同)