fork download
  1. section .data
  2. msg db 'Valor de rcx: ', 0
  3.  
  4. section .bss
  5. num resb 2 ; Reservando 2 bytes para armazenar o valor convertido (para valores de 0 a 9)
  6.  
  7. section .text
  8. global _start
  9.  
  10. _start:
  11. mov rax, 5 ; Move o valor 5 para o registrador rax
  12. mov rbx, 3 ; Move o valor 3 para o registrador rbx
  13. cmp rax, rbx ; Compara rax com rbx
  14. jz iguais ; Se rax for igual a rbx, salta para "iguais"
  15. mov rcx, 9 ; Se não forem iguais, move o valor 9 para rcx
  16. jmp fim ; Salta para o rótulo "fim"
  17.  
  18. iguais:
  19. mov rcx, 0 ; Se forem iguais, move 0 para rcx
  20.  
  21. fim:
  22. ; Imprimir a mensagem
  23. mov rax, 1 ; Número da chamada do sistema para escrever
  24. mov rdi, 1 ; Identificador de saída padrão (stdout)
  25. mov rsi, msg ; Endereço da mensagem
  26. mov rdx, 14 ; Tamanho da mensagem
  27. syscall ; Chama o sistema para escrever
  28.  
  29. ; Verificar se rcx está dentro do intervalo 0-9
  30. ; Se rcx for maior que 9, não imprimiremos caracteres errados
  31. cmp rcx, 9
  32. jae fim2 ; Se rcx > 9, vai para fim2
  33.  
  34. ; Converte rcx para um caractere ASCII (0-9)
  35. add rcx, '0' ; Converte o número para o caractere ASCII correspondente
  36. mov [num], rcx ; Armazena o caractere convertido no buffer 'num'
  37.  
  38. ; Imprimir o valor de rcx como caractere
  39. mov rax, 1 ; Número da chamada do sistema para escrever
  40. mov rdi, 1 ; Identificador de saída padrão (stdout)
  41. mov rsi, num ; Endereço do valor convertido em 'num'
  42. mov rdx, 1 ; Comprimento de 1 byte
  43. syscall ; Chama o sistema para escrever
  44. jmp fim2 ; Salta para o fim
  45.  
  46. fim2:
  47. ; Finaliza o programa
  48. mov rax, 60 ; Número da chamada do sistema para sair
  49. xor rdi, rdi ; Código de saída 0
  50. syscall ; Chama o sistema para sair
  51.  
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
Valor de rcx: