желательно излагать максимум информации при поднятии такого типа трэда, непонятно например что именно подразумевается.. например: "memory block" это, как не сложно перевести на наш язык как "блок памяти" () и он никоим образом не соотносится к ассемблеру, а разнится только от одного режима и процессора к другому, о том как windows (и мы соответственоо через API) работает(м) с памятью можно прочитать у отца Руссиновича, отца Рихтера и прочих.. о том что такое write? очевидно (но не 100-пудово) топикстартер имел в виду макрос write оглашенный в macros.asm из штатного пакета масм, который юзает процедуру StdOut из masm32.lib, которая в свою очередь вызывает по очереди GetStdHandle и WriteFile.. м.да.. нужно заметить что это совсем не по дзенски, зато нагляно и если если мы редкие лентяи и мы используем вывод на консоль всего 1 раз в программе(где вы видели такие программы ? 8-| ) вполне сгодится, хотя и прийдётся писать 2 лишних строки подключения инклуда и библиотеки соответственно. хотя у меня тоже вопрос, такой библы masm32.dll нет, откуда-же тогда взялась masm32.lib? в готовом бинарнике в импотре сразу лежит GetStdHandle и WriteFile.. это как такая мистика получается? может масм как-то особенно относится к этой либе?
Код (Text): hFile HANDLE ? ; File handle hMemory HANDLE ? ;handle to the allocated memory block pMemory DWORD ? ;pointer to the allocated memory block SizeReadWrite DWORD ? ; number of bytes actually read or write я сразу почкствовал что это не по дзенски!) а как это реализовать по дзенски?)
rain Ты уже достиг того уровня просветления, на котором тебе положено узнать о библиотеках статической компоновки
rmn Можно подумать, что библиотеки импорта к таковым не относятся. Да и понятно ведь, что rain пошутил
РуАсм ты ничё не напутал? я вообще не понял, вчера пост #3 был не такой как сейчас, там были слова упомянутые в старте "write" и "memory block" соответственно этому я написал #4 но теперь пост явно те такой как был и нету надписи "отредактированно ..." ты что форум похачил? в аттаче нет ни "write" ни "memory block"
Раин, извини я изучаю икзалиона всмысле его статьи, там "это" и встретил.. он (икзелион) в статье даёт такой исходник: Код (Text): .386 .model flat,stdcall option casemap:none WinMain proto :DWORD,:DWORD,:DWORD,:DWORD include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\comdlg32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\comdlg32.lib .const IDM_OPEN equ 1 IDM_SAVE equ 2 IDM_EXIT equ 3 MAXSIZE equ 260 MEMSIZE equ 65535 EditID equ 1 ; ID of the edit control .data ClassName db "Win32ASMEditClass",0 AppName db "Win32 ASM Edit",0 EditClass db "edit",0 MenuName db "FirstMenu",0 ofn OPENFILENAME <> FilterString db "All Files",0,"*.*",0 db "Text Files",0,"*.txt",0,0 buffer db MAXSIZE dup(0) .data? hInstance HINSTANCE ? CommandLine LPSTR ? hwndEdit HWND ? ; Handle to the edit control hFile HANDLE ? ; File handle hMemory HANDLE ? ;handle to the allocated memory block pMemory DWORD ? ;pointer to the allocated memory block SizeReadWrite DWORD ? ; number of bytes actually read or write .code start: invoke GetModuleHandle, NULL mov hInstance,eax invoke GetCommandLine mov CommandLine,eax invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT invoke ExitProcess,eax WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:SDWORD LOCAL wc:WNDCLASSEX LOCAL msg:MSG LOCAL hwnd:HWND mov wc.cbSize,SIZEOF WNDCLASSEX mov wc.style, CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc, OFFSET WndProc mov wc.cbClsExtra,NULL mov wc.cbWndExtra,NULL push hInst pop wc.hInstance mov wc.hbrBackground,COLOR_WINDOW+1 mov wc.lpszMenuName,OFFSET MenuName mov wc.lpszClassName,OFFSET ClassName invoke LoadIcon,NULL,IDI_APPLICATION mov wc.hIcon,eax mov wc.hIconSm,eax invoke LoadCursor,NULL,IDC_ARROW mov wc.hCursor,eax invoke RegisterClassEx, addr wc invoke CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,\ WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\ CW_USEDEFAULT,300,200,NULL,NULL,\ hInst,NULL mov hwnd,eax invoke ShowWindow, hwnd,SW_SHOWNORMAL invoke UpdateWindow, hwnd .WHILE TRUE invoke GetMessage, ADDR msg,NULL,0,0 .BREAK .IF (!eax) invoke TranslateMessage, ADDR msg invoke DispatchMessage, ADDR msg .ENDW mov eax,msg.wParam ret WinMain endp WndProc proc uses ebx hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM .IF uMsg==WM_CREATE invoke CreateWindowEx,NULL,ADDR EditClass,NULL,\ WS_VISIBLE or WS_CHILD or ES_LEFT or ES_MULTILINE or\ ES_AUTOHSCROLL or ES_AUTOVSCROLL,0,\ 0,0,0,hWnd,EditID,\ hInstance,NULL mov hwndEdit,eax invoke SetFocus,hwndEdit ;============================================== ; Initialize the members of OPENFILENAME structure ;============================================== mov ofn.lStructSize,SIZEOF ofn push hWnd pop ofn.hWndOwner push hInstance pop ofn.hInstance mov ofn.lpstrFilter, OFFSET FilterString mov ofn.lpstrFile, OFFSET buffer mov ofn.nMaxFile,MAXSIZE .ELSEIF uMsg==WM_SIZE mov eax,lParam mov edx,eax shr edx,16 and eax,0ffffh invoke MoveWindow,hwndEdit,0,0,eax,edx,TRUE .ELSEIF uMsg==WM_DESTROY invoke PostQuitMessage,NULL .ELSEIF uMsg==WM_COMMAND mov eax,wParam .if lParam==0 .if ax==IDM_OPEN mov ofn.Flags, OFN_FILEMUSTEXIST or \ OFN_PATHMUSTEXIST or OFN_LONGNAMES or\ OFN_EXPLORER or OFN_HIDEREADONLY invoke GetOpenFileName, ADDR ofn .if eax==TRUE invoke CreateFile,ADDR buffer,\ GENERIC_READ or GENERIC_WRITE ,\ FILE_SHARE_READ or FILE_SHARE_WRITE,\ NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,\ NULL mov hFile,eax invoke GlobalAlloc,GMEM_MOVEABLE or GMEM_ZEROINIT,MEMSIZE mov hMemory,eax invoke GlobalLock,hMemory mov pMemory,eax invoke ReadFile,hFile,pMemory,MEMSIZE-1,ADDR SizeReadWrite,NULL invoke SendMessage,hwndEdit,WM_SETTEXT,NULL,pMemory invoke CloseHandle,hFile invoke GlobalUnlock,pMemory invoke GlobalFree,hMemory .endif invoke SetFocus,hwndEdit .elseif ax==IDM_SAVE mov ofn.Flags,OFN_LONGNAMES or\ OFN_EXPLORER or OFN_HIDEREADONLY invoke GetSaveFileName, ADDR ofn .if eax==TRUE invoke CreateFile,ADDR buffer,\ GENERIC_READ or GENERIC_WRITE ,\ FILE_SHARE_READ or FILE_SHARE_WRITE,\ NULL,CREATE_NEW,FILE_ATTRIBUTE_ARCHIVE,\ NULL mov hFile,eax invoke GlobalAlloc,GMEM_MOVEABLE or GMEM_ZEROINIT,MEMSIZE mov hMemory,eax invoke GlobalLock,hMemory mov pMemory,eax invoke SendMessage,hwndEdit,WM_GETTEXT,MEMSIZE-1,pMemory invoke WriteFile,hFile,pMemory,eax,ADDR SizeReadWrite,NULL invoke CloseHandle,hFile invoke GlobalUnlock,pMemory invoke GlobalFree,hMemory .endif invoke SetFocus,hwndEdit .else invoke DestroyWindow, hWnd .endif .endif .ELSE invoke DefWindowProc,hWnd,uMsg,wParam,lParam ret .ENDIF xor eax,eax ret WndProc endp end start а в аттаче он (икзелион) даёт, то что я в аттаче прикрепил) а я и не посмотрел да и подумать не мог что там разные сорци...от икзелион.. И модеры, понапьются и посты редактируют.. Раин посмотри еще раз пожалуйста, а... в функции ReadFile 3 или 4 параметр (тот, который сообщает сколько прочитанно из файла) не понятен, пробовал, просто туда переменную вписать, не прокатывает, прога падает) help my..please
чувак... это же очевидно, просто в стоку не влез комент, стоили из этого столько шуму поднимать? пора бы уже знать что мсдн панацея от таких бед, 3-й: "DWORD nNumberOfBytesToRead" кол-во байт которые хочешь прочитать, 4-й: "LPDWORD lpNumberOfBytesRead" смещение по которому будет записано сколько байт было реально прочитано нужно смещение а к переменной а не сама переменная, кури наверно Зубвока, и себе и нам время с экономишь
раин, респект тебе! Я пробовал зубкова, два раза один раз где то с пол года назад, второй раз в том месяце, не идет.. нужны предварительные знания. зы. сделайте репу!
Люди извините, меня такого секого, пожалуйста, я не спецально...) я Просто С ДВ щас 5 ночи почти, башка не варит...может я не программист вообще? и стоит с этим смириться?
ну так ты всё совмещай, никто же не говорит пока до конца его не дочитаешь ни за что друго не браться, как раз наоброт! нужно экперементировать со всем что интересно подход хоть и долгий и мучительный, но всё-же он всеобъемлющий и истинно дзенский
RuAsm это ты должен раз и навсегда спросить у себя самого не считаясь ни с чьим мнением (все великие[т.е. продвинутые] люди никогда не обращали внимание на мнения других иначе они никогда бы не стали такими), и до конца жизни уже не возвращаться к этому