读书笔记——Windows环境下32位汇编语言程序设计(9)ANSII字符大小写转大写
在罗云彬的《Windows环境下32位汇编语言程序设计》中第321页
... .const
szAllowedChar db '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 ...
主要功能代码为
repnz scasb
.if ZERO?
.if al > '9'
and al,not 20h
.endif
invoke CallWindowProc,lpOldProcEdit,hWnd,uMsg,eax,lParam
ret
.endif
它限制了输入的字符必须为szAllowedChar中定义的,为0~9,A~F,a~f和退格。其他的字符因为不满足条件而不予处理。
其中
and al,not 20h
实现了所有的大小写都转为大写。
--------------------------------------------------------------
一个疑问:
这个字符串定义里,没有使用一个逗号和0来表示结尾。
参照这本书对于变量定义的讲解和网络上一篇文章(http://www.cnblogs.com/del/archive/2010/04/04/1704296.html)
我觉得很是困惑。在代码里调整了一下定义的位置,也未见明确的错误。
这个不是很理解。难道说“,0”不是必需的?
读书笔记——Windows环境下32位汇编语言程序设计(9)ANSII字符大小写转大写的更多相关文章
- 读书笔记——Windows环境下32位汇编语言程序设计(2)配置环境
一直想买本罗云彬的Win32汇编书,现在终于出典藏版了,就买了本,读一读,涨涨姿势. 我把笔记本光驱拆下来添加了个硬盘,现在想装回去发现坏了,所以守着CD盘,代码却用的是第三版的,这真是个悲剧啊. - ...
- 读书笔记——Windows环境下32位汇编语言程序设计(13)关于EXCEPTION_DEBUG_INFO结构体
在动手自己尝试编写书上第13章的例子Patch3时,遇到了一个结构体EXCEPTION_DEBUG_INFO. 这个结构体在MASM的windows.inc中的定义和MSDN中的定义不一样. (我使用 ...
- 读书笔记——Windows环境下32位汇编语言程序设计(6)使用浮点指令进行64位除法
罗云彬 典藏版Page192,mark下. 这段代码看不懂,手册上根本没有fdivr不带操作数的指令. .data dqTickCounter1 dq ? dqTickCounter2 dq ? dq ...
- 读书笔记——Windows环境下32位汇编语言程序设计(5)模态对话框
资源可以用VC之类的生成,然后拷贝出来. 例如:每一个MFC工程都有一个resource.h,没有做任何修改时,这个resource.h文件是原来自带的.当对资源进行过修改添加之类的时,新添加的资源的 ...
- 读书笔记——Windows环境下32位汇编语言程序设计(3)一些基础知识
声明函数用proto 定义函数用proc 局部变量只能定义,不能赋初值,类型不能用缩写. 全局变量可以定义的时候赋初值,默认值为0. 在invoke中,参数可以使用addr取址. sizeof 字节长 ...
- 读书笔记——Windows环境下32位汇编语言程序设计(3)求复数模的子程序
3.6.1.1中的例子 _Calc proc _dwX,_dwY local @dwResult finit fild _dwX fld st(0) fmul ;i*i fild _dwY fld s ...
- Windows环境下32位汇编语言程序设计(典藏版)
Windows环境下32位汇编语言程序设计(典藏版)(含CD光盘1张)(年,经典再现!) 罗云彬 著 ISBN 978-7-121-20759-4 2013年7月出版 定价:99.00元 756页 1 ...
- Windows环境下32位汇编语言程序设计(典藏版)
<Windows环境下32位汇编语言程序设计(典藏版) > 基本信息 作者: 罗云彬 出版社:电子工业出版社 ISBN:9787121207594 上架时间:2013-7-8 出版日期:2 ...
- Windows环境下32位汇编语言程序设计笔记-基础篇
内存模式 .386 .model flat,stdcall ;子程序调用模式,win32中只能用stdcall,因为win32api调用使用的这个 option casemap:none ;定义了程序 ...
随机推荐
- C#验证身份证号码
一.18位的身份证号码 如:130429####%%%%00781.1~6位为地区代码,其中1.2位数为各省级政府的代码,3.4位数为地.市级政府的代码,5.6位数为县.区级政府代码.如13(河北省) ...
- jquery实现表格中点击相应行变色功能
对于一个表格,为了使我们选中的项更容易区分,需要为选中项添加高亮,同时也需要,将其他项的高亮形式去除.类似于: <!DOCTYPE html> <html lang="en ...
- 关于c#的一些笔记
序: 在vs中,可以生成三种项目: 第一种:控制台项目:用于练习C#语法 第二种:桌面程序项目:比如我们经常看到的桌面程序(CS). 第三种:web项目:用于开发网站 1.我们先来说一下.net和C ...
- x3d 规范 在线镜像版
国内访问web网站不稳定,在此部署一个国内的在线版本,供有需要的同学查阅. 注:已失效 x3d规范文档: https://code.csdn.net/x3dcn/x3d-specification-d ...
- lavarel框架中如何使用ajax提交表单
开门见山,因为laravel以post形式提交数据时候需要加{{csrf_field()}}防止跨站攻击,所以当你用ajax提交表单时候自然也要加 在网上看了很多的解决方式,我是用下面这种方法解决的: ...
- 硅谷新闻3--使用Android系统自带的API解析json数据
NewsCenterPagerBean2 bean2 = new NewsCenterPagerBean2(); try { JSONObject object = new JSONObject(js ...
- 自定义View_2_关于自定义组合View
自定义View(2) Android当中给我们提供了丰富的UI控件,当然也许满足不了我们的需求,我们就必须学会自定义自己的View,我们怎么算是自定义自己的view呢! 我们会根据原来有的View对V ...
- Play Framework介绍:控制器层
业务逻辑代码通常位于模型(model)层.客户端(比如浏览器)无法直接调用其中的代码,所以模型对象提供的功能,必须作为资源以URI方式暴露给外部. 客户端使用HTTP协议来操作这些资源,从而调用了内部 ...
- 详解JavaScript函数模式
JavaScript设计模式的作用是提高代码的重用性,可读性,使代码更容易的维护和扩展.在javascript中,函数是一类对象,这表示他可以作为参数传递给其他函数:此外,函数还可以提供作用域. 创建 ...
- 桥牌笔记L4D17:小心阻塞
南打3NT. 西的首攻会有3墩黑桃.3墩方块.2付梅花,共8墩到手.看来方块如果3-2分布的话,非常容易就能超一完成. 所以要想着4-1分布的安全打法. 第一墩庄家拿了黑桃J后,明手的黑桃A会阻塞,庄 ...