汇编 字符串字母首位转大写

' ;获取参数指针
' mov ebx, dword [ebp+08h]
' mov ebx, dword [ebx]

' ;首位标识置1,开始第一位就是首字符
' mov dword [ebp-04h], 00000001h

' ;循环计数置0
' xor ecx, ecx

' ;循环起始
' Label1:

' ;读取第N个字节
' xor eax, eax
' mov al, byte [ebx+ecx]

' ;判断字节数据是否为0,0表示字符结束
' cmp eax, 00000000h
' je Label5

' ;判断是否为空格
' cmp eax, 00000020h
' je Label3

' ;判断是否为Tab
' cmp eax, 00000009h
' je Label3

' ;判断是否为
' cmp eax, 0000000Dh
' je Label3

' ;判断是否为
' cmp eax, 0000000Ah
' je Label3

' ;判断是否首位,如果为首字符,则进行转换
' cmp dword [ebp-04h], 00000001h
' jne Label2

' ;判断是否小于'a'
' cmp eax, 00000061h
' jl Label2

' ;判断是否大于'z'
' cmp eax, 0000007Ah
' jg Label2

' ;将a-z范围内的字节转成大写
' sub eax, 00000020h
' mov byte [ebx+ecx], al

' Label2:
' mov dword [ebp-04h], 00000000h

' jmp Label4

' ;空字符处理
' Label3:

' ;首位标识置1
' mov dword [ebp-04h], 00000001h

' Label4:

' ;计数自增
' inc ecx

' ;跳到循环首
' jmp Label1

' ;循环结束
' Label5:

' ;处理结束
' leave
' retn 0004h

原文地址:https://www.cnblogs.com/yufengs/p/6699381.html