📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000007fc 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000038 00800060 000007fc 00000890 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000006 00800098 00800098 000008c8 2**0
ALLOC
3 .noinit 00000000 0080009e 0080009e 000008c8 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000008c8 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 000008c8 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 00000c34 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000014 00000000 00000000 00000cb8 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000035 00000000 00000000 00000ccc 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 0000027b 00000000 00000000 00000d01 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 0000018b 00000000 00000000 00000f7c 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00000199 00000000 00000000 00001107 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 0000010a 00000000 00000000 000012a0 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 <__ctors_end>
4: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
8: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
10: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
14: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
18: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
1c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
20: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
24: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
28: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
2c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
30: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
34: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
38: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
3c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
40: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
44: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
48: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
4c: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
50: 0c 94 45 00 jmp 0x8a <__bad_interrupt>
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d4 e0 ldi r29, 0x04 ; 4
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: ec ef ldi r30, 0xFC ; 252
68: f7 e0 ldi r31, 0x07 ; 7
6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start>
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a8 39 cpi r26, 0x98 ; 152
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: a8 e9 ldi r26, 0x98 ; 152
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start>
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: ae 39 cpi r26, 0x9E ; 158
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0c 94 78 00 jmp 0xf0 <main>
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0 <__vectors>
0000008e <uart_putchar>:
static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
//发送函数
static int uart_putchar(char c, FILE *stream)
{
8e: cf 93 push r28
90: c8 2f mov r28, r24
if (c == '\n')
92: 8a 30 cpi r24, 0x0A ; 10
94: 19 f4 brne .+6 ; 0x9c <uart_putchar+0xe>
uart_putchar('\r',stream);
96: 8d e0 ldi r24, 0x0D ; 13
98: 0e 94 47 00 call 0x8e <uart_putchar>
loop_until_bit_is_set(UCSRA,UDRE); //UDRE为1,则说明发送字符为空
9c: 5d 9b sbis 0x0b, 5 ; 11
9e: fe cf rjmp .-4 ; 0x9c <uart_putchar+0xe>
UDR = c;
a0: cc b9 out 0x0c, r28 ; 12
return 0;
}
a2: 80 e0 ldi r24, 0x00 ; 0
a4: 90 e0 ldi r25, 0x00 ; 0
a6: cf 91 pop r28
a8: 08 95 ret
000000aa <StdIoInit>:
//初始化io口
void StdIoInit(void)
{
UCSRB=0;
aa: 1a b8 out 0x0a, r1 ; 10
UBRRH=0;
ac: 10 bc out 0x20, r1 ; 32
UBRRL=0x2f; //9600
ae: 8f e2 ldi r24, 0x2F ; 47
b0: 89 b9 out 0x09, r24 ; 9
UCSRB=_BV(TXEN);
b2: 88 e0 ldi r24, 0x08 ; 8
b4: 8a b9 out 0x0a, r24 ; 10
stdout = &mystdout;
b6: 80 e6 ldi r24, 0x60 ; 96
b8: 90 e0 ldi r25, 0x00 ; 0
ba: 90 93 9b 00 sts 0x009B, r25
be: 80 93 9a 00 sts 0x009A, r24
stderr = &mystdout;
c2: 90 93 9d 00 sts 0x009D, r25
c6: 80 93 9c 00 sts 0x009C, r24
printf("Uart初始化完成!\n");
ca: 8e e6 ldi r24, 0x6E ; 110
cc: 90 e0 ldi r25, 0x00 ; 0
ce: 0e 94 9d 00 call 0x13a <puts>
d2: 08 95 ret
000000d4 <DelayMs>:
//若不定义,只能使程序进入一个无限循
#include <assert.h>
void DelayMs(uint16_t t)
{
d4: ac 01 movw r20, r24
uint16_t i;
for(i=0;i<t;i++)
d6: 20 e0 ldi r18, 0x00 ; 0
d8: 30 e0 ldi r19, 0x00 ; 0
da: 24 17 cp r18, r20
dc: 35 07 cpc r19, r21
de: 38 f4 brcc .+14 ; 0xee <DelayMs+0x1a>
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
e0: 88 ee ldi r24, 0xE8 ; 232
e2: 93 e0 ldi r25, 0x03 ; 3
__asm__ volatile (
e4: 01 97 sbiw r24, 0x01 ; 1
e6: f1 f7 brne .-4 ; 0xe4 <DelayMs+0x10>
e8: 2f 5f subi r18, 0xFF ; 255
ea: 3f 4f sbci r19, 0xFF ; 255
ec: f6 cf rjmp .-20 ; 0xda <DelayMs+0x6>
ee: 08 95 ret
000000f0 <main>:
_delay_loop_2(250*4);
}
//io口访问测试
int main(void)
{
f0: cf e5 ldi r28, 0x5F ; 95
f2: d4 e0 ldi r29, 0x04 ; 4
f4: de bf out 0x3e, r29 ; 62
f6: cd bf out 0x3d, r28 ; 61
// uchar a;
StdIoInit();
f8: 0e 94 55 00 call 0xaa <StdIoInit>
printf("hello!\nwelcome to here!\n>"); //发送测试字符
fc: 8e e7 ldi r24, 0x7E ; 126
fe: 90 e0 ldi r25, 0x00 ; 0
100: 9f 93 push r25
102: 8f 93 push r24
104: 0e 94 88 00 call 0x110 <printf>
sei(); //使能全局中断
108: 78 94 sei
/*//测试loop_until_bit_is_clear(),loop_until_bit_is_set();
loop_until_bit_is_clear(PINB,0);
printf("bit is clear\n");*/
/*//cbi(DDRB,0);读端口测试bit_is_set(),bit_is_clesr();
assert(bit_is_set(PINB,0));*/
/*{
DDRB = 0;
a = inp(PINB);
printf("%d\n>",a);
}*/
while(1);
10a: 0f 90 pop r0
10c: 0f 90 pop r0
10e: ff cf rjmp .-2 ; 0x10e <main+0x1e>
00000110 <printf>:
110: cf 93 push r28
112: df 93 push r29
114: cd b7 in r28, 0x3d ; 61
116: de b7 in r29, 0x3e ; 62
118: e5 e0 ldi r30, 0x05 ; 5
11a: f0 e0 ldi r31, 0x00 ; 0
11c: ec 0f add r30, r28
11e: fd 1f adc r31, r29
120: 81 91 ld r24, Z+
122: 91 91 ld r25, Z+
124: af 01 movw r20, r30
126: bc 01 movw r22, r24
128: 80 91 9a 00 lds r24, 0x009A
12c: 90 91 9b 00 lds r25, 0x009B
130: 0e 94 d3 00 call 0x1a6 <vfprintf>
134: df 91 pop r29
136: cf 91 pop r28
138: 08 95 ret
0000013a <puts>:
13a: 0f 93 push r16
13c: 1f 93 push r17
13e: cf 93 push r28
140: df 93 push r29
142: ec 01 movw r28, r24
144: 00 e0 ldi r16, 0x00 ; 0
146: 10 e0 ldi r17, 0x00 ; 0
148: e0 91 9a 00 lds r30, 0x009A
14c: f0 91 9b 00 lds r31, 0x009B
150: 83 81 ldd r24, Z+3 ; 0x03
152: 81 fd sbrc r24, 1
154: 03 c0 rjmp .+6 ; 0x15c <puts+0x22>
156: 8f ef ldi r24, 0xFF ; 255
158: 9f ef ldi r25, 0xFF ; 255
15a: 20 c0 rjmp .+64 ; 0x19c <puts+0x62>
15c: 89 91 ld r24, Y+
15e: 88 23 and r24, r24
160: 71 f0 breq .+28 ; 0x17e <puts+0x44>
162: e0 91 9a 00 lds r30, 0x009A
166: f0 91 9b 00 lds r31, 0x009B
16a: 20 85 ldd r18, Z+8 ; 0x08
16c: 31 85 ldd r19, Z+9 ; 0x09
16e: bf 01 movw r22, r30
170: f9 01 movw r30, r18
172: 09 95 icall
174: 89 2b or r24, r25
176: 91 f3 breq .-28 ; 0x15c <puts+0x22>
178: 0f ef ldi r16, 0xFF ; 255
17a: 1f ef ldi r17, 0xFF ; 255
17c: ef cf rjmp .-34 ; 0x15c <puts+0x22>
17e: e0 91 9a 00 lds r30, 0x009A
182: f0 91 9b 00 lds r31, 0x009B
186: 20 85 ldd r18, Z+8 ; 0x08
188: 31 85 ldd r19, Z+9 ; 0x09
18a: bf 01 movw r22, r30
18c: 8a e0 ldi r24, 0x0A ; 10
18e: f9 01 movw r30, r18
190: 09 95 icall
192: 89 2b or r24, r25
194: 11 f0 breq .+4 ; 0x19a <puts+0x60>
196: 0f ef ldi r16, 0xFF ; 255
198: 1f ef ldi r17, 0xFF ; 255
19a: c8 01 movw r24, r16
19c: df 91 pop r29
19e: cf 91 pop r28
1a0: 1f 91 pop r17
1a2: 0f 91 pop r16
1a4: 08 95 ret
000001a6 <vfprintf>:
1a6: 2f 92 push r2
1a8: 3f 92 push r3
1aa: 4f 92 push r4
1ac: 5f 92 push r5
1ae: 6f 92 push r6
1b0: 7f 92 push r7
1b2: 8f 92 push r8
1b4: 9f 92 push r9
1b6: af 92 push r10
1b8: bf 92 push r11
1ba: cf 92 push r12
1bc: df 92 push r13
1be: ef 92 push r14
1c0: ff 92 push r15
1c2: 0f 93 push r16
1c4: 1f 93 push r17
1c6: cf 93 push r28
1c8: df 93 push r29
1ca: cd b7 in r28, 0x3d ; 61
1cc: de b7 in r29, 0x3e ; 62
1ce: 62 97 sbiw r28, 0x12 ; 18
1d0: 0f b6 in r0, 0x3f ; 63
1d2: f8 94 cli
1d4: de bf out 0x3e, r29 ; 62
1d6: 0f be out 0x3f, r0 ; 63
1d8: cd bf out 0x3d, r28 ; 61
1da: ee 24 eor r14, r14
1dc: ff 24 eor r15, r15
1de: 87 01 movw r16, r14
1e0: 1c 01 movw r2, r24
1e2: 7e 87 std Y+14, r23 ; 0x0e
1e4: 6d 87 std Y+13, r22 ; 0x0d
1e6: 2a 01 movw r4, r20
1e8: cc 24 eor r12, r12
1ea: dd 24 eor r13, r13
1ec: fc 01 movw r30, r24
1ee: d7 82 std Z+7, r13 ; 0x07
1f0: c6 82 std Z+6, r12 ; 0x06
1f2: 83 81 ldd r24, Z+3 ; 0x03
1f4: 81 fd sbrc r24, 1
1f6: 68 c2 rjmp .+1232 ; 0x6c8 <__stack+0x269>
1f8: 8f ef ldi r24, 0xFF ; 255
1fa: 9f ef ldi r25, 0xFF ; 255
1fc: 78 c2 rjmp .+1264 ; 0x6ee <__stack+0x28f>
1fe: 8d 85 ldd r24, Y+13 ; 0x0d
200: 9e 85 ldd r25, Y+14 ; 0x0e
202: 01 96 adiw r24, 0x01 ; 1
204: 9e 87 std Y+14, r25 ; 0x0e
206: 8d 87 std Y+13, r24 ; 0x0d
208: c0 fe sbrs r12, 0
20a: 4b c2 rjmp .+1174 ; 0x6a2 <__stack+0x243>
20c: 8f 85 ldd r24, Y+15 ; 0x0f
20e: 80 53 subi r24, 0x30 ; 48
210: 8a 30 cpi r24, 0x0A ; 10
212: d0 f4 brcc .+52 ; 0x248 <vfprintf+0xa2>
214: 9f 85 ldd r25, Y+15 ; 0x0f
216: 90 33 cpi r25, 0x30 ; 48
218: 39 f4 brne .+14 ; 0x228 <vfprintf+0x82>
21a: 66 20 and r6, r6
21c: 29 f4 brne .+10 ; 0x228 <vfprintf+0x82>
21e: c3 fc sbrc r12, 3
220: 03 c0 rjmp .+6 ; 0x228 <vfprintf+0x82>
222: e0 e0 ldi r30, 0x00 ; 0
224: f1 e0 ldi r31, 0x01 ; 1
226: 8d c0 rjmp .+282 ; 0x342 <vfprintf+0x19c>
228: 8a e0 ldi r24, 0x0A ; 10
22a: 68 9e mul r6, r24
22c: 60 2c mov r6, r0
22e: 11 24 eor r1, r1
230: ff 85 ldd r31, Y+15 ; 0x0f
232: 6f 0e add r6, r31
234: 20 ed ldi r18, 0xD0 ; 208
236: 62 0e add r6, r18
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -