📄 file1.lst
字号:
226 ; code
227 ;--------------------------------------------------------
228 .area CSEG (CODE)
002C 229 __sdcc_program_startup:
002C 12s00r31 230 lcall _main
231 ; return from main will lock up
002F 80 FE 232 sjmp .
233 ;------------------------------------------------------------
234 ;Allocation info for local variables in function 'main'
235 ;------------------------------------------------------------
236 ;k Allocated to registers
237 ;m Allocated to registers r2 r3
238 ;------------------------------------------------------------
239 ;C:/hj51avr/code/c/file1.c:9: void main()
240 ; -----------------------------------------
241 ; function main
242 ; -----------------------------------------
0031 243 _main:
0002 244 ar2 = 0x02
0003 245 ar3 = 0x03
0004 246 ar4 = 0x04
0005 247 ar5 = 0x05
0006 248 ar6 = 0x06
0007 249 ar7 = 0x07
0000 250 ar0 = 0x00
0001 251 ar1 = 0x01
252 ;C:/hj51avr/code/c/file1.c:12: P0 = 0; //关闭数码显示
253 ; genAssign
0031 75 80 00 254 mov _P0,#0x00
255 ;C:/hj51avr/code/c/file1.c:13: P2 = 0; //
256 ; genAssign
0034 75 A0 00 257 mov _P2,#0x00
258 ;C:/hj51avr/code/c/file1.c:14: P3_7 = 0; //关闭蜂鸣器
259 ; genAssign
0037 C2 B7 260 clr _P3_7
261 ;C:/hj51avr/code/c/file1.c:16: while(1) //设置一个无限制循环
0039 262 00102$:
263 ;C:/hj51avr/code/c/file1.c:17: { m = 254;
264 ; genAssign
0039 7A FE 265 mov r2,#0xFE
003B 7B 00 266 mov r3,#0x00
267 ;C:/hj51avr/code/c/file1.c:18: P1 = m; //从第一个灯开始显示
268 ; genAssign
003D 75 90 FE 269 mov _P1,#0xFE
270 ;C:/hj51avr/code/c/file1.c:19: for(k=0;k<8;k++)
271 ; genAssign
0040 7C 00 272 mov r4,#0x00
0042 7D 00 273 mov r5,#0x00
0044 274 00104$:
275 ; genCmpLt
276 ; genCmp
0044 C3 277 clr c
0045 EC 278 mov a,r4
0046 94 08 279 subb a,#0x08
0048 ED 280 mov a,r5
0049 64 80 281 xrl a,#0x80
004B 94 80 282 subb a,#0x80
283 ; genIfxJump
284 ; Peephole 108 removed ljmp by inverse jump logic
004D 50 26 285 jnc 00107$
004F 286 00119$:
287 ;C:/hj51avr/code/c/file1.c:20: {delay(255);
288 ; genCall
004F 75 82 FF 289 mov dpl,#0xFF
0052 C0 02 290 push ar2
0054 C0 03 291 push ar3
0056 C0 04 292 push ar4
0058 C0 05 293 push ar5
005A 12s00rB0 294 lcall _delay
005D D0 05 295 pop ar5
005F D0 04 296 pop ar4
0061 D0 03 297 pop ar3
0063 D0 02 298 pop ar2
299 ;C:/hj51avr/code/c/file1.c:21: m <<=1;
300 ; genLeftShift
301 ; genLeftShiftLiteral
302 ; genlshTwo
0065 EB 303 mov a,r3
0066 CA 304 xch a,r2
0067 25 E0 305 add a,acc
0069 CA 306 xch a,r2
006A 33 307 rlc a
006B FB 308 mov r3,a
309 ;C:/hj51avr/code/c/file1.c:22: P1 = m; //表示,P1每次向左一位
310 ; genCast
006C 8A 90 311 mov _P1,r2
312 ;C:/hj51avr/code/c/file1.c:19: for(k=0;k<8;k++)
313 ; genPlus
314 ; genPlusIncr
315 ; tail increment optimized
006E 0C 316 inc r4
006F BC 00 D2 317 cjne r4,#0x00,00104$
0072 0D 318 inc r5
319 ; Peephole 112.b changed ljmp to sjmp
0073 80 CF 320 sjmp 00104$
0075 321 00107$:
322 ;C:/hj51avr/code/c/file1.c:24: m = 128;
323 ; genAssign
0075 7A 80 324 mov r2,#0x80
0077 7B 00 325 mov r3,#0x00
326 ;C:/hj51avr/code/c/file1.c:25: for(k=0;k<8;k++) //第二次重复
327 ; genAssign
0079 7C 00 328 mov r4,#0x00
007B 7D 00 329 mov r5,#0x00
007D 330 00108$:
331 ; genCmpLt
332 ; genCmp
007D C3 333 clr c
007E EC 334 mov a,r4
007F 94 08 335 subb a,#0x08
0081 ED 336 mov a,r5
0082 64 80 337 xrl a,#0x80
0084 94 80 338 subb a,#0x80
339 ; genIfxJump
340 ; Peephole 108 removed ljmp by inverse jump logic
0086 50 B1 341 jnc 00102$
0088 342 00120$:
343 ;C:/hj51avr/code/c/file1.c:26: {delay(255);
344 ; genCall
0088 75 82 FF 345 mov dpl,#0xFF
008B C0 02 346 push ar2
008D C0 03 347 push ar3
008F C0 04 348 push ar4
0091 C0 05 349 push ar5
0093 12s00rB0 350 lcall _delay
0096 D0 05 351 pop ar5
0098 D0 04 352 pop ar4
009A D0 03 353 pop ar3
009C D0 02 354 pop ar2
355 ;C:/hj51avr/code/c/file1.c:27: m >>= 1;
356 ; genRightShift
357 ; genSignedRightShift
358 ; genRightShiftLiteral
359 ; genrshTwo
009E EB 360 mov a,r3
009F A2 E7 361 mov c,acc.7
00A1 13 362 rrc a
00A2 CA 363 xch a,r2
00A3 13 364 rrc a
00A4 CA 365 xch a,r2
00A5 FB 366 mov r3,a
367 ;C:/hj51avr/code/c/file1.c:28: P1 = m; //表示,P1每次向右一位
368 ; genCast
00A6 8A 90 369 mov _P1,r2
370 ;C:/hj51avr/code/c/file1.c:25: for(k=0;k<8;k++) //第二次重复
371 ; genPlus
372 ; genPlusIncr
373 ; tail increment optimized
00A8 0C 374 inc r4
00A9 BC 00 D1 375 cjne r4,#0x00,00108$
00AC 0D 376 inc r5
377 ; Peephole 112.b changed ljmp to sjmp
00AD 80 CE 378 sjmp 00108$
00AF 379 00112$:
00AF 22 380 ret
381 ;------------------------------------------------------------
382 ;Allocation info for local variables in function 'delay'
383 ;------------------------------------------------------------
384 ;times Allocated to registers r2
385 ;t Allocated to registers r3 r4
386 ;i Allocated to registers
387 ;------------------------------------------------------------
388 ;C:/hj51avr/code/c/file1.c:35: void delay(unsigned char times)
389 ; -----------------------------------------
390 ; function delay
391 ; -----------------------------------------
00B0 392 _delay:
393 ; genReceive
00B0 AA 82 394 mov r2,dpl
395 ;C:/hj51avr/code/c/file1.c:37: int t=12000; //延时倍数
396 ; genAssign
00B2 7B E0 397 mov r3,#0xE0
00B4 7C 2E 398 mov r4,#0x2E
399 ;C:/hj51avr/code/c/file1.c:38: unsigned char i=times;
400 ; genAssign
00B6 401 00105$:
402 ;C:/hj51avr/code/c/file1.c:39: for(;i!=0;i--)
403 ; genCmpEq
00B6 BA 00 02 404 cjne r2,#0x00,00114$
405 ; Peephole 112.b changed ljmp to sjmp
00B9 80 1E 406 sjmp 00109$
00BB 407 00114$:
408 ; genAssign
00BB 8B 05 409 mov ar5,r3
00BD 8C 06 410 mov ar6,r4
00BF 411 00101$:
412 ;C:/hj51avr/code/c/file1.c:40: {for(;t!=0;t--){}}
413 ; genCmpEq
414 ; Peephole 241.b optimized compare
00BF E4 415 clr a
00C0 BD 00 04 416 cjne r5,#0x00,00115$
00C3 BE 00 01 417 cjne r6,#0x00,00115$
00C6 04 418 inc a
00C7 419 00115$:
00C7 420 00116$:
00C7 FF 421 mov r7,a
422 ; genAssign
00C8 8D 03 423 mov ar3,r5
00CA 8E 04 424 mov ar4,r6
425 ; genIfx
00CC EF 426 mov a,r7
427 ; genIfxJump
428 ; Peephole 109 removed ljmp by inverse jump logic
00CD 70 07 429 jnz 00107$
00CF 430 00117$:
431 ; genMinus
432 ; genMinusDec
433 ; tail decrement optimized
00CF 1D 434 dec r5
00D0 BD FF EC 435 cjne r5,#0xff,00101$
00D3 1E 436 dec r6
437 ; Peephole 112.b changed ljmp to sjmp
00D4 80 E9 438 sjmp 00101$
00D6 439 00107$:
440 ;C:/hj51avr/code/c/file1.c:39: for(;i!=0;i--)
441 ; genMinus
442 ; genMinusDec
00D6 1A 443 dec r2
444 ; Peephole 112.b changed ljmp to sjmp
00D7 80 DD 445 sjmp 00105$
00D9 446 00109$:
00D9 22 447 ret
448 .area CSEG (CODE)
449 .area XINIT (CODE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -