📄 lcdprintf.lst
字号:
451 .loc 1 182 0 452 0256 3B1C mov r3, r7 453 0258 283B sub r3, r3, #40 454 025a 1968 ldr r1, [r3] 455 025c 0A1D add r2, r1, #4 456 025e 3B1C mov r3, r7 457 0260 283B sub r3, r3, #40 458 0262 1A60 str r2, [r3] 459 0264 0B1C mov r3, r1 460 0266 3A1C mov r2, r7 461 0268 083A sub r2, r2, #8 462 026a 1B68 ldr r3, [r3] 463 026c 1360 str r3, [r2] 464 .L38: 183:LCD/lcdprintf.c **** #else
184:LCD/lcdprintf.c **** s_val = va_arg(ap,int);
185:LCD/lcdprintf.c **** #endif
186:LCD/lcdprintf.c ****
187:LCD/lcdprintf.c **** if(s_val < 0) //Value negativ ?
465 .loc 1 187 0 466 026e 3B1C mov r3, r7 467 0270 083B sub r3, r3, #8 468 0272 1B68 ldr r3, [r3] 469 0274 002B cmp r3, #0 470 0276 09DA bge .L39 188:LCD/lcdprintf.c **** {
189:LCD/lcdprintf.c **** s_val = - s_val; //Make it positiv
471 .loc 1 189 0 472 0278 3A1C mov r2, r7 473 027a 083A sub r2, r2, #8 474 027c 3B1C mov r3, r7 475 027e 083B sub r3, r3, #8 476 0280 1B68 ldr r3, [r3] 477 0282 5B42 neg r3, r3 478 0284 1360 str r3, [r2] 190:LCD/lcdprintf.c **** lcdmyputchar('-'); //Output sign
479 .loc 1 190 0 480 0286 2D20 mov r0, #45 481 0288 FFF7FEFF bl lcdmyputchar 482 .L39: 191:LCD/lcdprintf.c **** }
192:LCD/lcdprintf.c ****
193:LCD/lcdprintf.c **** u_val = (unsigned long)s_val;
483 .loc 1 193 0 484 028c 3B1C mov r3, r7 485 028e 0C3B sub r3, r3, #12 486 0290 3A1C mov r2, r7 487 0292 083A sub r2, r2, #8 488 0294 1268 ldr r2, [r2] 489 0296 1A60 str r2, [r3] 490 0298 1DE0 b .L41 491 .L34: 194:LCD/lcdprintf.c **** }
195:LCD/lcdprintf.c **** else //Unsigned types
196:LCD/lcdprintf.c **** {
197:LCD/lcdprintf.c **** #ifdef USE_LONG
198:LCD/lcdprintf.c **** if(islong) { u_val = va_arg(ap,unsigned long); }
492 .loc 1 198 0 493 029a 3B1C mov r3, r7 494 029c 0D3B sub r3, r3, #13 495 029e 1B78 ldrb r3, [r3] 496 02a0 002B cmp r3, #0 497 02a2 0CD0 beq .L42 498 02a4 3B1C mov r3, r7 499 02a6 283B sub r3, r3, #40 500 02a8 1968 ldr r1, [r3] 501 02aa 0A1D add r2, r1, #4 502 02ac 3B1C mov r3, r7 503 02ae 283B sub r3, r3, #40 504 02b0 1A60 str r2, [r3] 505 02b2 0B1C mov r3, r1 506 02b4 3A1C mov r2, r7 507 02b6 0C3A sub r2, r2, #12 508 02b8 1B68 ldr r3, [r3] 509 02ba 1360 str r3, [r2] 510 02bc 0BE0 b .L41 511 .L42: 199:LCD/lcdprintf.c **** else { u_val = va_arg(ap,unsigned int); }
512 .loc 1 199 0 513 02be 3B1C mov r3, r7 514 02c0 283B sub r3, r3, #40 515 02c2 1968 ldr r1, [r3] 516 02c4 0A1D add r2, r1, #4 517 02c6 3B1C mov r3, r7 518 02c8 283B sub r3, r3, #40 519 02ca 1A60 str r2, [r3] 520 02cc 0B1C mov r3, r1 521 02ce 3A1C mov r2, r7 522 02d0 0C3A sub r2, r2, #12 523 02d2 1B68 ldr r3, [r3] 524 02d4 1360 str r3, [r2] 525 .L41: 200:LCD/lcdprintf.c **** #else
201:LCD/lcdprintf.c **** u_val = va_arg(ap,unsigned int);
202:LCD/lcdprintf.c **** #endif
203:LCD/lcdprintf.c **** }
204:LCD/lcdprintf.c ****
205:LCD/lcdprintf.c **** ptr = scratch + SCRATCH;
526 .loc 1 205 0 527 02d6 3A1C mov r2, r7 528 02d8 143A sub r2, r2, #20 529 02da 3B1C mov r3, r7 530 02dc 233B sub r3, r3, #35 531 02de 0C33 add r3, r3, #12 532 02e0 1360 str r3, [r2] 206:LCD/lcdprintf.c **** *--ptr = 0;
533 .loc 1 206 0 534 02e2 3A1C mov r2, r7 535 02e4 143A sub r2, r2, #20 536 02e6 3B1C mov r3, r7 537 02e8 143B sub r3, r3, #20 538 02ea 1B68 ldr r3, [r3] 539 02ec 013B sub r3, r3, #1 540 02ee 1360 str r3, [r2] 541 02f0 3B1C mov r3, r7 542 02f2 143B sub r3, r3, #20 543 02f4 1A68 ldr r2, [r3] 544 02f6 0023 mov r3, #0 545 02f8 1370 strb r3, [r2] 546 .L44: 547 .LBB2: 207:LCD/lcdprintf.c **** do
208:LCD/lcdprintf.c **** {
209:LCD/lcdprintf.c **** char ch = u_val % base + '0';
548 .loc 1 209 0 549 02fa 3B1C mov r3, r7 550 02fc 163B sub r3, r3, #22 551 02fe 1A88 ldrh r2, [r3] 552 0300 3B1C mov r3, r7 553 0302 0C3B sub r3, r3, #12 554 0304 1B68 ldr r3, [r3] 555 0306 181C mov r0, r3 556 0308 111C mov r1, r2 557 030a FFF7FEFF bl __umodsi3 558 030e 031C mov r3, r0 559 0310 1B06 lsl r3, r3, #24 560 0312 1B0E lsr r3, r3, #24 561 0314 7A1E sub r2, r7, #1 562 0316 3033 add r3, r3, #48 563 0318 1370 strb r3, [r2] 210:LCD/lcdprintf.c **** #ifdef USE_HEX
211:LCD/lcdprintf.c **** if (ch > '9')
564 .loc 1 211 0 565 031a 7B1E sub r3, r7, #1 566 031c 1B78 ldrb r3, [r3] 567 031e 392B cmp r3, #57 568 0320 0DD9 bls .L45 212:LCD/lcdprintf.c **** {
213:LCD/lcdprintf.c **** ch += 'a' - '9' - 1;
569 .loc 1 213 0 570 0322 7B1E sub r3, r7, #1 571 0324 1B78 ldrb r3, [r3] 572 0326 2733 add r3, r3, #39 573 0328 1B06 lsl r3, r3, #24 574 032a 1B0E lsr r3, r3, #24 575 032c 7A1E sub r2, r7, #1 576 032e 1370 strb r3, [r2] 214:LCD/lcdprintf.c **** #ifdef USE_UPPERHEX
215:LCD/lcdprintf.c **** ch-=0x20;
577 .loc 1 215 0 578 0330 7B1E sub r3, r7, #1 579 0332 1B78 ldrb r3, [r3] 580 0334 203B sub r3, r3, #32 581 0336 1B06 lsl r3, r3, #24 582 0338 1B0E lsr r3, r3, #24 583 033a 7A1E sub r2, r7, #1 584 033c 1370 strb r3, [r2] 585 .L45: 216:LCD/lcdprintf.c **** #endif
217:LCD/lcdprintf.c **** }
218:LCD/lcdprintf.c **** #endif
219:LCD/lcdprintf.c **** *--ptr = ch;
586 .loc 1 219 0 587 033e 3A1C mov r2, r7 588 0340 143A sub r2, r2, #20 589 0342 3B1C mov r3, r7 590 0344 143B sub r3, r3, #20 591 0346 1B68 ldr r3, [r3] 592 0348 013B sub r3, r3, #1 593 034a 1360 str r3, [r2] 594 034c 3B1C mov r3, r7 595 034e 143B sub r3, r3, #20 596 0350 1A68 ldr r2, [r3] 597 0352 7B1E sub r3, r7, #1 598 0354 1B78 ldrb r3, [r3] 599 0356 1370 strb r3, [r2] 220:LCD/lcdprintf.c **** u_val /= base;
600 .loc 1 220 0 601 0358 3B1C mov r3, r7 602 035a 163B sub r3, r3, #22 603 035c 1A88 ldrh r2, [r3] 604 035e 3C1C mov r4, r7 605 0360 0C3C sub r4, r4, #12 606 0362 3B1C mov r3, r7 607 0364 0C3B sub r3, r3, #12 608 0366 1868 ldr r0, [r3] 609 0368 111C mov r1, r2 610 036a FFF7FEFF bl __udivsi3 611 036e 031C mov r3, r0 612 0370 2360 str r3, [r4] 221:LCD/lcdprintf.c ****
222:LCD/lcdprintf.c **** #ifdef PADDING
223:LCD/lcdprintf.c **** if(width) width--; //calculate number of padding chars
613 .loc 1 223 0 614 0372 BB1E sub r3, r7, #2 615 0374 1B78 ldrb r3, [r3] 616 0376 002B cmp r3, #0 617 0378 04D0 beq .L47 618 037a BA1E sub r2, r7, #2 619 037c BB1E sub r3, r7, #2 620 037e 1B78 ldrb r3, [r3] 621 0380 013B sub r3, r3, #1 622 0382 1370 strb r3, [r2] 623 .L47: 624 .LBE2: 224:LCD/lcdprintf.c **** #endif
225:LCD/lcdprintf.c **** } while (u_val);
625 .loc 1 225 0 626 0384 3B1C mov r3, r7 627 0386 0C3B sub r3, r3, #12 628 0388 1B68 ldr r3, [r3] 629 038a 002B cmp r3, #0 630 038c B5D1 bne .L44 226:LCD/lcdprintf.c ****
227:LCD/lcdprintf.c **** #ifdef PADDING
228:LCD/lcdprintf.c **** while(width--) *--ptr = fill; //insert padding chars
631 .loc 1 228 0 632 038e 0CE0 b .L50 633 .L51: 634 0390 3A1C mov r2, r7 635 0392 143A sub r2, r2, #20 636 0394 3B1C mov r3, r7 637 0396 143B sub r3, r3, #20 638 0398 1B68 ldr r3, [r3] 639 039a 013B sub r3, r3, #1 640 039c 1360 str r3, [r2] 641 039e 3B1C mov r3, r7 642 03a0 143B sub r3, r3, #20 643 03a2 1A68 ldr r2, [r3] 644 03a4 FB1E sub r3, r7, #3 645 03a6 1B78 ldrb r3, [r3] 646 03a8 1370 strb r3, [r2] 647 .L50: 648 03aa BA1E sub r2, r7, #2 649 03ac BB1E sub r3, r7, #2 650 03ae 1B78 ldrb r3, [r3] 651 03b0 013B sub r3, r3, #1 652 03b2 1370 strb r3, [r2] 653 03b4 BB1E sub r3, r7, #2 654 03b6 1B78 ldrb r3, [r3] 655 03b8 FF2B cmp r3, #255 656 03ba E9D1 bne .L51 229:LCD/lcdprintf.c **** #endif
230:LCD/lcdprintf.c ****
231:LCD/lcdprintf.c **** while(*ptr) { lcdmyputchar(*ptr); ptr++; }
657 .loc 1 231 0 658 03bc 0DE0 b .L53 659 .L54: 660 03be 3B1C mov r3, r7 661 03c0 143B sub r3, r3, #20 662 03c2 1B68 ldr r3, [r3] 663 03c4 1B78 ldrb r3, [r3] 664 03c6 181C mov r0, r3 665 03c8 FFF7FEFF bl lcdmyputchar 666 03cc 3A1C mov r2, r7 667 03ce 143A sub r2, r2, #20 668 03d0 3B1C mov r3, r7 669 03d2 143B sub r3, r3, #20 670 03d4 1B68 ldr r3, [r3] 671 03d6 0133 add r3, r3, #1 672 03d8 1360 str r3, [r2] 673 .L53: 674 03da 3B1C mov r3, r7 675 03dc 143B sub r3, r3, #20 676 03de 1B68 ldr r3, [r3] 677 03e0 1B78 ldrb r3, [r3] 678 03e2 002B cmp r3, #0 679 03e4 EBD1 bne .L54 232:LCD/lcdprintf.c **** }
233:LCD/lcdprintf.c **** }
680 .loc 1 233 0 681 03e6 49E6 b .L8 682 .L55: 234:LCD/lcdprintf.c **** }
683 .loc 1 234 0 684 03e8 BD46 mov sp, r7 685 @ sp needed for prologue 686 03ea 90BC pop {r4, r7} 687 03ec 08BC pop {r3} 688 03ee 04B0 add sp, sp, #16 689 03f0 1847 bx r3 690 .L58: 691 03f2 0000 .align 2 692 .L57: 693 03f4 00000000 .word .L28 694 .LFE291: 759 .Letext0:DEFINED SYMBOLS *ABS*:00000000 lcdprintf.c/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/cc2zXpXS.s:1 .text:00000000 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/cc2zXpXS.s:15 .text:00000000 lcdmyputchar/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/cc2zXpXS.s:59 .text:00000030 lcdprintf/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/cc2zXpXS.s:293 .rodata:00000000 $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/cc2zXpXS.s:693 .text:000003f4 $dUNDEFINED SYMBOLSLCDSendCommandLCDSendChar__umodsi3__udivsi3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -