📄 main.ls
字号:
4600 038a ac980498 jpf L1462
4601 038e L7362:
4602 ; 182 if(coordinate > 64) break; //防止堆栈溢出
4604 038e 7b04 ld a,(OFST+0,sp)
4605 0390 a141 cp a,#65
4606 0392 2503 jrult L5462
4608 0394 L3462:
4609 ; 217 va_end( marker ); // Reset variable arguments.
4611 ; 218 }
4614 0394 5b06 addw sp,#6
4615 0396 81 ret
4616 0397 L5462:
4617 ; 184 if(*str == '\\')
4619 0397 1e0b ldw x,(OFST+7,sp)
4620 0399 f6 ld a,(x)
4621 039a a15c cp a,#92
4622 039c 261b jrne L7462
4623 ; 186 str++;
4625 039e 1e0b ldw x,(OFST+7,sp)
4626 03a0 1c0001 addw x,#1
4627 03a3 1f0b ldw (OFST+7,sp),x
4628 ; 187 lcd_stack[coordinate] = *str;
4630 03a5 7b09 ld a,(OFST+5,sp)
4631 03a7 97 ld xl,a
4632 03a8 7b0a ld a,(OFST+6,sp)
4633 03aa 1b04 add a,(OFST+0,sp)
4634 03ac 2401 jrnc L46
4635 03ae 5c incw x
4636 03af L46:
4637 03af 02 rlwa x,a
4638 03b0 160b ldw y,(OFST+7,sp)
4639 03b2 90f6 ld a,(y)
4640 03b4 f7 ld (x),a
4642 03b5 ac8f048f jpf L1562
4643 03b9 L7462:
4644 ; 189 else if(*str == '%')
4646 03b9 1e0b ldw x,(OFST+7,sp)
4647 03bb f6 ld a,(x)
4648 03bc a125 cp a,#37
4649 03be 2703 jreq L67
4650 03c0 cc047f jp L3562
4651 03c3 L67:
4652 ; 191 str++;
4654 03c3 1e0b ldw x,(OFST+7,sp)
4655 03c5 1c0001 addw x,#1
4656 03c8 1f0b ldw (OFST+7,sp),x
4657 ; 192 if (*str == 'd' || *str == 'D')
4659 03ca 1e0b ldw x,(OFST+7,sp)
4660 03cc f6 ld a,(x)
4661 03cd a164 cp a,#100
4662 03cf 2707 jreq L7562
4664 03d1 1e0b ldw x,(OFST+7,sp)
4665 03d3 f6 ld a,(x)
4666 03d4 a144 cp a,#68
4667 03d6 2637 jrne L5562
4668 03d8 L7562:
4669 ; 194 str++;
4671 03d8 1e0b ldw x,(OFST+7,sp)
4672 03da 1c0001 addw x,#1
4673 03dd 1f0b ldw (OFST+7,sp),x
4674 ; 195 decToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str-'0'));
4676 03df 1e0b ldw x,(OFST+7,sp)
4677 03e1 f6 ld a,(x)
4678 03e2 a030 sub a,#48
4679 03e4 88 push a
4680 03e5 1e03 ldw x,(OFST-1,sp)
4681 03e7 1c0002 addw x,#2
4682 03ea 1f03 ldw (OFST-1,sp),x
4683 03ec 1e03 ldw x,(OFST-1,sp)
4684 03ee 5a decw x
4685 03ef 5a decw x
4686 03f0 fe ldw x,(x)
4687 03f1 89 pushw x
4688 03f2 7b0c ld a,(OFST+8,sp)
4689 03f4 97 ld xl,a
4690 03f5 7b0d ld a,(OFST+9,sp)
4691 03f7 1b07 add a,(OFST+3,sp)
4692 03f9 2401 jrnc L66
4693 03fb 5c incw x
4694 03fc L66:
4695 03fc 02 rlwa x,a
4696 03fd cd01fe call _decToAscii
4698 0400 5b03 addw sp,#3
4699 ; 196 coordinate += (*str-'0'-1);
4701 0402 1e0b ldw x,(OFST+7,sp)
4702 0404 f6 ld a,(x)
4703 0405 a031 sub a,#49
4704 0407 1b04 add a,(OFST+0,sp)
4705 0409 6b04 ld (OFST+0,sp),a
4707 040b ac8f048f jpf L1562
4708 040f L5562:
4709 ; 198 else if(*str == 'c' || *str == 'C')
4711 040f 1e0b ldw x,(OFST+7,sp)
4712 0411 f6 ld a,(x)
4713 0412 a163 cp a,#99
4714 0414 2707 jreq L5662
4716 0416 1e0b ldw x,(OFST+7,sp)
4717 0418 f6 ld a,(x)
4718 0419 a143 cp a,#67
4719 041b 261f jrne L3662
4720 041d L5662:
4721 ; 200 lcd_stack[coordinate] = va_arg(marker,u16);
4723 041d 7b09 ld a,(OFST+5,sp)
4724 041f 97 ld xl,a
4725 0420 7b0a ld a,(OFST+6,sp)
4726 0422 1b04 add a,(OFST+0,sp)
4727 0424 2401 jrnc L07
4728 0426 5c incw x
4729 0427 L07:
4730 0427 02 rlwa x,a
4731 0428 1602 ldw y,(OFST-2,sp)
4732 042a 72a90002 addw y,#2
4733 042e 1702 ldw (OFST-2,sp),y
4734 0430 1602 ldw y,(OFST-2,sp)
4735 0432 905a decw y
4736 0434 905a decw y
4737 0436 90e601 ld a,(1,y)
4738 0439 f7 ld (x),a
4740 043a 2053 jra L1562
4741 043c L3662:
4742 ; 202 else if(*str == 'x' || *str == 'X')
4744 043c 1e0b ldw x,(OFST+7,sp)
4745 043e f6 ld a,(x)
4746 043f a178 cp a,#120
4747 0441 2707 jreq L3762
4749 0443 1e0b ldw x,(OFST+7,sp)
4750 0445 f6 ld a,(x)
4751 0446 a158 cp a,#88
4752 0448 2645 jrne L1562
4753 044a L3762:
4754 ; 204 str++;
4756 044a 1e0b ldw x,(OFST+7,sp)
4757 044c 1c0001 addw x,#1
4758 044f 1f0b ldw (OFST+7,sp),x
4759 ; 205 hexToAscii(&lcd_stack[coordinate],va_arg(marker,u16),(*str - '0'));
4761 0451 1e0b ldw x,(OFST+7,sp)
4762 0453 f6 ld a,(x)
4763 0454 a030 sub a,#48
4764 0456 88 push a
4765 0457 1e03 ldw x,(OFST-1,sp)
4766 0459 1c0002 addw x,#2
4767 045c 1f03 ldw (OFST-1,sp),x
4768 045e 1e03 ldw x,(OFST-1,sp)
4769 0460 5a decw x
4770 0461 5a decw x
4771 0462 fe ldw x,(x)
4772 0463 89 pushw x
4773 0464 7b0c ld a,(OFST+8,sp)
4774 0466 97 ld xl,a
4775 0467 7b0d ld a,(OFST+9,sp)
4776 0469 1b07 add a,(OFST+3,sp)
4777 046b 2401 jrnc L27
4778 046d 5c incw x
4779 046e L27:
4780 046e 02 rlwa x,a
4781 046f cd02a7 call _hexToAscii
4783 0472 5b03 addw sp,#3
4784 ; 206 coordinate += (*str - '0' - 1);
4786 0474 1e0b ldw x,(OFST+7,sp)
4787 0476 f6 ld a,(x)
4788 0477 a031 sub a,#49
4789 0479 1b04 add a,(OFST+0,sp)
4790 047b 6b04 ld (OFST+0,sp),a
4791 047d 2010 jra L1562
4792 047f L3562:
4793 ; 212 lcd_stack[coordinate] = *str;
4795 047f 7b09 ld a,(OFST+5,sp)
4796 0481 97 ld xl,a
4797 0482 7b0a ld a,(OFST+6,sp)
4798 0484 1b04 add a,(OFST+0,sp)
4799 0486 2401 jrnc L47
4800 0488 5c incw x
4801 0489 L47:
4802 0489 02 rlwa x,a
4803 048a 160b ldw y,(OFST+7,sp)
4804 048c 90f6 ld a,(y)
4805 048e f7 ld (x),a
4806 048f L1562:
4807 ; 214 str++;
4809 048f 1e0b ldw x,(OFST+7,sp)
4810 0491 1c0001 addw x,#1
4811 0494 1f0b ldw (OFST+7,sp),x
4812 ; 215 coordinate++;
4814 0496 0c04 inc (OFST+0,sp)
4815 0498 L1462:
4816 ; 180 while(*str != '\0')
4818 0498 1e0b ldw x,(OFST+7,sp)
4819 049a 7d tnz (x)
4820 049b 2703 jreq L001
4821 049d cc038e jp L7362
4822 04a0 L001:
4823 04a0 ac940394 jpf L3462
4922 ; 20 main()
4922 ; 21 {
4923 switch .text
4924 04a4 _main:
4926 04a4 521f subw sp,#31
4927 0000001f OFST: set 31
4930 ; 22 u8 num=0;
4932 ; 24 AT45DBXX_Init();/*
4934 04a6 cd0082 call _AT45DBXX_Init
4936 ; 29 for(num=0;num<30;num++)
4938 04a9 0f1f clr (OFST+0,sp)
4939 04ab L3472:
4940 ; 31 write_buffer((u16)num,num);
4942 04ab 7b1f ld a,(OFST+0,sp)
4943 04ad 88 push a
4944 04ae 7b20 ld a,(OFST+1,sp)
4945 04b0 5f clrw x
4946 04b1 97 ld xl,a
4947 04b2 cd0091 call _write_buffer
4949 04b5 84 pop a
4950 ; 32 delay_ms(1);
4952 04b6 ae0001 ldw x,#1
4953 04b9 cd0000 call _delay_ms
4955 ; 29 for(num=0;num<30;num++)
4957 04bc 0c1f inc (OFST+0,sp)
4960 04be 7b1f ld a,(OFST+0,sp)
4961 04c0 a11e cp a,#30
4962 04c2 25e7 jrult L3472
4963 ; 34 for(num=0;num<30;num++)
4965 04c4 0f1f clr (OFST+0,sp)
4966 04c6 L1572:
4967 ; 36 tmp[num]=read_buffer((u16)num);
4969 04c6 96 ldw x,sp
4970 04c7 1c0001 addw x,#OFST-30
4971 04ca 9f ld a,xl
4972 04cb 5e swapw x
4973 04cc 1b1f add a,(OFST+0,sp)
4974 04ce 2401 jrnc L401
4975 04d0 5c incw x
4976 04d1 L401:
4977 04d1 02 rlwa x,a
4978 04d2 89 pushw x
4979 04d3 7b21 ld a,(OFST+2,sp)
4980 04d5 5f clrw x
4981 04d6 97 ld xl,a
4982 04d7 cd00ba call _read_buffer
4984 04da 85 popw x
4985 04db f7 ld (x),a
4986 ; 37 delay_ms(1);
4988 04dc ae0001 ldw x,#1
4989 04df cd0000 call _delay_ms
4991 ; 34 for(num=0;num<30;num++)
4993 04e2 0c1f inc (OFST+0,sp)
4996 04e4 7b1f ld a,(OFST+0,sp)
4997 04e6 a11e cp a,#30
4998 04e8 25dc jrult L1572
4999 ; 39 sendCodeST7920(0x80);
5001 04ea a680 ld a,#128
5002 04ec cd0126 call _sendCodeST7920
5004 ; 40 st7920LcdInit();
5006 04ef cd00f0 call _st7920LcdInit
5008 ; 41 showLine(0,0,lcd_buffer,"AT45DBXX Example");
5010 04f2 ae0027 ldw x,#L7572
5011 04f5 89 pushw x
5012 04f6 ae0000 ldw x,#_lcd_buffer
5013 04f9 89 pushw x
5014 04fa 5f clrw x
5015 04fb 4f clr a
5016 04fc 95 ld xh,a
5017 04fd cd036d call _showLine
5019 0500 5b04 addw sp,#4
5020 ; 42 showLine(0,1,lcd_buffer,"Program: OK!");
5022 0502 ae001a ldw x,#L1672
5023 0505 89 pushw x
5024 0506 ae0000 ldw x,#_lcd_buffer
5025 0509 89 pushw x
5026 050a ae0001 ldw x,#1
5027 050d 4f clr a
5028 050e 95 ld xh,a
5029 050f cd036d call _showLine
5031 0512 5b04 addw sp,#4
5032 ; 43 showLine(0,2,lcd_buffer,"Verify: OK!");
5034 0514 ae000e ldw x,#L3672
5035 0517 89 pushw x
5036 0518 ae0000 ldw x,#_lcd_buffer
5037 051b 89 pushw x
5038 051c ae0002 ldw x,#2
5039 051f 4f clr a
5040 0520 95 ld xh,a
5041 0521 cd036d call _showLine
5043 0524 5b04 addw sp,#4
5044 ; 44 showLine(0,3,lcd_buffer,"Output:");
5046 0526 ae0006 ldw x,#L5672
5047 0529 89 pushw x
5048 052a ae0000 ldw x,#_lcd_buffer
5049 052d 89 pushw x
5050 052e ae0003 ldw x,#3
5051 0531 4f clr a
5052 0532 95 ld xh,a
5053 0533 cd036d call _showLine
5055 0536 5b04 addw sp,#4
5056 ; 47 for(num=0;num<30;num++)
5058 0538 0f1f clr (OFST+0,sp)
5059 053a L7672:
5060 ; 49 showLine(8,3,lcd_buffer,"0x%x2",(u16)tmp[num]);
5062 053a 96 ldw x,sp
5063 053b 1c0001 addw x,#OFST-30
5064 053e 9f ld a,xl
5065 053f 5e swapw x
5066 0540 1b1f add a,(OFST+0,sp)
5067 0542 2401 jrnc L601
5068 0544 5c incw x
5069 0545 L601:
5070 0545 02 rlwa x,a
5071 0546 f6 ld a,(x)
5072 0547 5f clrw x
5073 0548 97 ld xl,a
5074 0549 89 pushw x
5075 054a ae0000 ldw x,#L5772
5076 054d 89 pushw x
5077 054e ae0000 ldw x,#_lcd_buffer
5078 0551 89 pushw x
5079 0552 ae0003 ldw x,#3
5080 0555 a608 ld a,#8
5081 0557 95 ld xh,a
5082 0558 cd036d call _showLine
5084 055b 5b06 addw sp,#6
5085 ; 50 refreshLCD(lcd_buffer);
5087 055d ae0000 ldw x,#_lcd_buffer
5088 0560 cd018e call _refreshLCD
5090 ; 51 delay_ms(1000);
5092 0563 ae03e8 ldw x,#1000
5093 0566 cd0000 call _delay_ms
5095 ; 47 for(num=0;num<30;num++)
5097 0569 0c1f inc (OFST+0,sp)
5100 056b 7b1f ld a,(OFST+0,sp)
5101 056d a11e cp a,#30
5102 056f 25c9 jrult L7672
5103 0571 L7772:
5104 ; 54 while (1);
5106 0571 20fe jra L7772
5119 xdef _main
5120 switch .ubsct
5121 0000 _lcd_buffer:
5122 0000 000000000000 ds.b 64
5123 xdef _lcd_buffer
5124 xdef _showLine
5125 xdef _hexToAscii
5126 xdef _decToAscii
5127 xdef _refreshLCD
5128 xdef _st7920LcdInit
5129 xdef _sendDataST7920
5130 xdef _sendCodeST7920
5131 xdef _read_buffer
5132 xdef _write_buffer
5133 xdef _AT45DBXX_Init
5134 xdef _SPI_rechar
5135 xdef _SPI_sendchar
5136 xdef _SPI_Init
5137 xdef _delay_us
5138 xdef _delay_ms
5139 .const: section .text
5140 0000 L5772:
5141 0000 307825783200 dc.b "0x%x2",0
5142 0006 L5672:
5143 0006 4f7574707574 dc.b "Output:",0
5144 000e L3672:
5145 000e 566572696679 dc.b "Verify: OK!",0
5146 001a L1672:
5147 001a 50726f677261 dc.b "Program: OK!",0
5148 0027 L7572:
5149 0027 415434354442 dc.b "AT45DBXX Example",0
5169 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -