Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Почему так ICC 7 компилирует
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Serega Doc
char STAY, INDEX;


в С
INDEX=(STAY + 0x04);
в Асме
0322 2D82 MOV R24,R2
0323 5F8C SUBI R24,0xFC
0324 2EA8 MOV R10,R24

Почему так?
Виктория
Хорошо бы попробовать еще

unsigned char STAY, INDEX;
Gematogen
Цитата(Serega Doc @ Oct 24 2005, 18:17)
char STAY, INDEX;


в С
INDEX=(STAY + 0x04);
в Асме
    0322 2D82      MOV R24,R2
    0323 5F8C      SUBI R24,0xFC
    0324 2EA8      MOV R10,R24

Почему так?
*




Все верно:
1. в R24 грузим STAY (R2)
2. а отнять от БАЙТА число= ((0xFF-слагаемое) +1), эквивалентно БАЙТ+слагаемое, т.е. STAY-(0xFF-0x04+1)=STAY+0x04
3. грузим результат в INDEX (R10)

все именно так потому, что 0xFC - допкод 4, т.е -4, а x+4=x-(-4)
SL@V@
Просто у AVR нет команд сложения регистра с константой, есть только ADIW - сложения слова с константой. Вот и используется команд SUBI.
Виктория
Цитата(SL@V@ @ Oct 24 2005, 20:05)
Просто у AVR нет команд сложения регистра с константой, есть только ADIW - сложения слова с константой. Вот и используется команд SUBI.
*


Классно blush.gif. Получилась "пятничная задачка"
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.