Не выходит открыть файл, в названии которого кириллица (FASM) - Assembler
Формулировка задачи:
format PE GUI 4.0 entry start include 'win32a.inc' ;section '.data' data readable writeable dataArr db 0x0C,0x83,0xBB,0x30,0x77,0x00,0x00,0x00,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x75 sizeArr dd 16 dataOffset dd 0x8C05C fName db 'Пример 2.txt',0 hFile dd ? ;section '.code' code readable executable start: invoke CreateFile,fName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL cmp eax,INVALID_HANDLE_VALUE jz EW mov [hFile],eax invoke SetFilePointer,[hFile],[dataOffset],NULL,0 invoke WriteFile,[hFile],dataArr,[sizeArr],sizeArr,NULL invoke CloseHandle,hFile EW: invoke ExitProcess, NULL ;section '.idata' import data readable writeable library kernel,'KERNEL32.DLL' import kernel,\ CreateFile,'CreateFileA',\ WriteFile,'WriteFile',\ CloseHandle,'CloseHandle',\ ExitProcess,'ExitProcess',\ SetFilePointer,'SetFilePointer'
Решение задачи: «Не выходит открыть файл, в названии которого кириллица (FASM)»
textual
Листинг программы
;format PE GUI 4.0 format PE console 4.0 ;entry start include 'win32a.inc' ;section '.data' data readable writeable ;section '.code' code readable executable start: invoke CreateFile,fName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_ARCHIVE,NULL cmp eax,INVALID_HANDLE_VALUE jz EW mov [hFile],eax invoke SetFilePointer,[hFile],[dataOffset],NULL,0 invoke WriteFile,[hFile],dataArr,[sizeArr],sizeArr,NULL invoke CloseHandle,hFile EW: invoke ExitProcess, NULL dataArr db 0x0C,0x83,0xBB,0x30,0x77,0x00,0x00,0x00,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x75 sizeArr dd 16 dataOffset dd 0x8C05C fName db 'Пример 2.txt',0 ;fName db 'Example.txt',0 hFile dd ? ;section '.idata' import data readable writeable ; import data in the same section data import library kernel,'KERNEL32.DLL' import kernel,\ CreateFile,'CreateFileA',\ WriteFile,'WriteFile',\ CloseHandle,'CloseHandle',\ ExitProcess,'ExitProcess',\ SetFilePointer,'SetFilePointer' end data
Объяснение кода листинга программы
- Необходимо открыть файл с помощью функции CreateFile.
- Функция CreateFile возвращает дескриптор файла, который затем используется в остальных операциях.
- Функция SetFilePointer используется для установки позиции в файле.
- Функция WriteFile используется для записи данных в файл.
- Функция CloseHandle используется для закрытия файла.
- Функция ExitProcess используется для завершения работы программы.
- Переменная hFile используется для хранения дескриптора файла.
- Переменная dataOffset используется для хранения смещения данных в файле.
- Переменная fName используется для хранения имени файла.
- Переменная dataArr используется для хранения данных, которые необходимо записать в файл.
- Переменная sizeArr используется для хранения размера данных, которые необходимо записать в файл.
- Используется формат PE GUI 4.0.
- Используется формат PE console 4.0.
- Секция '.data' содержит данные, которые могут быть прочитаны и записаны.
- Секция '.code' содержит исполняемый код.
- Секция '.idata' содержит импортированные данные.
- Импортируются функции из библиотеки KERNEL32.DLL.
- Функция CreateFileA импортируется из библиотеки KERNEL32.DLL.
- Функция WriteFile импортируется из библиотеки KERNEL32.DLL.
- Функция CloseHandle импортируется из библиотеки KERNEL32.DLL.
- Функция ExitProcess импортируется из библиотеки KERNEL32.DLL.
- Функция SetFilePointer импортируется из библиотеки KERNEL32.DLL.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д