读书笔记——Windows环境下32位汇编语言程序设计(9)ANSII字符大小写转大写

来源:互联网 发布:软件质量计划 编辑:程序博客网 时间:2024/05/16 01:36

在罗云彬的《Windows环境下32位汇编语言程序设计》中第321页

....constszAllowedChardb'0123456789ABCDEFabcdef',08h....code_ProcEdit    proc    uses ebx edi esi hWnd,uMsg,wParam,lParam        mov    eax,uMsg        .if    uMsg ==    WM_CHAR            mov    eax,wParam            mov    edi,offset szAllowedChar            mov    ecx,sizeof szAllowedChar            repnz    scasb            .if    ZERO?                .if    al > '9'                    and    al,not 20h                .endif                invoke    CallWindowProc,lpOldProcEdit,hWnd,uMsg,eax,lParam                ret            .endif        .else            invoke    CallWindowProc,lpOldProcEdit,hWnd,uMsg,wParam,lParam            ret        .endif        xor    eax,eax        ret_ProcEdit    endp...
主要功能代码为

repnzscasb.ifZERO?.ifal > '9'andal,not 20h.endifinvokeCallWindowProc,lpOldProcEdit,hWnd,uMsg,eax,lParamret.endif

它限制了输入的字符必须为szAllowedChar中定义的,为0~9,A~F,a~f和退格。其他的字符因为不满足条件而不予处理。

其中

andal,not 20h
实现了所有的大小写都转为大写。


--------------------------------------------------------------

一个疑问:

这个字符串定义里,没有使用一个逗号和0来表示结尾。

参照这本书对于变量定义的讲解和网络上一篇文章(http://www.cnblogs.com/del/archive/2010/04/04/1704296.html)

我觉得很是困惑。在代码里调整了一下定义的位置,也未见明确的错误。

这个不是很理解。难道说“,0”不是必需的?

0 0