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