1

我开始使用 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
4

2 回答 2

3

要修复链接器错误,您需要提供将提供内存配置的目标系统。

例如,这不是默认设置有点愚蠢:

ld65 -t none -o example 3_1.o

请注意,您也可以使用一个命令进行组合和链接。在这里查看我的答案

于 2019-07-28T22:01:56.590 回答
1

这是一个更完整的程序,可以添加到已经很好的答案中。我注意到作者也没有放置启动程序的地方。不同类型的汇编器在处理 ORG 语句之类的语法方面存在细微差别。有些是“.Org”,意思是在这里启动程序并在内存中组装。“*=”也可以表示同一件事(有时两者都有效)。该程序应该可以在 commodore 64 上运行。通过一些调整,它也可以在 Apple ][ 上运行(将 charout 更改为 ffda 和起始位置)。我肯定会推荐 C64 用于编码增长,因为它具有更多有趣的硬件功能。它还拥有庞大的全球编码场景。这是一个链接,其中包含大量磁盘杂志和超出基础知识的 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)
于 2020-04-14T05:37:46.420 回答