我在 6502 程序集中编写了一小段代码(add.asm,如下所示),但在使其在 apple ii 模拟器上正确运行时遇到了一些问题。使用下面的配置文件,以及 ca65 和 ld65,我可以得到一个二进制文件来编译。
然后,使用 ciderpress,我可以将它放到磁盘映像中。但是,这是我的问题开始的地方。当我编辑文件的属性,使其成为二进制文件时,Ciderpress 将名为“辅助类型(十六进制)”的内容更改为 D818。我不确定这是为什么(将其更改为 6000,我说过 ram 在我的 ld65 配置文件中启动并不能解决我将要描述的问题)。
在 Ciderpress 中,我可以查看刚刚添加到磁盘映像中的文件添加。它说它从位置“D818”开始。但是,它不包括直到“STA ADR1”的每一行,这已经超过了程序的一半。当我在 appleii 模拟器上运行它时,程序的行为确认似乎只存在代码的后半部分。
谁能帮我理解发生了什么?
添加.asm:
CLC ; CLEAR CARRY BIT
CLD ; CLEAR DECIMAL BIT
ADR1 = $6100
ADR2 = $6101
ADR3 = $6102
LDA #01
STA ADR1
LDA #02
STA ADR2
LDA ADR1 ; LOAD CONTENTS OF ADR1 INTO ACCUMULATOR
ADC ADR2 ; ADD CONTENTS OF ADR2 INTO ACCUMULATOR
STA ADR3 ; TRANSFER CONTENT OF ACC TO ADR3
RTS
苹果.cfg:
MEMORY {
RAM: start = $6000, size = $8E00, file = %O;
}
SEGMENTS {
CODE: load = RAM, type = ro;
DATA: load = RAM, type = rw;
}