home *** CD-ROM | disk | FTP | other *** search
/ Popular Software (Premium Edition) / mycd.iso / DICT / DFKC / ZWH / CHCS / QUWEI.ASM < prev    next >
Encoding:
Assembly Source File  |  1998-01-12  |  3.6 KB  |  198 lines

  1. ;
  2. ;       quwei.asm
  3. ;
  4. code            segment byte public 'CODE'
  5.         assume  cs:code, ds:code
  6. ;
  7. include         xcs.mac
  8. ;
  9.         extrn   prKeys:near
  10.         extrn   DispSames:near
  11.         extrn   message:near
  12.         extrn   beep:near
  13.         extrn   AddSame:near
  14.         extrn   ResetSameBuf:near
  15. ;
  16.         extrn   cc2:byte
  17.         extrn   cc1:byte
  18.         extrn   KeyBuf:byte
  19.         extrn   KeyNum:byte
  20. ;
  21.         public  kQuWei
  22.         public  QuWei
  23. ;
  24. kQuWei          proc    near
  25.         or      ax, ax
  26.         jz      kQwRetn
  27.         inc     ax
  28.         jz      kQwRetn
  29.         dec     ax
  30.         jmp     kQwCont0
  31. ;
  32. kQwRetn:        xor     ax, ax
  33.         xor     cx, cx
  34.         ret
  35. ;
  36. kQwCont0:       cmp     al, 08h
  37.         je      kQwBack
  38.         cmp     al, RetKey
  39.         je      kQwReset
  40.         cmp     al, EscKey
  41.         je      kQwReset
  42.         cmp     al, '['
  43.         je      kQwPgBack
  44.         cmp     al, ','
  45.         je      kQwPgBack
  46.         cmp     al, ']'
  47.         je      kQwPgFore
  48.         cmp     al, '.'
  49.         je      kQwPgFore
  50.         cmp     ah, 0bh
  51.         ja      kQwElse
  52.         cmp     al, '0'
  53.         jb      kQwElse
  54.         cmp     al, '9'
  55.         ja      kQwElse
  56.         jmp     kQwMatch
  57. ;
  58. kQwBack:        cmp     KeyNum, 1
  59.         je      kQwReset
  60.         cmp     KeyNum, 0
  61.         je      kQwRet0
  62.         dec     KeyNum
  63.         dec     KeyNum
  64.         mov     bl, KeyNum
  65.         xor     bh, bh
  66.         mov     al, KeyBuf[bx]
  67.         jmp     kQwMatch
  68. ;
  69. kQwRet0:        xor     cx, cx
  70.         ret
  71. ;
  72. kQwReset:       cmp     KeyNum, 0
  73.         je      kQwRet0
  74.         mov     KeyNum, 0
  75.         call    message
  76.         xor     ax, ax
  77.         jmp     kQwRet0
  78. ;
  79. kQwPgFore:      jmp     QuPgFore
  80. ;
  81. kQwElse:        jmp     kQwRet0
  82. ;
  83. kQwError:       call    beep
  84.         xor     ax, ax
  85.         jmp     kQwRet0
  86. ;
  87. kQwPgBack:      cmp     KeyNum, 0
  88.         je      kQwRet0
  89.         xor     ax, ax
  90.         cmp     KeyNum, 3
  91.         jne     kQwRet0
  92.         cmp     KeyBuf[02h], '0'
  93.         je      kQwRet0
  94.         mov     al, KeyBuf[02h]
  95.         dec     al
  96.         dec     KeyNum
  97.         jmp     kQwMatch
  98. ;
  99. QuPgFore:       cmp     KeyNum, 0
  100.         je      kQwRet0
  101.         xor     ax, ax
  102.         cmp     KeyNum, 2
  103.         jne     kQwCont1
  104.         mov     al, '1'
  105.         mov     KeyBuf+2, al
  106.         jmp     kQwMatch
  107. ;
  108. kQwCont1:       cmp     KeyNum, 3
  109.         jne     kQwRet0
  110.         cmp     byte ptr KeyBuf+2, '9'
  111.         je      kQwRet0
  112.         mov     al, byte ptr KeyBuf+2
  113.         inc     al
  114.         dec     KeyNum
  115.         jmp     kQwMatch
  116. ;
  117. kQwMatch:       xor     bh, bh
  118.         mov     bl, KeyNum
  119.         mov     KeyBuf[bx], al
  120.         call    prKeys
  121.         inc     KeyNum
  122.         cmp     KeyNum, 2
  123.         ja      QuMatch
  124.         mov     byte ptr KeyBuf+2, '0'
  125.         je      QuMatch
  126.         xor     ax, ax
  127.         jmp     kQwRet0
  128. ;
  129. toQwError:      jmp     kQwError
  130. ;
  131. QuMatch:        call    ResetSameBuf
  132.         lea     bx, KeyBuf
  133.         mov     ax, [bx]
  134.         sub     ax, 3030h
  135.         and     ax, 0f0fh
  136.         xchg    ah, al
  137.         aad
  138.         or      al, al
  139.         jz      toQwError
  140.         cmp     al, 94
  141.         ja      toQwError
  142.         add     al, 0a0h
  143.         mov     cc1, al
  144.         mov     ax, [bx+2]
  145.         sub     ax, 3030h
  146.         and     ax, 0f0fh
  147.         xchg    ah, al
  148.         cmp     KeyNum, 4
  149.         je      QuOnlyOne
  150.         mov     cx, 10
  151.         mov     al, 0ffh
  152.         cmp     ah, 0
  153.         jne     kQwLoop
  154.         inc     al
  155.         dec     cl
  156. kQwLoop:        inc     al
  157.         push    ax
  158.         push    cx
  159.         aad
  160.         add     al, 0a0h
  161.         mov     cc2, al
  162.         call    AddSame
  163.         mov     al, cc2
  164.         cmp     al, 0feh
  165.         pop     cx
  166.         pop     ax
  167.         jae     kQwEnd
  168.         loop    kQwLoop
  169. ;
  170. kQwEnd:         call    DispSames
  171.         xor     ax, ax
  172.         jmp     kQwRet0
  173. ;
  174. kQwError4:      jmp     kQwError
  175. ;
  176. QuOnlyOne:      aad
  177.         or      al, al
  178.         je      kQwError4
  179.         cmp     al, 94
  180.         ja      kQwError4
  181.         add     al, 0a0h
  182.         mov     cc2, al
  183.         call    AddSame
  184.         mov     KeyNum, 0
  185.         call    message
  186.         xor     ax, ax
  187.         mov     cx, 0101h
  188.         ret
  189. kQuWei          endp
  190. ;
  191. QuWei           proc    far
  192.         call    kQuWei
  193.         retf
  194. QuWei           endp
  195. ;
  196. code            ends
  197.         end
  198.