汇编 字符串字母首位转大写
' ;获取参数指针
' 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
' ;判断是否为\r
' cmp eax, 0000000Dh
' je Label3
' ;判断是否为\n
' 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