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

📄 listsort.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   012B  ED42              SBC     HL,BC
   \   012D  383B              JR      C,?0023
   \   012F            ?0025:
     50                      if (compare_string(p, max) > 0) {
   \   012F  FDE5              PUSH    IY
   \   0131  C1                POP     BC
   \   0132  DD5EFA            LD      E,(IX-6)
   \   0135  DD56FB            LD      D,(IX-5)
   \   0138  3E00              LD      A,BYTE3 compare_string
   \   013A  210000            LD      HL,LWRD compare_string
   \   013D  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0140  4D                LD      C,L
   \   0141  44                LD      B,H
   \   0142  210000            LD      HL,0
   \   0145  F680              OR      128
   \   0147  ED42              SBC     HL,BC
   \   0149  E24D01            JP      PO,?0068
   \   014C  AC                XOR     H
   \   014D            ?0068:
   \   014D  F25901            JP      P,?0028
   \   0150            ?0027:
     51                          max = p;
   \   0150  DD6EFA            LD      L,(IX-6)
   \   0153  DD66FB            LD      H,(IX-5)
   \   0156  E5                PUSH    HL
   \   0157  FDE1              POP     IY
   \   0159            ?0028:
   \   0159  210000            LD      HL,0
   \   015C  39                ADD     HL,SP
   \   015D  7E                LD      A,(HL)
   \   015E  DD8608            ADD     A,(IX+8)
   \   0161  77                LD      (HL),A
   \   0162  23                INC     HL
   \   0163  7E                LD      A,(HL)
   \   0164  DD8E09            ADC     A,(IX+9)
   \   0167  77                LD      (HL),A
   \   0168  18B4              JR      ?0024
   \   016A            ?0023:
     52                      }
     53                  }
     54                  swap(max, hi);
   \   016A  DD4EFE            LD      C,(IX-2)
   \   016D  DD46FF            LD      B,(IX-1)
   \   0170  CD8801            CALL    LWRD ?0077
     55                  hi -= width;
   \   0173  210400            LD      HL,4
   \   0176  39                ADD     HL,SP
   \   0177  7E                LD      A,(HL)
   \   0178  DD9608            SUB     (IX+8)
   \   017B  77                LD      (HL),A
   \   017C  23                INC     HL
   \   017D  7E                LD      A,(HL)
   \   017E  DD9E09            SBC     A,(IX+9)
   \   0181  77                LD      (HL),A
     56              }
     57          }
   \   0182  C3F000            JP      LWRD ?0021
   \   0185            ?0020:
   \   0185  C39F00            JP      LWRD ?0014
   \   0188            ?0077:
   \   0188  FDE5              PUSH    IY
   \   018A  D1                POP     DE
   \   018B            ?0078:
   \   018B  3E00              LD      A,BYTE3 swap
   \   018D  21A800            LD      HL,LWRD swap
   \   0190  C30000            JP      LWRD ?BANK_CALL_DIRECT_L08
   \   0193            list_sort:
     58          
     59          void  list_sort(char *base, unsigned short num, unsigned int width)
     60          {
   \   0193  FDE5              PUSH    IY
   \   0195  DDE5              PUSH    IX
   \   0197  DD210000          LD      IX,0
   \   019B  DD39              ADD     IX,SP
   \   019D  C5                PUSH    BC
   \   019E  D5                PUSH    DE
   \   019F  217CFF            LD      HL,65404
   \   01A2  39                ADD     HL,SP
   \   01A3  F9                LD      SP,HL
     61              char *lo, *hi;               
     62              char *mid;                   
     63              char *loguy, *higuy;         
     64              unsigned short size;             
     65              char *lostk[30], *histk[30];
     66              int stkptr;                  
     67              if (num < 2 || width == 0)
   \   01A4  010200            LD      BC,2
   \   01A7  DD6EFE            LD      L,(IX-2)
   \   01AA  DD66FF            LD      H,(IX-1)
   \   01AD  A7                AND     A
   \   01AE  ED42              SBC     HL,BC
   \   01B0  DA8804            JP      C,?0063
   \   01B3  DD7E08            LD      A,(IX+8)
   \   01B6  DDB609            OR      (IX+9)
   \   01B9  CA8804            JP      Z,?0063
   \   01BC            ?0031:
   \   01BC            ?0032:
   \   01BC            ?0029:
   \   01BC            ?0030:
     68                  return;                 // nothing to do  
     69              stkptr = 0;                 // initialize stack   
     70              lo = base;
   \   01BC  EB                EX      DE,HL
   \   01BD  E5                PUSH    HL
   \   01BE  FDE1              POP     IY
     71              hi = (char *)base + width * (num-1);        // initialize limits
   \   01C0  210600            LD      HL,6
   \   01C3  39                ADD     HL,SP
   \   01C4  E5                PUSH    HL
   \   01C5  21FFFF            LD      HL,65535
   \   01C8  DD4EFE            LD      C,(IX-2)
   \   01CB  DD46FF            LD      B,(IX-1)
   \   01CE  09                ADD     HL,BC
   \   01CF  4D                LD      C,L
   \   01D0  44                LD      B,H
   \   01D1  DD5E08            LD      E,(IX+8)
   \   01D4  DD5609            LD      D,(IX+9)
   \   01D7  CD0000            CALL    LWRD ?S_MUL_L02
   \   01DA  DD6EFC            LD      L,(IX-4)
   \   01DD  DD66FD            LD      H,(IX-3)
   \   01E0  19                ADD     HL,DE
   \   01E1  4D                LD      C,L
   \   01E2  44                LD      B,H
   \   01E3  E1                POP     HL
   \   01E4  71                LD      (HL),C
   \   01E5  23                INC     HL
   \   01E6  70                LD      (HL),B
   \   01E7  210000            LD      HL,0
   \   01EA  39                ADD     HL,SP
   \   01EB  AF                XOR     A
   \   01EC  77                LD      (HL),A
   \   01ED  23                INC     HL
   \   01EE  77                LD      (HL),A
   \   01EF            ?0033:
     72          recurse:
     73                output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
   \   01EF  DB4E              IN      A,(78)
   \   01F1  CBDF              SET     3,A
   \   01F3  D34E              OUT     (78),A
     74              size = (hi - lo) / width + 1;        // number of el's to sort  
   \   01F5  FDE5              PUSH    IY
   \   01F7  C1                POP     BC
   \   01F8  210600            LD      HL,6
   \   01FB  39                ADD     HL,SP
   \   01FC  56                LD      D,(HL)
   \   01FD  23                INC     HL
   \   01FE  66                LD      H,(HL)
   \   01FF  6A                LD      L,D
   \   0200  A7                AND     A
   \   0201  ED42              SBC     HL,BC
   \   0203  EB                EX      DE,HL
   \   0204  DD4E08            LD      C,(IX+8)
   \   0207  DD4609            LD      B,(IX+9)
   \   020A  CD0000            CALL    LWRD ?US_DIV_L02
   \   020D  13                INC     DE
     75                if (size <= CUTOFF) {
   \   020E  4B                LD      C,E
   \   020F  42                LD      B,D
   \   0210  210800            LD      HL,8
   \   0213  A7                AND     A
   \   0214  ED42              SBC     HL,BC
   \   0216  381D              JR      C,?0035
   \   0218            ?0034:
     76                  shortsort(lo, hi, width);   //冒泡法排序
   \   0218  DD6E08            LD      L,(IX+8)
   \   021B  DD6609            LD      H,(IX+9)
   \   021E  E5                PUSH    HL
   \   021F  210800            LD      HL,8
   \   0222  39                ADD     HL,SP
   \   0223  4E                LD      C,(HL)
   \   0224  23                INC     HL
   \   0225  46                LD      B,(HL)
   \   0226  FDE5              PUSH    IY
   \   0228  D1                POP     DE
   \   0229  3E00              LD      A,BYTE3 shortsort
   \   022B  21E300            LD      HL,LWRD shortsort
   \   022E  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
   \   0231  E1                POP     HL
     77              }
     78              else {
   \   0232  C34304            JP      LWRD ?0061
   \   0235            ?0035:
     79                  mid = lo + (size / 2) * width;      // find middle element  
   \   0235  CB38              SRL     B
   \   0237  CB19              RR      C
   \   0239  DD5E08            LD      E,(IX+8)
   \   023C  DD5609            LD      D,(IX+9)
   \   023F  CD0000            CALL    LWRD ?S_MUL_L02
   \   0242  FDE5              PUSH    IY
   \   0244  E1                POP     HL
   \   0245  19                ADD     HL,DE
     80                  swap(mid, lo);               //swap it to beginning of array  
   \   0246  FDE5              PUSH    IY
   \   0248  C1                POP     BC
   \   0249  EB                EX      DE,HL
   \   024A  CD8B01            CALL    LWRD ?0078
     81                  loguy = lo;
   \   024D  210400            LD      HL,4
   \   0250  39                ADD     HL,SP
   \   0251  FDE5              PUSH    IY
   \   0253  C1                POP     BC
   \   0254  71                LD      (HL),C
   \   0255  23                INC     HL
   \   0256  70                LD      (HL),B
     82                  higuy = hi + width;
   \   0257  2B                DEC     HL
   \   0258  2B                DEC     HL
   \   0259  2B                DEC     HL
   \   025A  E5                PUSH    HL
   \   025B  DD6E08            LD      L,(IX+8)
   \   025E  DD6609            LD      H,(IX+9)
   \   0261  E5                PUSH    HL
   \   0262  210A00            LD      HL,10
   \   0265  39                ADD     HL,SP
   \   0266  4E                LD      C,(HL)
   \   0267  23                INC     HL
   \   0268  46                LD      B,(HL)
   \   0269  E1                POP     HL
   \   026A  09                ADD     HL,BC
   \   026B  4D                LD      C,L
   \   026C  44                LD      B,H
   \   026D  E1                POP     HL
   \   026E  71                LD      (HL),C
   \   026F  23                INC     HL
   \   0270  70                LD      (HL),B
   \   0271            ?0038:
     83                  for (;;) {
   \   0271            ?0041:
     84                      do  {
     85                          loguy += width;
   \   0271  210400            LD      HL,4
   \   0274  39                ADD     HL,SP
   \   0275  7E                LD      A,(HL)
   \   0276  DD8608            ADD     A,(IX+8)
   \   0279  77                LD      (HL),A
   \   027A  23                INC     HL
   \   027B  7E                LD      A,(HL)
   \   027C  DD8E09            ADC     A,(IX+9)
   \   027F  77                LD      (HL),A
     86                      } while (loguy <= hi && compare_string(loguy, lo) <= 0);
   \   0280  2B                DEC     HL
   \   0281  4E                LD      C,(HL)
   \   0282  47                LD      B,A
   \   0283  23                INC     HL
   \   0284  23                INC     HL
   \   0285  56                LD      D,(HL)
   \   0286  23                INC     HL
   \   0287  66                LD      H,(HL)
   \   0288  6A                LD      L,D
   \   0289  A7                AND     A
   \   028A  ED42              SBC     HL,BC
   \   028C  3821              JR      C,?0039
   \   028E  FDE5              PUSH    IY
   \   0290  C1                POP     BC
   \   0291  210400            LD      HL,4
   \   0294  39                ADD     HL,SP

⌨️ 快捷键说明

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