HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

[asm] Linux sys_open
  #1  
Старый 14.01.2009, 01:30
haZard0us
Познающий
Регистрация: 18.04.2006
Сообщений: 31
С нами: 10559542

Репутация: 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
Непонимаю, что за косяк с созданием файла. Файл создается, но в него не записывает. Когда вместо создания своего пишу в готовый, все ок.
 
Ответить с цитированием

  #2  
Старый 14.01.2009, 03:26
__mad
Участник форума
Регистрация: 04.11.2007
Сообщений: 103
С нами: 9745696

Репутация: 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-чная и двоичная соответственно
 
Ответить с цитированием

  #3  
Старый 14.01.2009, 16:37
haZard0us
Познающий
Регистрация: 18.04.2006
Сообщений: 31
С нами: 10559542

Репутация: 17
По умолчанию

и правда, спс, за наводку, прошляпил =)
так все ок:
Код:
        mov     ecx,101
        mov     edx,777q
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На одном из мощнейших суперкомпьютеров СНГ внедрена платформа ALT Linux PaLb14 Мировые новости. Обсуждения. 0 24.12.2008 20:19
«Лаборатории Касперского»: Количество вредоносных программ под Linux резко возросло dinar_007 Мировые новости. Обсуждения. 9 20.08.2006 20:50
Вышла новая версия ASP Linux Zaratustra Мировые новости. Обсуждения. 2 08.03.2006 12:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.