section .data
minha_string db 'ABZZZZZZZZPWDDEEFGHX', 0 ; String com terminador 0
achou_msg db 'Achou o PWD!', 0xA
achou_len equ $ - achou_msg
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 e coloca em AL
inc esi
cmp al, 0 ; Chegou ao final da string? (terminador 0)
je nao_achou
cmp al, 'P' ; Comparar caractere atual com 'X'
je achoup
jmp procurar ; Continua procurando
achoup:
mov al, [esi] ; pega o byte apontado por ESI e coloca em AL
inc esi
cmp al, 0 ; Chegou ao final da string? (terminador 0)
je nao_achou
cmp al, 'W' ; Comparar caractere atual com 'X'
je achouw
jmp procurar ; Continua procurando
achouw:
mov al, [esi] ; pega o byte apontado por ESI e coloca em AL
inc esi
cmp al, 0 ; Chegou ao final da string? (terminador 0)
je nao_achou
cmp al, 'D' ; Comparar caractere atual com 'X'
je achou
jmp procurar ; Continua procurando
achou:
; escreve mensagem "Achou o X!"
mov eax, 4 ; syscall write
mov ebx, 1 ; STDOUT
mov ecx, achou_msg
mov edx, achou_len
int 0x80
jmp sair
nao_achou:
; se não quiser fazer nada, apenas sair
jmp sair
sair:
mov eax, 1 ; syscall exit
xor ebx, ebx
int 0x80
c2VjdGlvbiAuZGF0YQogbWluaGFfc3RyaW5nIGRiICdBQlpaWlpaWlpaUFdEREVFRkdIWCcsIDAgOyBTdHJpbmcgY29tIHRlcm1pbmFkb3IgMAogYWNob3VfbXNnIGRiICdBY2hvdSBvIFBXRCEnLCAweEEKIGFjaG91X2xlbiBlcXUgJCAtIGFjaG91X21zZwogCnNlY3Rpb24gLnRleHQKIGdsb2JhbCBfc3RhcnQKIApfc3RhcnQ6CiBtb3YgZXNpLCBtaW5oYV9zdHJpbmcgOyBFU0kgYXBvbnRhIHBhcmEgbyBpbsOtY2lvIGRhIHN0cmluZwogCnByb2N1cmFyOgptb3YgYWwsIFtlc2ldIDsgcGVnYSBvIGJ5dGUgYXBvbnRhZG8gcG9yIEVTSSBlIGNvbG9jYSBlbSBBTAppbmMgZXNpCmNtcCBhbCwgMCA7IENoZWdvdSBhbyBmaW5hbCBkYSBzdHJpbmc/ICh0ZXJtaW5hZG9yIDApCiBqZSBuYW9fYWNob3UKIGNtcCBhbCwgJ1AnIDsgQ29tcGFyYXIgY2FyYWN0ZXJlIGF0dWFsIGNvbSAnWCcKIGplIGFjaG91cAogam1wIHByb2N1cmFyIDsgQ29udGludWEgcHJvY3VyYW5kbwogCiBhY2hvdXA6Cm1vdiBhbCwgW2VzaV0gOyBwZWdhIG8gYnl0ZSBhcG9udGFkbyBwb3IgRVNJIGUgY29sb2NhIGVtIEFMCmluYyBlc2kKY21wIGFsLCAwIDsgQ2hlZ291IGFvIGZpbmFsIGRhIHN0cmluZz8gKHRlcm1pbmFkb3IgMCkKIGplIG5hb19hY2hvdQogY21wIGFsLCAnVycgOyBDb21wYXJhciBjYXJhY3RlcmUgYXR1YWwgY29tICdYJwogamUgYWNob3V3CiBqbXAgcHJvY3VyYXIgOyBDb250aW51YSBwcm9jdXJhbmRvCiAKIGFjaG91dzoKbW92IGFsLCBbZXNpXSA7IHBlZ2EgbyBieXRlIGFwb250YWRvIHBvciBFU0kgZSBjb2xvY2EgZW0gQUwKaW5jIGVzaQpjbXAgYWwsIDAgOyBDaGVnb3UgYW8gZmluYWwgZGEgc3RyaW5nPyAodGVybWluYWRvciAwKQogamUgbmFvX2FjaG91CiBjbXAgYWwsICdEJyA7IENvbXBhcmFyIGNhcmFjdGVyZSBhdHVhbCBjb20gJ1gnCiBqZSBhY2hvdQogam1wIHByb2N1cmFyIDsgQ29udGludWEgcHJvY3VyYW5kbwogCmFjaG91OgogOyBlc2NyZXZlIG1lbnNhZ2VtICJBY2hvdSBvIFghIgogbW92IGVheCwgNCA7IHN5c2NhbGwgd3JpdGUKIG1vdiBlYngsIDEgOyBTVERPVVQKIG1vdiBlY3gsIGFjaG91X21zZwogbW92IGVkeCwgYWNob3VfbGVuCiBpbnQgMHg4MAogam1wIHNhaXIKIApuYW9fYWNob3U6CiA7IHNlIG7Do28gcXVpc2VyIGZhemVyIG5hZGEsIGFwZW5hcyBzYWlyCiBqbXAgc2FpcgogCnNhaXI6CiBtb3YgZWF4LCAxIDsgc3lzY2FsbCBleGl0CiB4b3IgZWJ4LCBlYngKIGludCAweDgw