fork download
  1. section .data
  2. msg db 'Value of rcx: ', 0 ; Mensagem para ajudar na depuração
  3. len equ $ - msg ; Tamanho da mensagem
  4.  
  5. section .text
  6. global _start
  7.  
  8. _start:
  9. ; Comparação entre rax e rbx
  10. mov rax, 4 ; Coloca 4 em rax
  11. mov rbx, 4 ; Coloca 4 em rbx
  12. cmp rax, rbx ; Compara rax com rbx
  13. jz iguais ; Se forem iguais, salta para 'iguais'
  14.  
  15. mov rcx, 2 ; Se não forem iguais, coloca 2 em rcx
  16. jmp fim ; Salta para 'fim'
  17.  
  18. iguais:
  19. mov rcx, 7 ; Se forem iguais, coloca 7 em rcx
  20.  
  21. fim:
  22. ; Imprimir a mensagem
  23. mov rax, 1 ; Syscall sys_write
  24. mov rdi, 1 ; File descriptor 1 (stdout)
  25. mov rsi, msg ; Mensagem a ser impressa
  26. mov rdx, len ; Tamanho da mensagem
  27. syscall ; Chama a syscall para imprimir a mensagem
  28.  
  29. ; Verifica se rcx está entre 0 e 9 (é um número de 1 dígito)
  30. cmp rcx, 9
  31. jae erro ; Se rcx for maior que 9, vai para erro
  32.  
  33. ; Converte rcx para o caractere ASCII correspondente
  34. add rcx, '0' ; Converte o valor de rcx (0-9) para o caractere ASCII
  35.  
  36. ; Exibe o valor de rcx na tela
  37. mov rax, 1 ; Syscall sys_write
  38. mov rdi, 1 ; File descriptor 1 (stdout)
  39. mov rsi, rcx ; Passa o caractere a ser impresso (em rcx)
  40. mov rdx, 1 ; Apenas 1 byte (caractere) será impresso
  41. syscall ; Chama a syscall para imprimir o valor de rcx
  42.  
  43. ; Final do programa
  44. mov rax, 60 ; Syscall sys_exit
  45. xor rdi, rdi ; Código de saída 0 (sucesso)
  46. syscall ; Chama a syscall de saída
  47.  
  48. erro:
  49. ; Se rcx estiver fora do intervalo, imprima uma mensagem de erro
  50. mov rsi, erro_msg
  51. mov rdx, erro_len
  52. mov rax, 1
  53. mov rdi, 1
  54. syscall
  55. mov rax, 60 ; Syscall sys_exit
  56. xor rdi, rdi ; Código de saída 1 (erro)
  57. syscall
  58.  
  59. section .data
  60. erro_msg db 'Error: rcx value is out of bounds (0-9)', 0
  61. erro_len equ $ - erro_msg
  62.  
Success #stdin #stdout 0s 5300KB
stdin
Standard input is empty
stdout
Value of rcx: Error: rcx value is out of bounds (0-9)