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.  
  12. ;q2 começa aqui
  13. mov rax, 4 ; Move o valor 4 para o registrador rax
  14. mov rbx, 4 ; Move o valor 4 para o registrador rbx
  15. cmp rax, rbx ; Compara rax com rbx
  16. jz iguais ; Se rax for igual a rbx, salta para "iguais"
  17. mov rcx, 2 ; Se não forem iguais, move o valor 2 para rcx
  18. jmp fim ; Salta para o rótulo "fim"
  19.  
  20. iguais:
  21. mov rcx, 7 ; Se forem iguais, move 7 para rcx
  22.  
  23. fim:
  24. ;q2 finaliza aqui
  25. ; Exibe o valor de rcx
  26. ; Aqui vamos imprimir o valor de rcx como um número ASCII (0-9)
  27. add rcx, '0' ; Converte o valor numérico para seu equivalente ASCII
  28. mov [num], rcx ; Armazena o valor convertido em num
  29.  
  30. ; Código para imprimir a mensagem
  31. mov rsi, msg ; Endereço da mensagem
  32. mov rdx, 14 ; Tamanho da mensagem
  33. mov rax, 1 ; Código de syscall para escrever
  34. mov rdi, 1 ; Descritor de arquivo (stdout)
  35. syscall
  36.  
  37. ; Código para imprimir o número
  38. mov rsi, num ; Endereço do número a ser impresso
  39. mov rdx, 1 ; Tamanho do número (1 byte)
  40. mov rax, 1 ; Código de syscall para escrever
  41. mov rdi, 1 ; Descritor de arquivo (stdout)
  42. syscall
  43.  
  44. ; Finaliza o programa
  45. mov rax, 60 ; Código de syscall para sair
  46. xor rdi, rdi ; Código de saída 0
  47. syscall
  48.  
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
Valor de rcx: 7