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