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 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
c2VjdGlvbiAuYnNzCiBtc2cgcmVzYiAxIDsgcmVzZXJ2YSAxIGJ5dGUgcGFyYSB1bSBjYXJhY3RlcmUKIApzZWN0aW9uIC5kYXRhCiAKc2VjdGlvbiAudGV4dAogZ2xvYmFsIF9zdGFydAogCl9zdGFydDoKOyBMw6ogMSBjYXJhY3RlcmUgZG8gdGVjbGFkbwogbW92IGVheCwgMyA7IHN5c19yZWFkCiBtb3YgZWJ4LCAwIDsgc3RkaW4KIG1vdiBlY3gsIG1zZyA7IG9uZGUgYXJtYXplbmFyCiBtb3YgZWR4LCA1IDsgcXVhbnRvcyBieXRlcwogaW50IDB4ODAgOyBjaGFtYWRhIGRlIHNpc3RlbWEKIGptcCB0cm9jYXIKCnRyb2NhcjoKIG1vdiBhbCwgW21zZ10KIG9yIGFsLCAzMgogbW92IFttc2ddLCBhbAogam1wIGltcHJpbWVfY2FyYWN0ZXJlCgogaW1wcmltZV9jYXJhY3RlcmU6CiBtb3YgZWF4LCA0IDsgc3lzX3dyaXRlCiBtb3YgZWJ4LCAxIDsgc3Rkb3V0CiBtb3YgZWN4LCBtc2cgOyBlbmRlcmXDp28gZGEgc3RyaW5nCiBtb3YgZWR4LCA1IDsgdGFtYW5obyBkYSBzdHJpbmcgKDggY2hhcnMgKyBuZXdsaW5lKQogaW50IDB4ODAgOyBjaGFtYWRhIGRlIHNpc3RlbWEKIGptcCBleGl0CgpleGl0OgogbW92IGVheCwgMSA7IHN5c19leGl0CiBtb3YgZWJ4LCAwCiBpbnQgMHg4MA==