我必须在汇编程序中编程6502。 我被迫使用模拟器副128 我被告知Commodore 128与6502的指令兼容 我是一个新手,我做了一个实际的演示,但我什么都不懂。 有一个80列的接口传递了一个命令(哪一个?) 机器语言或汇编(程序)中的说明 直接输入80列的矩阵。 此数据也输入此矩阵。 这个矩阵是记忆吗?每一行代表什么? 我被告知这是拆解代码6502.但我不知道这是什么意思 我很困惑
我想运行这个简单的程序 执行两个数字的总和。 这两个数字存储在第一页中的单词零和单词一。我想将结果存储在第一页的第二个单词中。 我想象第一行包含80个单词。是对的吗? 所以我把数据放在十六进制(3和2)。
$03 $02
LDA $00
ADC $01
STA $02
但我有语法错误。 我希望有人可以帮助我,因为它逃避了我的工作方式。 提前致谢
答案 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外没用。