我必须对6502进行汇编编程。我被迫使用了仿真软件,我被告知Commodore 128与6502的指令是兼容的。我是一个新手,有人给我做了一个实际的演示,但是我什么都不懂。有一个包含80列的接口,它通过一个命令传递(哪一个?)机器语言或汇编语言(程序)的指令直接输入到这个80列的矩阵上。此外,数据也会输入到此矩阵中。那么这个矩阵就是记忆吗?每一行代表什么?我被告知这是反汇编代码6502。但我不知道这是什么意思我很困惑
我想运行这个简单的程序,它执行两个数字的和。这两个数字分别存储在第一页的单词0和单词1中。我想将结果存储在第一页的第二个单词中。我想象第一行包含80个单词。是那么回事吗?所以我在这里放了十六进制的数据(3和2)。
$03 $02
LDA $00
ADC $01
STA $02但是我有一个语法错误。我希望有人能帮助我,因为我不知道事情是如何运作的。提前感谢
发布于 2015-02-20 12:31:27
首先,在6502中,我们使用我们处理字节,而不是字。(它是一个8位架构)
您没有提到您正在使用哪个宏汇编器,但我假设它试图将$03解释为操作码,而不是数据。我在ca65中查找了两个选项,您可以使用
.BYTE $03 $02在dasm中,您可以使用
HEX 03 02此外,6502没有80任何东西(单词,行)的概念。我能想到的唯一的80个是有80列的旧终端。我看不出这有什么关系。
发布于 2016-12-14 03:43:13
如何运行反汇编代码6502?
你必须把代码重新组装起来。
每个6502指令代表1、2或3个字节,第一个被称为操作码,第二个或第三个可选的是指令使用的数据(操作数)。
您需要一个程序将指令助记符转换为字节。在准将号上有很多这样的程序。
Commodore 128有一个built-in monitor,可以让你直接输入指令进行汇编。您可以通过在基本提示符下键入MONITOR来输入它。您需要首先设置地址,然后使用"assemble“命令。然后在起始地址使用"go“命令来运行它。在进入监视器之前,使用基本POKE命令设置包含数据的位置。地址0B00是一个很好使用的地址,因为它是磁带缓冲区,除非在磁带I/O期间,否则它不会被使用。
祝好运。
https://stackoverflow.com/questions/28613659
复制相似问题