老刘 发表于 2018-9-1 15:12

[算法实战001]“物以类聚”-将字母按大小写归并

;Code By 老刘
;题目链接:http://www.bathome.net/thread-43785-1-1.html
;编译环境:MASM32 SDK
;编译指令:ml /coff 字母按大小写归并.ASM /link /subsystem:console
;调用方法:CMD传参,参数1为要处理的字符串。
;其他:非大小写字母的字符将被丢弃;传入字符串长度最长为126字符。

Include Masm32rt.INC
.Data?
        Arg db 128 dup (?)
        UpperCaseString db 128 dup (?)
        LowerCaseString db 128 dup (?)
        NewString db 128 dup (?)
.Code
Start:
        Invoke ArgClC,1,Offset Arg
        .If Eax == 1
                Mov Esi,Offset Arg
                Mov Ecx,Offset LowerCaseString
                Mov Edx,Offset UpperCaseString
               
                .While Al != 0        ;分割为两个字符串
                        LodSB
                        .If Al >= 41h && Al <= 5Ah
                                Mov Byte Ptr ,Al
                                Inc Edx
                        .ElseIf Al >= 61h && Al <= 7Ah
                                Mov Byte Ptr ,Al
                                Inc Ecx
                        .EndIf
                .EndW
               
                ;合并到同一个字符串中。
                Mov Edi,Offset NewString
               
                ;处理小写字符串
                Sub Ecx,Offset LowerCaseString
                Mov Esi,Offset LowerCaseString
                Rep MovSB
               
                ;处理大写字符串
                Sub Edx,Offset UpperCaseString
                Mov Ecx,Edx
                Mov Esi,Offset UpperCaseString
                Rep MovSB
               
                ;字符串结尾
                Mov Al,0Ah
                StoSB
                Xor EAX,EAX
                StoSB
               
                ;回显字符串
                Invoke StdOut,Offset NewString
        .EndIf
        Invoke ExitProcess,NULL
End Start
End

暗夜星辰sky 发表于 2018-9-1 15:15

膜拜下大神,看不懂的路过

kkk1l 发表于 2018-9-1 16:00

收藏一下谢谢分享

kingpj 发表于 2018-9-1 16:34

汇编写算法不是一般的牛

hnhbgz 发表于 2018-9-1 19:21

厉害厉害!{:1_921:}

吃肉也不胖 发表于 2018-9-2 10:21

厉害厉害!{:1_893:}
页: [1]
查看完整版本: [算法实战001]“物以类聚”-将字母按大小写归并