如何运行反汇编代码6502?

时间:2015-02-19 18:04:06

标签: 6502 commodore

我必须在汇编程序中编程6502。 我被迫使用模拟器副128 我被告知Commodore 128与6502的指令兼容 我是一个新手,我做了一个实际的演示,但我什么都不懂。 有一个80列的接口传递了一个命令(哪一个?) 机器语言或汇编(程序)中的说明 直接输入80列的矩阵。 此数据也输入此矩阵。 这个矩阵是记忆吗?每一行代表什么? 我被告知这是拆解代码6502.但我不知道这是什么意思 我很困惑

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

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

但我有语法错误。 我希望有人可以帮助我,因为它逃避了我的工作方式。 提前致谢

2 个答案:

答案 0 :(得分:2)

Fir' st,在6502中,我们使用的是字节,而不是字。 (它是一个8位架构)

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

 .BYTE $03 $02
在dasm中使用

 HEX 03 02

另外,6502没有任何80的概念(单词,行无论如何)。我能想到的唯一的80是具有80列的旧终端。我不知道这是如何相关的。

答案 1 :(得分:1)

  

如何运行反汇编代码6502?

你必须汇编支持代码。

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

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

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

祝你好运。