ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
20 мая
32262 Топик полностью
adw (04.06.2005 23:55, просмотров: 1) ответил nestandart на и тут спрошу: avr asm. как элегантно проверить r29:r28 на нуль ? (а ещё на FFFF)
вдогонку к ответам двух уважаемых господ Проверка на ноль: sbiw R28,0 breq is_zero Если "sbiw" не поддерживается, то: cpi R28,0 ;здесь можно использовать sub вместо cpi sbci R29,0 breq is_zero Если исходного содержимого не жалко, то: or R28,R29 breq is_zero Проверка на $FFFF: В этом варианте исходное слово увеличивается на 1: adiw R28,1 breq is_ffff В этом, требуется свободный верхний регистр: mov R16,R29 cpi R28,$FF sbci R16,$FF breq is_ffff В этом требуется любой регистр: mov R16,R28 and R16,R29 inc R16 breq is_ffff Если лишнего свободного регистра нет вааще, а исходное содержимое нужно сохранить, то остается только cpi и куча прыжков.