跳转至内容

Signetics 2650 & 2636 编程/入门

75% developed
来自维基教科书,开放的书籍,开放的世界

教程 - 入门

[编辑 | 编辑源代码]

本教程的目标是使用 WinArcadia 逐步介绍组装、运行和调试简单代码的机制。我们将使用调试器逐条指令地逐步执行程序,既是为了学习如何使用调试器,也是为了更好地理解处理器的工作原理。

如果您尚未完成,可以在 WinArcadia 中找到下载和安装 WinArcadia 的说明。

教程程序

[编辑 | 编辑源代码]

本教程的代码可以在 教程代码 - 入门 中找到。将此代码复制并粘贴到文本文件中,并将标准标签定义文件 教程代码 附加到文本文件中。将文件保存为 intro.asm,保存在 Projects 文件夹中。

打开 WinArcadia。如果模拟器屏幕未显示 INTERTON VC 4000,请使用菜单项:选项 > 机器 > Interton

在模拟器的命令行中,输入 bp 0。这将设置一个断点,以便程序一启动就停止执行。

再次在命令行中,输入 asm intro。这将组装我们刚刚创建的程序,并打开一个 WinArcadia 输出 窗口,如果组装成功,应该包括 信息 0 警告,0 错误。它还会在 Projects 文件夹中创建一个汇编清单文件和一个二进制文件。打开清单文件 intro.lst。第一列显示了程序行的存储地址,第二列显示了一、二或三字节的机器代码。行的其余部分是我们编写的程序。

WinArcadia 将会自动开始执行程序,但在它遇到我们输入的 $0000 断点时立即停止。在命令行中输入 s。这将逐步执行下一条指令,并在输出窗口中显示处理器的状态。第一条指令 - bcta,un reset - 将会做的唯一事情是将指令地址寄存器 IAR 设置为 $0004,即标签 reset 的地址等效值。

再次执行一步(在命令行中输入 s)。lodi,r0 $20 指令已执行,我们可以看到 r0 现在包含 $20。

再次执行两步。这两条指令设置了 程序状态字。这里我们的目标是禁用中断,将返回地址堆栈指针设置为零。参见 重置

下一条指令 eorz r0 是一条单字节指令,其作用是将 r0 设置为 $00,然后将其保存在 “效果” 寄存器中。这将关闭音频并清除 反转位

然后我们跳转到子程序 InitPVI。请注意,堆栈指针 SP 已递增到 1,并且返回地址堆栈中的第一个位置是 $000F。

子程序中的前两条指令将 r0 设置为 0,将 r3 设置为 $CA,为将所有 PVI 寄存器设置为 0 做准备。R3 将用作 索引寄存器

逐步执行程序,以便查看指令 stra,r0 object1,r3-。请注意,调试器向我们显示,索引寄存器 r3 已自动递减到 $C9,并且 r0 将存储在 SCORE34 中,这是我们可以写入的 PVI 中的最后一个地址。打开 工具 菜单并打开 UVI/PVI(s) 监视器。您应该看到 SCORERT 为 00。再执行两步,SCORELT 也将被设置为 OO。

如果我们需要调试某些内容,可以继续逐条指令地执行循环,但在我们的例子中,我们将使用 r l 命令跳到我们所在的循环的末尾。这将运行到下一条不进行分支的 BDRR/BDRA/BIRR/BIRA/BRNR/BRNA 指令之后。请注意,这对于 BCTR/BCTA/BCFR/BCFR 不起作用。

下一行将 R3 设置为索引,准备从数据表 one 中加载对象 1 的形状和位置数据。在逐步执行此循环时,您可以在 PVI 监视器中看到对象 1 的 X 和 Y 坐标被设置。现在没有太多可以看的了,因此单击模拟器窗口顶部的 暂停 按钮,程序将运行到结束。模拟器屏幕应该显示一个黑屏、四个白色得分数字和一个小的洋红色框。

调试器的一个特性是 引导光线,它显示了在执行每条指令时电视光束的位置。它可以通过命令行指令 gr 打开和关闭。此图显示了我们的程序覆盖 Interton 默认显示时的引导光线。如果您在逐条指令地执行程序时观察光束,您可以看到每条扫描线上的指令数量非常少。

要再次运行程序,请选中 文件 > 重置到游戏,程序应该会再次遇到 $0000 的断点。但是请注意,模拟器仍然显示我们的黑屏和洋红色框。更公平的做法可能是从选择 文件 > 重新初始化机器 开始。请注意,模拟器必须不处于暂停状态,这两个操作才能起作用。

回到绿色的 Interton 屏幕后,在命令行中键入 bl。这将在输出窗口中列出所有断点,它应该显示 ,因为它们在机器重新初始化时被清除了。因此,需要再次设置断点并组装程序。现在您可以重复上述所有操作,或者在命令行中键入 h 以查看调试器中可以使用的所有命令,并尝试一些命令。

调试器的一项最终也是强大的功能是条件断点。这些断点允许在满足特定条件时设置断点。例如,在命令行中输入 bp 001e r3 eq 1 并让程序运行。它应该在索引寄存器 r3 达到 1 时在 loopIS 中停止。还有许多其他条件选项,包括测试内存数据或任何寄存器,包括 PSU、PSL、SP、CC、RASn。有关详细信息,请参见 帮助 > 手册

另请参阅

[编辑 | 编辑源代码]

WinArcadia 的其他功能在本书其他地方的各种教程中进行了介绍


华夏公益教科书