TI 83 Plus 彙編/高階
外觀
將累加器 (A) 設定為零的常用快捷方式是將其與自身異或
; instead of doing this
ld a,0
; you can do this
xor a
這非常普遍,不會影響程式碼的可讀性。事實上,它如此常見,以至於它甚至可能比使用“ld a,0”更具可讀性。但請注意,“xor a”會修改標誌(例如,它會設定 z 標誌並重置進位),而“ld a,0”不會修改任何標誌。
在向記憶體中的兩個連續位元組寫入資料時,使用一個 16 位暫存器通常比使用兩個帶 a 的載入指令更快且更小。
; rather than
ld a,$10
ld (penCol),a
ld a,$20
ld (penCol),a
; you can do
ld de,$2010
ld (penCol),de
這將 e 載入到 (penCol) 中,並將 d 載入到 (penCol+1) 中。penCol+1 是 penRow。但是,請記住,使用 hl 讀取/寫入記憶體地址比使用 de/bc 更快(4 個 t 狀態)且更小。
如果您想知道累加器值是否在其他兩個值(例如 10 和 25)之間,您可能會想做類似這樣的事情
cp 10 ; check if a >= 10
jr c,wrongValue
cp 26 ; check if a <= 25
jr nc,wrongValue
; do whatever you wanted to do
wrongValue:
; ...
但是,您無需進行兩次比較和跳轉,可以將第一個 cp 更改為減法。這將任何小於 10 的數字轉換為負數。例如
sub 10 ; a value of 10 now equals 0
cp 26-10 ; because of the sub 10, we now need to check if a is between 0 and 16, not 10 and 26
jr nc,wrongValue
; do whatever you wanted to do
wrongValue:
; ...
這種方法可以避免第一個 jr。