我开始使用Rodney Zaks的书Programming the 6502学习6502汇编。其中有示例代码,我希望能够在我的macbook上运行它。我希望代码能够以书中介绍的形式运行,但我不确定。
我已经下载了ca65汇编程序,但我遇到了一些麻烦。命令ca65 3_1.as可以工作,但是使用ld65 -o example 3_1.o (我认为它是正确的)会导致错误:ld65: Error: Memory configuration missing
文件3_1.as中的代码如下所示。
有人能建议如何解决我的问题吗?
(作为一个小问题,目前我猜100美元和200美元实际上不包含任何值,所以即使程序可以运行,也不会进行实际的添加,这是正确的吗?)
CLC ; CLEAR CARRY BIT
CLD ; CLEAR DECIMAL BIT
ADR1 = $100 ; WHERE IN MEMORY ARE THESE THINGS
ADR2 = $200
ADR3 = $300
LDA ADR1 ; LOAD CONTENTS OF ADR1 INTO ACCUMULATOR
ADC ADR2 ; ADD CONTENTS OF ADR2 INTO ACCUMULATOR
STA ADR3 ; TRANSFER CONTENT OF ACC TO ADR3发布于 2019-07-29 06:01:57
要修复链接器错误,您需要provide a target system,它将提供内存配置。
例如,这不是默认设置,这有点愚蠢:
ld65 -t none -o example 3_1.o请注意,您还可以使用一个命令进行汇编和链接。参见my answer here。
发布于 2020-04-14 13:37:46
这里有一个更完整的程序来补充已经很好的答案。我注意到作者也没有把程序放在一个开始的地方。不同类型的汇编程序在如何处理语法方面有一些细微的差别,比如ORG语句。有些是".Org“,意思是在这里启动程序,然后在内存中组装。"*=“也可以表示相同的事情(有时两者都有效)。这个程序应该可以在准将64上运行。通过一些调整,它可以在Apple上工作][也(将charout更改为ffda和开始位置)。不过,我绝对推荐将C64用于编码增长,因为它有如此多有趣的硬件功能。它也有一个大规模的全球编码场景。这里有大量磁盘mags和ML教程的链接,这些教程超出了基础知识。似乎没有一本书能做到这一点,而且倾向于只坚持句法方法。如果你想用这些东西做一些大的事情,比如控制房屋和运行飞机部件,这是远远没有用的。
https://csdb.dk/release/?id=8717
.ORG = 080D ;
CLC ; CLEAR CARRY BIT
CLD ; CLEAR DECIMAL BIT
LDA #$94 ; load accumulator with 94
STA ADR1 ; move 94 into adr1 (both combined is adr1 = 94)
LDA #$32 ; load accumulator with 32
STA ADR2 ; move 32(in Acc.) into adr1 (both lines is adr2 = Acc, or adr2 = 32)
LDA ADR1 ; LOAD CONTENTS OF ADR1 INTO ACCUMULATOR
ADC ADR2 ; ADD CONTENTS OF ADR2 INTO ACCUMULATOR
STA ADR3 ; TRANSFER CONTENT OF ACC TO ADR3
JSR CHAROUT; print the result
RTS ; return from the program
; declarations can be in confusing places and still work.
; I just saw a program where the declarations were after the code
; and before the subroutines.
;-------------------------------------------
ADR1 = $100 ; WHERE IN MEMORY ARE THESE THINGS
ADR2 = $200
ADR3 = $300
CHAROUT = $ffd2 ; character out routine commodore 64. (prints a byte to screen)https://stackoverflow.com/questions/57241690
复制相似问题