2016-10-27 8 views
0

Я столкнулся с определенным фрагментом кода, который я не совсем понимаю и не смог найти никакой информации об этом. Это макрос, который принимает регистр, а затем должен отображать результат на ЖК-дисплее.Понимание синтаксиса Subi для программирования AVR

Содержимое передаваемого регистра должно быть одноразрядным числом.

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

Часть Я смущен о том, что subi lcd, -'0' это значит. SUBI вычитается сразу, но я смущен тем, что такое -0.

ответ

2

-'0' является отрицательным значением ascii символа '0'. Операция эффективно добавляет 0x30 или 48 к значению в регистре, чтобы превратить его в эквивалентное значение символа ascii цифры.

Например, 6 - -0 '= 6 + 48 = 54 =' 6 '

 Смежные вопросы

  • Нет связанных вопросов^_^