section .bss
msg resb 1 ; reserva 1 byte para um caractere
section .data
traco db '-'
contador dd 0
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
mov dword [contador], 10
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
cmp dword [contador], 0
je exit
; Decrementa o contador
dec dword [contador]
; Repete o processo
jmp imprime_caractere
exit:
mov eax, 1 ; sys_exit
mov ebx, 0
int 0x80
c2VjdGlvbiAuYnNzCiBtc2cgcmVzYiAxIDsgcmVzZXJ2YSAxIGJ5dGUgcGFyYSB1bSBjYXJhY3RlcmUKIApzZWN0aW9uIC5kYXRhCiB0cmFjbyBkYiAnLScKIGNvbnRhZG9yIGRkIDAKIApzZWN0aW9uIC50ZXh0CiBnbG9iYWwgX3N0YXJ0CiAKX3N0YXJ0Ogo7IEzDqiAxIGNhcmFjdGVyZSBkbyB0ZWNsYWRvCiBtb3YgZWF4LCAzIDsgc3lzX3JlYWQKIG1vdiBlYngsIDAgOyBzdGRpbgogbW92IGVjeCwgbXNnIDsgb25kZSBhcm1hemVuYXIKIG1vdiBlZHgsIDUgOyBxdWFudG9zIGJ5dGVzCiBpbnQgMHg4MCA7IGNoYW1hZGEgZGUgc2lzdGVtYQogCiBtb3YgZHdvcmQgW2NvbnRhZG9yXSwgMTAKIAogaW1wcmltZV9jYXJhY3RlcmU6CiBtb3YgZWF4LCA0IDsgc3lzX3dyaXRlCiBtb3YgZWJ4LCAxIDsgc3Rkb3V0CiBtb3YgZWN4LCBtc2cgOyBlbmRlcmXDp28gZGEgc3RyaW5nCiBtb3YgZWR4LCA1IDsgdGFtYW5obyBkYSBzdHJpbmcgKDggY2hhcnMgKyBuZXdsaW5lKQogaW50IDB4ODAgOyBjaGFtYWRhIGRlIHNpc3RlbWEKIAogY21wIGR3b3JkIFtjb250YWRvcl0sIDAKIGplIGV4aXQKICAgIAogOyBEZWNyZW1lbnRhIG8gY29udGFkb3IKIGRlYyBkd29yZCBbY29udGFkb3JdCiAgICAKIDsgUmVwZXRlIG8gcHJvY2Vzc28KIGptcCBpbXByaW1lX2NhcmFjdGVyZQogCiBleGl0OgogbW92IGVheCwgMSA7IHN5c19leGl0CiBtb3YgZWJ4LCAwCiBpbnQgMHg4MA==