format 0.01 ; Version org 0x0 use32 db 'MENUET01' ; Заголовок для KolibriOS dd 1 ; Версия dd start ; Начало программы dd i_end ; Конец программы dd i_end ; Размер памяти dd stack ; Стек dd 0, 0 start: mov eax, 53 ; Получение параметров mov ebx, 1 int 0x40 test eax, eax jz no_params mov esi, ebx ; ESI — параметры cmp byte [esi], 0 je no_params ; Пропуск пробелов skip_spaces: cmp byte [esi], ' ' jne parse_path inc esi jmp skip_spaces parse_path: mov edi, path_buffer copy_path: lodsb test al, al je path_end cmp al, ' ' je path_end stosb jmp copy_path path_end: mov byte [edi], 0 ; Установка FAT32 как фиксированного типа mov dword [fs_type], 'FAT3' mov word [fs_type+4], '32' mov byte [fs_type+6], 0 ; Проверка пути mov esi, path_buffer cmp byte [esi], '/' jne invalid_path format_disk: ; Гипотетический вызов форматирования в FAT32 mov eax, 70 ; Системный вызов (заменить реальной функцией) mov ebx, path_buffer mov ecx, fs_type int 0x40 test eax, eax jnz format_error ; Успешное завершение mov eax, -1 int 0x40 no_params: mov eax, 4 ; Вывод помощи mov ebx, help_msg mov ecx, help_msg_len int 0x40 mov eax, -1 int 0x40 invalid_path: mov eax, 4 mov ebx, error_msg mov ecx, error_msg_len int 0x40 mov eax, -1 int 0x40 format_error: mov eax, 4 mov ebx, error_format_msg mov ecx, error_format_msg_len int 0x40 mov eax, -1 int 0x40 stack: rb 1024 ; Стек path_buffer rb 256 ; Буфер для пути fs_type rb 16 ; Тип ФС (только FAT32) help_msg db 'Usage: format ', 13, 10 db 'Example: format /fd2/1', 13, 10, 0 help_msg_len = $ - help_msg error_msg db 'Error: Invalid device path', 13, 10, 0 error_msg_len = $ - error_msg error_format_msg db 'Error: Format failed', 13, 10, 0 error_format_msg_len = $ - error_format_msg i_end: