Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

14.01.2009, 01:30
|
|
Познающий
Регистрация: 18.04.2006
Сообщений: 31
Провел на форуме: 202783
Репутация:
17
|
|
[asm] Linux sys_open
Ради интереса разбираюсь с писанием под никсы.
код на NASM:
Код:
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
Непонимаю, что за косяк с созданием файла. Файл создается, но в него не записывает. Когда вместо создания своего пишу в готовый, все ок.
|
|
|

14.01.2009, 03:26
|
|
Участник форума
Регистрация: 04.11.2007
Сообщений: 103
Провел на форуме: 548128
Репутация:
104
|
|
проблема тут
mov ecx,100 ;O_CREAT
mov edx,777
константы O_CREAT и другие определяются в восьмеричной системе счисления, а у тебя идёт как десятичная, тоже и с правами на файл.
попробуй заменить на это
mov ecx,101o ;O_CREAT | O_WRONLY
mov edx,777o ;
o, h и b на конце числа означают систему счисления восьмеричная, 16-чная и двоичная соответственно
|
|
|

14.01.2009, 16:37
|
|
Познающий
Регистрация: 18.04.2006
Сообщений: 31
Провел на форуме: 202783
Репутация:
17
|
|
и правда, спс, за наводку, прошляпил =)
так все ок:
Код:
mov ecx,101
mov edx,777q
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|