section .text ; Принимает код возврата и завершает текущий процесс exit: xor rax, rax, ret ; Принимает указатель на нуль-терминированную строку, возвращает её длину string_length: xor rax, rax ret ; Принимает указатель на нуль-терминированную строку, выводит её в stdout print_string: xor rax, rax ret ; Принимает код символа и выводит его в stdout print_char: xor rax, rax ret ; Переводит строку (выводит символ с кодом 0xA) print_newline: xor rax, rax ret ; Выводит беззнаковое 8-байтовое число в десятичном формате ; Совет: выделите место в стеке и храните там результаты деления ; Не забудьте перевести цифры в их ASCII коды. print_uint: xor rax, rax ret ; Выводит знаковое 8-байтовое число в десятичном формате print_int: xor rax, rax ret ; Принимает два указателя на нуль-терминированные строки, возвращает 1 если они равны, 0 иначе string_equals: xor rax, rax ret ; Читает один символ из stdin и возвращает его. Возвращает 0 если достигнут конец потока read_char: xor rax, rax ret ; Принимает: адрес начала буфера, размер буфера ; Читает в буфер слово из stdin, пропуская пробельные символы в начале, . ; Пробельные символы это пробел 0x20, табуляция 0x9 и перевод строки 0x10. ; Останавливается и возвращает 0 если слово слишком большое для буфера ; При успехе возвращает адрес буфера. ; Эта функция должна дописывать к слову нуль-терминатор read_word: ret ; Принимает указатель на строку, пытается ; прочитать из её начала беззнаковое число. ; Возвращает в rax: число, rdx : его длину в символах ; rdx = 0 если число прочитать не удалось parse_uint: xor rax, rax ret ; Принимает указатель на строку, пытается ; прочитать из её начала знаковое число. ; Если есть знак, пробелы между ним и числом не разрешены. ; Возвращает в rax: число, rdx : его длину в символах (включая знак, если он был) ; rdx = 0 если число прочитать не удалось parse_int: xor rax, rax ret ; Принимает указатель на строку, указатель на буфер и длину буфера ; Копирует строку в буфер ; Возвращает длину строки если она умещается в буфер, иначе 0 string_copy: xor rax, rax ret