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

📄 avrsms_zip.lst

📁 SMS傳送Sourcode,compiler with C,AT command
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \   000000C4   3086               CPI     R24, 6
   \   000000C6   E000               LDI     R16, 0
   \   000000C8   0790               CPC     R25, R16
   \   000000CA   F409               BRNE    $+2+2
   \   000000CC   CFA7               RJMP    ??ZIP_compress_1
     60          
     61              else
     62              {
     63                   ii++;
   \   000000CE   9601               ADIW    R25:R24, 1
   \   000000D0   CFAD               RJMP    ??ZIP_compress_0
     64              }
     65            }
     66          
     67            ret[iii] = '\0';
   \                     ??ZIP_compress_2:
   \   000000D2   E000               LDI     R16, 0
   \   000000D4   0DA2               ADD     R26, R2
   \   000000D6   1DB3               ADC     R27, R3
   \   000000D8   930C               ST      X, R16
     68          
     69            return i;
   \   000000DA   0189               MOVW    R17:R16, R19:R18
   \   000000DC   E0E6               LDI     R30, 6
   \   000000DE   ........           JMP     ?EPILOGUE_B6_L09
     70          }//end ZIP_compress
     71          
     72          

   \                                 In segment CODE, align 2, keep-with-next
     73          int ZIP_decompress( unsigned char *compressed, unsigned char *decompressed )
   \                     ZIP_decompress:
     74          {
   \   00000000   ........           CALL    ?PROLOGUE13_L09
   \   00000004                      REQUIRE ?Register_R4_is_cg_reg
   \   00000004                      REQUIRE ?Register_R5_is_cg_reg
   \   00000004                      REQUIRE ?Register_R6_is_cg_reg
   \   00000004                      REQUIRE ?Register_R7_is_cg_reg
   \   00000004                      REQUIRE ?Register_R8_is_cg_reg
   \   00000004                      REQUIRE ?Register_R9_is_cg_reg
   \   00000004                      REQUIRE ?Register_R10_is_cg_reg
   \   00000004                      REQUIRE ?Register_R11_is_cg_reg
   \   00000004                      REQUIRE ?Register_R12_is_cg_reg
   \   00000004   0128               MOVW    R5:R4, R17:R16
   \   00000006   01D9               MOVW    R27:R26, R19:R18
     75            //Local variables
     76            int i,ii,iii;                                             //String index
     77            unsigned char rest_c, ans_c ,dec_c , this_c, next_c;      //Read and temorary variables
     78          
     79            for( i = ii = iii = rest_c = 0; (this_c = compressed[i++]) != '\0'; )                         //Run through complete string
   \   00000008   E000               LDI     R16, 0
   \   0000000A   2E80               MOV     R8, R16
   \   0000000C   E010               LDI     R17, 0
   \   0000000E   0138               MOVW    R7:R6, R17:R16
   \   00000010   01C8               MOVW    R25:R24, R17:R16
   \   00000012   0158               MOVW    R11:R10, R17:R16
   \   00000014   C00B               RJMP    ??ZIP_decompress_0
     80            {
     81              //Read:
     82              next_c = compressed[i++];                               //Read from in buffer in AVR_SMS_com.c
     83          
     84              //Convert:
     85              dec_c = 16 * ZIP_htoi( this_c ) + ZIP_htoi( next_c );           //Decimal value of the two chars
     86              ans_c = dec_c & mask[6 - ii];                           //mask out the correct bits
     87              ans_c <<= ii;                                           //Left shift proper correct of times
     88              decompressed[iii++] = ans_c + rest_c;                        //Store
     89          
     90              rest_c = (dec_c & ~mask[6 - ii]) >> ( 7 - ii );         //Saving up for next time
     91          
     92              if( ii == 6)                                            //Do carry
     93              {
     94                ii = 0;
   \                     ??ZIP_decompress_1:
   \   00000016   E080               LDI     R24, 0
   \   00000018   E090               LDI     R25, 0
     95                decompressed[iii++] = rest_c;
   \   0000001A   01FD               MOVW    R31:R30, R27:R26
   \   0000001C   0DE6               ADD     R30, R6
   \   0000001E   1DF7               ADC     R31, R7
   \   00000020   8280               ST      Z, R8
   \   00000022   E001               LDI     R16, 1
   \   00000024   0E60               ADD     R6, R16
   \   00000026   E000               LDI     R16, 0
   \   00000028   1E70               ADC     R7, R16
     96                rest_c = 0;
   \   0000002A   2488               CLR     R8
     97              }
   \                     ??ZIP_decompress_0:
   \   0000002C   01F2               MOVW    R31:R30, R5:R4
   \   0000002E   0DEA               ADD     R30, R10
   \   00000030   1DFB               ADC     R31, R11
   \   00000032   8110               LD      R17, Z
   \   00000034   E001               LDI     R16, 1
   \   00000036   0EA0               ADD     R10, R16
   \   00000038   E000               LDI     R16, 0
   \   0000003A   1EB0               ADC     R11, R16
   \   0000003C   2F01               MOV     R16, R17
   \   0000003E   2311               TST     R17
   \   00000040   F409               BRNE    $+2+2
   \   00000042   C043               RJMP    ??ZIP_decompress_2
   \   00000044   01F2               MOVW    R31:R30, R5:R4
   \   00000046   0DEA               ADD     R30, R10
   \   00000048   1DFB               ADC     R31, R11
   \   0000004A   8090               LD      R9, Z
   \   0000004C   E011               LDI     R17, 1
   \   0000004E   0EA1               ADD     R10, R17
   \   00000050   E010               LDI     R17, 0
   \   00000052   1EB1               ADC     R11, R17
   \   00000054   ....               RCALL   ZIP_htoi
   \   00000056   2F10               MOV     R17, R16
   \   00000058   E100               LDI     R16, 16
   \   0000005A   9F10               MUL     R17, R16
   \   0000005C   2CC0               MOV     R12, R0
   \   0000005E   2D09               MOV     R16, R9
   \   00000060   ....               RCALL   ZIP_htoi
   \   00000062   2F20               MOV     R18, R16
   \   00000064   0D2C               ADD     R18, R12
   \   00000066   ....               LDI     R30, LOW((mask + 6))
   \   00000068   ....               LDI     R31, (mask + 6) >> 8
   \   0000006A   018C               MOVW    R17:R16, R25:R24
   \   0000006C   9511               NEG     R17
   \   0000006E   9501               NEG     R16
   \   00000070   4010               SBCI    R17, 0
   \   00000072   0FE0               ADD     R30, R16
   \   00000074   1FF1               ADC     R31, R17
   \   00000076   9104               LPM     R16, Z
   \   00000078   2302               AND     R16, R18
   \   0000007A   2F48               MOV     R20, R24
   \   0000007C   ........           CALL    ?C_SHL_L01
   \   00000080   0E80               ADD     R8, R16
   \   00000082   01FD               MOVW    R31:R30, R27:R26
   \   00000084   0DE6               ADD     R30, R6
   \   00000086   1DF7               ADC     R31, R7
   \   00000088   8280               ST      Z, R8
   \   0000008A   E001               LDI     R16, 1
   \   0000008C   0E60               ADD     R6, R16
   \   0000008E   E000               LDI     R16, 0
   \   00000090   1E70               ADC     R7, R16
   \   00000092   E030               LDI     R19, 0
   \   00000094   ....               LDI     R30, LOW((mask + 6))
   \   00000096   ....               LDI     R31, (mask + 6) >> 8
   \   00000098   018C               MOVW    R17:R16, R25:R24
   \   0000009A   9511               NEG     R17
   \   0000009C   9501               NEG     R16
   \   0000009E   4010               SBCI    R17, 0
   \   000000A0   0FE0               ADD     R30, R16
   \   000000A2   1FF1               ADC     R31, R17
   \   000000A4   9104               LPM     R16, Z
   \   000000A6   E010               LDI     R17, 0
   \   000000A8   9500               COM     R16
   \   000000AA   9510               COM     R17
   \   000000AC   2302               AND     R16, R18
   \   000000AE   2313               AND     R17, R19
   \   000000B0   E047               LDI     R20, 7
   \   000000B2   2F28               MOV     R18, R24
   \   000000B4   1B42               SUB     R20, R18
   \   000000B6   ........           CALL    ?SS_SHR_L02
   \   000000BA   2E80               MOV     R8, R16
   \   000000BC   3086               CPI     R24, 6
   \   000000BE   E000               LDI     R16, 0
   \   000000C0   0790               CPC     R25, R16
   \   000000C2   F409               BRNE    $+2+2
   \   000000C4   CFA8               RJMP    ??ZIP_decompress_1
     98              else
     99              {
    100                    ii++;
   \   000000C6   9601               ADIW    R25:R24, 1
   \   000000C8   CFB1               RJMP    ??ZIP_decompress_0
    101              }
    102          
    103            }
    104          
    105            decompressed[iii] = '\0';                                      //Terminate string in a proper manner
   \                     ??ZIP_decompress_2:
   \   000000CA   E000               LDI     R16, 0
   \   000000CC   0DA6               ADD     R26, R6
   \   000000CE   1DB7               ADC     R27, R7
   \   000000D0   930C               ST      X, R16
    106            return iii; //Dummy for now
   \   000000D2   0183               MOVW    R17:R16, R7:R6
   \   000000D4   E0ED               LDI     R30, 13
   \   000000D6   ........           JMP     ?EPILOGUE_B13_L09
    107          }
    108          
    109          
    110          /*! \brief Converting ascii char string to int
    111           *
    112           *
    113           *  \note     Will return value as int.
    114           *
    115           *  \param    a[]   ASCII string to be converted.
    116           *  \param    ret   Return Integer.
    117           *
    118           */

   \                                 In segment CODE, align 2, keep-with-next
    119          int ZIP_atoi( unsigned char *a )
   \                     ZIP_atoi:
    120          {
   \   00000000   ........           CALL    ?PROLOGUE4_L09
   \   00000004   01C8               MOVW    R25:R24, R17:R16
    121            int i, n;                                     //Help variables
    122          
    123            n = 0;                                        //Init
   \   00000006   E040               LDI     R20, 0
   \   00000008   E050               LDI     R21, 0
    124          
    125            for( i=0; ( a[i] >= '0' ) && ( a[i] <= '9' ); ++i )   //Running through string converting from ascii to integer

⌨️ 快捷键说明

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