реклама на сайте
подробности

 
 
> WinAVR+AVRStudio Дизассемблирование
LSerg
сообщение Sep 13 2010, 08:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 1-06-08
Пользователь №: 37 967



Вопрос.
Пишу программу в WinAVR-20090313 для mega128, потом пытаюсь отладить через AVRStudio. Загружаю проект в студию включаю view ->Diasassembler помогите разобраться в том как она выдает результат по сравнению с .lss файлом?
1. Что означает первое число с "+" в начале строки?
2. Код команды перевернут, поменяны местами старший и младший байт по сравнению с .lss файлом?
3. По ходу встречаются комментарии
Код
@00000000: _delay_loop_2
---- UNKNOWN_FILE ---------------------------------------------------------------------------------
0: File not found
+00000000:   940C01EF    JMP       0x000001EF     Jump
....
311: File not found
+0000022F:   2E0F        MOV       R0,R31         Copy register
+00000230:   E3FE        LDI       R31,0x3E       Load immediate
+00000231:   2EEF        MOV       R14,R31        Copy register
+00000232:   24FF        CLR       R15            Clear Register
+00000233:   2DF0        MOV       R31,R0         Copy register
313: File not found
+00000234:   E36D        LDI       R22,0x3D       Load immediate
+00000235:   E070        LDI       R23,0x00       Load immediate
---- LCD_winAVR.c ---------------------------------------------------------------------------------
4284:         for(k=0; k<size_data; k++)
+00000236:   01D9        MOVW      R26,R18        Copy register pair
+00000237:   0FA4        ADD       R26,R20        Add without carry
+00000238:   1FB5        ADC       R27,R21        Add with carry
4286:             eeprom_write_byte(Adr_EE, data[k]);        //
+00000239:   01F8        MOVW      R30,R16        Copy register pair
+0000023A:   0FE2        ADD       R30,R18        Add without carry
+0000023B:   1FF3        ADC       R31,R19        Add with carry
+0000023C:   8190        LDD       R25,Z+0        Load indirect with displacement
---- d:\project\bzu_second\mega128\winavr\v_60/d:/winavr-20090313/lib/gcc/../../avr/include/avr/eeprom.h
300: File not found
+0000023D:   8188        LDD       R24,Y+0        Load indirect with displacement
+0000023E:   FD81        SBRC      R24,1          Skip if bit in register cleared
+0000023F:   CFFD        RJMP      PC-0x0002      Relative jump
311: File not found
+00000240:   01F7        MOVW      R30,R14        Copy register pair
+00000241:   83B1        STD       Z+1,R27        Store indirect with displacement
+00000242:   83A0        STD       Z+0,R26        Store indirect with displacement
313: File not found
+00000243:   01FB        MOVW      R30,R22        Copy register pair
+00000244:   8390        STD       Z+0,R25        Store indirect with displacement
315: File not found
+00000245:   B60F        IN        R0,0x3F        In from I/O location
+00000246:   94F8        CLI                      Global Interrupt Disable
+00000247:   9AE2        SBI       0x1C,2         Set bit in I/O register
+00000248:   9AE1        SBI       0x1C,1         Set bit in I/O register
+00000249:   BE0F        OUT       0x3F,R0        Out to I/O location
+0000024A:   5F2F        SUBI      R18,0xFF       Subtract immediate
+0000024B:   4F3F        SBCI      R19,0xFF       Subtract immediate with carry


Какие файлы она не может найти, можно ли сделать чтобы этих ошибок не было?

4. Может в ассемблере на разобрался но эти команды похоже разные
.lss код
Код
    ac9c:    31 e0           ldi    r19, 0x01; 1
    ac9e:    f9 01           movw    r30, r18
    aca0:    31 97           sbiw    r30, 0x01; 1
    aca2:    f1 f7           brne    .-4     ; 0xaca0 <main+0x3e>
        {
            // wait 1/10 ms
            _delay_loop_2(((F_CPU) / 4e3) / 10);
            __ticks --;
    aca4:    01 97           sbiw    r24, 0x01; 1
        __ticks = 1;
    else if (__tmp > 65535)
    {
        //    __ticks = requested delay in 1/10 ms
        __ticks = (uint16_t) (__ms * 10.0);
        while(__ticks)
[b]    aca6:    d9 f7           brne    .-10    ; 0xac9e <main+0x3c>[/b]

    _delay_ms(30);        //    1000 Задержка на переходные процессы


AVRStudio

Код
---- d:\project\bzu_second\mega128\winavr\v_60/d:/winavr-20090313/lib/gcc/../../avr/include/util/delay_basic.h
105: File not found
+0000564D:   E720        LDI       R18,0x70       Load immediate
+0000564E:   E031        LDI       R19,0x01       Load immediate
+0000564F:   01F9        MOVW      R30,R18        Copy register pair
+00005650:   9731        SBIW      R30,0x01       Subtract immediate from word
+00005651:   F7F1        BRNE      PC-0x01        Branch if not equal
---- d:\project\bzu_second\mega128\winavr\v_60/d:/winavr-20090313/lib/gcc/../../avr/include/util/delay.h
124: File not found
+00005652:   9701        SBIW      R24,0x01       Subtract immediate from word
120: File not found
[b]+00005653:   F7D9        BRNE      PC-0x04        Branch if not equal[/b]
---- LCD_winAVR.c ---------------------------------------------------------------------------------
8138:         Init_Port();
+00005654:   940E0932    CALL      0x00000932     Call subroutine
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 16:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01349 секунд с 7
ELECTRONIX ©2004-2016