📄 file1.rst
字号:
226 ; code
227 ;--------------------------------------------------------
228 .area CSEG (CODE)
002C 229 __sdcc_program_startup:
002C 12 00 31 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 12 00 B0 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 12 00 B0 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 + -