Ради интереса разбираюсь с писанием под никсы. код на NASM: Code: global _start _start: pop ebx pop ebx pop ebx ;name of file to write mov eax,5 ;sys_open mov ecx,100 ;O_CREAT mov edx,777 int 0x80 ;call kernel test eax,eax ;valid? jns file_func mov ebx,eax ;err num mov eax,1 ;sys_exit int 0x80 file_func: mov ebx,eax ;sys_open descriptor in eax, fd mov eax,4 ;sys_write mov ecx,Msg ;*buf mov edx,5 ;count int 0x80 mov eax,1 mov ebx,0 int 0x80 section .data Msg db "Hello", 0ah, 0 Непонимаю, что за косяк с созданием файла. Файл создается, но в него не записывает. Когда вместо создания своего пишу в готовый, все ок.
проблема тут mov ecx,100 ;O_CREAT mov edx,777 константы O_CREAT и другие определяются в восьмеричной системе счисления, а у тебя идёт как десятичная, тоже и с правами на файл. попробуй заменить на это mov ecx,101o ;O_CREAT | O_WRONLY mov edx,777o ; o, h и b на конце числа означают систему счисления восьмеричная, 16-чная и двоичная соответственно