友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
飞读中文网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

windows环境下32位汇编语言程序设计-第96章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




                                addr szFmtWord;'esi'。dwCount;eax;_lpsz

                        invoke  lstrlen;addr szBuffer

                        mov     ecx;eax

                        invoke  WriteFile;_hFile;addr szBuffer;

                                ecx;addr @dwTemp;NULL

                。endif

;********************************************************************

; 如果有下层结点则递归调用

;********************************************************************

                mov     @dwTemp;0

                。while  @dwTemp 《 26

                        mov     ebx;@dwTemp

                    mov     ebx;dword ptr 'esi+ebx*4'

                    。if     ebx

                            invoke  lstrcpy;addr @szWord;_lpsz

                            invoke  lstrlen;addr @szWord

                            lea     ecx;@szWord

                            add     ecx;eax

                            mov     eax;@dwTemp

                            add     al;'a'

                            mov     word ptr 'ecx';ax

                            invoke  _WalkTree;_hFile;ebx;addr @szWord

                    。endif

                    inc     @dwTemp

                    。endw

;********************************************************************

; 释放结点

;********************************************************************

                    。if     'esi'。dwDepth

                            invoke  GlobalFree;esi

                    。endif

                    popad

                    assume  esi:ptr WORD_COUNT

                    ret

 

_WalkTree       endp

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

; 如果输入的是字母则建立或移动到下一结点,输入0则增加结点计数

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

_CountLetter    proc        _dwLetter

                    local   @dwIndex

 

                    assume  edi:ptr WORD_COUNT

                    or      al;20h                      ;转换成小写字母

                    。if     (al 》= 'a') && (al 》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

include             windows。inc

include             user32。inc

includelib          user32。lib

include             kernel32。inc

includelib          kernel32。lib

include             dlg32。inc

includelib          dlg32。lib

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

; Equ 等值定义

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

ICO_MAIN                equ         1000

DLG_MAIN                equ         100

IDC_FILE                equ         101

IDC_BROWSE          equ         102

 

WORD_COUNT          struct

 

lpLetter                dd      26 dup (?)

dwCount             dd      ?

dwDepth             dd      ?

 

WORD_COUNT          ends

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

; 数据段

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

 

                        。data?

 

hInstance           dd      ?

hWinMain                dd      ?

szFileName          db      MAX_PATH dup (?)

szBuffer                db      4096 dup (?)

stWordCount         WORD_COUNT      

dwCount             dd      ?

dwOption                dd      ?

F_COUNTING          equ     00000001h

F_FILEEND           equ     00000002h

 

                        nst

szFileExt           db      '全部文件';0;'*。*';0;0

szLogExt                db      '。log';0

szErrOpenFile       db      '无法打开文件!';0

szErrCreateFile     db      '无法建立记录文件!';0

szFmtWord           db      '%5d (%3d‰) %s';0dh;0ah;0

szSuccees           db      '统计成功,请查看记录文件%s';0

szSucceesCap            db      '统计成功';0

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

; 代码段

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

        de

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

; 遍历树并输出结果

;》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

_WalkTree           proc        _hFile;_lpWC;_lpsz

                        local   @dwTemp

                        local   @szWord'52':byte

 

                        pushad

                        mov     esi;_lpWC

                        assume  esi:ptr WORD_COUNT

                        。if     'esi'。dwDepth && 'esi'。dwCount

;********************************************************************

; 计算百分比并写入log文件

;********************************************************************

                        mov     eax;'esi'。dwCount

                        mov     ecx;1000

                        mul     ecx

                        mov     ecx;dwCount

                        。if     ecx

                                div     ecx

                        。else

                                mov     eax;0

                        。endif

                        invoke  wsprintf;addr szBuffer;

                                addr szFmtWord;'esi'。dwCount;eax;_lpsz

                        invoke  lstrlen;addr szBuffer

                        mov     ecx;eax

                        invoke  WriteFile;_hFile;addr szBuffer;

                                ecx;addr @dwTemp;NULL

                。endif

;********************************************************************

; 如果有下层结点则递归调用

;********************************************************************

                mov     @dwTemp;0

                。while  @dwTemp 《 26

                        mov     ebx;@dwTemp

                    mov     ebx;dword ptr 'esi+ebx*4'

                    。if     ebx

                            invoke  lstrcpy;addr @szWord;_lpsz

                            invoke  lstrlen;addr @szWord

                            lea     ecx;@szWord

                            add     ecx;eax

                            mov     eax;@dwTemp

                            add     al;'a'

                            mov     word ptr 'ecx';ax

                            invoke
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!