section .data
msg db "Value of rcx (lower byte): 0x", 0
newline db 10
section .bss
hex_digit resb 3 ; Two digits + null terminator
section .text
global _start
_start:
; Инициализация rax
mov rax, 0x123456789ABCDEF0
; Пересылка данных
mov rbx, rax
mov rcx, rbx
; Извлечение младшего байта (cl)
movzx eax, cl ; AL = младший байт rcx, zero-extend to EAX
; Получение старшей цифры
movzx edi, al ; Copy младший байт в edi (zero-extend)
shr edi, 4 ; Сдвиг вправо на 4 бита (старшая цифра)
call convert_to_hex ; Конвертация в ASCII hex
; Сохранение старшей цифры
mov [hex_digit], sil
; Получение младшей цифры
movzx edi, al ; Copy младший байт в edi (zero-extend)
and edi, 0x0F ; Mask чтобы получить только младшие 4 бита (младшая цифра)
call convert_to_hex ; Конвертация в ASCII hex
; Сохранение младшей цифры
mov [hex_digit+1], sil
mov byte [hex_digit+2], 0 ; Null terminator
; Вывод строки "Value of rcx (lower byte): 0x"
mov rax, 1 ; sys_write
mov rdi, 1 ; stdout
mov rsi, msg ; message address
mov rdx, msg_len ; message length
syscall
; Вывод шестнадцатеричной цифры
mov rax, 1
mov rdi, 1
mov rsi, hex_digit
mov rdx, 2 ; Output two hex digits
syscall
; Вывод новой строки
mov rax, 1
mov rdi, 1
mov rsi, newline
mov rdx, 1
syscall
; Выход
mov rax, 60 ; sys_exit
xor rdi, rdi
syscall
convert_to_hex:
cmp edi, 0x0A
jl is_digit_convert ; Если меньше 0xA, это цифра 0-9
add edi, 0x37 ; Если больше или равно 0xA, это буква A-F
jmp save_digit_convert
is_digit_convert:
add edi, 0x30 ; Преобразование в ASCII
save_digit_convert:
mov sil, dil ; Store result in SIL
ret
section .data
msg_len equ $-msg
c2VjdGlvbiAuZGF0YQogICAgbXNnIGRiICJWYWx1ZSBvZiByY3ggKGxvd2VyIGJ5dGUpOiAweCIsIDAKICAgIG5ld2xpbmUgZGIgMTAKCnNlY3Rpb24gLmJzcwogICAgaGV4X2RpZ2l0IHJlc2IgMyA7IFR3byBkaWdpdHMgKyBudWxsIHRlcm1pbmF0b3IKCnNlY3Rpb24gLnRleHQKICAgIGdsb2JhbCBfc3RhcnQKCl9zdGFydDoKICAgIDsg0JjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8gcmF4CiAgICBtb3YgcmF4LCAweDEyMzQ1Njc4OUFCQ0RFRjAKCiAgICA7INCf0LXRgNC10YHRi9C70LrQsCDQtNCw0L3QvdGL0YUKICAgIG1vdiByYngsIHJheAogICAgbW92IHJjeCwgcmJ4CgogICAgOyDQmNC30LLQu9C10YfQtdC90LjQtSDQvNC70LDQtNGI0LXQs9C+INCx0LDQudGC0LAgKGNsKQogICAgbW92enggZWF4LCBjbCAgICAgICAgIDsgQUwgPSDQvNC70LDQtNGI0LjQuSDQsdCw0LnRgiByY3gsIHplcm8tZXh0ZW5kIHRvIEVBWAoKICAgIDsg0J/QvtC70YPRh9C10L3QuNC1INGB0YLQsNGA0YjQtdC5INGG0LjRhNGA0YsKICAgIG1vdnp4IGVkaSwgYWwgICAgICAgICAgOyBDb3B5INC80LvQsNC00YjQuNC5INCx0LDQudGCINCyIGVkaSAoemVyby1leHRlbmQpCiAgICBzaHIgZWRpLCA0ICAgICAgICAgICAgOyDQodC00LLQuNCzINCy0L/RgNCw0LLQviDQvdCwIDQg0LHQuNGC0LAgKNGB0YLQsNGA0YjQsNGPINGG0LjRhNGA0LApCiAgICBjYWxsIGNvbnZlcnRfdG9faGV4ICA7INCa0L7QvdCy0LXRgNGC0LDRhtC40Y8g0LIgQVNDSUkgaGV4CgogICAgOyDQodC+0YXRgNCw0L3QtdC90LjQtSDRgdGC0LDRgNGI0LXQuSDRhtC40YTRgNGLCiAgICBtb3YgW2hleF9kaWdpdF0sIHNpbAoKICAgIDsg0J/QvtC70YPRh9C10L3QuNC1INC80LvQsNC00YjQtdC5INGG0LjRhNGA0YsKICAgIG1vdnp4IGVkaSwgYWwgICAgICAgICAgOyBDb3B5INC80LvQsNC00YjQuNC5INCx0LDQudGCINCyIGVkaSAoemVyby1leHRlbmQpCiAgICBhbmQgZWRpLCAweDBGICAgICAgIDsgTWFzayDRh9GC0L7QsdGLINC/0L7Qu9GD0YfQuNGC0Ywg0YLQvtC70YzQutC+INC80LvQsNC00YjQuNC1IDQg0LHQuNGC0LAgKNC80LvQsNC00YjQsNGPINGG0LjRhNGA0LApCiAgICBjYWxsIGNvbnZlcnRfdG9faGV4ICA7INCa0L7QvdCy0LXRgNGC0LDRhtC40Y8g0LIgQVNDSUkgaGV4CgogICAgOyDQodC+0YXRgNCw0L3QtdC90LjQtSDQvNC70LDQtNGI0LXQuSDRhtC40YTRgNGLCiAgICBtb3YgW2hleF9kaWdpdCsxXSwgc2lsCiAgICBtb3YgYnl0ZSBbaGV4X2RpZ2l0KzJdLCAwIDsgTnVsbCB0ZXJtaW5hdG9yCgogICAgOyDQktGL0LLQvtC0INGB0YLRgNC+0LrQuCAiVmFsdWUgb2YgcmN4IChsb3dlciBieXRlKTogMHgiCiAgICBtb3YgcmF4LCAxICAgICAgICAgIDsgc3lzX3dyaXRlCiAgICBtb3YgcmRpLCAxICAgICAgICAgIDsgc3Rkb3V0CiAgICBtb3YgcnNpLCBtc2cgICAgICAgIDsgbWVzc2FnZSBhZGRyZXNzCiAgICBtb3YgcmR4LCBtc2dfbGVuICAgICAgICA7IG1lc3NhZ2UgbGVuZ3RoCiAgICBzeXNjYWxsCgogICAgOyDQktGL0LLQvtC0INGI0LXRgdGC0L3QsNC00YbQsNGC0LXRgNC40YfQvdC+0Lkg0YbQuNGE0YDRiwogICAgbW92IHJheCwgMQogICAgbW92IHJkaSwgMQogICAgbW92IHJzaSwgaGV4X2RpZ2l0CiAgICBtb3YgcmR4LCAyICAgICAgICAgOyBPdXRwdXQgdHdvIGhleCBkaWdpdHMKICAgIHN5c2NhbGwKCiAgICA7INCS0YvQstC+0LQg0L3QvtCy0L7QuSDRgdGC0YDQvtC60LgKICAgIG1vdiByYXgsIDEKICAgIG1vdiByZGksIDEKICAgIG1vdiByc2ksIG5ld2xpbmUKICAgIG1vdiByZHgsIDEKICAgIHN5c2NhbGwKCiAgICA7INCS0YvRhdC+0LQKICAgIG1vdiByYXgsIDYwICAgICAgICAgOyBzeXNfZXhpdAogICAgeG9yIHJkaSwgcmRpCiAgICBzeXNjYWxsCgpjb252ZXJ0X3RvX2hleDoKICAgIGNtcCBlZGksIDB4MEEKICAgIGpsICBpc19kaWdpdF9jb252ZXJ0ICAgICAgIDsg0JXRgdC70Lgg0LzQtdC90YzRiNC1IDB4QSwg0Y3RgtC+INGG0LjRhNGA0LAgMC05CiAgICBhZGQgZWRpLCAweDM3ICAgICAgIDsg0JXRgdC70Lgg0LHQvtC70YzRiNC1INC40LvQuCDRgNCw0LLQvdC+IDB4QSwg0Y3RgtC+INCx0YPQutCy0LAgQS1GCiAgICBqbXAgc2F2ZV9kaWdpdF9jb252ZXJ0Cgppc19kaWdpdF9jb252ZXJ0OgogICAgYWRkIGVkaSwgMHgzMCAgICAgICA7INCf0YDQtdC+0LHRgNCw0LfQvtCy0LDQvdC40LUg0LIgQVNDSUkKCnNhdmVfZGlnaXRfY29udmVydDoKICAgIG1vdiBzaWwsIGRpbCAgICAgICA7IFN0b3JlIHJlc3VsdCBpbiBTSUwKICAgIHJldAoKc2VjdGlvbiAuZGF0YQogICAgbXNnX2xlbiBlcXUgJC1tc2cK