Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись в файл, мож кто поможет в решении этой задачи 
:(
    Опции темы
Daniel
  Дата 11.6.2003, 05:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Начал учить ASM, но никак не могу врубиться как осуществлять запись в файл. Мож кто поможет в решении тривиальной задачи:

-открыть файл (допустим этот файл лежит здесь - C:\foldder\file.txt)
-очистить его содержимое
-записать три слова, каждое из которых будет начинаться с новой строки(н-р: 1\n 2\n 3\n; \n - здесь символ перевода строки).
-ну и закрыть файл

Сом бари хелп ми confused.gif !

Особенно хотелось бы услышать совет могучего Чингачгука smile.gif
  Вверх
Chingachguk
Дата 11.6.2003, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата

text segment byte
  assume cs:text,ds:text
  org 100h
begin:
  mov  ax,3d02h
  mov  dx,offset MyFile
  int  21h
  jnc  @@FileOpen
  push offset FileNotOpenMsg
  call Message
  jmp  @@Exit
@@FileOpen:
; Save descriptor in bx
  mov  bx,ax
; Clear file
; 1. Set pointer at begin of file
  mov  ax,4200h
  xor  cx,cx
  xor  dx,dx
  int  21h
; 2. Write 0 bytes
  mov  ah,40h
  xor  cx,cx
  int  21h
; Write 3 string to file
  push offset MyData1
  call StrLen
  mov  dx,offset MyData1
  call WriteToFile
  push offset MyData2
  call StrLen
  mov  dx,offset MyData2
  call WriteToFile
  push offset MyData3
  call StrLen
  mov  dx,offset MyData3
  call WriteToFile
; Close file
  mov  ah,3Eh
  int  21h
@@Exit:
  retn
Message proc near ; Pascal - type procedure
  push bp
  mov  bp,sp
  mov  dx,[bp+4]
  mov  ah,09h
  int  21h
  pop  bp
  retn 2
Message endp
StrLen proc near ; Pascal - type procedure: get size of C-string in cx
  push bp
  mov  bp,sp
  mov  si,[bp+4]
  cld
  xor  cx,cx
@@StrLen:
  lodsb
  inc  cx
  test al,al
  jnz  @@StrLen
  dec  cx
  pop  bp
  retn 2
StrLen endp
WriteToFile proc near ; dx=offset of data, cx=data lenght
  mov  ah,40h
  int  21h
  retn
WriteToFile endp
MyFile  db 'C:\BORLAND\BP.550\COM_NEW\test.txt',0
MyData1 db '-1-',13,10,0
MyData2 db '==2==',13,10,0
MyData3 db '<<<3>>>',13,10,0
FileNotOpenMsg db 'File not open !',13,10,'$'
text ends
  end begin




--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Unregistered
Дата 12.6.2003, 02:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











; Открыть файл на запись.
; Получить указатель на файл
push 0
push 00000080h ; FILE_ATTRIBUTE_NORMAL
push 2 ; CREATE_ALWAYS
push 0 ; security attributes
push 0 ; share mode
push 40000000h ; GENERIC_WRITE
push source_filename_ptr ; offset на текст.путь,имя файла/нуль
call CreateFile
mov source_file_handle, eax
; Запись в файл.
push 0
push offset bytes_written; offset на 32b число
push 32 ; кол-во байт.
push offset key ; offset на начало записываемых данных
push eax ;source_file_handle
call WriteFile


Это с использованием Win API.
sergey_0777
  Вверх
Daniel
Дата 12.6.2003, 05:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











О! Спасибо господа smile.gif! Буду разбираться..

А как добраться до переменных окружения ОС не подскажите? Ну например вывести тип операционной системы, или системную директорию и.т.д
  Вверх
oleg1973
Дата 16.7.2003, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 7
Всего: 34



The GetSystemInfo function returns information about the current system.
VOID GetSystemInfo(
LPSYSTEM_INFO lpSystemInfo // address of system information structure
);
------
если под вындос делать


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1474 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.