TI 83 Plus 汇编语言/Hello World
在本节中,您将创建一个程序,在屏幕上显示“Hello, World”。
在记事本上创建一个新的文本文件,并键入以下文本
.NOLIST
#define EQU .equ
#define equ .equ
#define END .end
#define end .end
#include "ti83plus.inc"
.LIST
.org 9D93h
.db $BB,$6D
ld a,0 ; load the value 0 to register a, the ''accumulator''
ld (CURCOL),a ; assign the contents of register a to memory address (CURCOL) in the RAM
ld (CURROW),a ; assign the contents of register a to memory address (CURROW) in the RAM
ld hl,text ; load the data in label "text" to register hl
B_CALL(_PutS) ; calls a function in ti83plus.inc to print text
B_CALL(_NewLine) ; calls a function in ti83plus.inc to insert a lnbreak (for legibility)
ret ; returns from the program to the calc's OS
text:
.db "Hello, World",0
.end
end
制表符的线条需要使用制表符!将此文件保存为 myprog.z80 到您的“Programs”子文件夹中。此外,请注意,命令 B_CALL() 可能需要更改为 bcall(),具体取决于编译过程中使用的包含文件的内容。如果命令(B_CALL 或 bcall)与 ti83plus.inc 中定义的命令不同,编译器将记录一个错误,尽管在 ti83plus.inc 的最流行版本中,它是 bcall - 只需将一个替换为另一个就可以解决这个问题。
编译本质上意味着将文本代码转换为机器可以读取的代码。
要编译程序 myprog.z80,首先打开命令提示符(它应该在附件中)。您应该会看到一个黑色的窗口,里面有一些白色的文本,显示您所在的文件夹。第一步是将文件夹更改为您的程序文件夹。为此,请使用以下命令
- cd 子文件夹名称(这将进入您告诉它的子文件夹。)
- cd ..(这将立即进入包含您所在文件夹的文件夹。)
之后,您需要键入
- compile myprog
如果您正确地遵循了所有说明,这应该会自动编译 myprog.z80。
完成的程序应该位于您的“Programs”文件夹中,名为 myprog.8xp。
在您的计算机上,打开 TI 83 Plus 闪存调试器以创建一个用于测试目的的假计算器。点击白色纸张图标创建一个新的假计算器,然后选择 83+ 计算器。然后点击 Load... RAM File 并打开您编译的程序 (myprog.8xp)。最后,点击三角形播放按钮开始模拟。在假计算器上,按 [2nd]+[Catalog] 呼出目录,然后向下箭头到 Asm(. 按 Enter 将命令插入屏幕,然后选择您的程序 ([PRGM],[ENTER])。计算器屏幕应该显示 Asm(prgmMYPROG)。现在按 Enter,屏幕上应该显示“Hello World”。
在将程序用于真实计算器之前,始终在闪存调试器上测试您的程序,因为您的真实计算器有很大可能会崩溃。
现在唯一重要的行是中间的行
ld a,0
ld (CURCOL),a
ld (CURROW),a
ld hl,text
B_CALL(_PutS)
ret
text:
.db "Hello, World",0
当计算器执行程序时,它会逐行遵循命令。第一行 (ld a,0) 将零加载到 a 中,a 是一个常用的寄存器。所以现在寄存器 a = 0。接下来的两行将该数字加载到 RAM 中的光标行和列扇区。所以现在光标位于 0,0,接下来的文本将显示在该位置。第四行 (ld hl,text) 将 .db "Hello... 的位置加载到 hl 中,hl 是另一个寄存器。B_Call(_PutS) 获取 hl 指定的文本,并将其显示在当前光标位置。最后,ret 告诉计算器退出程序。现在您应该对第一个程序中大多数行的功能有一个模糊的了解。
这个小程序虽然很小,但远非最佳。ld a,0 可以用 xor a 替换,只要您不需要保留标志即可。XOR A(见 [1])反转任何为 1 的位,所以基本上它将 A 设置为零。这还不是全部,可以用 ld (CurRow),hl 将 CurCol 和 CurRow 一次性加载,L 将进入 CurRow,H 将进入 CurCol。
ld hl,0
ld (CurRow),hl
ld hl,text
B_CALL(_PutS)
ret
text: .db "Hello, World",0