跳转到内容

TI 83 Plus 汇编/输入

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

在 TI-83+ 上,有三种方法可以从汇编程序接收输入。前两种是 ROM 调用,最后一种是直接与计算器的键盘进行交互。

ROM 调用

[编辑 | 编辑源代码]

这是两个使用 b_call() 宏调用的例程。它们都是接收输入的好方法。

此例程将等待用户按下键,只有当用户按下时,才会返回主程序。此例程的优点是它为您处理 [2nd] 和 [Alpha] 键按下。参数: 返回值:累加器中的键值 要查看代码列表,请点击 这里

示例

.include "ti83plus.inc"
. . .
waitForUser:
   bCall(_GetKey)
   ; [x]Or: rst $28 \ .dw $4972
   ; [x]Or: bCall($4972)
   cp kEnter
   jr nz,waitForUser
   jr continue
continue:
   . . .

所以,该示例是一个简单的程序,它会暂停执行,直到用户按下 [Enter] 键。

此例程类似于 GetKey 例程,但有两个例外。第一个是,与 GetKey 例程不同,它不会等待用户按下键。第二个是它使用不同的键码集,您可以在 这里 找到。此外,它不会处理键组合,但您可以自己创建解析器。

参数: 返回值:如果按下键,则累加器中的键码,否则为 0(在累加器中)。 示例

.include "ti83plus.inc"
. . .
waitForUserCSC:
  bCall(_GetCSC)
  cp 0
  jr z,waitForUserCSC
  jr nz,continue
continue:
   . . .

此示例将一直等待,直到按下任意键。

直接输入

[编辑 | 编辑源代码]

注意:这是一种更高级的方法,因为它直接处理键盘驱动程序。 TI 83+ 计算器的键盘分为七个部分。这些是

  1. 方向键
  2. [ENTER],垂直延伸到 [CLEAR]
  3. [(-)],垂直延伸到 [VARS]
  4. [.],垂直延伸到 [DEL]
  5. [0],垂直延伸到 [MODE]
  6. [STO->],垂直延伸到 [2ND]
  7. [Y=],水平延伸到 [GRAPH]

要读取组的键值,您必须首先打开该组。这是通过写入端口 1 (01 十六进制) 来完成的。
位 0 - 组 1
位 1 - 组 2
位 2 - 组 3
等等。要打开一个组,您需要将其指定的位设置为 0(零)。

示例

   . . .
   waitForUserInputDirect:
    ; You cannot write an actual value to one of the ports. You must forward it through the (a) register.
    ; Use group '1'
    ld a,%11111101
    out ($01),a
    ; Read in a value
    in a,($01)
    ; Test bit 0 (Enter)
    bit 0,a
    ; If true, goto continue
    jr z,continue
    ; Else
    jr waitForUserInputDirect
   continue:
    . . .

它与之前的两个示例做同样的事情。请注意,此方法不需要任何 ROM 调用,并且可读性较差。有关键码列表,请访问 这里

华夏公益教科书