fork download
  1. section .data
  2. minha_string db 'ABZXXZZZZZHCDEEFGHX', 0 ; String com terminador 0
  3. achou_msg db 'Achou 3 X!', 0xA
  4. achou_len equ $ - achou_msg
  5. contador dd 3
  6. section .text
  7. global _start
  8. _start:
  9. mov esi, minha_string ; ESI aponta para o início da string
  10. procurar:
  11. mov al, [esi] ; pega o byte apontado por ESI e coloca em AL
  12. inc esi
  13. cmp al, 0 ; Chegou ao final da string? (terminador 0)
  14. je nao_achou
  15. cmp al, 'X' ; Comparar caractere atual com 'X'
  16. je achou
  17. jmp procurar ; Continua procurando
  18. achou:
  19. dec dword [contador]
  20. cmp dword [contador], 0
  21. je achou3
  22. jmp procurar
  23. nao_achou:
  24. ; se não quiser fazer nada, apenas sair
  25. jmp sair
  26. achou3:
  27. ; escreve mensagem "Achou o X!"
  28. mov eax, 4 ; syscall write
  29. mov ebx, 1 ; STDOUT
  30. mov ecx, achou_msg
  31. mov edx, achou_len
  32. int 0x80
  33. jmp sair
  34. sair:
  35. mov eax, 1 ; syscall exit
  36. xor ebx, ebx
  37. int 0x80
Success #stdin #stdout 0s 5312KB
stdin
Standard input is empty
stdout
Achou 3 X!