Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

запись в файл под виндой

1.2K
27 октября 2007 года
piroman17
175 / / 20.07.2006
Суть задачи такая:
запускается программа (под winxp), и она должна свой сегмент данных записать в отдельный файл.

Как это делать? Как создать файл на ASM'е? как туда записать данные?
Компилятор masm32.

Заранее спасибо!
261
27 октября 2007 года
ahilles
1.5K / / 03.11.2005
Цитата: piroman17

... и она должна свой сегмент данных записать в отдельный файл.


в винде сегментом данных является область адресов памяти от 0 до (07FFFFFFFh)0FFFFFFFFh, тебе наверно надо записать в файл секцию с данными или просто записать в файл область памяти где находятся переменные программы?

Используй API функции CreateFile и ReadFile/WriteFile, смотри справку по этим функциям

1.2K
28 октября 2007 года
piroman17
175 / / 20.07.2006
именно переменные программы.
261
28 октября 2007 года
ahilles
1.5K / / 03.11.2005
ну допустим у тебя вот так примерно будет (FASM)

 
Код:
section '.data' data readable writable
startsection:
  FileHandle dd 0
    _written dd 0
  dwordvar1 dd 0
  dwordvar2 dd 0
  .....
  dwordvar2 dd 0
endsection:



тогда чтобы записать всё это в файл надо сделать так

 
Код:
....
invoke WriteFile, [FileHandle], startsection,endsection-startsection,_written,0
....
1.2K
28 октября 2007 года
piroman17
175 / / 20.07.2006
Большое спасибо!
p.s. а какие инклуды надо прописывать?
261
28 октября 2007 года
ahilles
1.5K / / 03.11.2005
как обычно
прописываешь
include 'win32a.inc';
1.2K
28 октября 2007 года
piroman17
175 / / 20.07.2006
А чё далать с [FileHandle]? Как создать файл в определённом каталоге (C:\asm\)?
261
28 октября 2007 года
ahilles
1.5K / / 03.11.2005
читай справку по функциям!
 
Код:
str1 db 'C:\asm\file.dat',0
FileHandle dd 0
invoke CreateFile, str1, GENERIC_WRITE+GENERIC_READ,FILE_SHARE_READ,0,CREATE_ALWAYS,0,0
mov [FileHandle],eax
1.2K
28 октября 2007 года
piroman17
175 / / 20.07.2006
Вот тут ты писал что надо добавить include 'win32a.inc', у меня в папке include его нет:eek:, он может иметь у меня другое название? Не мог бы ты мне выслать этот файл(win32a.inc) - [email]piroman17@rambler.ru[/email]?
33K
29 октября 2007 года
5C0A0
4 / / 26.10.2007
Цитата: piroman17
Вот тут ты писал что надо добавить include 'win32a.inc', у меня в папке include его нет:eek:, он может иметь у меня другое название? Не мог бы ты мне выслать этот файл(win32a.inc) - [email]piroman17@rambler.ru[/email]?



он тебе про fasm , а ты про masm32 :-)
проще просто вывести это всё на экран ,а потом уже с файлами работать!
смотри мою програмку в разделе "разные програмки и т.д"
там прога выводит что находится в стеке испозует MessageBoxA
good luck!!!

261
01 ноября 2007 года
ahilles
1.5K / / 03.11.2005
аналог include 'win32a.inc'; для MASM32
Код:
; #########################################################################

      include E:\Program\MASM\masm32\include\windows.inc
      include E:\Program\MASM\masm32\include\user32.inc
      include E:\Program\MASM\masm32\include\kernel32.inc
      include E:\Program\MASM\masm32\include\gdi32.inc

     
      includelib E:\Program\MASM\masm32\lib\user32.lib
      includelib E:\Program\MASM\masm32\lib\kernel32.lib
      includelib E:\Program\MASM\masm32\lib\gdi32.lib

; #########################################################################

ПОЧТИ В ЛЮБОМ исходнике для MASM32 есть эти строки!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог