TI 83 Plus 彙編/輸入
外觀
在 TI-83+ 上,有三種方法可以從彙編程式接收輸入。前兩種是 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+ 計算器的鍵盤分為七個部分。這些是
- 方向鍵
- [ENTER],垂直延伸到 [CLEAR]
- [(-)],垂直延伸到 [VARS]
- [.],垂直延伸到 [DEL]
- [0],垂直延伸到 [MODE]
- [STO->],垂直延伸到 [2ND]
- [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 呼叫,並且可讀性較差。有關鍵碼列表,請訪問 這裡。