section .data
number db 5 ; Число для инвертирования бита (1 байт)
newline db 0xA ; Символ новой строки
section .text
global _start
_start:
; Инвертируем 4-й бит
mov al, [number] ; Загружаем число из секции данных в регистр AL (младший байт)
xor al, 0x10 ; Инвертируем 4-й бит (0x10 = 00010000b)
; Выводим младший байт в шестнадцатеричном виде
push ax ; Сохраняем значение AX в стек для передачи в функцию печати
call print_hex ; Вызываем функцию печати в шестнадцатеричном виде
add esp, 4 ; Очищаем стек
; Выводим символ новой строки
mov eax, 4 ; Системный вызов write
mov ebx, 1 ; stdout
mov ecx, newline ; Адрес символа новой строки
mov edx, 1 ; Количество байт для вывода
int 0x80 ; Вызов ядра
; Завершение программы
mov eax, 1 ; Системный вызов exit
xor ebx, ebx ; Код возврата 0
int 0x80 ; Вызов ядра
; Функция для печати числа в шестнадцатеричном виде (одного байта)
print_hex:
push ebp
mov ebp, esp
push eax
push ebx
push ecx
push edx
mov al, [esp+16] ; Получаем число из стека (младший байт)
; Вывод старшей цифры (4 бита)
mov bl, al
shr bl, 4
and bl, 0x0F
call print_digit
; Вывод младшей цифры (4 бита)
mov bl, al
and bl, 0x0F
call print_digit
pop edx
pop ecx
pop ebx
pop eax
pop ebp
ret
; Функция для печати одной шестнадцатеричной цифры
print_digit:
push ebp
mov ebp, esp
cmp bl, 0x0A ; Сравниваем с 10 (A)
jl is_number ; Если меньше 10, это цифра 0-9
add bl, 0x37 ; Если больше или равно 10, это буква A-F (добавляем 'A' - 10 + '0')
jmp print
is_number:
add bl, 0x30 ; Преобразуем цифру в ASCII код
print:
mov eax, 4 ; Системный вызов write
mov ebx, 1 ; stdout
mov ecx, esp ; Адрес символа для вывода
mov edx, 1 ; Количество байт для вывода
int 0x80 ; Вызов ядра
pop ebp
ret
c2VjdGlvbiAuZGF0YQogICAgbnVtYmVyIGRiIDUgICAgICA7INCn0LjRgdC70L4g0LTQu9GPINC40L3QstC10YDRgtC40YDQvtCy0LDQvdC40Y8g0LHQuNGC0LAgKDEg0LHQsNC50YIpCiAgICBuZXdsaW5lIGRiIDB4QSAgIDsg0KHQuNC80LLQvtC7INC90L7QstC+0Lkg0YHRgtGA0L7QutC4CgpzZWN0aW9uIC50ZXh0CiAgICBnbG9iYWwgX3N0YXJ0Cgpfc3RhcnQ6CiAgICA7INCY0L3QstC10YDRgtC40YDRg9C10LwgNC3QuSDQsdC40YIKICAgIG1vdiBhbCwgW251bWJlcl0gIDsg0JfQsNCz0YDRg9C20LDQtdC8INGH0LjRgdC70L4g0LjQtyDRgdC10LrRhtC40Lgg0LTQsNC90L3Ri9GFINCyINGA0LXQs9C40YHRgtGAIEFMICjQvNC70LDQtNGI0LjQuSDQsdCw0LnRgikKICAgIHhvciBhbCwgMHgxMCAgICAgIDsg0JjQvdCy0LXRgNGC0LjRgNGD0LXQvCA0LdC5INCx0LjRgiAoMHgxMCA9IDAwMDEwMDAwYikKCiAgICA7INCS0YvQstC+0LTQuNC8INC80LvQsNC00YjQuNC5INCx0LDQudGCINCyINGI0LXRgdGC0L3QsNC00YbQsNGC0LXRgNC40YfQvdC+0Lwg0LLQuNC00LUKICAgIHB1c2ggYXggICAgICAgICAgIDsg0KHQvtGF0YDQsNC90Y/QtdC8INC30L3QsNGH0LXQvdC40LUgQVgg0LIg0YHRgtC10Log0LTQu9GPINC/0LXRgNC10LTQsNGH0Lgg0LIg0YTRg9C90LrRhtC40Y4g0L/QtdGH0LDRgtC4CiAgICBjYWxsIHByaW50X2hleCAgICA7INCS0YvQt9GL0LLQsNC10Lwg0YTRg9C90LrRhtC40Y4g0L/QtdGH0LDRgtC4INCyINGI0LXRgdGC0L3QsNC00YbQsNGC0LXRgNC40YfQvdC+0Lwg0LLQuNC00LUKICAgIGFkZCBlc3AsIDQgICAgICAgICA7INCe0YfQuNGJ0LDQtdC8INGB0YLQtdC6CgogICAgOyDQktGL0LLQvtC00LjQvCDRgdC40LzQstC+0Lsg0L3QvtCy0L7QuSDRgdGC0YDQvtC60LgKICAgIG1vdiBlYXgsIDQgICAgICAgOyDQodC40YHRgtC10LzQvdGL0Lkg0LLRi9C30L7QsiB3cml0ZQogICAgbW92IGVieCwgMSAgICAgICA7IHN0ZG91dAogICAgbW92IGVjeCwgbmV3bGluZSAgOyDQkNC00YDQtdGBINGB0LjQvNCy0L7Qu9CwINC90L7QstC+0Lkg0YHRgtGA0L7QutC4CiAgICBtb3YgZWR4LCAxICAgICAgIDsg0JrQvtC70LjRh9C10YHRgtCy0L4g0LHQsNC50YIg0LTQu9GPINCy0YvQstC+0LTQsAogICAgaW50IDB4ODAgICAgICAgICA7INCS0YvQt9C+0LIg0Y/QtNGA0LAKCiAgICA7INCX0LDQstC10YDRiNC10L3QuNC1INC/0YDQvtCz0YDQsNC80LzRiwogICAgbW92IGVheCwgMSAgICAgIDsg0KHQuNGB0YLQtdC80L3Ri9C5INCy0YvQt9C+0LIgZXhpdAogICAgeG9yIGVieCwgZWJ4ICAgIDsg0JrQvtC0INCy0L7Qt9Cy0YDQsNGC0LAgMAogICAgaW50IDB4ODAgICAgICAgIDsg0JLRi9C30L7QsiDRj9C00YDQsAoKOyDQpNGD0L3QutGG0LjRjyDQtNC70Y8g0L/QtdGH0LDRgtC4INGH0LjRgdC70LAg0LIg0YjQtdGB0YLQvdCw0LTRhtCw0YLQtdGA0LjRh9C90L7QvCDQstC40LTQtSAo0L7QtNC90L7Qs9C+INCx0LDQudGC0LApCnByaW50X2hleDoKICAgIHB1c2ggZWJwCiAgICBtb3YgZWJwLCBlc3AKICAgIHB1c2ggZWF4CiAgICBwdXNoIGVieAogICAgcHVzaCBlY3gKICAgIHB1c2ggZWR4CgogICAgbW92IGFsLCBbZXNwKzE2XSAgOyDQn9C+0LvRg9GH0LDQtdC8INGH0LjRgdC70L4g0LjQtyDRgdGC0LXQutCwICjQvNC70LDQtNGI0LjQuSDQsdCw0LnRgikKCiAgICA7INCS0YvQstC+0LQg0YHRgtCw0YDRiNC10Lkg0YbQuNGE0YDRiyAoNCDQsdC40YLQsCkKICAgIG1vdiBibCwgYWwKICAgIHNociBibCwgNAogICAgYW5kIGJsLCAweDBGCiAgICBjYWxsIHByaW50X2RpZ2l0CgogICAgOyDQktGL0LLQvtC0INC80LvQsNC00YjQtdC5INGG0LjRhNGA0YsgKDQg0LHQuNGC0LApCiAgICBtb3YgYmwsIGFsCiAgICBhbmQgYmwsIDB4MEYKICAgIGNhbGwgcHJpbnRfZGlnaXQKCiAgICBwb3AgZWR4CiAgICBwb3AgZWN4CiAgICBwb3AgZWJ4CiAgICBwb3AgZWF4CiAgICBwb3AgZWJwCiAgICByZXQKCjsg0KTRg9C90LrRhtC40Y8g0LTQu9GPINC/0LXRh9Cw0YLQuCDQvtC00L3QvtC5INGI0LXRgdGC0L3QsNC00YbQsNGC0LXRgNC40YfQvdC+0Lkg0YbQuNGE0YDRiwpwcmludF9kaWdpdDoKICAgIHB1c2ggZWJwCiAgICBtb3YgZWJwLCBlc3AKCiAgICBjbXAgYmwsIDB4MEEgICAgICAgOyDQodGA0LDQstC90LjQstCw0LXQvCDRgSAxMCAoQSkKICAgIGpsICBpc19udW1iZXIgICAgICAgOyDQldGB0LvQuCDQvNC10L3RjNGI0LUgMTAsINGN0YLQviDRhtC40YTRgNCwIDAtOQogICAgYWRkIGJsLCAweDM3ICAgICAgIDsg0JXRgdC70Lgg0LHQvtC70YzRiNC1INC40LvQuCDRgNCw0LLQvdC+IDEwLCDRjdGC0L4g0LHRg9C60LLQsCBBLUYgKNC00L7QsdCw0LLQu9GP0LXQvCAnQScgLSAxMCArICcwJykKICAgIGptcCBwcmludAoKaXNfbnVtYmVyOgogICAgYWRkIGJsLCAweDMwICAgICAgIDsg0J/RgNC10L7QsdGA0LDQt9GD0LXQvCDRhtC40YTRgNGDINCyIEFTQ0lJINC60L7QtAoKcHJpbnQ6CiAgICBtb3YgZWF4LCA0ICAgICAgICAgOyDQodC40YHRgtC10LzQvdGL0Lkg0LLRi9C30L7QsiB3cml0ZQogICAgbW92IGVieCwgMSAgICAgICAgIDsgc3Rkb3V0CiAgICBtb3YgZWN4LCBlc3AgICAgICAgOyDQkNC00YDQtdGBINGB0LjQvNCy0L7Qu9CwINC00LvRjyDQstGL0LLQvtC00LAKICAgIG1vdiBlZHgsIDEgICAgICAgICA7INCa0L7Qu9C40YfQtdGB0YLQstC+INCx0LDQudGCINC00LvRjyDQstGL0LLQvtC00LAKICAgIGludCAweDgwICAgICAgICAgICA7INCS0YvQt9C+0LIg0Y/QtNGA0LAKCiAgICBwb3AgZWJwCiAgICByZXQK