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。