📄 file2.rst
字号:
221 ;--------------------------------------------------------
222 ; Home
223 ;--------------------------------------------------------
224 .area HOME (CODE)
225 .area CSEG (CODE)
226 ;--------------------------------------------------------
227 ; code
228 ;--------------------------------------------------------
229 .area CSEG (CODE)
002C 230 __sdcc_program_startup:
002C 12 00 31 231 lcall _main
232 ; return from main will lock up
002F 80 FE 233 sjmp .
234 ;------------------------------------------------------------
235 ;Allocation info for local variables in function 'main'
236 ;------------------------------------------------------------
237 ;k Allocated to registers
238 ;------------------------------------------------------------
239 ;C:/hj51avr/code/c/file2.c:12: 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/file2.c:15: P0 = 0; //关闭数码显示
253 ; genAssign
0031 75 80 00 254 mov _P0,#0x00
255 ;C:/hj51avr/code/c/file2.c:16: P2 = 0; //
256 ; genAssign
0034 75 A0 00 257 mov _P2,#0x00
258 ;C:/hj51avr/code/c/file2.c:17: P3_7 = 0; //关闭蜂鸣器
259 ; genAssign
0037 C2 B7 260 clr _P3_7
261 ;C:/hj51avr/code/c/file2.c:19: while(1) //设置一个无限制循环
0039 262 00102$:
263 ;C:/hj51avr/code/c/file2.c:20: { P1 = 254; //从第一个灯开始显示
264 ; genAssign
0039 75 90 FE 265 mov _P1,#0xFE
266 ;C:/hj51avr/code/c/file2.c:21: for(k=0;k<8;k++)
267 ; genAssign
003C 7A 00 268 mov r2,#0x00
003E 7B 00 269 mov r3,#0x00
0040 270 00104$:
271 ; genCmpLt
272 ; genCmp
0040 C3 273 clr c
0041 EA 274 mov a,r2
0042 94 08 275 subb a,#0x08
0044 EB 276 mov a,r3
0045 64 80 277 xrl a,#0x80
0047 94 80 278 subb a,#0x80
279 ; genIfxJump
280 ; Peephole 108 removed ljmp by inverse jump logic
0049 50 1B 281 jnc 00118$
004B 282 00119$:
283 ;C:/hj51avr/code/c/file2.c:22: {delay(255); //左移采用c代码写的延时子程序,(速度比较慢)
284 ; genCall
004B 75 82 FF 285 mov dpl,#0xFF
004E C0 02 286 push ar2
0050 C0 03 287 push ar3
0052 12 00 8E 288 lcall _delay
0055 D0 03 289 pop ar3
0057 D0 02 290 pop ar2
291 ;C:/hj51avr/code/c/file2.c:23: P1 <<= 1; //表示,p1每次向左一位
292 ; genLeftShift
293 ; genLeftShiftLiteral
294 ; genlshOne
0059 E5 90 295 mov a,_P1
005B 25 E0 296 add a,acc
005D F5 90 297 mov _P1,a
298 ;C:/hj51avr/code/c/file2.c:21: for(k=0;k<8;k++)
299 ; genPlus
300 ; genPlusIncr
301 ; tail increment optimized
005F 0A 302 inc r2
0060 BA 00 DD 303 cjne r2,#0x00,00104$
0063 0B 304 inc r3
305 ;C:/hj51avr/code/c/file2.c:25: for(k=0;k<8;k++) //第二次重复
306 ; Peephole 112.b changed ljmp to sjmp
0064 80 DA 307 sjmp 00104$
0066 308 00118$:
309 ; genAssign
0066 7A 00 310 mov r2,#0x00
0068 7B 00 311 mov r3,#0x00
006A 312 00108$:
313 ; genCmpLt
314 ; genCmp
006A C3 315 clr c
006B EA 316 mov a,r2
006C 94 08 317 subb a,#0x08
006E EB 318 mov a,r3
006F 64 80 319 xrl a,#0x80
0071 94 80 320 subb a,#0x80
321 ; genIfxJump
322 ; Peephole 108 removed ljmp by inverse jump logic
0073 50 C4 323 jnc 00102$
0075 324 00120$:
325 ;C:/hj51avr/code/c/file2.c:26: {delayf(); //右移采用汇编写的代码,(速度比较快)
326 ; genCall
0075 C0 02 327 push ar2
0077 C0 03 328 push ar3
0079 12 00 B8 329 lcall _delayf
007C D0 03 330 pop ar3
007E D0 02 331 pop ar2
332 ;C:/hj51avr/code/c/file2.c:27: P1 >>= 1; //表示,p1每次向右一位
333 ; genRightShift
334 ; genRightShiftLiteral
335 ; genrshOne
0080 E5 90 336 mov a,_P1
0082 C3 337 clr c
0083 13 338 rrc a
0084 F5 90 339 mov _P1,a
340 ;C:/hj51avr/code/c/file2.c:25: for(k=0;k<8;k++) //第二次重复
341 ; genPlus
342 ; genPlusIncr
343 ; tail increment optimized
0086 0A 344 inc r2
0087 BA 00 E0 345 cjne r2,#0x00,00108$
008A 0B 346 inc r3
347 ; Peephole 112.b changed ljmp to sjmp
008B 80 DD 348 sjmp 00108$
008D 349 00112$:
008D 22 350 ret
351 ;------------------------------------------------------------
352 ;Allocation info for local variables in function 'delay'
353 ;------------------------------------------------------------
354 ;times Allocated to registers r2
355 ;t Allocated to registers r3 r4
356 ;i Allocated to registers
357 ;------------------------------------------------------------
358 ;C:/hj51avr/code/c/file2.c:34: void delay(unsigned char times)
359 ; -----------------------------------------
360 ; function delay
361 ; -----------------------------------------
008E 362 _delay:
363 ; genReceive
008E AA 82 364 mov r2,dpl
365 ;C:/hj51avr/code/c/file2.c:36: int t=20000; //延时倍数
366 ; genAssign
0090 7B 20 367 mov r3,#0x20
0092 7C 4E 368 mov r4,#0x4E
369 ;C:/hj51avr/code/c/file2.c:37: unsigned char i=times;
370 ; genAssign
0094 371 00105$:
372 ;C:/hj51avr/code/c/file2.c:38: for(;i!=0;i--)
373 ; genCmpEq
0094 BA 00 02 374 cjne r2,#0x00,00114$
375 ; Peephole 112.b changed ljmp to sjmp
0097 80 1E 376 sjmp 00109$
0099 377 00114$:
378 ; genAssign
0099 8B 05 379 mov ar5,r3
009B 8C 06 380 mov ar6,r4
009D 381 00101$:
382 ;C:/hj51avr/code/c/file2.c:39: {for(;t!=0;t--){}}
383 ; genCmpEq
384 ; Peephole 241.b optimized compare
009D E4 385 clr a
009E BD 00 04 386 cjne r5,#0x00,00115$
00A1 BE 00 01 387 cjne r6,#0x00,00115$
00A4 04 388 inc a
00A5 389 00115$:
00A5 390 00116$:
00A5 FF 391 mov r7,a
392 ; genAssign
00A6 8D 03 393 mov ar3,r5
00A8 8E 04 394 mov ar4,r6
395 ; genIfx
00AA EF 396 mov a,r7
397 ; genIfxJump
398 ; Peephole 109 removed ljmp by inverse jump logic
00AB 70 07 399 jnz 00107$
00AD 400 00117$:
401 ; genMinus
402 ; genMinusDec
403 ; tail decrement optimized
00AD 1D 404 dec r5
00AE BD FF EC 405 cjne r5,#0xff,00101$
00B1 1E 406 dec r6
407 ; Peephole 112.b changed ljmp to sjmp
00B2 80 E9 408 sjmp 00101$
00B4 409 00107$:
410 ;C:/hj51avr/code/c/file2.c:38: for(;i!=0;i--)
411 ; genMinus
412 ; genMinusDec
00B4 1A 413 dec r2
414 ; Peephole 112.b changed ljmp to sjmp
00B5 80 DD 415 sjmp 00105$
00B7 416 00109$:
00B7 22 417 ret
418 ;------------------------------------------------------------
419 ;Allocation info for local variables in function 'delayf'
420 ;------------------------------------------------------------
421 ;------------------------------------------------------------
422 ;C:/hj51avr/code/c/file2.c:44: void delayf()
423 ; -----------------------------------------
424 ; function delayf
425 ; -----------------------------------------
00B8 426 _delayf:
427 ;C:/hj51avr/code/c/file2.c:51: _endasm; //总延时 T = R1*R2 机器周期
428 ; genInline
00B8 79 00 429 mov R1,#0
00BA 430 lp:
00BA 78 80 431 mov R0,#128
00BC 432 lk:
00BC D8 FE 433 djnz R0,lk
00BE D9 FA 434 djnz R1,lp
00C0 435 00101$:
00C0 22 436 ret
437 .area CSEG (CODE)
438 .area XINIT (CODE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -