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

  1. ;
  2. ;       FuHao.asm
  3. ;
  4. code            segment byte public 'CODE'
  5.         assume  cs:code, ds:code
  6. ;
  7. include         xcs.mac
  8. ;
  9.         extrn   kQuWei:near
  10.         extrn   prKeys:near
  11.         extrn   ResetSameBuf:near
  12.         extrn   AddSame:near
  13.         extrn   cc2:byte
  14.         extrn   cc1:byte
  15.         extrn   KeyBuf:byte
  16.         extrn   KeyNum:byte
  17.         extrn   XiLaTab:byte
  18.         extrn   QuHao:byte
  19.         extrn   EWenChr:byte
  20.         extrn   EWenTab:byte
  21. ;
  22.         public  kFuHao
  23.         public  FuHao
  24. ;
  25. kFuHao          proc    near
  26.         or      ax, ax
  27.         jz      kFuHaoRetn
  28.         inc     ax
  29.         jz      kFuHaoRetn
  30.         dec     ax
  31.         jmp     kFuHaoCont0
  32. kFuHaoRetn:     xor     ax, ax
  33.         xor     cx, cx
  34.         ret
  35. ;
  36. kFuHaoCont0:    mov     bl, QuHao
  37.         cmp     bl, 2
  38.         jbe     kFhToQuWei
  39.         cmp     bl, 4
  40.         je      kFhToQuWei
  41.         cmp     bl, 5
  42.         je      kFhToQuWei
  43.         cmp     bl, 8
  44.         jae     kFhToQuWei
  45.         sub     bl, 3
  46.         xor     bh, bh
  47.         shl     bx, 1
  48.         jmp     word ptr cs:kFhEntry[bx]
  49. ;
  50. kFhEntry        label   word
  51.         dw      offset QuanJiao
  52.         dw      offset PinJia
  53.         dw      offset PianJia
  54.         dw      offset XiLa
  55.         dw      offset EWen
  56. ;
  57. kFhToQuWei:     cmp     KeyNum, 2
  58.         ja      kFhSkipPre
  59.         cmp     al, 20h
  60.         jb      kFhRetn
  61.         push    ax
  62.         mov     al, bl
  63.         aam
  64.         add     ax, 3030h
  65.         xchg    ah, al
  66.         mov     word ptr KeyBuf, ax
  67.         mov     al, '0'
  68.         mov     KeyBuf+2, al
  69.         mov     KeyNum, 2
  70.         call    prKeys
  71.         inc     KeyNum
  72.         pop     ax
  73. kFhSkipPre:     call    kQuWei
  74. kFhRetn:        ret
  75. ;
  76. QuanJiao:       xor     cx, cx
  77.         cmp     al, ' '
  78.         jb      kFhRetn
  79.         cmp     al, 7fh
  80.         ja      kFhRetn
  81.         add     al, 80h
  82.         mov     cc1, 0a3h
  83.         mov     cc2, al
  84.         call    ResetSameBuf
  85.         call    AddSame
  86.         xor     ax, ax
  87.         mov     cx, 0101h
  88.         ret
  89. ;
  90. PinJia:         jmp     kFhToQuWei
  91.         ret
  92. ;
  93. PianJia:        jmp     kFhToQuWei
  94.         ret
  95. ;
  96. XiLa:           xor     cx, cx
  97.         cmp     al, 'A'
  98.         jb      kFhRetn
  99.         cmp     al, 'Z'
  100.         jb      kFhXiLaUpper
  101.         cmp     al, 'a'
  102.         jb      kFhRetn
  103.         cmp     al, 'z'
  104.         ja      kFhRetn
  105.         sub     al, 'a'
  106.         mov     bl, al
  107.         xor     bh, bh
  108. kFhGetXiLa:     shl     bx, 1
  109.         mov     ax, word ptr XiLaTab[bx]
  110.         mov     cc1, al
  111.         mov     cc2, ah
  112.         call    ResetSameBuf
  113.         call    AddSame
  114.         xor     ax, ax
  115.         mov     cx, 0101h
  116.         ret
  117. ;
  118. kFhXiLaUpper:   sub     al, 'A'
  119.         mov     bl, al
  120.         xor     bh, bh
  121.         add     bl, 26
  122.         jmp     kFhGetXiLa
  123. ;
  124. EWen:           mov     cx, 66
  125.         xor     bx, bx
  126. kFhEWenLoop:    cmp     al, byte ptr EWenChr[bx]
  127.         je      kFhGetEWen
  128.         inc     bl
  129.         loop    kFhEWenLoop
  130.         xor     cx, cx
  131.         ret
  132. ;
  133. kFhGetEWen:     shl     bx, 1
  134.         mov     ax, word ptr EWenTab[bx]
  135.         mov     cc1, al
  136.         mov     cc2, ah
  137.         call    ResetSameBuf
  138.         call    AddSame
  139.         xor     ax, ax
  140.         mov     cx, 0101h
  141.         ret
  142. kFuHao          endp
  143. ;
  144. FuHao           proc    far
  145.         call    kFuHao
  146.         retf
  147. FuHao           endp
  148. ;
  149. code            ends
  150.         end
  151.