home *** CD-ROM | disk | FTP | other *** search
- ;
- ; FuHao.asm
- ;
- code segment byte public 'CODE'
- assume cs:code, ds:code
- ;
- include xcs.mac
- ;
- extrn kQuWei:near
- extrn prKeys:near
- extrn ResetSameBuf:near
- extrn AddSame:near
- extrn cc2:byte
- extrn cc1:byte
- extrn KeyBuf:byte
- extrn KeyNum:byte
- extrn XiLaTab:byte
- extrn QuHao:byte
- extrn EWenChr:byte
- extrn EWenTab:byte
- ;
- public kFuHao
- public FuHao
- ;
- kFuHao proc near
- or ax, ax
- jz kFuHaoRetn
- inc ax
- jz kFuHaoRetn
- dec ax
- jmp kFuHaoCont0
- kFuHaoRetn: xor ax, ax
- xor cx, cx
- ret
- ;
- kFuHaoCont0: mov bl, QuHao
- cmp bl, 2
- jbe kFhToQuWei
- cmp bl, 4
- je kFhToQuWei
- cmp bl, 5
- je kFhToQuWei
- cmp bl, 8
- jae kFhToQuWei
- sub bl, 3
- xor bh, bh
- shl bx, 1
- jmp word ptr cs:kFhEntry[bx]
- ;
- kFhEntry label word
- dw offset QuanJiao
- dw offset PinJia
- dw offset PianJia
- dw offset XiLa
- dw offset EWen
- ;
- kFhToQuWei: cmp KeyNum, 2
- ja kFhSkipPre
- cmp al, 20h
- jb kFhRetn
- push ax
- mov al, bl
- aam
- add ax, 3030h
- xchg ah, al
- mov word ptr KeyBuf, ax
- mov al, '0'
- mov KeyBuf+2, al
- mov KeyNum, 2
- call prKeys
- inc KeyNum
- pop ax
- kFhSkipPre: call kQuWei
- kFhRetn: ret
- ;
- QuanJiao: xor cx, cx
- cmp al, ' '
- jb kFhRetn
- cmp al, 7fh
- ja kFhRetn
- add al, 80h
- mov cc1, 0a3h
- mov cc2, al
- call ResetSameBuf
- call AddSame
- xor ax, ax
- mov cx, 0101h
- ret
- ;
- PinJia: jmp kFhToQuWei
- ret
- ;
- PianJia: jmp kFhToQuWei
- ret
- ;
- XiLa: xor cx, cx
- cmp al, 'A'
- jb kFhRetn
- cmp al, 'Z'
- jb kFhXiLaUpper
- cmp al, 'a'
- jb kFhRetn
- cmp al, 'z'
- ja kFhRetn
- sub al, 'a'
- mov bl, al
- xor bh, bh
- kFhGetXiLa: shl bx, 1
- mov ax, word ptr XiLaTab[bx]
- mov cc1, al
- mov cc2, ah
- call ResetSameBuf
- call AddSame
- xor ax, ax
- mov cx, 0101h
- ret
- ;
- kFhXiLaUpper: sub al, 'A'
- mov bl, al
- xor bh, bh
- add bl, 26
- jmp kFhGetXiLa
- ;
- EWen: mov cx, 66
- xor bx, bx
- kFhEWenLoop: cmp al, byte ptr EWenChr[bx]
- je kFhGetEWen
- inc bl
- loop kFhEWenLoop
- xor cx, cx
- ret
- ;
- kFhGetEWen: shl bx, 1
- mov ax, word ptr EWenTab[bx]
- mov cc1, al
- mov cc2, ah
- call ResetSameBuf
- call AddSame
- xor ax, ax
- mov cx, 0101h
- ret
- kFuHao endp
- ;
- FuHao proc far
- call kFuHao
- retf
- FuHao endp
- ;
- code ends
- end
-