⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cc1100_test.lst

📁 chipcom公司CC1100无线模块底层驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    035C F451      BNE	0x0367
    035D 2011      TST	R1
    035E F441      BNE	0x0367
    035F A92E      LDD	R18,Y+54
    0360 A93F      LDD	R19,Y+55
    0361 AD08      LDD	R16,Y+56
    0362 924F      PUSH	R4
    0363 925F      PUSH	R5
    0364 DEF6      RCALL	_PutRepChar
    0365 905F      POP	R5
    0366 904F      POP	R4
(0142)         PutStringReverse(buffer, bi);
    0367 0192      MOVW	R18,R4
    0368 018E      MOVW	R16,R28
    0369 DF00      RCALL	_PutStringReverse
(0143)         if (left) PutRepChar(fill, width);
    036A A408      LDD	R0,Y+40
    036B A419      LDD	R1,Y+41
    036C 2000      TST	R0
    036D F411      BNE	0x0370
    036E 2011      TST	R1
    036F F021      BEQ	0x0374
    0370 A92E      LDD	R18,Y+54
    0371 A93F      LDD	R19,Y+55
    0372 AD08      LDD	R16,Y+56
    0373 DEE7      RCALL	_PutRepChar
(0144)     }
    0374 96AA      ADIW	R28,0x2A
    0375 D4AF      RCALL	pop_gset5
    0376 9622      ADIW	R28,2
    0377 9508      RET
_FormatItem:
  fill                 --> R14
  leftjust             --> R20
  fieldwidth           --> Y+3
  radix                --> R10
  c                    --> R12
  a                    --> Y+17
  f                    --> Y+15
    0378 D475      RCALL	push_arg4
    0379 D4AD      RCALL	push_gset5
    037A 9725      SBIW	R28,5
(0145) }
(0146) 
(0147) 
(0148) static char *FormatItem(char *f, int a)
(0149) {
(0150)     char c;
(0151)     int fieldwidth = 0;
    037B 2400      CLR	R0
    037C 2411      CLR	R1
    037D 821C      STD	Y+4,R1
    037E 820B      STD	Y+3,R0
(0152)     int leftjust = FALSE;
    037F 2744      CLR	R20
    0380 2755      CLR	R21
(0153)     int radix = 0;
    0381 24AA      CLR	R10
    0382 24BB      CLR	R11
(0154)     char fill = ' ';
    0383 E280      LDI	R24,0x20
    0384 2EE8      MOV	R14,R24
(0155) 
(0156)     if (*f == '0') fill = '0';
    0385 85EF      LDD	R30,Y+15
    0386 89F8      LDD	R31,Y+16
    0387 8180      LDD	R24,Z+0
    0388 3380      CPI	R24,0x30
    0389 F009      BEQ	0x038B
    038A C0D1      RJMP	0x045C
    038B E380      LDI	R24,0x30
    038C 2EE8      MOV	R14,R24
    038D C0CE      RJMP	0x045C
(0157)     while ((c = *f++)!=0)
(0158)     {
(0159)         if (c >= '0' && c <= '9')
    038E 2D8C      MOV	R24,R12
    038F 3380      CPI	R24,0x30
    0390 F088      BCS	0x03A2
    0391 E389      LDI	R24,0x39
    0392 158C      CP	R24,R12
    0393 F070      BCS	0x03A2
(0160)         {
(0161)             fieldwidth = (fieldwidth * 10) + (c - '0');
    0394 E00A      LDI	R16,0xA
    0395 E010      LDI	R17,0
    0396 812B      LDD	R18,Y+3
    0397 813C      LDD	R19,Y+4
    0398 D476      RCALL	empy16s
    0399 0118      MOVW	R2,R16
    039A 2D8C      MOV	R24,R12
    039B 2799      CLR	R25
    039C 97C0      SBIW	R24,0x30
    039D 0E28      ADD	R2,R24
    039E 1E39      ADC	R3,R25
    039F 823C      STD	Y+4,R3
    03A0 822B      STD	Y+3,R2
(0162)         }
    03A1 C0B5      RJMP	0x0457
(0163)         else
(0164)         {
(0165)             switch (c)
    03A2 2D6C      MOV	R22,R12
    03A3 2777      CLR	R23
    03A4 3568      CPI	R22,0x58
    03A5 E0E0      LDI	R30,0
    03A6 077E      CPC	R23,R30
    03A7 F409      BNE	0x03A9
    03A8 C0A3      RJMP	0x044C
    03A9 E588      LDI	R24,0x58
    03AA E090      LDI	R25,0
    03AB 1786      CP	R24,R22
    03AC 0797      CPC	R25,R23
    03AD F0AC      BLT	0x03C3
    03AE 3265      CPI	R22,0x25
    03AF E0E0      LDI	R30,0
    03B0 077E      CPC	R23,R30
    03B1 F409      BNE	0x03B3
    03B2 C046      RJMP	0x03F9
    03B3 E285      LDI	R24,0x25
    03B4 E090      LDI	R25,0
    03B5 1786      CP	R24,R22
    03B6 0797      CPC	R25,R23
    03B7 F02C      BLT	0x03BD
    03B8 3060      CPI	R22,0
    03B9 0767      CPC	R22,R23
    03BA F409      BNE	0x03BC
    03BB C036      RJMP	0x03F2
    03BC C097      RJMP	0x0454
    03BD 326D      CPI	R22,0x2D
    03BE E0E0      LDI	R30,0
    03BF 077E      CPC	R23,R30
    03C0 F409      BNE	0x03C2
    03C1 C03C      RJMP	0x03FE
    03C2 C091      RJMP	0x0454
    03C3 3669      CPI	R22,0x69
    03C4 E0E0      LDI	R30,0
    03C5 077E      CPC	R23,R30
    03C6 F409      BNE	0x03C8
    03C7 C078      RJMP	0x0440
    03C8 E689      LDI	R24,0x69
    03C9 E090      LDI	R25,0
    03CA 1786      CP	R24,R22
    03CB 0797      CPC	R25,R23
    03CC F05C      BLT	0x03D8
    03CD 3663      CPI	R22,0x63
    03CE E0E0      LDI	R30,0
    03CF 077E      CPC	R23,R30
    03D0 F409      BNE	0x03D2
    03D1 C02F      RJMP	0x0401
    03D2 3664      CPI	R22,0x64
    03D3 E0E0      LDI	R30,0
    03D4 077E      CPC	R23,R30
    03D5 F409      BNE	0x03D7
    03D6 C069      RJMP	0x0440
    03D7 C07C      RJMP	0x0454
    03D8 366F      CPI	R22,0x6F
    03D9 E0E0      LDI	R30,0
    03DA 077E      CPC	R23,R30
    03DB F409      BNE	0x03DD
    03DC C073      RJMP	0x0450
    03DD 366F      CPI	R22,0x6F
    03DE E0E0      LDI	R30,0
    03DF 077E      CPC	R23,R30
    03E0 F40C      BGE	0x03E2
    03E1 C072      RJMP	0x0454
    03E2 3763      CPI	R22,0x73
    03E3 E0E0      LDI	R30,0
    03E4 077E      CPC	R23,R30
    03E5 F409      BNE	0x03E7
    03E6 C039      RJMP	0x0420
    03E7 3765      CPI	R22,0x75
    03E8 E0E0      LDI	R30,0
    03E9 077E      CPC	R23,R30
    03EA F409      BNE	0x03EC
    03EB C058      RJMP	0x0444
    03EC 3768      CPI	R22,0x78
    03ED E0E0      LDI	R30,0
    03EE 077E      CPC	R23,R30
    03EF F409      BNE	0x03F1
    03F0 C057      RJMP	0x0448
    03F1 C062      RJMP	0x0454
(0166)             {
(0167)                 case '\000':
(0168)                     return(--f);
    03F2 858F      LDD	R24,Y+15
    03F3 8998      LDD	R25,Y+16
    03F4 9701      SBIW	R24,1
    03F5 8B98      STD	Y+16,R25
    03F6 878F      STD	Y+15,R24
    03F7 018C      MOVW	R16,R24
    03F8 C082      RJMP	0x047B
(0169)                 case '%':
(0170)                     putchar('%');
    03F9 E205      LDI	R16,0x25
    03FA DE34      RCALL	_putchar
(0171)                     return(f);
    03FB 850F      LDD	R16,Y+15
    03FC 8918      LDD	R17,Y+16
    03FD C07D      RJMP	0x047B
(0172)                 case '-': leftjust = TRUE;
    03FE E041      LDI	R20,1
    03FF E050      LDI	R21,0
(0173)                     break;
    0400 C056      RJMP	0x0457
(0174)                 case 'c':
(0175)                     {
(0176)                       if (leftjust) putchar(a & 0x7f);
    0401 3040      CPI	R20,0
    0402 0745      CPC	R20,R21
    0403 F029      BEQ	0x0409
    0404 8909      LDD	R16,Y+17
    0405 891A      LDD	R17,Y+18
    0406 770F      ANDI	R16,0x7F
    0407 7010      ANDI	R17,0
    0408 DE26      RCALL	_putchar
(0177)                       if (fieldwidth > 0) PutRepChar(fill, fieldwidth - 1);
    0409 2422      CLR	R2
    040A 2433      CLR	R3
    040B 800B      LDD	R0,Y+3
    040C 801C      LDD	R1,Y+4
    040D 1420      CP	R2,R0
    040E 0431      CPC	R3,R1
    040F F42C      BGE	0x0415
    0410 0190      MOVW	R18,R0
    0411 5021      SUBI	R18,1
    0412 4030      SBCI	R19,0
    0413 2D0E      MOV	R16,R14
    0414 DE46      RCALL	_PutRepChar
(0178)                       if (!leftjust) putchar(a & 0x7f);
    0415 3040      CPI	R20,0
    0416 0745      CPC	R20,R21
    0417 F429      BNE	0x041D
    0418 8909      LDD	R16,Y+17
    0419 891A      LDD	R17,Y+18
    041A 770F      ANDI	R16,0x7F
    041B 7010      ANDI	R17,0
    041C DE12      RCALL	_putchar
(0179)                       return(f);
    041D 850F      LDD	R16,Y+15
    041E 8918      LDD	R17,Y+16
    041F C05B      RJMP	0x047B
(0180)                     }
(0181)                 case 's':
(0182)                     {
(0183)                         if (leftjust) putstr((char *) a);
    0420 3040      CPI	R20,0
    0421 0745      CPC	R20,R21
    0422 F019      BEQ	0x0426
    0423 8909      LDD	R16,Y+17
    0424 891A      LDD	R17,Y+18
    0425 DE19      RCALL	_putstr
(0184)                         if (fieldwidth > strlen((char *) a))
    0426 8909      LDD	R16,Y+17
    0427 891A      LDD	R17,Y+18
    0428 DE23      RCALL	_strlen
    0429 800B      LDD	R0,Y+3
    042A 801C      LDD	R1,Y+4
    042B 1500      CP	R16,R0
    042C 0511      CPC	R17,R1
    042D F44C      BGE	0x0437
(0185) 	                        PutRepChar(fill, fieldwidth - strlen((char *)a));
    042E 8909      LDD	R16,Y+17
    042F 891A      LDD	R17,Y+18
    0430 DE1B      RCALL	_strlen
    0431 812B      LDD	R18,Y+3
    0432 813C      LDD	R19,Y+4
    0433 1B20      SUB	R18,R16
    0434 0B31      SBC	R19,R17
    0435 2D0E      MOV	R16,R14
    0436 DE24      RCALL	_PutRepChar
(0186)                         if (!leftjust) putstr((char *) a);
    0437 3040      CPI	R20,0
    0438 0745      CPC	R20,R21
    0439 F419      BNE	0x043D
    043A 8909      LDD	R16,Y+17
    043B 891A      LDD	R17,Y+18
    043C DE02      RCALL	_putstr
(0187)                         return(f);
    043D 850F      LDD	R16,Y+15
    043E 8918      LDD	R17,Y+16
    043F C03B      RJMP	0x047B
(0188)                     }
(0189)                 case 'd':
(0190)                 case 'i':
(0191)                     radix = -10;break;
    0440 EF86      LDI	R24,0xF6
    0441 EF9F      LDI	R25,0xFF
    0442 015C      MOVW	R10,R24
    0443 C013      RJMP	0x0457
(0192)                 case 'u':
(0193)                     radix = 10;break;
    0444 E08A      LDI	R24,0xA
    0445 E090      LDI	R25,0
    0446 015C      MOVW	R10,R24
    0447 C00F      RJMP	0x0457
(0194)                 case 'x':
(0195)                     radix = 16;break;
    0448 E180      LDI	R24,0x10
    0449 E090      LDI	R25,0
    044A 015C      MOVW	R10,R24
    044B C00B      RJMP	0x0457
(0196)                 case 'X':
(0197)                     radix = 16;break;
    044C E180      LDI	R24,0x10
    044D E090      LDI	R25,0
    044E 015C      MOVW	R10,R24
    044F C007      RJMP	0x0457
(0198)                 case 'o':
(0199)                     radix = 8;break;
    0450 E088      LDI	R24,0x8
    0451 E090      LDI	R25,0
    0452 015C      MOVW	R10,R24
    0453 C003      RJMP	0x0457
(0200)                 default :
(0201)                     radix = 3;break;/* unknown switch! */
    0454 E083      LDI	R24,3
    0455 E090      LDI	R25,0
    0456 015C      MOVW	R10,R24
(0202)             }
(0203)         }
(0204)         if (radix) break;
    0457 20AA      TST	R10
    0458 F411      BNE	0x045B
    0459 20BB      TST	R11
    045A F009      BEQ	0x045C
    045B C009      RJMP	0x0465
    045C 85EF      LDD	R30,Y+15
    045D 89F8      LDD	R31,Y+16
    045E 9021      LD	R2,Z+
    045F 8BF8      STD	Y+16,R31
    0460 87EF      STD	Y+15,R30
    0461 2CC2      MOV	R12,R2
    0462 20CC      TST	R12
    0463 F009      BEQ	0x0465
    0464 CF29      RJMP	0x038E
(0205)     }
(0206)     if (leftjust) fieldwidth = -fieldwidth;
    0465 3040      CPI	R20,0
    0466 0745      CPC	R20,R21
    0467 F041      BEQ	0x0470
    0468 818B      LDD	R24,Y+3
    0469 819C      LDD	R25,Y+4
    046A 9580      COM	R24
    046B 9590      COM	R25
    046C 5F8F      SUBI	R24,0xFF
    046D 4F9F      SBCI	R25,0xFF
    046E 839C      STD	Y+4,R25
    046F 838B      STD	Y+3,R24
(0207)     PutNumber(a, radix, fieldwidth, fill);
    0470 82EA      STD	Y+2,R14
    0471 800B      LDD	R0,Y+3
    0472 801C      LDD	R1,Y+4
    0473 8219      STD	Y+1,R1
    0474 8208      STD	Y+0,R0
    0475 0195      MOVW	R18,R10
    0476 8909      LDD	R16,Y+17
    0477 891A      LDD	R17,Y+18
    0478 DE04      RCALL	_PutNumber
(0208)     return(f);
    0479 850F      LDD	R16,Y+15
    047A 8918      LDD	R17,Y+16
    047B 9625      ADIW	R28,5
    047C D3A8      RCALL	pop_gset5
    047D 9624      ADIW	R28,4
    047E 9508      RET
_printf:
  argP                 --> R20
  f                    --> Y+2
    047F D36E      RCALL	push_arg4
    0480 D3AE      RCALL	push_gset1
(0209) }
(0210) 
(0211) #define vaStart(list, param) list = (char*)((int)&param + sizeof(param))
(0212) #define vaArg(list, type) ((type *)(list += sizeof(type)))[-1]
(0213) #define vaEnd(list)
(0214) 
(0215) void printf(char *f, ...)       /* variable arguments */
(0216) {
(0217) 	char *argP;
(0218) 
(0219) 	vaStart(argP,f);		/* point at the end of the format string */
    0481 01AE      MOVW	R20,R28
    0482 5F4E      SUBI	R20,0xFE
    0483 4F5F      SBCI	R21,0xFF
    0484 5F4E      SUBI	R20,0xFE
    0485 4F5F      SBCI	R21,0xFF
    0486 C01A      RJMP	0x04A1
(0220) 	while (*f)
(0221) 	{			/* this works because args are all ints */
(0222) 		if (*f == '%')
    0487 81EA      LDD	R30,Y+2
    0488 81FB      LDD	R31,Y+3
    0489 8180      LDD	R24,Z+0
    048A 3285      CPI	R24,0x25

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -