📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000150 00000000 00000000 00000054 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .debug_aranges 00000020 00000000 00000000 000001a4 2**0
CONTENTS, READONLY, DEBUGGING
2 .debug_pubnames 0000005f 00000000 00000000 000001c4 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_info 00000153 00000000 00000000 00000223 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_abbrev 0000010d 00000000 00000000 00000376 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_line 00000159 00000000 00000000 00000483 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_frame 00000060 00000000 00000000 000005dc 2**2
CONTENTS, READONLY, DEBUGGING
7 .debug_str 000000a9 00000000 00000000 0000063c 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_loc 0000003b 00000000 00000000 000006e5 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 46 00 jmp 0x8c ; 0x8c <__ctors_end>
4: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
8: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
10: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
14: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
18: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
1c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
20: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
24: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
28: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
2c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
30: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
34: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
38: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
3c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
40: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
44: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
48: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
4c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
50: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
54: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
58: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
5c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
60: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
64: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
68: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
6c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
70: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
74: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
78: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
7c: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
80: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
84: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
88: 0c 94 65 00 jmp 0xca ; 0xca <__bad_interrupt>
0000008c <__ctors_end>:
8c: 11 24 eor r1, r1
8e: 1f be out 0x3f, r1 ; 63
90: cf ef ldi r28, 0xFF ; 255
92: d0 e1 ldi r29, 0x10 ; 16
94: de bf out 0x3e, r29 ; 62
96: cd bf out 0x3d, r28 ; 61
00000098 <__do_copy_data>:
98: 11 e0 ldi r17, 0x01 ; 1
9a: a0 e0 ldi r26, 0x00 ; 0
9c: b1 e0 ldi r27, 0x01 ; 1
9e: e0 e5 ldi r30, 0x50 ; 80
a0: f1 e0 ldi r31, 0x01 ; 1
a2: 00 e0 ldi r16, 0x00 ; 0
a4: 0b bf out 0x3b, r16 ; 59
a6: 02 c0 rjmp .+4 ; 0xac <__do_copy_data+0x14>
a8: 07 90 elpm r0, Z+
aa: 0d 92 st X+, r0
ac: a0 30 cpi r26, 0x00 ; 0
ae: b1 07 cpc r27, r17
b0: d9 f7 brne .-10 ; 0xa8 <__do_copy_data+0x10>
000000b2 <__do_clear_bss>:
b2: 11 e0 ldi r17, 0x01 ; 1
b4: a0 e0 ldi r26, 0x00 ; 0
b6: b1 e0 ldi r27, 0x01 ; 1
b8: 01 c0 rjmp .+2 ; 0xbc <.do_clear_bss_start>
000000ba <.do_clear_bss_loop>:
ba: 1d 92 st X+, r1
000000bc <.do_clear_bss_start>:
bc: a0 30 cpi r26, 0x00 ; 0
be: b1 07 cpc r27, r17
c0: e1 f7 brne .-8 ; 0xba <.do_clear_bss_loop>
c2: 0e 94 86 00 call 0x10c ; 0x10c <main>
c6: 0c 94 a6 00 jmp 0x14c ; 0x14c <_exit>
000000ca <__bad_interrupt>:
ca: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000000ce <init_usart>:
//功 能: 串口0初始化函数
//参 数: 无
//返回值 : 无
/*------------------------------------*/
void init_usart(void)
{
ce: 10 92 90 00 sts 0x0090, r1
UBRR0H = (F_CPU /BAUD/16-1)/256;
UBRR0L = (F_CPU /BAUD/16-1)%256;
d2: 87 e4 ldi r24, 0x47 ; 71
d4: 89 b9 out 0x09, r24 ; 9
// UCSR0A |= (1 << RXC0);
UCSR0B |= (1 << RXEN0 )|(1 << TXEN0)|(1 << RXCIE0);
d6: 8a b1 in r24, 0x0a ; 10
d8: 88 69 ori r24, 0x98 ; 152
da: 8a b9 out 0x0a, r24 ; 10
UCSR0C |= (1 << UCSZ01 )|(1 <<UCSZ00);//设置UCSZ0,8位字符长度
dc: e5 e9 ldi r30, 0x95 ; 149
de: f0 e0 ldi r31, 0x00 ; 0
e0: 80 81 ld r24, Z
e2: 86 60 ori r24, 0x06 ; 6
e4: 80 83 st Z, r24
}
e6: 08 95 ret
000000e8 <send_char>:
//功 能: 串口0发送字符串函数
//参 数: *data
//返回值 : 无
/*------------------------------------*/
void send_char(uchar *data)
{
e8: fc 01 movw r30, r24
ea: 04 c0 rjmp .+8 ; 0xf4 <send_char+0xc>
while(*data)
{
while(!(UCSR0A&(1<<UDRE0)))//等待发送缓冲区为空
ec: 5d 9b sbis 0x0b, 5 ; 11
ee: fe cf rjmp .-4 ; 0xec <send_char+0x4>
{
}
UDR0 = *data;
f0: 8c b9 out 0x0c, r24 ; 12
data ++;
f2: 31 96 adiw r30, 0x01 ; 1
//参 数: *data
//返回值 : 无
/*------------------------------------*/
void send_char(uchar *data)
{
while(*data)
f4: 80 81 ld r24, Z
f6: 88 23 and r24, r24
f8: c9 f7 brne .-14 ; 0xec <send_char+0x4>
{
}
UDR0 = *data;
data ++;
}
}
fa: 08 95 ret
000000fc <send_char_hex>:
//功 能: 串口0发送十六进制数字函数
//参 数: hex
//返回值 : 无
/*------------------------------------*/
void send_char_hex(uchar hex)
{
fc: 5d 9b sbis 0x0b, 5 ; 11
fe: fe cf rjmp .-4 ; 0xfc <send_char_hex>
while(!(UCSR0A&(1<<UDRE0)))//等待发送缓冲区为空
{
}
UDR0 = hex;
100: 8c b9 out 0x0c, r24 ; 12
}
102: 08 95 ret
00000104 <receive_char_hex>:
//功 能: 串口0接收十六进制数字函数
//参 数: 无
//返回值 : recv_data
/*------------------------------------*/
uchar receive_char_hex(void)
{
104: 5f 9b sbis 0x0b, 7 ; 11
106: fe cf rjmp .-4 ; 0x104 <receive_char_hex>
while(!(UCSR0A&(1<<RXC0)))//等待接收标志位置位
{
}
return UDR0;
108: 8c b1 in r24, 0x0c ; 12
}
10a: 08 95 ret
0000010c <main>:
}
*/
//------------------------------------
//------------------------------------
int main(void)
{
10c: 80 91 61 00 lds r24, 0x0061
110: 80 6f ori r24, 0xF0 ; 240
112: 80 93 61 00 sts 0x0061, r24
uchar i;
LED_INIT();
cli(); //关全局中断
116: f8 94 cli
//返回值 : 无
/*------------------------------------*/
void init_usart(void)
{
UBRR0H = (F_CPU /BAUD/16-1)/256;
118: 10 92 90 00 sts 0x0090, r1
UBRR0L = (F_CPU /BAUD/16-1)%256;
11c: 87 e4 ldi r24, 0x47 ; 71
11e: 89 b9 out 0x09, r24 ; 9
// UCSR0A |= (1 << RXC0);
UCSR0B |= (1 << RXEN0 )|(1 << TXEN0)|(1 << RXCIE0);
120: 8a b1 in r24, 0x0a ; 10
122: 88 69 ori r24, 0x98 ; 152
124: 8a b9 out 0x0a, r24 ; 10
UCSR0C |= (1 << UCSZ01 )|(1 <<UCSZ00);//设置UCSZ0,8位字符长度
126: 80 91 95 00 lds r24, 0x0095
12a: 86 60 ori r24, 0x06 ; 6
12c: 80 93 95 00 sts 0x0095, r24
uchar i;
LED_INIT();
cli(); //关全局中断
init_usart();//USART初始化
sei(); //开全局中断
130: 78 94 sei
//参 数: 无
//返回值 : recv_data
/*------------------------------------*/
uchar receive_char_hex(void)
{
while(!(UCSR0A&(1<<RXC0)))//等待接收标志位置位
132: 5f 9b sbis 0x0b, 7 ; 11
134: fe cf rjmp .-4 ; 0x132 <main+0x26>
{
}
return UDR0;
136: 8c b1 in r24, 0x0c ; 12
//参 数: hex
//返回值 : 无
/*------------------------------------*/
void send_char_hex(uchar hex)
{
while(!(UCSR0A&(1<<UDRE0)))//等待发送缓冲区为空
138: 5d 9b sbis 0x0b, 5 ; 11
13a: fe cf rjmp .-4 ; 0x138 <main+0x2c>
{
}
UDR0 = hex;
13c: 8c b9 out 0x0c, r24 ; 12
i = receive_char_hex();
send_char_hex(i);
while(1)
{
LED_SET(0x0a);//发送结束指示
13e: 80 91 62 00 lds r24, 0x0062
142: 8f 70 andi r24, 0x0F ; 15
144: 80 6a ori r24, 0xA0 ; 160
146: 80 93 62 00 sts 0x0062, r24
14a: f9 cf rjmp .-14 ; 0x13e <main+0x32>
0000014c <_exit>:
14c: f8 94 cli
0000014e <__stop_program>:
14e: ff cf rjmp .-2 ; 0x14e <__stop_program>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -