开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

收起左侧

[易语言纯源码] 汇编实现“到小写” 比核心库快30倍

[复制链接]

结帖率:100% (8/8)
发表于 2019-5-23 23:41:11 | 显示全部楼层   广西壮族自治区崇左市
  
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
_启动子程序整数型 
调试输出 (到大写_asm (“啊吧从????的额发给和i就看了吗你哦怕去人是他uv我下有在”), 到小写_asm (“啊吧从????的额发给和i就看了吗你哦怕去人是他uv我下有在”))
返回 (0)
子程序名返回值类型公开备 注
到大写_asm文本型 
参数名类 型参考可空数组备 注
s文本型
变量名类 型静态数组备 注
a文本型 
a = s
置入代码 ({ 139, 77, 252, 139, 193, 138, 25, 132, 219, 116, 19, 65, 128, 251, 97, 114, 244, 128, 251, 122, 119, 239, 128, 227, 223, 136, 89, 255, 235, 231, 201, 194, 4, 0 })
' mov ecx,[ebp-4]
' mov eax,ecx
' s:
' mov bl,[ecx]
' test bl,bl
' jz exit ;bl=0 字符串结尾,跳出循环
' inc ecx
' cmp bl,97
' jb s ;bl小于97跳回去重新循环,小写字母在97-122之间
' cmp bl,122
' ja s ;bl大于122,不是小写字母范围内
' and bl,11011111b
' mov [ecx-1],bl
' jmp s ;继续循环
' exit:
' leave
' ret 4
返回 (“”)
子程序名返回值类型公开备 注
到小写_asm文本型 
参数名类 型参考可空数组备 注
s文本型
变量名类 型静态数组备 注
a文本型 
a = s
置入代码 ({ 139, 77, 252, 139, 193, 138, 25, 132, 219, 116, 19, 65, 128, 251, 65, 114, 244, 128, 251, 90, 119, 239, 128, 203, 32, 136, 89, 255, 235, 231, 201, 194, 4, 0 })
' mov ecx,[ebp-4]
' mov eax,ecx
' s:
' mov bl,[ecx]
' test bl,bl
' jz exit ;bl=0 字符串结尾,跳出循环
' inc ecx
' cmp bl,65
' jb s ;bl小于65跳回去重新循环,大写字母在65-90之间
' cmp bl,90
' ja s ;bl大于90,不是大写字母范围内
' or bl,00100000b
' mov [ecx-1],bl
' jmp s ;继续循环
' exit:
' leave
' ret 4
返回 (“”)


i支持库列表   支持库注释   
spec特殊功能支持库

改了一下,广告那个不支持非字母,这个支持有非字母
回复 支持 反对

使用道具 举报

结帖率:100% (141/141)
发表于 2019-5-23 23:14:33 | 显示全部楼层   辽宁省沈阳市
官方有没有啥专门收集优化整改的帖子。最好提交过去让升升级。。。大家也都能用到
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)

签到天数: 17 天

发表于 2019-5-23 22:50:39 | 显示全部楼层   广西壮族自治区崇左市
  
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
_启动子程序整数型 
调试输出 (到小写_asm (“abakjslkakjHHKJA”), 到大写_asm (“abakjslkakjHHKJA”))
返回 (0)
子程序名返回值类型公开备 注
到大写_asm文本型 
参数名类 型参考可空数组备 注
s文本型
变量名类 型静态数组备 注
a文本型 
a = s
置入代码 ({ 139, 77, 252, 139, 193, 138, 25, 128, 227, 223, 136, 25, 65, 132, 219, 117, 244, 201, 194, 4, 0 })
' mov ecx,[ebp-4]
' mov eax,ecx
' s:
' mov bl,[ecx]
' and bl,11011111b
' mov [ecx],bl
' inc ecx
' test bl,bl
' jnz s
' leave
' ret 4
返回 (“”)
子程序名返回值类型公开备 注
到小写_asm文本型 
参数名类 型参考可空数组备 注
s文本型
变量名类 型静态数组备 注
a文本型 
a = s
置入代码 ({ 139, 77, 252, 139, 193, 138, 25, 132, 219, 116, 8, 128, 203, 32, 136, 25, 65, 235, 242, 201, 194, 4, 0 })
' mov ecx,[ebp-4]
' mov eax,ecx
' s:
' mov bl,[ecx]
' test bl,bl
' jz exit
' or bl,00100000B
' mov [ecx],bl
' inc ecx
' jmp s
' exit:
' leave
' ret 4
返回 (“”)


i支持库列表   支持库注释   
spec特殊功能支持库


内部错误.....为啥我的回复就不显示呢

点评

省心的东西谁都会,转转看?"啊吧从的额发给和i就看了吗你哦怕去人是他uv我下有在"   广东省江门市  发表于 2019-5-23 23:25
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)

签到天数: 17 天

发表于 2019-5-23 22:41:55 | 显示全部楼层   广西壮族自治区崇左市
cf2006a 发表于 2019-5-23 20:57
  
push esi
mov esi, dword [ebp-0x04]   //第一个变量地址
mov edx, esi                            ...[/quote]
大小写转换使用位或和位与就可以实现,到大写把第五位变成0,到小写把第五位变成1
[e=1]
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
_启动子程序整数型 
调试输出 (到小写_asm (“abakjslkakjHHKJA”), 到大写_asm (“abakjslkakjHHKJA”))
返回 (0)
子程序名返回值类型公开备 注
到大写_asm文本型 
参数名类 型参考可空数组备 注
s文本型
变量名类 型静态数组备 注
a文本型 
a = s
置入代码 ({ 139, 77, 252, 139, 193, 138, 25, 128, 227, 223, 136, 25, 65, 132, 219, 117, 244, 139, 77, 252, 201, 194, 4, 0 })
' mov ecx,[ebp-4]
' mov eax,ecx
' s:
' mov bl,[ecx]
' and bl,11011111b
' mov [ecx],bl
' inc ecx
' test bl,bl
' jnz s
' mov ecx,[ebp-4]
' leave
' ret 4
返回 (“”)
子程序名返回值类型公开备 注
到小写_asm文本型 
参数名类 型参考可空数组备 注
s文本型
变量名类 型静态数组备 注
a文本型 
a = s
置入代码 ({ 139, 77, 252, 139, 193, 138, 25, 132, 219, 116, 8, 128, 203, 32, 136, 25, 65, 235, 242, 201, 194, 4, 0 })
' mov ecx,[ebp-4]
' mov eax,ecx
' s:
' mov bl,[ecx]
' test bl,bl
' jz exit
' or bl,00100000B
' mov [ecx],bl
' inc ecx
' jmp s
' exit:
' leave
' ret 4
返回 (“”)


i支持库列表   支持库注释   
spec特殊功能支持库
回复 支持 反对

使用道具 举报

发表于 2019-5-23 22:29:08 | 显示全部楼层   广西壮族自治区玉林市
谢谢分享,汇编速度快很多啊
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)

签到天数: 17 天

发表于 2019-5-23 22:15:59 | 显示全部楼层   广西壮族自治区崇左市
看看是不是使用位与操作
回复 支持 反对

使用道具 举报

结帖率:98% (48/49)

签到天数: 22 天

发表于 2019-5-23 21:44:55 | 显示全部楼层   广东省广州市
请问汇编要怎么学?看到你的帖子 对这个有些兴趣.
回复 支持 反对

使用道具 举报

发表于 2019-5-23 21:44:53 | 显示全部楼层   浙江省宁波市
支持一下谢谢???
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 1 天

发表于 2019-5-23 21:37:32 | 显示全部楼层   湖南省长沙市
        加油 把核心库的所有基础命令 汇编化
回复 支持 反对

使用道具 举报

结帖率:97% (31/32)

签到天数: 23 天

发表于 2019-5-23 21:27:49 | 显示全部楼层   福建省福州市
  
子程序名返回值类型公开备 注
文本_小写文本型 
参数名类 型参考可空数组备 注
参_文本文本型
变量名类 型静态数组备 注
局_临时文本型 
局_临时 = 参_文本
置入代码 ({ 86, 139, 117, 252, 137, 242, 133, 210, 116, 23, 138, 14, 235, 15, 141, 65, 191, 60, 25, 119, 5, 128, 193, 32, 136, 10, 66, 138, 10, 132, 201, 117, 237, 94 })
返回 (局_临时)
' push esi
' mov esi, dword [ebp-0x04]   //第一个变量地址
' mov edx, esi                           //第一个变量地址
[color=magenta] ' test edx,edx                                                                     这里要加上这句要不 参数文本为空时会不运行
' je label4[/color]
' mov cl, byte [esi]                    //取出第一个字节
' jmp Label1                              //无条件跳转到标签1
' Label3:
' lea eax, dword [ecx-0x41]      //0x41是数值65  拿A举例   A-ascii码  65   a 97  65-65=0
' cmp al, 0x19         //0x19是数值25
' jnbe Label2           //大于25    跳转到标签2
' add cl, 0x20           //0x20是数值32   小于25就加32   拿A举例 65+32=97  就是小写a的ascii编码
' mov byte [edx], cl
' Label2:
' inc edx                    //加一
' mov cl, byte [edx]  // 取出下一个字节到cl
' Label1:
' test cl, cl                 // cl 等于0弹出堆栈结束
' jne Label3
' label4:
' pop esi

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表