2016-10-27 38 views
0

我遇到了一些我不太瞭解的代碼,並且無法找到任何信息。這是一個接收寄存器並將結果顯示在LCD上的宏。瞭解AVR編程的Subi語法

傳入寄存器的內容應該是單個數字。

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

我感到困惑的部分是什麼subi lcd, -'0'這意味着什麼。 SUBI立即減去,但我對'0'是什麼感到困惑。

回答

2

-'0'是字符'0'的ascii值的負值。該操作實際上將0x30或48添加到寄存器中的值,以將其轉換爲數字的等效ascii字符值。

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