开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

楼主: zxw0402
收起左侧

[易语言纯源码] 汇编找图源码,asm源码包含注释,三个月心血精心优化!不保留了,分享给大家!

    [复制链接]
发表于 2021-1-19 08:30:01 | 显示全部楼层   贵州省遵义市
如何绑定程序窗口
回复 支持 反对

使用道具 举报

发表于 2021-1-19 08:29:33 | 显示全部楼层   贵州省遵义市
全汇编处理
回复 支持 反对

使用道具 举报

结帖率:86% (12/14)
发表于 2021-1-12 17:11:03 | 显示全部楼层   河南省商丘市
支持支持支持哈
回复 支持 反对

使用道具 举报

结帖率:86% (12/14)
发表于 2021-1-12 17:10:30 | 显示全部楼层   河南省商丘市
.586 .model flat,stdcall option casemap:none .code ;若没有特别需求请不要改动已有的几行。 ;请在下面至'end'前输入相关代码: a proc dtsj,xtsj,hswc:byte,h,lswc:byte,l,nswc:byte,n,whz,whz1,fhx,fhx1,fhy,fhy1,qsx,qsx1,qsy,qsy1,zdx,zdx1,zdy,zdy1 local        @xtk        ;小图宽 local        @xtg        ;小图高 ;local        @xtws        ;小图位数这个不需要 local        @xtsmh        ;小图扫描行 local        @xtsw:byte   local        @dtk local        @dtg ;local        @dtws        ;大图位数这个不需要 local        @dtsmh local        @dtsw:byte;色位=3  local        @yxbwhcj        ;允许不吻合差距 local        @dtx        ;大图X local        @dty        ;大图Y local        @xtx        ;小图X local        @xty        ;小图Y ;local        @dtxsmpy;大图X扫描偏移 ;local        @xtxsmpy;小图X扫描偏移 local        @dtlsypy;大图临时Y偏移 local        @xtlsypy;小图临时Y偏移 local        @kc        ;宽差 local        @gc        ;高差 local        @dqx        ;当前x local        @dqy        ;当前y local        @ywh        ;已吻合 local        @bwh        ;不吻合 local        @xtjds        ;小图基点色      push        edi push        esi  mov        eax,dtsj mov        edi,[eax] test        edi,edi je        exit mov        bx,[edi+8] mov        eax,[edi+4]        ;看字节集长度//放前面点可以快点 cmp        bx,4D42h        ;bmp的头是424D jne        exit cmp        eax,55                ;位图头必须是54 jb        exit                ;头小于54就跳出 mov        ecx,[edi+8+16h]        ;/////////////////////////////////////◆大图高=大图数据[23]+左移(大图数据[24],8)-1 dec        ecx mov        @dtg,ecx movzx        ebx,byte ptr [edi+8+1ch]        ;/////////////////////●大图位数=大图数据[29] mov        eax,[edi+8+12h]                        ;/////////////////////●大图宽=大图数据[19]+左移(大图数据[20],8)-1 dec        eax mov        @dtk,eax        ;第五个局部变量=大宽度; inc        eax                ;大图宽+1 mul        ebx                ;(大图宽+1)*大图位数 add        eax,31                ;(大图宽+1)*大图位数+31 shr        eax,5                ;右移((大图宽+1)*小图位数+31,5) shl        eax,2                ;左移(右移((大图宽+1)*大图位数+31,5),2) mov        @dtsmh,eax        ;第八个局部变量 大扫描行、、、、、、、、●大图扫描行=左移(右移((大图宽+1)×大图位数+31,5),2) shr        ebx,3                ;ebx大图位数/8 mov        @dtsw,bl   mov        eax,xtsj        ;获得小图指针 mov        esi,[eax] test        esi,esi je        exit mov        bx,[esi+8] mov        eax,[esi+4]        ;看字节集长度//放前面一点,可以节省时间 cmp        bx,4D42h        ;bmp的头是424D jne        exit cmp        eax,55                ;位图头必须是54 jb        exit                ;头小于54就跳出 mov        ecx,[esi+8+16h]        ;小图高度 dec        ecx mov        @xtg,ecx        ;第2个局部变量=小图高度///////////////●小图宽=小图数据[19]+左移(小图数据[20],8)-1 movzx        ebx,byte ptr [esi+8+1ch]        ;小图位数 mov        eax,[esi+8+12h]        ;小图宽度 dec        eax mov        @xtk,eax        ;第1个局部变量=小图宽度///////////////●小图高=小图数据[23]+左移(小图数据[24],8)-1 inc        eax                ;小图宽+1 mul        ebx                ;(小图宽+1)*小图位数 add        eax,31                ;(小图宽+1)*小图位数+31 shr        eax,5                ;右移((小图宽+1)*小图位数+31,5) shl        eax,2                ;左移(右移((小图宽+1)*小图位数+31,5),2) mov        @xtsmh,eax        ;第四个局部变量=小扫描行//////////////●小图扫描行=左移(右移((小图宽+1)×小图位数+31,5),2) shr        ebx,3                ;ebx小图位数/8 mov        @xtsw,bl        ;第11个局部=小颜色位//////////////////●小颜色位=右移(小图位数,3)  inc        ecx                ;小图高+1 mov        eax,@xtk        ;小图宽 inc        eax                ;小图宽+1 mul        ecx                ;                                        ●总长=(小图宽+1)×(小图高+1) mov        ebx,eax                ;总长  xor        ecx,ecx mov        cl,100 mov        edx,whz cmp        dl,cl jbe        bxg                ;无符号小于或等于 movzx        edx,cl bxg: mul        edx cdq div        ecx                ;总长×吻合值\100 mov        whz,eax                ;第四个参数=吻合值   ok////////////////●吻合值=小图宽×小图高×吻合值÷100 sub        ebx,eax mov        @yxbwhcj,ebx lea        ebx,[esi+54+8]        ;求出总偏移数据 mov        eax,[ebx] bswap        eax shr        eax,8 mov        @xtjds,eax        ;第14个局部变量=小图基点颜色///////////●小图基点颜色=小图.取坐标偏移量颜色值(小图X扫描偏移) cdq mov        eax,zdx .if        eax==edx        ;如果真(终点X=0) mov        eax,@dtk .endif mov        ebx,@dtk .if        eax>ebx                ;如果真(终点X>大图宽) mov        eax,ebx                ;终点X=大图宽 .endif mov        ebx,qsx        ;起始X  cmp        ebx,eax        ;如果真(起始X≥终点X) jge        exit  mov        zdx,eax sub        eax,@xtk        ;终点X-小图宽 cmp        eax,edx        ;如果真(宽差<0) jl        exit  cmp        ebx,eax        ;如果真(起始X>宽差) jg        exit  mov        @kc,eax mov        ecx,zdy mov        ebx,@dtg .if        ecx==edx        ;如果真(终点Y=0) mov        ecx,ebx                ;终点Y=大图高 .endif mov        eax,ebx;ebx=大图高 mov        edx,qsy sub        eax,edx;大图高-起始Y===终点Y=ebx .if        eax>ebx;如果真(终点Y>大图高) mov        eax,ebx .endif mov        zdy,eax;保存终点y  sub        ebx,ecx;大图高-终点Y===起始Y=ecx cmp        ebx,eax;如果真(起始Y≥终点Y) jge        exit  sub        eax,@xtg;终点Y-小图高===高差=ebx cmp        eax,0        ;如果真(高差<0) jl        exit  mov        @gc,eax cmp        ebx,eax;如果真(起始Y>高差) jg        exit  ;mov        @dty,eax;大图Y=起始Y ;mov        @dty,eax;大图Y=起始Y ;mov        eax,ebx;大图Y=高差  mov        cl,8 .repeat;==========================================高差 mov        @dty,eax imul        eax,@dtsmh;大图Y×大图扫描行 mov        @dtlsypy,eax;eax=大图临时Y偏移 mov        eax,qsx ;mov        eax,@kc .repeat;==========================================宽差 ;eax不用说,绝对是大图X mov        @dtx,eax movzx        ebx,@dtsw mul        ebx;大图X×大图色位 add        eax,@dtlsypy;大图X×大图色位+大图临时Y偏移 lea        eax,[eax+edi+54+8]        ;ebx是大图总偏移+指针位置+8 mov        eax,[eax] bswap        eax shr        eax,cl  mov        ebx,@xtjds        ;小图基点颜色  ;--------------------------------------------------------------------------------------------------------------------------------------- sub        al,bl ja        s1 neg        al s1: cmp        hswc,al        ;红色误差对比 jb        BigTuK                ;小于就到循环尾() ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;============================绿色=======================@@@@@@@@@@@@@@@@@@@@@@@@@@ shr        eax,cl shr        ebx,cl  sub        al,bl ja        s2 neg        al s2: cmp        lswc,al        ;红色误差对比 jb        BigTuK                ;小于就到循环尾() ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;============================蓝色=======================@@@@@@@@@@@@@@@@@@@@@@@@@@  sub        ah,bh ja        s3 neg        ah s3: ;--------------------------------------------------------------------------------------------------------------------------------------- cmp        nswc,ah        ;红色误差对比 jb        BigTuK                ;小于就到循环尾()  xor        eax,eax mov        @ywh,eax mov        @bwh,eax mov        @xty,eax .repeat;===========================================小图y mov        @xty,eax mov        ebx,eax add        eax,@dty;小图Y+大图Y imul        eax,@dtsmh;当前y×大图扫描行 mov        @dtlsypy,eax imul        ebx,@xtsmh mov        @xtlsypy,ebx;小图临时Y偏移=小图Y×小图扫描行 xor        eax,eax mov        @xtx,eax;小图x=0 .repeat;===========================================小图x mov        @xtx,eax mov        ebx,eax;备份一下小图x add        eax,@dtx;小图X+大图X  movzx        edx,@dtsw;大图色位 mul        edx        ;当前x×大图色位 add        eax,@dtlsypy;当前x×大图色位+大图临时Y偏移 xchg        eax,ebx;现在eax为小图x,ebx为大图X扫描偏移  movzx        edx,@xtsw;小图色位 imul        edx        ;小图X×小图色位 add        eax,@xtlsypy;小图X×小图色位+小图临时Y偏移  lea        ebx,[ebx+edi+54+8]        ;ebx是大图总偏移+指针位置+8 mov        ebx,[ebx] bswap        ebx shr        ebx,cl  lea        eax,[eax+esi+54+8]        ;小图总偏移+小图指针+8 mov        eax,[eax] bswap        eax shr        eax,cl  ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ sub        al,bl ja        d1 neg        al d1: cmp        hswc,al        ;红色误差对比 jb        bwh                ;小于于就到不吻合 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;============================绿色=======================@@@@@@@@@@@@@@@@@@@@@@@@@@ shr        eax,cl shr        ebx,cl  sub        al,bl ja        d2 neg        al d2: cmp        lswc,al        ;红色误差对比 jb        bwh                ;小于就到不吻合 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;============================蓝色=======================@@@@@@@@@@@@@@@@@@@@@@@@@@ sub        ah,bh ja        d3 neg        ah d3: cmp        nswc,ah        ;红色误差对比 jb        bwh                ;小于就到不吻合  mov        eax,@ywh        ;已吻合 inc        eax cmp        whz,eax        ; 吻合值:已吻合 jbe        ok                ;是否小于 mov        @ywh,eax jmp        SamllTuK bwh: mov        eax,@bwh inc        eax cmp        @yxbwhcj,eax        ;允许不吻合差距 jbe        BigTuK        ;允许不吻合差距<=不吻合---->跳出循环 mov        @bwh,eax   SamllTuK:;小图x mov        eax,@xtx inc        eax .until @xtk < eax  SamllTuG:;小图y mov        eax,@xty inc        eax .until @xtg < eax  BigTuK:;宽差 mov        eax,@dtx inc        eax .until @kc < eax   BigTuG:;高差 mov        eax,@dty dec        eax .until qsy >= eax  ;mov        eax,@dty ;inc        eax ;mov        @dty,eax ;.until @gc < eax exit:xor eax,eax jmp        out1  ok: mov        eax,@dtx;大图X mov        ebx,fhx mov        [ebx],eax        ;X = 大图X - X mov        eax,@dty;大图Y dec        eax mov        ecx,@dtg sub        ecx,eax                ;大图高-大图Y sub        ecx,@xtg dec        ecx mov        ebx,fhy mov        [ebx],ecx        ;X=大图X-X xor        eax,eax inc        eax   out1: pop        esi pop        edi  ret        58h a endp    end
回复 支持 反对

使用道具 举报

发表于 2021-1-3 21:03:19 | 显示全部楼层   湖北省武汉市
感谢您为易语言作出贡献!!为易友提供学习资料!!
回复 支持 反对

使用道具 举报

结帖率:60% (3/5)

签到天数: 8 天

发表于 2020-12-30 10:35:32 | 显示全部楼层   四川省成都市
   窗口好大呀
回复 支持 反对

使用道具 举报

结帖率:94% (62/66)
发表于 2020-12-24 15:15:34 | 显示全部楼层   江西省九江市
X+8 Y+16这样坐标才是精准的
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2020-12-7 15:25:40 | 显示全部楼层   广东省汕尾市
新技能已get√
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 5 天

发表于 2020-12-6 09:17:32 | 显示全部楼层   广东省广州市
感谢分享。
回复 支持 反对

使用道具 举报

发表于 2020-12-3 22:47:05 高大上手机用户 | 显示全部楼层   浙江省嘉兴市
看看先 试试好不好用
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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