непонятки с sys_open

Тема в разделе "WASM.UNIX", создана пользователем h4z, 13 янв 2009.

  1. h4z

    h4z New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2006
    Сообщения:
    3
    есть код на NASM
    Код (Text):
    1.     global _start
    2.  
    3.     _start:
    4.  
    5.         pop ebx
    6.         pop ebx
    7.         pop ebx ;name of file to write
    8.  
    9.         mov     eax,5   ;sys_open
    10.         mov     ecx,100 ;O_CREAT
    11.         mov     edx,777
    12.         int     0x80    ;call kernel
    13.  
    14.         test    eax,eax ;valid?
    15.         jns     file_func
    16.  
    17.         mov     ebx,eax ;err num
    18.         mov     eax,1   ;sys_exit
    19.         int     0x80
    20.  
    21.         file_func:
    22.         mov     ebx,eax ;sys_open descriptor in eax, fd
    23.         mov     eax,4   ;sys_write
    24.  
    25.         mov     ecx,Msg    ;*buf
    26.         mov     edx,5   ;count
    27.         int     0x80
    28.  
    29.         mov     eax,1
    30.         mov     ebx,0
    31.         int     0x80
    32.  
    33. section .data
    34.  
    35.         Msg             db      "Hello", 0ah, 0
    Непонимаю, что за косяк с созданием файла. Файл создается, но в него не записывает. Когда вместо создания своего пишу в готовый, все ок.
     
  2. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    Наверное флаги не так установил, посмотри `man 2 open`
     
  3. h4z

    h4z New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2006
    Сообщения:
    3
    разобрался, ошибся немного, надо было так
    Код (Text):
    1.         mov     ecx,101
    2.         mov     edx,777q
     
  4. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    а не надо случайно после этой инструкции добавить
    mov ebx, dword ptr [ebx]
    ?