section .data
str db 'AbCdEfGhIjKlMnOpQrStUvWxYz',0 ;要处理的字符串
section .text
global _start
_start:
; 将str的地址赋值给edi
lea edi, [str]
; 循环处理字符串中的每个字符
mov ecx, lengthof str
loop_start:
mov al, [edi] ; 取出一个字符
cmp al, 'a' ; 判断是否小写字母
jb uppercase ; 如果小于a,跳转到大写转小写的代码(即字符不是小写字母,所以要转换为小写字母)
cmp al, 'z' ; 判断是否大于z
ja uppercase ; 如果大于z,跳转到大写转小写的代码(即字符不是小写字母,所以要转换为小写字母)
add al, 32 ; 转小写字母
jmp next_char ; 跳转到下一个字符
uppercase:
cmp al, 'A'; 判断是否大写字母
jb next_char ; 如果小于A,跳转到下一个字符
cmp al, 'Z'; 判断是否小于Z
ja next_char ; 如果大于Z,跳转到下一个字符
sub al, 32 ; 转大写字母
next_char:
mov [edi], al ; 把处理过的字符写回字符串
inc edi ; 指向下一个字符
loop loop_start ; 继续处理下一个字符
; 打印处理后的字符串
mov eax, 4 ; 选择打印函数
mov ebx, 1 ; 文件描述符 stdout
mov ecx, str ; 要打印的字符串
mov edx, lengthof str ; 要打印的字符长度
int 0