跳轉到內容

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 呼叫,並且可讀性較差。有關鍵碼列表,請訪問 這裡

華夏公益教科書