Пишу программу в 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
---- 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 Задержка на переходные процессы
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
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