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 3 ; Two digits + 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)
  20. movzx eax, cl ; AL = младший байт rcx, zero-extend to EAX
  21.  
  22. ; Получение старшей цифры
  23. movzx edi, al ; Copy младший байт в edi (zero-extend)
  24. shr edi, 4 ; Сдвиг вправо на 4 бита (старшая цифра)
  25. call convert_to_hex ; Конвертация в ASCII hex
  26.  
  27. ; Сохранение старшей цифры
  28. mov [hex_digit], sil
  29.  
  30. ; Получение младшей цифры
  31. movzx edi, al ; Copy младший байт в edi (zero-extend)
  32. and edi, 0x0F ; Mask чтобы получить только младшие 4 бита (младшая цифра)
  33. call convert_to_hex ; Конвертация в ASCII hex
  34.  
  35. ; Сохранение младшей цифры
  36. mov [hex_digit+1], sil
  37. mov byte [hex_digit+2], 0 ; Null terminator
  38.  
  39. ; Вывод строки "Value of rcx (lower byte): 0x"
  40. mov rax, 1 ; sys_write
  41. mov rdi, 1 ; stdout
  42. mov rsi, msg ; message address
  43. mov rdx, msg_len ; message length
  44. syscall
  45.  
  46. ; Вывод шестнадцатеричной цифры
  47. mov rax, 1
  48. mov rdi, 1
  49. mov rsi, hex_digit
  50. mov rdx, 2 ; Output two hex digits
  51. syscall
  52.  
  53. ; Вывод новой строки
  54. mov rax, 1
  55. mov rdi, 1
  56. mov rsi, newline
  57. mov rdx, 1
  58. syscall
  59.  
  60. ; Выход
  61. mov rax, 60 ; sys_exit
  62. xor rdi, rdi
  63. syscall
  64.  
  65. convert_to_hex:
  66. cmp edi, 0x0A
  67. jl is_digit_convert ; Если меньше 0xA, это цифра 0-9
  68. add edi, 0x37 ; Если больше или равно 0xA, это буква A-F
  69. jmp save_digit_convert
  70.  
  71. is_digit_convert:
  72. add edi, 0x30 ; Преобразование в ASCII
  73.  
  74. save_digit_convert:
  75. mov sil, dil ; Store result in SIL
  76. ret
  77.  
  78. section .data
  79. msg_len equ $-msg
  80.  
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
Value of rcx (lower byte): 0x
F0