📄 main.lst
字号:
1 .file "main.c"
2 .arch atmega8
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
76 .section .progmem.data,"a",@progbits
79 __c.0:
80 0000 C7EB CAE4 .string "\307\353\312\344\310\353\303\374\301\356\243\254w :\320\264 r: \266\301\n"
80 C8EB C3FC
80 C1EE A3AC
80 7720 3AD0
80 B420 723A
83 __c.1:
84 0019 C7EB CAE4 .string "\307\353\312\344\310\353\327\326\267\373\264\256:\n"
84 C8EB D7D6
84 B7FB B4AE
84 3A0A 00
87 __c.2:
88 0028 B1A3 B4E6 .string "\261\243\264\346\315\352\263\311!\n"
88 CDEA B3C9
88 210A 00
89 .data
90 .LC0:
91 0000 2563 00 .string "%c"
92 .LC1:
93 0003 2573 00 .string "%s"
94 .text
96 .global main
98 main:
1:main.c **** /*
2:main.c **** avr-libc EEPROM 读写测试程序
3:main.c **** main.c
4:main.c **** MCU:atmega8
5:main.c ****
6:main.c **** 芯艺 2004-09-11
7:main.c **** */
8:main.c ****
9:main.c **** #include <avr/io.h>
10:main.c **** #include <avr/pgmspace.h>
11:main.c **** #include <avr/eeprom.h>
12:main.c **** #include <stdio.h>
13:main.c ****
14:main.c **** unsigned char g_aEepDat[] __attribute__((section(".eeprom"))) ;
15:main.c ****
16:main.c **** char g_aString[81];
17:main.c ****
18:main.c **** void IoInit(void);
19:main.c ****
20:main.c **** int main(void)
21:main.c **** {
100 .LM1:
101 /* prologue: frame size=1 */
102 0000 C0E0 ldi r28,lo8(__stack - 1)
103 0002 D0E0 ldi r29,hi8(__stack - 1)
104 0004 DEBF out __SP_H__,r29
105 0006 CDBF out __SP_L__,r28
106 /* prologue end (size=4) */
22:main.c **** char c;
23:main.c **** unsigned int i;
24:main.c ****
25:main.c **** IoInit();
108 .LM2:
109 .LBB2:
110 0008 00D0 rcall IoInit
26:main.c ****
27:main.c **** printf_P(PSTR("请输入命令,w :写 r: 读\n"));
112 .LM3:
113 000a 80E0 ldi r24,lo8(__c.0)
114 000c 90E0 ldi r25,hi8(__c.0)
115 .L25:
116 000e 9F93 push r25
117 0010 8F93 push r24
118 0012 00D0 rcall printf_P
28:main.c ****
29:main.c **** while(1)
120 .LM4:
121 0014 0F90 pop __tmp_reg__
122 0016 0F90 pop __tmp_reg__
123 .L24:
30:main.c **** {
31:main.c **** scanf("%c",&c);
125 .LM5:
126 0018 CE01 movw r24,r28
127 001a 0196 adiw r24,1
128 001c 9F93 push r25
129 001e 8F93 push r24
130 0020 80E0 ldi r24,lo8(.LC0)
131 0022 90E0 ldi r25,hi8(.LC0)
132 0024 9F93 push r25
133 0026 8F93 push r24
134 0028 00D0 rcall scanf
32:main.c **** if(c=='r')
136 .LM6:
137 002a 8981 ldd r24,Y+1
138 002c 0F90 pop __tmp_reg__
139 002e 0F90 pop __tmp_reg__
140 0030 0F90 pop __tmp_reg__
141 0032 0F90 pop __tmp_reg__
142 0034 8237 cpi r24,lo8(114)
143 0036 C9F4 brne .L5
33:main.c **** {
34:main.c **** for(i=0;i<E2END;i++)
145 .LM7:
146 0038 EE24 clr r14
147 003a FF24 clr r15
148 003c 00E0 ldi r16,lo8(g_aEepDat)
149 003e 10E0 ldi r17,hi8(g_aEepDat)
150 .L12:
35:main.c **** {
36:main.c **** c=eeprom_read_byte(g_aEepDat+i);
152 .LM8:
153 0040 C801 movw r24,r16
154 0042 00D0 rcall eeprom_read_byte
155 0044 8983 std Y+1,r24
37:main.c **** if(c!=0)
157 .LM9:
158 0046 8823 tst r24
159 0048 61F0 breq .L7
38:main.c **** printf("%c",c);
161 .LM10:
162 004a 9927 clr r25
163 004c 00D0 rcall putchar
165 .LM11:
166 004e 0894 sec
167 0050 E11C adc r14,__zero_reg__
168 0052 F11C adc r15,__zero_reg__
169 0054 0F5F subi r16,lo8(-(1))
170 0056 1F4F sbci r17,hi8(-(1))
171 0058 8FEF ldi r24,lo8(511)
172 005a E816 cp r14,r24
173 005c 81E0 ldi r24,hi8(511)
174 005e F806 cpc r15,r24
175 0060 78F3 brlo .L12
176 .L7:
39:main.c **** else
40:main.c **** break;
41:main.c **** }
42:main.c **** printf("\n");
178 .LM12:
179 0062 8AE0 ldi r24,lo8(10)
180 0064 90E0 ldi r25,hi8(10)
181 0066 00D0 rcall putchar
182 0068 D7CF rjmp .L24
183 .L5:
43:main.c **** }
44:main.c **** else if(c=='w')
185 .LM13:
186 006a 8737 cpi r24,lo8(119)
187 006c A9F6 brne .L24
45:main.c **** {
46:main.c **** printf_P(PSTR("请输入字符串:\n"));
189 .LM14:
190 .LBB3:
191 006e 80E0 ldi r24,lo8(__c.1)
192 0070 90E0 ldi r25,hi8(__c.1)
193 0072 9F93 push r25
194 0074 8F93 push r24
195 0076 00D0 rcall printf_P
47:main.c **** scanf("%s",g_aString);
197 .LM15:
198 0078 00E0 ldi r16,lo8(g_aString)
199 007a 10E0 ldi r17,hi8(g_aString)
200 007c 1F93 push r17
201 007e 0F93 push r16
202 0080 80E0 ldi r24,lo8(.LC1)
203 0082 90E0 ldi r25,hi8(.LC1)
204 0084 9F93 push r25
205 0086 8F93 push r24
206 0088 00D0 rcall scanf
48:main.c ****
49:main.c **** //确定输入字符串长度
50:main.c **** for(i=0;i<E2END;i++)
208 .LM16:
209 008a EE24 clr r14
210 008c FF24 clr r15
211 008e 8DB7 in r24,__SP_L__
212 0090 9EB7 in r25,__SP_H__
213 0092 0696 adiw r24,6
214 0094 0FB6 in __tmp_reg__,__SREG__
215 0096 F894 cli
216 0098 9EBF out __SP_H__,r25
217 009a 0FBE out __SREG__,__tmp_reg__
218 009c 8DBF out __SP_L__,r24
219 009e F801 movw r30,r16
220 .L20:
51:main.c **** {
52:main.c **** if(g_aString[i]==0)
222 .LM17:
223 00a0 8191 ld r24,Z+
224 00a2 8823 tst r24
225 00a4 41F0 breq .L16
227 .LM18:
228 00a6 0894 sec
229 00a8 E11C adc r14,__zero_reg__
230 00aa F11C adc r15,__zero_reg__
231 00ac 9FEF ldi r25,lo8(511)
232 00ae E916 cp r14,r25
233 00b0 91E0 ldi r25,hi8(511)
234 00b2 F906 cpc r15,r25
235 00b4 A8F3 brlo .L20
236 .L16:
53:main.c **** break;
54:main.c **** }
55:main.c ****
56:main.c **** eeprom_write_block(g_aString,g_aEepDat,++i);
238 .LM19:
239 00b6 0894 sec
240 00b8 E11C adc r14,__zero_reg__
241 00ba F11C adc r15,__zero_reg__
242 00bc A701 movw r20,r14
243 00be 60E0 ldi r22,lo8(g_aEepDat)
244 00c0 70E0 ldi r23,hi8(g_aEepDat)
245 00c2 80E0 ldi r24,lo8(g_aString)
246 00c4 90E0 ldi r25,hi8(g_aString)
247 00c6 00D0 rcall eeprom_write_block
57:main.c **** printf_P(PSTR("保存完成!\n"));
249 .LM20:
250 00c8 80E0 ldi r24,lo8(__c.2)
251 00ca 90E0 ldi r25,hi8(__c.2)
252 00cc A0CF rjmp .L25
58:main.c **** }
59:main.c **** }
60:main.c **** }
254 .LM21:
255 .LBE3:
256 .LBE2:
257 /* epilogue: frame size=1 */
258 /* epilogue: noreturn */
259 /* epilogue end (size=0) */
260 /* function main size 103 (99) */
266 .global g_aEepDat
267 .section .eeprom,"aw",@progbits
270 g_aEepDat:
271 0000 00 .skip 1,0
272 .comm g_aString,81,1
275 .text
277 Letext:
278 /* File "main.c": code 103 = 0x0067 ( 99), prologues 4, epilogues 0 */
DEFINED SYMBOLS
*ABS*:00000000 main.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:79 .progmem.data:00000000 __c.0
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:83 .progmem.data:00000019 __c.1
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:87 .progmem.data:00000028 __c.2
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:98 .text:00000000 main
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:270 .eeprom:00000000 g_aEepDat
*COM*:00000051 g_aString
G:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccQraaaa.s:277 .text:000000ce Letext
*ABS*:00000000 *ABS*
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack
IoInit
printf_P
scanf
eeprom_read_byte
putchar
eeprom_write_block
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -