section .data
minha_string db 'ABCD', 0 ; String com terminador 0
achou_msg db 'Achou o PWD!', 0xA
achou_len equ $ - achou_msg
num db '1'
char_buffer db 0, 0xA ; Buffer para armazenar caractere + newline
section .text
global _start
_start:
mov esi, minha_string ; ESI aponta para o início da string
procurar:
mov al, [esi] ; pega o byte apontado por ESI
inc esi
cmp al, 0 ; Chegou ao final da string?
je nao_achou
cmp al, 'A' ; Comparar caractere atual com 'A'
je achoua
jmp adiciona_imprime ; Imprime e depois volta a procurar
achoua:
; Imprime '1' quando encontra 'A'
mov eax, 4 ; sys_write
mov ebx, 1 ; stdout
mov ecx, num ; endereço da string
mov edx, 1 ; tamanho da string
int 0x80 ; chamada de sistema
jmp procurar
adiciona_imprime:
; Incrementa o caractere
inc al
; Armazena no buffer
mov [char_buffer], al
; Imprime o caractere incrementado
mov eax, 4 ; sys_write
mov ebx, 1 ; stdout
mov ecx, char_buffer ; endereço do buffer
mov edx, 2 ; tamanho (caractere + newline)
int 0x80
jmp procurar
nao_achou:
; se não quiser fazer nada, apenas sair
jmp sair
sair:
mov eax, 1 ; syscall exit
xor ebx, ebx
int 0x80
c2VjdGlvbiAuZGF0YQogICAgbWluaGFfc3RyaW5nIGRiICdBQkNEJywgMCAgICAgIDsgU3RyaW5nIGNvbSB0ZXJtaW5hZG9yIDAKICAgIGFjaG91X21zZyBkYiAnQWNob3UgbyBQV0QhJywgMHhBCiAgICBhY2hvdV9sZW4gZXF1ICQgLSBhY2hvdV9tc2cKICAgIG51bSBkYiAnMScKICAgIGNoYXJfYnVmZmVyIGRiIDAsIDB4QSAgICAgICAgICA7IEJ1ZmZlciBwYXJhIGFybWF6ZW5hciBjYXJhY3RlcmUgKyBuZXdsaW5lCgpzZWN0aW9uIC50ZXh0Cmdsb2JhbCBfc3RhcnQKCl9zdGFydDoKICAgIG1vdiBlc2ksIG1pbmhhX3N0cmluZyAgICAgICAgICA7IEVTSSBhcG9udGEgcGFyYSBvIGluw61jaW8gZGEgc3RyaW5nCgpwcm9jdXJhcjoKICAgIG1vdiBhbCwgW2VzaV0gICAgICAgICAgICAgICAgICA7IHBlZ2EgbyBieXRlIGFwb250YWRvIHBvciBFU0kKICAgIGluYyBlc2kKICAgIGNtcCBhbCwgMCAgICAgICAgICAgICAgICAgICAgICA7IENoZWdvdSBhbyBmaW5hbCBkYSBzdHJpbmc/CiAgICBqZSBuYW9fYWNob3UKICAgIGNtcCBhbCwgJ0EnICAgICAgICAgICAgICAgICAgICA7IENvbXBhcmFyIGNhcmFjdGVyZSBhdHVhbCBjb20gJ0EnCiAgICBqZSBhY2hvdWEKICAgIGptcCBhZGljaW9uYV9pbXByaW1lICAgICAgICAgICA7IEltcHJpbWUgZSBkZXBvaXMgdm9sdGEgYSBwcm9jdXJhcgoKYWNob3VhOgogICAgOyBJbXByaW1lICcxJyBxdWFuZG8gZW5jb250cmEgJ0EnCiAgICBtb3YgZWF4LCA0ICAgICAgICAgICAgICAgICAgICAgOyBzeXNfd3JpdGUKICAgIG1vdiBlYngsIDEgICAgICAgICAgICAgICAgICAgICA7IHN0ZG91dAogICAgbW92IGVjeCwgbnVtICAgICAgICAgICAgICAgICAgIDsgZW5kZXJlw6dvIGRhIHN0cmluZwogICAgbW92IGVkeCwgMSAgICAgICAgICAgICAgICAgICAgIDsgdGFtYW5obyBkYSBzdHJpbmcKICAgIGludCAweDgwICAgICAgICAgICAgICAgICAgICAgICA7IGNoYW1hZGEgZGUgc2lzdGVtYQogICAgam1wIHByb2N1cmFyCgphZGljaW9uYV9pbXByaW1lOgogICAgOyBJbmNyZW1lbnRhIG8gY2FyYWN0ZXJlCiAgICBpbmMgYWwKICAgIDsgQXJtYXplbmEgbm8gYnVmZmVyCiAgICBtb3YgW2NoYXJfYnVmZmVyXSwgYWwKICAgIAogICAgOyBJbXByaW1lIG8gY2FyYWN0ZXJlIGluY3JlbWVudGFkbwogICAgbW92IGVheCwgNCAgICAgICAgICAgICAgICAgICAgIDsgc3lzX3dyaXRlCiAgICBtb3YgZWJ4LCAxICAgICAgICAgICAgICAgICAgICAgOyBzdGRvdXQKICAgIG1vdiBlY3gsIGNoYXJfYnVmZmVyICAgICAgICAgICA7IGVuZGVyZcOnbyBkbyBidWZmZXIKICAgIG1vdiBlZHgsIDIgICAgICAgICAgICAgICAgICAgICA7IHRhbWFuaG8gKGNhcmFjdGVyZSArIG5ld2xpbmUpCiAgICBpbnQgMHg4MAogICAgCiAgICBqbXAgcHJvY3VyYXIKCm5hb19hY2hvdToKICAgIDsgc2UgbsOjbyBxdWlzZXIgZmF6ZXIgbmFkYSwgYXBlbmFzIHNhaXIKICAgIGptcCBzYWlyCgpzYWlyOgogICAgbW92IGVheCwgMSAgICAgICAgICAgICAgICAgICAgIDsgc3lzY2FsbCBleGl0CiAgICB4b3IgZWJ4LCBlYngKICAgIGludCAweDgw