我遇到了一段我不太了解并且无法找到任何相关信息的代码。它是一个接收寄存器的宏,然后应该在LCD上显示结果。
传入的寄存器的内容应该是一位数字。
.macro do_lcd_rdata
mov lcd, @0
subi lcd, -'0'
rcall lcd_data
rcall lcd_wait
.endmacro
我感到困惑的部分是subi lcd, -'0'
这意味着什么。 SUBI立即减去,但我对-0'是什么感到困惑。
答案 0 :(得分:2)
-'0'
是字符“0”的ascii值的负数。该操作实际上是将0x30或48添加到寄存器中的值,以将其转换为数字的等效ascii字符值。
例如,6 - -0'= 6 + 48 = 54 ='6'