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

📄 avrsms_zip.lst

📁 SMS傳送Sourcode,compiler with C,AT command
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   0000000A   E0A0               LDI     R26, 0
   \   0000000C   E0B0               LDI     R27, 0
   \   0000000E   C00E               RJMP    ??ZIP_atoi_0
    126            {
    127              n = 10*n + ( a[i] - '0' );                  //Adding value to return Integer
   \                     ??ZIP_atoi_1:
   \   00000010   E00A               LDI     R16, 10
   \   00000012   E010               LDI     R17, 0
   \   00000014   ........           CALL    ?S_EC_MUL_L02
   \   00000018   01FC               MOVW    R31:R30, R25:R24
   \   0000001A   0FEA               ADD     R30, R26
   \   0000001C   1FFB               ADC     R31, R27
   \   0000001E   8140               LD      R20, Z
   \   00000020   E050               LDI     R21, 0
   \   00000022   0F40               ADD     R20, R16
   \   00000024   1F51               ADC     R21, R17
   \   00000026   5340               SUBI    R20, 48
   \   00000028   4050               SBCI    R21, 0
    128            }
   \   0000002A   9611               ADIW    R27:R26, 1
   \                     ??ZIP_atoi_0:
   \   0000002C   01FC               MOVW    R31:R30, R25:R24
   \   0000002E   0FEA               ADD     R30, R26
   \   00000030   1FFB               ADC     R31, R27
   \   00000032   8100               LD      R16, Z
   \   00000034   3300               CPI     R16, 48
   \   00000036   F030               BRCS    ??ZIP_atoi_2
   \   00000038   01FC               MOVW    R31:R30, R25:R24
   \   0000003A   0FEA               ADD     R30, R26
   \   0000003C   1FFB               ADC     R31, R27
   \   0000003E   8100               LD      R16, Z
   \   00000040   330A               CPI     R16, 58
   \   00000042   F330               BRCS    ??ZIP_atoi_1
    129          
    130            return n;
   \                     ??ZIP_atoi_2:
   \   00000044   018A               MOVW    R17:R16, R21:R20
   \   00000046   E0E4               LDI     R30, 4
   \   00000048   ........           JMP     ?EPILOGUE_B4_L09
    131          }//end atoi
    132          
    133          
    134          /*! \brief Convert hex to int
    135           *
    136           *  This function will take a hex in char format and return int value
    137           *
    138           *  \param    hex     Hex value to convert
    139           *
    140           *  \retval           Integer value
    141           *
    142           */

   \                                 In segment CODE, align 2, keep-with-next
    143          int ZIP_htoi( unsigned char hex )
   \                     ZIP_htoi:
    144          {
   \   00000000   019C               MOVW    R19:R18, R25:R24
    145          
    146            if( ( hex >= 'A' ) && ( hex <= 'F' ) )    //Test if hex is A-->F?
   \   00000002   3401               CPI     R16, 65
   \   00000004   F038               BRCS    ??ZIP_htoi_0
   \   00000006   3407               CPI     R16, 71
   \   00000008   F428               BRCC    ??ZIP_htoi_0
    147            {
    148              return hex - 'A' + 10;
   \   0000000A   2F80               MOV     R24, R16
   \   0000000C   E090               LDI     R25, 0
   \   0000000E   97C7               SBIW    R25:R24, 55
   \   00000010   018C               MOVW    R17:R16, R25:R24
   \   00000012   C004               RJMP    ??ZIP_htoi_1
    149            }
    150            else                             //Must have something else then:0-->9
    151            {
    152              return hex - '0';
   \                     ??ZIP_htoi_0:
   \   00000014   2F80               MOV     R24, R16
   \   00000016   E090               LDI     R25, 0
   \   00000018   97C0               SBIW    R25:R24, 48
   \   0000001A   018C               MOVW    R17:R16, R25:R24
   \                     ??ZIP_htoi_1:
   \   0000001C   01C9               MOVW    R25:R24, R19:R18
   \   0000001E   9508               RET
    153            }
    154          }//end htoi
    155          
    156          
    157          /*! \brief Converting int [0->255] to hex value
    158           *
    159           *
    160           *  \note     Will return hex value as string.
    161           *
    162           *  \param    n     Integer value to be decoded.
    163           *  \param    ret   Return array.
    164           *
    165           */

   \                                 In segment CODE, align 2, keep-with-next
    166          void ZIP_itoh( int n, unsigned char *ret )
   \                     ZIP_itoh:
    167          {
    168            ret[0] = hex_lookup[ ( n >> 4 )&0x0F ];
   \   00000000   ....               LDI     R30, LOW(hex_lookup)
   \   00000002   ....               LDI     R31, (hex_lookup) >> 8
   \   00000004   2F40               MOV     R20, R16
   \   00000006   9545               ASR     R20
   \   00000008   9545               ASR     R20
   \   0000000A   9545               ASR     R20
   \   0000000C   9545               ASR     R20
   \   0000000E   2F54               MOV     R21, R20
   \   00000010   0F55               LSL     R21
   \   00000012   0B55               SBC     R21, R21
   \   00000014   704F               ANDI    R20, 0x0F
   \   00000016   7050               ANDI    R21, 0x00
   \   00000018   0FE4               ADD     R30, R20
   \   0000001A   1FF5               ADC     R31, R21
   \   0000001C   9144               LPM     R20, Z
   \   0000001E   01F9               MOVW    R31:R30, R19:R18
   \   00000020   8340               ST      Z, R20
    169            ret[1] = hex_lookup[ ( n & 0x0F ) ];
   \   00000022   ....               LDI     R30, LOW(hex_lookup)
   \   00000024   ....               LDI     R31, (hex_lookup) >> 8
   \   00000026   E04F               LDI     R20, 15
   \   00000028   E050               LDI     R21, 0
   \   0000002A   2340               AND     R20, R16
   \   0000002C   2351               AND     R21, R17
   \   0000002E   0FE4               ADD     R30, R20
   \   00000030   1FF5               ADC     R31, R21
   \   00000032   9104               LPM     R16, Z
   \   00000034   01F9               MOVW    R31:R30, R19:R18
   \   00000036   8301               STD     Z+1, R16
    170            ret[2] = '\0';
   \   00000038   E000               LDI     R16, 0
   \   0000003A   01F9               MOVW    R31:R30, R19:R18
   \   0000003C   8302               STD     Z+2, R16
    171          }//end itoh
   \   0000003E   9508               RET
    172          
    173          
    174          /*! \brief Check if Character is a number
    175           *
    176           *
    177           *  \param    input     Character to test
    178           *
    179           *  \retval             BOOL: 1 on success, 0 else
    180           *
    181           */

   \                                 In segment CODE, align 2, keep-with-next
    182          unsigned char ZIP_isNmbr( unsigned char nmbr )
   \                     ZIP_isNmbr:
    183          {
    184              if( ( nmbr >= '0' ) && ( nmbr <= '9' ) )
   \   00000000   3300               CPI     R16, 48
   \   00000002   F020               BRCS    ??ZIP_isNmbr_0
   \   00000004   330A               CPI     R16, 58
   \   00000006   F410               BRCC    ??ZIP_isNmbr_0
    185              {
    186                return 1;  //Check if this is a number
   \   00000008   E001               LDI     R16, 1
   \   0000000A   9508               RET
    187              }
    188          
    189              else
    190              {
    191                return 0;
   \                     ??ZIP_isNmbr_0:
   \   0000000C   E000               LDI     R16, 0
   \   0000000E   9508               RET
    192              }
    193          }//end isNmbr

   Maximum stack usage in bytes:

     Function       CSTACK RSTACK
     --------       ------ ------
     ZIP_atoi           4      4
     ZIP_compress       6      4
     ZIP_decompress    13      4
       -> ZIP_htoi     13      2
       -> ZIP_htoi     13      2
     ZIP_htoi           0      2
     ZIP_isNmbr         0      2
     ZIP_itoh           0      2


   Segment part sizes:

     Function/Label Bytes
     -------------- -----
     hex_lookup       17
     mask              7
     power             7
     ZIP_compress    226
     ZIP_decompress  218
     ZIP_atoi         76
     ZIP_htoi         32
     ZIP_itoh         64
     ZIP_isNmbr       16

 
 632 bytes in segment CODE
  31 bytes in segment NEAR_F
 
 663 bytes of CODE memory

Errors: none
Warnings: none

⌨️ 快捷键说明

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