📄 test.lss
字号:
test.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 00000136 00800100 00001838 000018cc 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 00001838 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 0000060b 00800236 00800236 00001a02 2**0
ALLOC
3 .noinit 00000000 00800841 00800841 00001a02 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00001a02 2**0
CONTENTS
5 .stab 00000390 00000000 00000000 00001a04 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000037 00000000 00000000 00001d94 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000050 00000000 00000000 00001dcb 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000685 00000000 00000000 00001e1b 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00001b25 00000000 00000000 000024a0 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 000005ba 00000000 00000000 00003fc5 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 000014c7 00000000 00000000 0000457f 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 00000795 00000000 00000000 00005a46 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 46 00 jmp 0x8c
4: 0c 94 61 00 jmp 0xc2
8: 0c 94 61 00 jmp 0xc2
c: 0c 94 61 00 jmp 0xc2
10: 0c 94 61 00 jmp 0xc2
14: 0c 94 61 00 jmp 0xc2
18: 0c 94 61 00 jmp 0xc2
1c: 0c 94 61 00 jmp 0xc2
20: 0c 94 61 00 jmp 0xc2
24: 0c 94 61 00 jmp 0xc2
28: 0c 94 43 02 jmp 0x486
2c: 0c 94 61 00 jmp 0xc2
30: 0c 94 61 00 jmp 0xc2
34: 0c 94 61 00 jmp 0xc2
38: 0c 94 74 0b jmp 0x16e8
3c: 0c 94 61 00 jmp 0xc2
40: 0c 94 61 00 jmp 0xc2
44: 0c 94 61 00 jmp 0xc2
48: 0c 94 61 00 jmp 0xc2
4c: 0c 94 61 00 jmp 0xc2
50: 0c 94 61 00 jmp 0xc2
54: 0c 94 61 00 jmp 0xc2
58: 0c 94 61 00 jmp 0xc2
5c: 0c 94 61 00 jmp 0xc2
60: 0c 94 61 00 jmp 0xc2
64: 0c 94 61 00 jmp 0xc2
68: 0c 94 61 00 jmp 0xc2
6c: 0c 94 61 00 jmp 0xc2
70: 0c 94 61 00 jmp 0xc2
74: 0c 94 61 00 jmp 0xc2
78: 0c 94 da 01 jmp 0x3b4
7c: 0c 94 61 00 jmp 0xc2
80: 0c 94 61 00 jmp 0xc2
84: 0c 94 61 00 jmp 0xc2
88: 0c 94 61 00 jmp 0xc2
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: 12 e0 ldi r17, 0x02 ; 2
9a: a0 e0 ldi r26, 0x00 ; 0
9c: b1 e0 ldi r27, 0x01 ; 1
9e: e8 e3 ldi r30, 0x38 ; 56
a0: f8 e1 ldi r31, 0x18 ; 24
a2: 02 c0 rjmp .+4 ; 0xa8
000000a4 <.do_copy_data_loop>:
a4: 05 90 lpm r0, Z+
a6: 0d 92 st X+, r0
000000a8 <.do_copy_data_start>:
a8: a6 33 cpi r26, 0x36 ; 54
aa: b1 07 cpc r27, r17
ac: d9 f7 brne .-10 ; 0xa4
000000ae <__do_clear_bss>:
ae: 18 e0 ldi r17, 0x08 ; 8
b0: a6 e3 ldi r26, 0x36 ; 54
b2: b2 e0 ldi r27, 0x02 ; 2
b4: 01 c0 rjmp .+2 ; 0xb8
000000b6 <.do_clear_bss_loop>:
b6: 1d 92 st X+, r1
000000b8 <.do_clear_bss_start>:
b8: a1 34 cpi r26, 0x41 ; 65
ba: b1 07 cpc r27, r17
bc: e1 f7 brne .-8 ; 0xb6
be: 0c 94 a9 01 jmp 0x352
000000c2 <__bad_interrupt>:
c2: 0c 94 00 00 jmp 0x0
000000c6 <stringCopy>:
//拷贝接收缓存数据
INT8U stringCopy( INT8U tempstr[])
{
c6: ac 01 movw r20, r24
INT8U i,temp;
for (i=0,temp=0;(UartRxBuf[i+1] != 0 || UartRxBuf[i+2] != 0);i++)
c8: 30 e0 ldi r19, 0x00 ; 0
ca: 23 2f mov r18, r19
cc: 80 91 3f 02 lds r24, 0x023F
d0: 88 23 and r24, r24
d2: 21 f4 brne .+8 ; 0xdc
d4: 80 91 40 02 lds r24, 0x0240
d8: 88 23 and r24, r24
da: 81 f0 breq .+32 ; 0xfc
{
temp ^= UartRxBuf[i];
dc: e2 2f mov r30, r18
de: ff 27 eor r31, r31
e0: e2 5c subi r30, 0xC2 ; 194
e2: fd 4f sbci r31, 0xFD ; 253
e4: 80 81 ld r24, Z
e6: 38 27 eor r19, r24
e8: 2f 5f subi r18, 0xFF ; 255
ea: e2 2f mov r30, r18
ec: ff 27 eor r31, r31
ee: e2 5c subi r30, 0xC2 ; 194
f0: fd 4f sbci r31, 0xFD ; 253
f2: 81 81 ldd r24, Z+1 ; 0x01
f4: 88 23 and r24, r24
f6: 91 f7 brne .-28 ; 0xdc
f8: 82 81 ldd r24, Z+2 ; 0x02
fa: ee cf rjmp .-36 ; 0xd8
}
if(temp == UartRxBuf[i])//传输校验正确
fc: e2 2f mov r30, r18
fe: ff 27 eor r31, r31
100: e2 5c subi r30, 0xC2 ; 194
102: fd 4f sbci r31, 0xFD ; 253
104: 80 81 ld r24, Z
106: 38 17 cp r19, r24
108: 41 f4 brne .+16 ; 0x11a
{
strcpy(tempstr,UartRxBuf);
10a: 6e e3 ldi r22, 0x3E ; 62
10c: 72 e0 ldi r23, 0x02 ; 2
10e: ca 01 movw r24, r20
110: 0e 94 d3 0b call 0x17a6
return 1;
114: 81 e0 ldi r24, 0x01 ; 1
116: 90 e0 ldi r25, 0x00 ; 0
118: 08 95 ret
}
else
{
return 0;
11a: 80 e0 ldi r24, 0x00 ; 0
11c: 90 e0 ldi r25, 0x00 ; 0
}
}
11e: 08 95 ret
120: 08 95 ret
00000122 <sendChar1>:
//*************************************************/
//名称:sendChar1
//功能:字符输出函数
//说明:只适合单个字节的发送
//输入:data
//输出:无
//调用:无
//*************************************************/
void sendChar1(INT8U data)
{
122: 98 2f mov r25, r24
OS_ENTER_CRITICAL();
124: f8 94 cli
SERIAL_SEND;
126: c6 9a sbi 0x18, 6 ; 24
while ( ! (UCSR1A & (1 << UDRE1) ) );
128: 80 91 9b 00 lds r24, 0x009B
12c: 85 ff sbrs r24, 5
12e: fc cf rjmp .-8 ; 0x128
UCSR1A |= (1 << TXC1);
130: 80 91 9b 00 lds r24, 0x009B
134: 80 64 ori r24, 0x40 ; 64
136: 80 93 9b 00 sts 0x009B, r24
UDR1 = data;
13a: 90 93 9c 00 sts 0x009C, r25
while ( ! (UCSR1A & (1 << TXC1 ) ) );
13e: 80 91 9b 00 lds r24, 0x009B
142: 86 ff sbrs r24, 6
144: fc cf rjmp .-8 ; 0x13e
SERIAL_RECEIVE;
146: c6 98 cbi 0x18, 6 ; 24
OS_EXIT_CRITICAL();
148: 78 94 sei
14a: 08 95 ret
0000014c <clearBuf>:
}
//*************************************************/
//名称:clearBuf
//功能:清空接收缓存
//说明:
//输入:无
//输出:无
//调用:无
//*************************************************/
void clearBuf(void)
{
INT8U i;
for (i=0;i<UartRxCounter;i++)
14c: 40 e0 ldi r20, 0x00 ; 0
14e: 20 91 36 02 lds r18, 0x0236
152: 30 91 37 02 lds r19, 0x0237
156: 21 15 cp r18, r1
158: 31 05 cpc r19, r1
15a: 59 f0 breq .+22 ; 0x172
{
UartRxBuf[i] = 0;
15c: e4 2f mov r30, r20
15e: ff 27 eor r31, r31
160: e2 5c subi r30, 0xC2 ; 194
162: fd 4f sbci r31, 0xFD ; 253
164: 10 82 st Z, r1
166: 4f 5f subi r20, 0xFF ; 255
168: 84 2f mov r24, r20
16a: 99 27 eor r25, r25
16c: 82 17 cp r24, r18
16e: 93 07 cpc r25, r19
170: a8 f3 brcs .-22 ; 0x15c
}
UartRxCounter = 0;
172: 10 92 37 02 sts 0x0237, r1
176: 10 92 36 02 sts 0x0236, r1
17a: 08 95 ret
0000017c <Printf>:
}
//*************************************************/
//名称:Printf
//功能:字符串输出函数
//说明:只适合发送字符串数据
//输入:pointer
//输出:无
//调用:sendChar1
//*************************************************/
void Printf(INT8U *pointer)
{
17c: cf 93 push r28
17e: df 93 push r29
180: ec 01 movw r28, r24
while(*pointer || *(pointer+1))
{
sendChar1(*pointer++);
182: 88 81 ld r24, Y
184: 88 23 and r24, r24
186: 19 f4 brne .+6 ; 0x18e
188: 89 81 ldd r24, Y+1 ; 0x01
18a: 88 23 and r24, r24
18c: 49 f0 breq .+18 ; 0x1a0
18e: 89 91 ld r24, Y+
190: 0e 94 91 00 call 0x122
194: 88 81 ld r24, Y
196: 88 23 and r24, r24
198: d1 f7 brne .-12 ; 0x18e
19a: 89 81 ldd r24, Y+1 ; 0x01
19c: 88 23 and r24, r24
19e: b9 f7 brne .-18 ; 0x18e
1a0: df 91 pop r29
1a2: cf 91 pop r28
1a4: 08 95 ret
000001a6 <HexToAscii>:
}
}
//*************************************************/
//名称:HexToAscii
//功能:将十六进制数转为ASCII码
//说明:无
//输入:data
//输出:无
//调用:无
//*************************************************/
INT8U HexToAscii(INT8U data)
{
if (data > 9)
1a6: 8a 30 cpi r24, 0x0A ; 10
1a8: 18 f0 brcs .+6 ; 0x1b0
return (data + 0x37);
1aa: 89 5c subi r24, 0xC9 ; 201
1ac: 99 27 eor r25, r25
1ae: 08 95 ret
else
return (data + 0x30);
1b0: 80 5d subi r24, 0xD0 ; 208
1b2: 99 27 eor r25, r25
}
1b4: 08 95 ret
1b6: 08 95 ret
000001b8 <sendChar0>:
#ifdef DEBUG
void sendChar0(INT8U data)
{
while ( ! (UCSR0A & (1 << UDRE0) ) );
1b8: 5d 9b sbis 0x0b, 5 ; 11
1ba: fe cf rjmp .-4 ; 0x1b8
UCSR0A |= (1 << TXC0);
1bc: 5e 9a sbi 0x0b, 6 ; 11
UDR0 = data;
1be: 8c b9 out 0x0c, r24 ; 12
while ( ! (UCSR0A & (1 << TXC0 ) ) );
1c0: 5e 9b sbis 0x0b, 6 ; 11
1c2: fe cf rjmp .-4 ; 0x1c0
1c4: 08 95 ret
000001c6 <Put_Byte>:
}
void Put_Byte(INT8U data)
{
1c6: 1f 93 push r17
1c8: 18 2f mov r17, r24
sendChar0(HexToAscii( (data >> 4) & 0x0F) );
1ca: 82 95 swap r24
1cc: 8f 70 andi r24, 0x0F ; 15
1ce: 0e 94 d3 00 call 0x1a6
1d2: 0e 94 dc 00 call 0x1b8
sendChar0(HexToAscii( (data & 0x0F) ) );
1d6: 81 2f mov r24, r17
1d8: 8f 70 andi r24, 0x0F ; 15
1da: 0e 94 d3 00 call 0x1a6
1de: 0e 94 dc 00 call 0x1b8
1e2: 1f 91 pop r17
1e4: 08 95 ret
000001e6 <Print>:
}
//串口0发送字符串
void Print(INT8U *pointer)
{
1e6: cf 93 push r28
1e8: df 93 push r29
1ea: ec 01 movw r28, r24
while (*pointer)
{
sendChar0(*pointer++);
1ec: 88 81 ld r24, Y
1ee: 88 23 and r24, r24
1f0: 31 f0 breq .+12 ; 0x1fe
1f2: 89 91 ld r24, Y+
1f4: 0e 94 dc 00 call 0x1b8
1f8: 88 81 ld r24, Y
1fa: 88 23 and r24, r24
1fc: d1 f7 brne .-12 ; 0x1f2
1fe: df 91 pop r29
200: cf 91 pop r28
202: 08 95 ret
00000204 <Task1>:
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -