Наступил на неприятность:
char TestR26(void) { asm("CLI"); asm("PUSH R26 "); asm("PUSH R27 "); asm("LDI R26,0x80"); asm("LDI R27,0x03"); //Обратите внимание на значение!!! asm("LD R16,X+"); asm("MOV R16,R27"); asm("POP R27 "); asm("POP R26 "); asm("SEI"); }
Результат должен быть 3, а получается 0. Странно.
Наступил, когда у меня начало запарывать R27, в котором IAR положил переменную, а при вызове функций не сохранял (как собственно и должно быть) - модель ведь tiny.
Вообщем в Атмел я уже отписал, посмотрим, как среагируют.
PS Все таки сомнения гложут, посмотрите всE, вроде 3 - должно получиться на выходе (R16), а выходит 0
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|