我正在尝试使用6502处理器在汇编中编写while循环,但我不知道如何编写十六进制代码。我已经看到了使用速记方式编写的示例,其中有一个循环应该在哪里开始和结束的标签,但是对于实际的十六进制代码,我看不到任何东西。

我认为有用的两个代码是:


比较内存中的一个字节与X reg(简写:CPX,十六进制:EC)。如果相等,则将Z标志设置为零,并且
如果Z标志= 0,则分支X个字节(简写:BNE,十六进制:D0)

最佳答案

这是您开始的地方:http://www.obelisk.demon.co.uk/6502/。该页面具有可在PC上运行的交叉汇编程序。那对您来说可能是一个很好的开发平台。

在做任何事情之前,您必须了解6502的操作原理。然后,您必须了解软件开发过程,其中包括:

-准备一个所谓的“源文件”,
您的象征性指示
称“简写”
-使用
汇编程序,翻译该源
归档到机器指令中
对6502的理解
-加载
翻译成6502
-讲
6502执行翻译
机器指令

您的示例程序尝试将LEN内存字节从SRC复制到DST

您可以这样格式化:

      LDX #0    ; Start with the first byte
_LOOP LDA SRC,X ; load a byte from SRC into the A register
      STA DST,X ; store that byte into DST
      INX       ; bump the index register to point to the next SRC and DST locations
      CPX #LEN  ; have we moved LEN characters?
      BNE _LOOP ; if not, go move the next one


添加更多语句行之后(例如END);在定义了SRCDSTLEN之后,将整个内容保存在名为cploop.txt的文件中。

然后,您告诉汇编程序进行翻译。汇编器附带一个二进制6502机器代码文件,该文件可以表示为您正在谈论的十六进制字节。

您将该机器代码文件提供给模拟的6502。然后您以某种方式告诉6502执行机器代码所体现的操作。

08-07 20:10