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. ; Converter o valor de rcx para um caractere ASCII de 0 a 9
  30. add rcx, '0' ; Converte o número para o caractere ASCII correspondente
  31. mov [num], rcx ; Armazena o caractere convertido no buffer 'num'
  32.  
  33. ; Agora imprimir o valor de rcx como caractere
  34. mov rax, 1 ; Número da chamada do sistema para escrever
  35. mov rdi, 1 ; Identificador de saída padrão (stdout)
  36. mov rsi, num ; Endereço do valor convertido em 'num'
  37. mov rdx, 1 ; Comprimento de 1 byte
  38. syscall ; Chama o sistema para escrever
  39.  
  40. ; Finaliza o programa
  41. mov rax, 60 ; Número da chamada do sistema para sair
  42. xor rdi, rdi ; Código de saída 0
  43. syscall ; Chama o sistema para sair
  44.  
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
Valor de rcx: f