singlepost

Запись\Открытие файла на Assembler. Очень нужна помощь! << На главную или назад  

Всем доброго времени суток!

Недавно, понадобилось написать небольшой "вставочный" код для своей программы на ассемблере, записи и соотвественно открытия файла. Но возникло много трудностей из-за маленьких знаний в асм. Очень нужна помощь, буду очень благодарен!..

<code>

//Открываем файл
push 0
push File_Attribute_Normal
push Open_Always
push 0
push 0
push Generic_Write
push offset fname
call CreatefileA
cmp eax,0ffffffffh // Тут выдается ошибка (текст ошибки в конце поста)
je @@exit
mov hFile,eax

//Опр.размер
push hFile
push 0
call GetFileSize
mov sz,eax

//устанавливаем указатель в файле
push hFile
push sz
push 0
push File_Begin
call SetFilePointer

//Собственно пишем данные в файл
push 0
push offset ZapisanoBytes
push len
push str
push hFile
call Writefile
cmp eax,0
jz @@exit

//Закрываем файл
push hFile
call Closehandle

</code>

Ошибка следующая:
" Project1.exe raised exception class EAccessViolation with message 'Access violation at address 7C9012B4' in module ntdll.dll. Read of address ffffffffc ….."

Если, кто знает в чем дело отпишитесь, очень нужна помощь.

Пишу на Дельфи, м\б дело в нем, хотя м\б этот код сам по себе не правильно написан, если так то подскажите что-нибудь…..

3 ответов в теме “Запись\Открытие файла на Assembler. Очень нужна помощь!”

  1. 3
    Илья Востряков ответил:

    Ну что-то вроде того, просто много чего перепутано было(например не правильно запихал в стек параметры SetFilePointer), если нужно могу выложить…

    Сделал наверное чисто для того, чтобы понять, как можно асм применять в дельфи… в обычных справках там слишком мало информации по этому… даже на крупных порталах мало инф.

    Мне нужно было передавать большие объемы данных через этот код, но как оказалось лучше делать через память обычными средствами.. и не запариваться)))

  2. 2
    ответил:

    А стек другим ничем не занят?Может быть ваша программа уже использует его. Я конечно не специалист в асме, но просто так думаю, пока что изучаю его..

  3. 1
    Илья Востряков ответил:

    С помощью отладчика узнал, что ошибка связана с тем, что вместо имени файла(fname) в стек заносится значение ffffffffc…но вот только, как это исправить???

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.