fork download
  1. section .data
  2. msg db "Value of rcx (lower byte): 0x", 0
  3. newline db 10
  4.  
  5. section .bss
  6. hex_digit resb 2 ; One digit + null terminator
  7.  
  8. section .text
  9. global _start
  10.  
  11. _start:
  12. ; Инициализация rax
  13. mov rax, 0x123456789ABCDEF0
  14.  
  15. ; Пересылка данных
  16. mov rbx, rax
  17. mov rcx, rbx
  18.  
  19. ; Извлечение младшего байта (cl) и преобразование в ASCII hex
  20. mov al, cl ; AL = младший байт rcx
  21. and al, 0x0F ; Mask чтобы получить только младшие 4 бита (одна цифра)
  22.  
  23. cmp al, 0x0A
  24. jl is_digit ; Если меньше 0xA, это цифра 0-9
  25. add al, 0x37 ; Если больше или равно 0xA, это буква A-F
  26. jmp save_digit
  27.  
  28. is_digit:
  29. add al, 0x30 ; Преобразование в ASCII
  30.  
  31. save_digit:
  32. mov [hex_digit], al
  33. mov byte [hex_digit+1], 0
  34.  
  35. ; Вывод строки "Value of rcx (lower byte): 0x"
  36. mov rax, 1 ; sys_write
  37. mov rdi, 1 ; stdout
  38. mov rsi, msg ; message address
  39. mov rdx, 30 ; message length
  40. syscall
  41.  
  42. ; Вывод шестнадцатеричной цифры
  43. mov rax, 1
  44. mov rdi, 1
  45. mov rsi, hex_digit
  46. mov rdx, 1
  47. syscall
  48.  
  49. ; Вывод новой строки
  50. mov rax, 1
  51. mov rdi, 1
  52. mov rsi, newline
  53. mov rdx, 1
  54. syscall
  55.  
  56. ; Выход
  57. mov rax, 60 ; sys_exit
  58. xor rdi, rdi
  59. syscall
  60.  
Success #stdin #stdout 0s 5280KB
stdin
Standard input is empty
stdout
Value of rcx (lower byte): 0x0