section .bss
msg resb 1 ; reserva 1 byte para um caractere
section .data
section .text
global _start
_start:
; Lê 1 caractere do teclado
mov eax, 3 ; sys_read
mov ebx, 0 ; stdin
mov ecx, msg ; onde armazenar
mov edx, 5 ; quantos bytes
int 0x80 ; chamada de sistema
jmp validar
validar:
mov al, [msg]
cmp al, 'A'
jl exit
cmp al, 'Z'
jle trocar
trocar:
mov al, [msg]
or al, 32
mov [msg], al
jmp imprime_caractere
imprime_caractere:
mov eax, 4 ; sys_write
mov ebx, 1 ; stdout
mov ecx, msg ; endereço da string
mov edx, 5 ; tamanho da string (8 chars + newline)
int 0x80 ; chamada de sistema
jmp exit
exit:
mov eax, 1 ; sys_exit
mov ebx, 0
int 0x80
c2VjdGlvbiAuYnNzCiBtc2cgcmVzYiAxIDsgcmVzZXJ2YSAxIGJ5dGUgcGFyYSB1bSBjYXJhY3RlcmUKIApzZWN0aW9uIC5kYXRhCiAKc2VjdGlvbiAudGV4dAogZ2xvYmFsIF9zdGFydAogCl9zdGFydDoKOyBMw6ogMSBjYXJhY3RlcmUgZG8gdGVjbGFkbwogbW92IGVheCwgMyA7IHN5c19yZWFkCiBtb3YgZWJ4LCAwIDsgc3RkaW4KIG1vdiBlY3gsIG1zZyA7IG9uZGUgYXJtYXplbmFyCiBtb3YgZWR4LCA1IDsgcXVhbnRvcyBieXRlcwogaW50IDB4ODAgOyBjaGFtYWRhIGRlIHNpc3RlbWEKIGptcCB2YWxpZGFyCgp2YWxpZGFyOgogbW92IGFsLCBbbXNnXQogY21wIGFsLCAnQScKIGpsIGV4aXQKIGNtcCBhbCwgJ1onCiBqbGUgdHJvY2FyCiAKdHJvY2FyOgogbW92IGFsLCBbbXNnXQogb3IgYWwsIDMyCiBtb3YgW21zZ10sIGFsCiBqbXAgaW1wcmltZV9jYXJhY3RlcmUKCiBpbXByaW1lX2NhcmFjdGVyZToKIG1vdiBlYXgsIDQgOyBzeXNfd3JpdGUKIG1vdiBlYngsIDEgOyBzdGRvdXQKIG1vdiBlY3gsIG1zZyA7IGVuZGVyZcOnbyBkYSBzdHJpbmcKIG1vdiBlZHgsIDUgOyB0YW1hbmhvIGRhIHN0cmluZyAoOCBjaGFycyArIG5ld2xpbmUpCiBpbnQgMHg4MCA7IGNoYW1hZGEgZGUgc2lzdGVtYQogam1wIGV4aXQKCmV4aXQ6CiBtb3YgZWF4LCAxIDsgc3lzX2V4aXQKIG1vdiBlYngsIDAKIGludCAweDgw