- UID
- 2
注册时间2004-12-1
阅读权限255
最后登录1970-1-1
总坛主
  
TA的每日心情 | 开心 2024-12-1 11:04 |
---|
签到天数: 12 天 [LV.3]偶尔看看II
|
发表于 2010-4-9 01:16:17
|
显示全部楼层
优化下:
小提示:尽量少动esp~~~ ebp 之类寄存器
- ;数据段添加如下:
- szHomePage db "https://www.chinapyg.com/",0
- szEmail db "mailto:[email protected]",0
- szErrMess db "输入的用户名有误!",0
- szFormat db "%1u",0
- szRegCode db 20 dup (0)
- ;代码段添加如下:
- mov edi,eax ;让edi保存用户名,因为eax时刻要用到
- invoke lstrlen,edi ;获取用户名长度,返回到eax
- mov ecx,eax ;用户名长度放ecx
- mov ebx,0 ;ebx作为计数器
- mov edx,0 ;edx作为累加器
- ;这样写循环简洁很多
- @@:
- movzx eax,byte ptr[ebx+edi] ;逐位取用户名ASCII
- add edx,eax ;下面是累加过程
- inc ebx
- dec ecx
- jne @B
- ;算法开始
- imul edx,5CAh
- add edx,20h
- imul edx,5CAh
- ;格式化字符串
- invoke wsprintf,addr szRegCode,addr szFormat,edx
- ;eax指向到szRegCode注册码指针
- lea eax,szRegCode
复制代码 |
|