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

📄 listsort.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       27/Sep/107  17:34:55 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d913f\ap\ap_playlist\listsort.c           #
#       List file     =  d:\case_i_d913f\ap\ap_playlist\.\list\listsort.lst  #
#       Object file   =  d:\case_i_d913f\ap\ap_playlist\.\obj\listsort.r01   #
#       ASM file      =  d:\case_i_d913f\ap\ap_playlist\.\list\listsort.s01  #
#       Command line  =  -v0 -mb -uu                                         #
#                        -OD:\case_i_d913f\ap\ap_playlist\.\Obj\ -e -K -w    #
#                        -gA -s9 -RCODE -r0 -DUSB_DISK_USING                 #
#                        -LD:\case_i_d913f\ap\ap_playlist\.\List\ -q -t8 -x  #
#                        -AD:\case_i_d913f\ap\ap_playlist\.\List\ -X         #
#                        -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\         #
#                        -Id:\case_i_d913f\ap\ap_music\                      #
#                        d:\case_i_d913f\AP\AP_PLAYLIST\listsort.c           #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    listsort(17)
   \   0000                    RSEG    APC_LIST_FUN2(0)
   \   0000                    EXTERN  SetDspMips
   \   0000                    PUBLIC  compare_string
   \   0000                    PUBLIC  list_sort
   \   0000                    PUBLIC  shortsort
   \   0000                    PUBLIC  swap
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?US_DIV_L02
   \   0000                    EXTERN  ?S_MUL_L02
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    RSEG    APC_LIST_FUN2
   \   0000            compare_string:
      1          #include "musiclist.h"
      2          #define  COMPARELEN  30
      3          #define CUTOFF 8                           
      4          #pragma codeseg(APC_LIST_FUN2)            
      5          int compare_string(char *string1,char *string2)
      6          {
   \   0000  FDE5              PUSH    IY
   \   0002  DDE5              PUSH    IX
   \   0004  DD210000          LD      IX,0
   \   0008  DD39              ADD     IX,SP
   \   000A  C5                PUSH    BC
   \   000B  D5                PUSH    DE
   \   000C  21F4FF            LD      HL,65524
   \   000F  39                ADD     HL,SP
   \   0010  F9                LD      SP,HL
      7              int i;                           
      8              int *filenum_1 = (int*) string1;
      9              int *filenum_2 = (int*) string2;     
     10              unsigned int  string1_location =*filenum_1;
   \   0011  EB                EX      DE,HL
   \   0012  46                LD      B,(HL)
   \   0013  DD70F6            LD      (IX-10),B
   \   0016  23                INC     HL
   \   0017  66                LD      H,(HL)
   \   0018  DD74F7            LD      (IX-9),H
     11              unsigned int  string2_location = *filenum_2;
   \   001B  69                LD      L,C
   \   001C  DD66FF            LD      H,(IX-1)
   \   001F  46                LD      B,(HL)
   \   0020  DD70F4            LD      (IX-12),B
   \   0023  23                INC     HL
   \   0024  66                LD      H,(HL)
   \   0025  DD74F5            LD      (IX-11),H
     12              char  *string1_start =(char*)(string1_location*OneFileInfor+IDMStartAddress+2);
   \   0028  DD6EF6            LD      L,(IX-10)
   \   002B  DD66F7            LD      H,(IX-9)
   \   002E  29                ADD     HL,HL
   \   002F  29                ADD     HL,HL
   \   0030  29                ADD     HL,HL
   \   0031  29                ADD     HL,HL
   \   0032  29                ADD     HL,HL
   \   0033  010240            LD      BC,16386
   \   0036  09                ADD     HL,BC
   \   0037  DD75F0            LD      (IX-16),L
   \   003A  DD74F1            LD      (IX-15),H
     13              char  *string2_start =(char*)(string2_location*OneFileInfor+IDMStartAddress+2);
   \   003D  DD6EF4            LD      L,(IX-12)
   \   0040  DD66F5            LD      H,(IX-11)
   \   0043  29                ADD     HL,HL
   \   0044  29                ADD     HL,HL
   \   0045  29                ADD     HL,HL
   \   0046  29                ADD     HL,HL
   \   0047  29                ADD     HL,HL
   \   0048  09                ADD     HL,BC
   \   0049  E5                PUSH    HL
   \   004A  FDE1              POP     IY
     14              for(i=0;i<COMPARELEN;i++)
   \   004C  AF                XOR     A
   \   004D  DD77F2            LD      (IX-14),A
   \   0050  DD77F3            LD      (IX-13),A
   \   0053            ?0003:
   \   0053  011E80            LD      BC,32798
   \   0056  DD6EF2            LD      L,(IX-14)
   \   0059  DD66F3            LD      H,(IX-13)
   \   005C  78                LD      A,B
   \   005D  AC                XOR     H
   \   005E  67                LD      H,A
   \   005F  ED42              SBC     HL,BC
   \   0061  3039              JR      NC,?0002
   \   0063            ?0004:
     15              {
     16                  if((*string1_start)>(*string2_start))        //string1>string2 
   \   0063  DD6EF0            LD      L,(IX-16)
   \   0066  DD66F1            LD      H,(IX-15)
   \   0069  FD7E00            LD      A,(IY+0)
   \   006C  BE                CP      (HL)
   \   006D  3005              JR      NC,?0007
   \   006F            ?0006:
     17                    return 1;                   
   \   006F  210100            LD      HL,1
   \   0072  182B              JR      ?0014
   \   0074            ?0007:
     18                  else if((*string1_start)<(*string2_start))     //string1<string2   
   \   0074  7E                LD      A,(HL)
   \   0075  FDBE00            CP      (IY+0)
   \   0078  3005              JR      NC,?0009
   \   007A            ?0008:
     19                  return -1;
   \   007A  21FFFF            LD      HL,65535
   \   007D  1820              JR      ?0014
   \   007F            ?0009:
     20                
     21                if((*string1_start)==0 && (*string2_start)==0)  //提前结束
   \   007F  AF                XOR     A
   \   0080  B6                OR      (HL)
   \   0081  2005              JR      NZ,?0011
   \   0083  FDB600            OR      (IY+0)
   \   0086  2814              JR      Z,?0002
   \   0088            ?0013:
   \   0088            ?0012:
   \   0088            ?0010:
     22                    break;
   \   0088            ?0011:
     23                  string1_start++;
   \   0088  DD34F0            INC     (IX-16)
   \   008B  2003              JR      NZ,?0065
   \   008D  DD34F1            INC     (IX-15)
   \   0090            ?0065:
     24                  string2_start++;                
   \   0090  DD34F2            INC     (IX-14)
   \   0093  FD23              INC     IY
   \   0095  20BC              JR      NZ,?0003
   \   0097  DD34F3            INC     (IX-13)
   \   009A  18B7              JR      ?0003
   \   009C            ?0002:
     25              }
     26              return  0;                         //string1 和 string2 相等    
   \   009C  210000            LD      HL,0
     27          }  
   \   009F            ?0014:
   \   009F  DDF9              LD      SP,IX
   \   00A1  DDE1              POP     IX
   \   00A3  FDE1              POP     IY
   \   00A5  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   00A8            swap:
     28           
     29          void  swap(char *a, char *b)
     30          {
   \   00A8  FDE5              PUSH    IY
   \   00AA  DDE5              PUSH    IX
   \   00AC  F5                PUSH    AF
   \   00AD  C5                PUSH    BC
   \   00AE  DDE1              POP     IX
   \   00B0  D5                PUSH    DE
   \   00B1  FDE1              POP     IY
     31              unsigned char tmp;
     32              unsigned char counter=2;
   \   00B3  210000            LD      HL,0
   \   00B6  39                ADD     HL,SP
   \   00B7  3602              LD      (HL),2
     33              if ( a != b )
   \   00B9  EB                EX      DE,HL
   \   00BA  A7                AND     A
   \   00BB  ED42              SBC     HL,BC
   \   00BD  281C              JR      Z,?0017
   \   00BF            ?0015:
   \   00BF            ?0018:
     34                  while(counter--)  //只交换序号
   \   00BF  210000            LD      HL,0
   \   00C2  39                ADD     HL,SP
   \   00C3  46                LD      B,(HL)
   \   00C4  35                DEC     (HL)
   \   00C5  04                INC     B
   \   00C6  05                DEC     B
   \   00C7  2812              JR      Z,?0017
   \   00C9            ?0019:
     35                  {
     36                      tmp = *a;
   \   00C9  FD4600            LD      B,(IY+0)
     37                      *a = *b;
   \   00CC  DD4E00            LD      C,(IX+0)
   \   00CF  FD7100            LD      (IY+0),C
     38                      *b = tmp;
   \   00D2  DD7000            LD      (IX+0),B
     39                      a++;
     40                      b++;
     41                  }
     42          }  
   \   00D5  DD23              INC     IX
   \   00D7  FD23              INC     IY
   \   00D9  18E4              JR      ?0015
   \   00DB            ?0017:
   \   00DB            ?0016:
   \   00DB  E1                POP     HL
   \   00DC  DDE1              POP     IX
   \   00DE  FDE1              POP     IY
   \   00E0  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   00E3            shortsort:
     43          
     44          void  shortsort (char *lo,char *hi,unsigned int width )
     45          {
   \   00E3  FDE5              PUSH    IY
   \   00E5  DDE5              PUSH    IX
   \   00E7  DD210000          LD      IX,0
   \   00EB  DD39              ADD     IX,SP
   \   00ED  C5                PUSH    BC
   \   00EE  D5                PUSH    DE
   \   00EF  F5                PUSH    AF
   \   00F0            ?0021:
     46              char *p, *max;
     47              while (hi > lo) {
   \   00F0  DD4EFE            LD      C,(IX-2)
   \   00F3  DD46FF            LD      B,(IX-1)
   \   00F6  DD6EFC            LD      L,(IX-4)
   \   00F9  DD66FD            LD      H,(IX-3)
   \   00FC  A7                AND     A
   \   00FD  ED42              SBC     HL,BC
   \   00FF  D28501            JP      NC,?0020
   \   0102            ?0022:
     48                  max = lo;
   \   0102  DD6EFC            LD      L,(IX-4)
   \   0105  DD66FD            LD      H,(IX-3)
   \   0108  E5                PUSH    HL
   \   0109  FDE1              POP     IY
     49                  for (p = lo+width; p <= hi; p += width) {
   \   010B  DD6E08            LD      L,(IX+8)
   \   010E  DD6609            LD      H,(IX+9)
   \   0111  DD4EFC            LD      C,(IX-4)
   \   0114  DD46FD            LD      B,(IX-3)
   \   0117  09                ADD     HL,BC
   \   0118  DD75FA            LD      (IX-6),L
   \   011B  DD74FB            LD      (IX-5),H
   \   011E            ?0024:
   \   011E  DD4EFA            LD      C,(IX-6)
   \   0121  DD46FB            LD      B,(IX-5)
   \   0124  DD6EFE            LD      L,(IX-2)
   \   0127  DD66FF            LD      H,(IX-1)
   \   012A  A7                AND     A

⌨️ 快捷键说明

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