我遇到了一段我不太理解的代码,无法找到关于它的任何信息。它是一个宏,它接收一个寄存器,然后应该在LCD上显示结果。
正在传递的寄存器的内容应该是一个单数数字。
.macro do_lcd_rdata
mov lcd, @0
subi lcd, -'0'
rcall lcd_data
rcall lcd_wait
.endmacro我困惑的部分是subi lcd, -'0'这意味着什么。减法是立即减法,但我对-'0‘是什么感到困惑。
发布于 2016-10-27 17:47:54
-'0'是字符'0‘的ascii值的负值。该操作有效地将0x30或48添加到寄存器中的值中,以将其转换为数字的等效ascii字符值。
例如,6 -'0‘=6+ 48 = 54 = '6’
https://stackoverflow.com/questions/40275749
复制相似问题