fork download
  1. section .data
  2. minha_string db 'ABCD', 0 ; String com terminador 0
  3. achou_msg db 'Achou o PWD!', 0xA
  4. achou_len equ $ - achou_msg
  5. num db '1'
  6. char_buffer db 0, 0xA ; Buffer para armazenar caractere + newline
  7.  
  8. section .text
  9. global _start
  10.  
  11. _start:
  12. mov esi, minha_string ; ESI aponta para o início da string
  13.  
  14. procurar:
  15. mov al, [esi] ; pega o byte apontado por ESI
  16. inc esi
  17. cmp al, 0 ; Chegou ao final da string?
  18. je nao_achou
  19. cmp al, 'A' ; Comparar caractere atual com 'A'
  20. je achoua
  21. jmp adiciona_imprime ; Imprime e depois volta a procurar
  22.  
  23. achoua:
  24. ; Imprime '1' quando encontra 'A'
  25. mov eax, 4 ; sys_write
  26. mov ebx, 1 ; stdout
  27. mov ecx, num ; endereço da string
  28. mov edx, 1 ; tamanho da string
  29. int 0x80 ; chamada de sistema
  30. jmp procurar
  31.  
  32. adiciona_imprime:
  33. ; Incrementa o caractere
  34. inc al
  35. ; Armazena no buffer
  36. mov [char_buffer], al
  37.  
  38. ; Imprime o caractere incrementado
  39. mov eax, 4 ; sys_write
  40. mov ebx, 1 ; stdout
  41. mov ecx, char_buffer ; endereço do buffer
  42. mov edx, 2 ; tamanho (caractere + newline)
  43. int 0x80
  44.  
  45. jmp procurar
  46.  
  47. nao_achou:
  48. ; se não quiser fazer nada, apenas sair
  49. jmp sair
  50.  
  51. sair:
  52. mov eax, 1 ; syscall exit
  53. xor ebx, ebx
  54. int 0x80
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
1C
D
E