回复 6# 一年前挖下的坑
来自1年之后的填坑: | ;Code By 老刘 | | ;编译环境: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 [Edx],Al | | Inc Edx | | .ElseIf Al >= 61h && Al <= 7Ah | | Mov Byte Ptr [Ecx],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 | | EndCOPY |
|