| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 13108 人关注过本帖
标题:用汇编写个简单的火星文转换器
只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
结帖率:100%
收藏
 问题点数:0 回复次数:26 
用汇编写个简单的火星文转换器
参考一个javascript的思路写的 很简单 只能做简单替换 大家看看吧

核心代码帖一下 呵呵

程序代码:

.code
;在字符表里查找 找到返回在ax里 找不到返回-1
_Lookup proc uses edi esi ebx _dwInput:DWORD
    xor edi,edi
    mov eax,_dwInput
    .while edi <= dwSrclen
        cmp ax,WORD ptr [szSrc+edi*2]
        .if ZERO?
            mov ax,WORD ptr [szDst+edi*2]
            ret
        .endif
        inc edi
        inc edi
    .endw
    xor eax,eax
    dec eax
    ret
_Lookup endp

;替换函数 因为前面判断过字符串长度 这里就不检查了 呵呵
_Change proc uses edi esi ebx _lpSrc:DWORD,_lpDst:DWORD
    invoke lstrlen,_lpSrc
    ;这里用简单的方法判断输入的合法性 要是奇数个一定有问题 要是偶数也有可能有错
    ;应该是转换成一个统一的编码 比如unicode 不过偶就不写了
    test eax,1     
    .if !ZERO?
        xor eax,eax
        dec eax
        ret
    .endif
    mov ecx,eax
    xor edx,edx
    ;int 3h
    mov esi,_lpSrc
    mov edi,_lpDst
    .while edx<ecx
        mov bx,[esi+edx*2]
        invoke _Lookup,ebx
        .if eax==-1
            mov[edi+edx*2],bx
        .else
            mov [edi+edx*2],ax
        .endif
        inc edx
    .endw
    xor eax,eax
    ret
_Change endp





程序和代码以打包

火星文转换器.rar (28.11 KB)
搜索更多相关主题的帖子: 火星文 汇编 转换器 
2008-12-11 17:26
maker316
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-8-15
收藏
得分:0 
楼主 能否解释一下 原理
2008-12-12 14:11
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用maker316在2008-12-12 14:11的发言:

楼主 能否解释一下 原理


原理就是对输入的文字进行替换 比如 昨-葃  龟-龜

就是这样啊 没什么难的~~~
2008-12-13 10:07
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
huoxingwen.rar (8.6 KB)


根据这个js写的 呵呵
2008-12-13 10:08
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
本来想注释一下,结果一看里面如果 否则如果 否则如果的一大堆,就偷懒了, 有想学习的朋友自己看下版主发的源码, 有不明白的地方提出来大家解决

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2008-12-13 23:51
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用你们都要疼我哦在2008-12-13 23:51的发言:

本来想注释一下,结果一看里面如果 否则如果 否则如果的一大堆,就偷懒了, 有想学习的朋友自己看下版主发的源码, 有不明白的地方提出来大家解决


这个程序写的不晦涩呀  还有什么好注释的

要写注释是解释指令了 呵呵
2008-12-14 09:59
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
稍微注释一下,也省得有朋友要讲原理,又有朋友说不基础哇. 不过愿意去读别人源代码的人太少了.看似没啥必要了

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2008-12-14 13:20
ANDREPU1
Rank: 1
来 自:四川
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-8-28
收藏
得分:0 
想法很好。不过火星文转换不够彻底啊~~~
2009-09-25 16:01
xinge1023
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2009-5-12
收藏
得分:0 
我汇编非常基础啊   看你那个看不懂   真应该一句一句的而给信任注释了  
2009-09-27 17:14
zdixin
Rank: 1
等 级:新手上路
帖 子:5
专家分:2
注 册:2009-10-13
收藏
得分:0 
来学习了
2009-10-13 11:19
快速回复:用汇编写个简单的火星文转换器
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017124 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved