Как в FASM писать в файл?

Тема в разделе "WASM.UNIX", создана пользователем Superplaneta, 17 авг 2006.

  1. Superplaneta

    Superplaneta New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2006
    Сообщения:
    44
    Проблема. Модуль отчета моей программы не выходит :)
    Тестировал на FreeBSD. В FASM 1.65 нужно написать участок
    кода, где консольное окно получает переменную и
    сохраняет её в файл. На сях это примерно так:
    Код (Text):
    1. FILE * ifile;
    2. FILE * ofile;
    3. char iname[50];
    4. char oname[50];
    5.  
    6. char abc[50000];
    7. printf("Введите ваше имя:\n");
    8.   cin>> abc;
    9.   ofile = fopen("ah.html", "w");
    10.  
    11.     fprintf(ofile,"Ваше имя: %s", abc);
    12.      fclose(ofile);
    А кто могбы написать участок кода для Linux/Unix на FASM 1.65, который
    был бы аналогом этого, что я на С++ делал. ЗАРАНИЕ БЛАГОДАРЕН!!!
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Может тебе в .COMMERCIALS?
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Весь код приводить не буду, но вывод стрики в консоль и чтение символов с консоли можно организовать на основании примеров, которые поставляются вместе с фасмом:
    Код (Text):
    1. format ELF
    2.  
    3. section '.text' executable
    4.  
    5. ; LIBC
    6. extrn read
    7. extrn write
    8. extrn _exit
    9.  
    10. msg1 db "Введите ваше имя:",0Ah
    11. msg_size = $ - msg1
    12.  
    13. public _start
    14. _start:
    15.  
    16.     ; printf("Введите ваше имя:\n")
    17.     push msg_size
    18.     push msg1
    19.     push 1
    20.     call write
    21.  
    22.     ; cin >> tmp
    23.     push 50000 ; зачем такое длинное имя???
    24.     push tmp
    25.     push 0
    26.     call read
    27.  
    28.     ; exit(0)
    29.     push 0
    30.     call _exit
    31.  
    32. section '.bss' writeable align 16
    33. tmp rb 50000
    ЗЫ: После write и read желательно фиксить стек.