global _start section .data buff times 32 db 0 count dq 0 even db "Even" evenCount dq $-even odd db "Odd" oddCount dq $-odd section .text default rel _start: call read_text lea rsi, [buff] add rsi, qword [count] sub rsi, 2 mov rax, [rsi] test rax, 0x1 jnz .even .odd: lea rsi, [even] mov rdx, [evenCount] jmp .write .even: lea rsi, [odd] mov rdx, [oddCount] .write: call write_text mov rax, 60 mov rdi, 0 syscall ; Функция читает текст в буффер ; Регистры не изменяет read_text: push rax push rdi push rsi push rdx mov rax, 0 ; sys_read mov rdi, 0 ; stdin lea rsi, [rel buff] ; адрес буфера mov rdx, 256 ; количество байт syscall mov [count], rax pop rdx pop rsi pop rdi pop rax ret ; Функция выводит buff ; In: ; - RSI - начало буфера ; - RDX - размер буфера ; Регистры не изменяет write_text: push rax push rdi push rsi push rdx mov rax, 1 ; sys_write mov rdi, 1 ; stdout syscall mov [count], rax pop rdx pop rsi pop rdi pop rax ret