任务描述
本关任务:编写一个能将字符串中字母大小写转换的小程序。
编程要求
在寄存器RSI
中存放有一个以符号$
结尾的字符串的地址,请编写代码,将这个字符串中的小写字母转化为大写,大写字母转化为小写,其他字符不做处理。
输入数据由评测系统读取,并存放到指定寄存器中,程序运行结果也由评测系统读取并输出,学员只需要实现任务逻辑即可。
测试说明
平台会对你编写的代码进行测试:
测试输入:04Abc$
预期输出:aBC$
测试输入:08iPhone8$
预期输出:IpHONE8$
输入数据的前两个字符是字符串长度的十六进制表示,之后则是字符串的内容。
Conv:
mov al, byte [rsi]
cmp al, '$'
je end
cmp al,'a'
jl up
cmp al,'z'
jg loopEnd
and al, 0xDF ;小写变大写,就是将二进制表示的第6位变成0
mov byte [rsi], al
jmp loopEnd
up:
cmp al, 'A'
jl loopEnd
cmp al, 'Z'
jg loopEnd
or al, 0x20 ;大写变小写,就是将二进制表示的第6位变成1
mov byte [rsi], al
loopEnd:
inc rsi
jmp Conv
end:
ret