1

我必须在组装 6502 中进行编程。我被迫使用仿真器 Vice 128 我被告知 Commodore 128 与 6502 的指令兼容 我是新手,我做了一个实际演示,但我什么都不懂。有一个 80 列的接口,它通过一个命令(哪个?) 机器语言或汇编(程序)的指令直接输入到这个 80 列的矩阵上。数据也被输入到这个矩阵中。那么这个矩阵是内存吗?每条线代表什么?有人告诉我这是反汇编代码6502。但我不知道这是什么意思我很困惑

我想运行这个简单的程序来执行两个数字的总和。这两个数字分别存储在第一页的字零和字一中。我想将结果存储在第一页的第二个单词中。我想象第一行包含 80 个单词。那正确吗?所以我把数据以十六进制(3和2)放在这里。

    $03 $02
    LDA $00
    ADC $01
    STA $02

但我有一个语法错误。我希望有人可以帮助我,因为它使我无法理解事情的运作方式。提前致谢

4

2 回答 2

2

首先,在 6502 中,我们使用我们处理字节,而不是单词。(这是一个 8 位架构)

您没有提及您正在使用哪个宏汇编程序,但我认为它试图将 $03 解释为操作码,而不是数据。我在 ca65 中查找了两个选项,您可以使用

 .BYTE $03 $02

在你使用的 dasm

 HEX 03 02

此外,6502 没有任何 80 的概念(字、行等)。我能想到的唯一 80 个是有 80 个列的旧航站楼。我不明白这与这里有什么关系。

于 2015-02-20T04:31:26.723 回答
1

如何运行反汇编代码6502?

您必须重新组装代码。

每条 6502 指令代表 1、2 或 3 个字节,第一个称为操作码,可选的第二个或第三个是指令使用的数据(操作数)。

您需要一个程序来将指令助记符转换为字节。Commodore上有很多这样的节目。

Commodore 128 有一个内置监视器,可让您输入指令以直接组装。MONITOR您可以通过在 BASIC 提示符下键入来输入它。您需要先设置地址,然后使用“汇编”命令。然后在起始地址使用“go”命令运行它。在进入监视器之前,使用 BASIC POKE 命令设置包含数据的位置。该地址0B00是一个很好的地址,因为它是磁带缓冲区,除了在磁带 I/O 期间未使用。

祝你好运。

于 2016-12-13T19:43:12.920 回答