了解AVR编程的Subi语法

时间:2016-10-27 03:41:35

标签: avr atmel

我遇到了一段我不太了解并且无法找到任何相关信息的代码。它是一个接收寄存器的宏,然后应该在LCD上显示结果。

传入的寄存器的内容应该是一位数字。

.macro do_lcd_rdata
    mov lcd, @0
    subi lcd, -'0'
    rcall lcd_data
    rcall lcd_wait
.endmacro

我感到困惑的部分是subi lcd, -'0'这意味着什么。 SUBI立即减去,但我对-0'是什么感到困惑。

1 个答案:

答案 0 :(得分:2)

-'0'是字符“0”的ascii值的负数。该操作实际上是将0x30或48添加到寄存器中的值,以将其转换为数字的等效ascii字符值。

例如,6 - -0'= 6 + 48 = 54 ='6'