📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000000 00800100 0000015e 000001f2 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 0000015e 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 00000002 00800100 00800100 000001f2 2**0
ALLOC
3 .noinit 00000000 00800102 00800102 000001f2 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000001f2 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 000001f4 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 00000560 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000014 00000000 00000000 000005e4 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 0000008a 00000000 00000000 000005f8 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00000166 00000000 00000000 00000682 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 00000094 00000000 00000000 000007e8 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 000001e8 00000000 00000000 0000087c 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 000000f8 00000000 00000000 00000a64 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end>
2: 32 c0 rjmp .+100 ; 0x68 <__bad_interrupt>
4: 31 c0 rjmp .+98 ; 0x68 <__bad_interrupt>
6: 30 c0 rjmp .+96 ; 0x68 <__bad_interrupt>
8: 2f c0 rjmp .+94 ; 0x68 <__bad_interrupt>
a: 2e c0 rjmp .+92 ; 0x68 <__bad_interrupt>
c: 2d c0 rjmp .+90 ; 0x68 <__bad_interrupt>
e: 2c c0 rjmp .+88 ; 0x68 <__bad_interrupt>
10: 2b c0 rjmp .+86 ; 0x68 <__bad_interrupt>
12: 2a c0 rjmp .+84 ; 0x68 <__bad_interrupt>
14: 29 c0 rjmp .+82 ; 0x68 <__bad_interrupt>
16: 28 c0 rjmp .+80 ; 0x68 <__bad_interrupt>
18: 27 c0 rjmp .+78 ; 0x68 <__bad_interrupt>
1a: 26 c0 rjmp .+76 ; 0x68 <__bad_interrupt>
1c: 25 c0 rjmp .+74 ; 0x68 <__bad_interrupt>
1e: 24 c0 rjmp .+72 ; 0x68 <__bad_interrupt>
20: 23 c0 rjmp .+70 ; 0x68 <__bad_interrupt>
22: 22 c0 rjmp .+68 ; 0x68 <__bad_interrupt>
24: 38 c0 rjmp .+112 ; 0x96 <__vector_18>
26: 20 c0 rjmp .+64 ; 0x68 <__bad_interrupt>
28: 1f c0 rjmp .+62 ; 0x68 <__bad_interrupt>
2a: 1e c0 rjmp .+60 ; 0x68 <__bad_interrupt>
2c: 1d c0 rjmp .+58 ; 0x68 <__bad_interrupt>
2e: 1c c0 rjmp .+56 ; 0x68 <__bad_interrupt>
30: 1b c0 rjmp .+54 ; 0x68 <__bad_interrupt>
32: 1a c0 rjmp .+52 ; 0x68 <__bad_interrupt>
00000034 <__ctors_end>:
34: 11 24 eor r1, r1
36: 1f be out 0x3f, r1 ; 63
38: cf ef ldi r28, 0xFF ; 255
3a: d2 e0 ldi r29, 0x02 ; 2
3c: de bf out 0x3e, r29 ; 62
3e: cd bf out 0x3d, r28 ; 61
00000040 <__do_copy_data>:
40: 11 e0 ldi r17, 0x01 ; 1
42: a0 e0 ldi r26, 0x00 ; 0
44: b1 e0 ldi r27, 0x01 ; 1
46: ee e5 ldi r30, 0x5E ; 94
48: f1 e0 ldi r31, 0x01 ; 1
4a: 02 c0 rjmp .+4 ; 0x50 <.do_copy_data_start>
0000004c <.do_copy_data_loop>:
4c: 05 90 lpm r0, Z+
4e: 0d 92 st X+, r0
00000050 <.do_copy_data_start>:
50: a0 30 cpi r26, 0x00 ; 0
52: b1 07 cpc r27, r17
54: d9 f7 brne .-10 ; 0x4c <.do_copy_data_loop>
00000056 <__do_clear_bss>:
56: 11 e0 ldi r17, 0x01 ; 1
58: a0 e0 ldi r26, 0x00 ; 0
5a: b1 e0 ldi r27, 0x01 ; 1
5c: 01 c0 rjmp .+2 ; 0x60 <.do_clear_bss_start>
0000005e <.do_clear_bss_loop>:
5e: 1d 92 st X+, r1
00000060 <.do_clear_bss_start>:
60: a2 30 cpi r26, 0x02 ; 2
62: b1 07 cpc r27, r17
64: e1 f7 brne .-8 ; 0x5e <.do_clear_bss_loop>
66: 6b c0 rjmp .+214 ; 0x13e <main>
00000068 <__bad_interrupt>:
68: cb cf rjmp .-106 ; 0x0 <__vectors>
0000006a <port_init>:
#define serial_active_flag BIT0
void port_init(void)
{
DDRD = 0xff;
6a: 8f ef ldi r24, 0xFF ; 255
6c: 8a b9 out 0x0a, r24 ; 10
PORTD = 0x00;
6e: 1b b8 out 0x0b, r1 ; 11
DDRC = 0xff;
70: 87 b9 out 0x07, r24 ; 7
PORTC = 0x00;
72: 18 b8 out 0x08, r1 ; 8
DDRB = 0xff;
74: 84 b9 out 0x04, r24 ; 4
PORTB = 0x00;
76: 15 b8 out 0x05, r1 ; 5
78: 08 95 ret
0000007a <PutChar>:
}
void PutChar(unsigned char send_char)
{
7a: 98 2f mov r25, r24
#ifdef MCU_MEGA8
cli();
while(!(UCSRA&(1<<UDRE)));
UDR = send_char;
while(!(UCSRA&(1<<UDRE)));
sei();
#else
cli();
7c: f8 94 cli
while(!(UCSR0A & (1<<UDRE0)));
7e: 80 91 c0 00 lds r24, 0x00C0
82: 85 ff sbrs r24, 5
84: fc cf rjmp .-8 ; 0x7e <PutChar+0x4>
UDR0 = send_char;
86: 90 93 c6 00 sts 0x00C6, r25
while(!(UCSR0A & (1<<UDRE0)));
8a: 80 91 c0 00 lds r24, 0x00C0
8e: 85 ff sbrs r24, 5
90: fc cf rjmp .-8 ; 0x8a <PutChar+0x10>
sei();
92: 78 94 sei
94: 08 95 ret
00000096 <__vector_18>:
#endif
}
#ifdef MCU_MEGA8
ISR(USART_RXC_vect)
{
if(!TEST_BIT(g_ucByteFlag0, serial_active_flag))
{
SET_BIT(g_ucByteFlag0, serial_active_flag);
g_ucSerialDataBuf = UDR;
}
}
#else
ISR(USART_RX_vect)
{
96: 1f 92 push r1
98: 0f 92 push r0
9a: 0f b6 in r0, 0x3f ; 63
9c: 0f 92 push r0
9e: 11 24 eor r1, r1
a0: 8f 93 push r24
if(!TEST_BIT(g_ucByteFlag0, serial_active_flag))
a2: 80 91 01 01 lds r24, 0x0101
a6: 80 fd sbrc r24, 0
a8: 09 c0 rjmp .+18 ; 0xbc <__vector_18+0x26>
{
SET_BIT(g_ucByteFlag0, serial_active_flag);
aa: 80 91 01 01 lds r24, 0x0101
ae: 81 60 ori r24, 0x01 ; 1
b0: 80 93 01 01 sts 0x0101, r24
g_ucSerialDataBuf = UDR0;
b4: 80 91 c6 00 lds r24, 0x00C6
b8: 80 93 00 01 sts 0x0100, r24
bc: 8f 91 pop r24
be: 0f 90 pop r0
c0: 0f be out 0x3f, r0 ; 63
c2: 0f 90 pop r0
c4: 1f 90 pop r1
c6: 18 95 reti
000000c8 <uart_init>:
}
}
#endif
void uart_init(void)
{
#ifdef MCU_MEGA8
UCSRB = 0;
UCSRA = 0x00;
UCSRC = (1<<UCSZ1)|(1<<UCSZ0);
UBRRL = (FOSC/16/(BAUD+1))%256;
UBRRH = (FOSC/16/(BAUD+1))/256;
UCSRB = (1<<RXEN) | (1<<TXEN) | (1<<RXCIE);
#else
UCSR0B = 0;
c8: 10 92 c1 00 sts 0x00C1, r1
UCSR0A = 0x00;
cc: 10 92 c0 00 sts 0x00C0, r1
UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
d0: 86 e0 ldi r24, 0x06 ; 6
d2: 80 93 c2 00 sts 0x00C2, r24
UBRR0L = (FOSC/16/BAUD - 1)%256;
d6: 8c e0 ldi r24, 0x0C ; 12
d8: 80 93 c4 00 sts 0x00C4, r24
UBRR0H = (FOSC/16/BAUD - 1)/256;
dc: 10 92 c5 00 sts 0x00C5, r1
UCSR0B = (1<<RXCIE0) | (1<<RXEN0) | (1<<TXEN0);
e0: 88 e9 ldi r24, 0x98 ; 152
e2: 80 93 c1 00 sts 0x00C1, r24
e6: 08 95 ret
000000e8 <SerailData>:
#endif
}
void SerailData(void)
{
if(TEST_BIT(g_ucByteFlag0, serial_active_flag))
e8: 80 91 01 01 lds r24, 0x0101
ec: 80 ff sbrs r24, 0
ee: 08 95 ret
{
PutChar(g_ucSerialDataBuf);
f0: 80 91 00 01 lds r24, 0x0100
f4: c2 df rcall .-124 ; 0x7a <PutChar>
switch(g_ucSerialDataBuf)
f6: 80 91 00 01 lds r24, 0x0100
fa: 99 27 eor r25, r25
fc: 82 36 cpi r24, 0x62 ; 98
fe: 91 05 cpc r25, r1
100: a1 f0 breq .+40 ; 0x12a <SerailData+0x42>
102: 83 36 cpi r24, 0x63 ; 99
104: 91 05 cpc r25, r1
106: 64 f0 brlt .+24 ; 0x120 <SerailData+0x38>
108: 83 36 cpi r24, 0x63 ; 99
10a: 91 05 cpc r25, r1
10c: 91 f0 breq .+36 ; 0x132 <SerailData+0x4a>
10e: 84 36 cpi r24, 0x64 ; 100
110: 91 05 cpc r25, r1
112: 89 f0 breq .+34 ; 0x136 <SerailData+0x4e>
{
case 'a': Red_Led_on();
break;
case 'b': Red_Led_off();
break;
case 'c': Green_Led_on();
break;
case 'd': Green_Led_off();
break;
}
CLEAR_BIT(g_ucByteFlag0, serial_active_flag);
114: 80 91 01 01 lds r24, 0x0101
118: 8e 7f andi r24, 0xFE ; 254
11a: 80 93 01 01 sts 0x0101, r24
11e: 08 95 ret
120: 81 36 cpi r24, 0x61 ; 97
122: 91 05 cpc r25, r1
124: b9 f7 brne .-18 ; 0x114 <SerailData+0x2c>
126: 5f 98 cbi 0x0b, 7 ; 11
128: f5 cf rjmp .-22 ; 0x114 <SerailData+0x2c>
12a: 8b b1 in r24, 0x0b ; 11
12c: 8f 67 ori r24, 0x7F ; 127
12e: 8b b9 out 0x0b, r24 ; 11
130: f1 cf rjmp .-30 ; 0x114 <SerailData+0x2c>
132: 5e 98 cbi 0x0b, 6 ; 11
134: ef cf rjmp .-34 ; 0x114 <SerailData+0x2c>
136: 8b b1 in r24, 0x0b ; 11
138: 8f 6b ori r24, 0xBF ; 191
13a: 8b b9 out 0x0b, r24 ; 11
13c: eb cf rjmp .-42 ; 0x114 <SerailData+0x2c>
0000013e <main>:
}
}
int main(void)
{
13e: cf ef ldi r28, 0xFF ; 255
140: d2 e0 ldi r29, 0x02 ; 2
142: de bf out 0x3e, r29 ; 62
144: cd bf out 0x3d, r28 ; 61
port_init();
146: 91 df rcall .-222 ; 0x6a <port_init>
uart_init();
148: bf df rcall .-130 ; 0xc8 <uart_init>
g_ucByteFlag0 = 0;
14a: 10 92 01 01 sts 0x0101, r1
PutChar('O');
14e: 8f e4 ldi r24, 0x4F ; 79
150: 94 df rcall .-216 ; 0x7a <PutChar>
PutChar('K');
152: 8b e4 ldi r24, 0x4B ; 75
154: 92 df rcall .-220 ; 0x7a <PutChar>
sei();
156: 78 94 sei
while(1)
{
SerailData();
158: c7 df rcall .-114 ; 0xe8 <SerailData>
15a: c6 df rcall .-116 ; 0xe8 <SerailData>
15c: fd cf rjmp .-6 ; 0x158 <main+0x1a>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -