В общем проблема в том что.. не получается правильно определить процедуру! Я сам оффигиваю, те которые через импорт идут, т.е. айпишные - все в порядке, а вот свою собственную - ну никак! Хелп плиз! Код (Text): format PE GUI 4.0 entry EntryPoint include '%fasminc%/win32a.inc' section '.data' data readable writeable sMessage db 'This is the message', 0 sTitle db 'Message', 0 section '.code' code readable executable proc some_proc, theMessage invoke MessageBox, theMessage, sTitle, MB_OK ;vydaet "Ivalid value", ;esli [theMessage] to "Operand size not specified" v stroke "invoke some_proc, sMessage" ret endp EntryPoint: invoke some_proc, sMessage invoke ExitProcess, NULL section '.idata' import data readable library kernel32, 'KERNEL32.DLL',\ user32, 'USER32.DLL',\ shell32, 'SHELL32.DLL' include '%fasminc%/apia/kernel32.inc' include '%fasminc%/apia/user32.inc'
Про 4 параметра это ты хорошо подметил, исправил, в фасме можно не указывать размер (он предполагает что имеет дело с dword), переделал, но все равно.. не компилируется.. Код (Text): format PE GUI 4.0 entry EntryPoint include '%fasminc%/win32a.inc' section '.data' data readable writeable sMessage db 'This is the message', 0 sTitle db 'Message', 0 section '.code' code readable executable proc some_proc, theMessage invoke MessageBox, NULL, theMessage, sTitle, MB_OK ret endp EntryPoint: invoke some_proc, sMessage invoke ExitProcess, NULL section '.idata' import data readable library kernel32, 'KERNEL32.DLL',\ user32, 'USER32.DLL',\ shell32, 'SHELL32.DLL' include '%fasminc%/apia/kernel32.inc' include '%fasminc%/apia/user32.inc'
А что тогда вместо invoke?? просто если не инвоук то может быть много разных комбинаций, или читать до вечера мануалы и все равно не будет гарантии что найду ответа, смотрел в документации по фасму там процедуры именно так определяются. Может вызывать процедуры внутри других нужно уже по другому.. может ли ктото выложить рабочюю версию этого маленького кода, если увижу сразу пойму что и как.
если взглянешь в макрос invoke, то увидишь call [proc]. Можешь использовать для своих функций макрос stdcall.
Наконецто! заработало! Сэнкью вэри мач! Ни за что бы не подумал что для своих процедур нужно использовать stdcall! Код (Text): format PE GUI 4.0 entry EntryPoint include '%fasminc%/win32a.inc' section '.data' data readable writeable sMessage db 'This is the message', 0 sTitle db 'Message', 0 section '.code' code readable executable proc some_proc, theMessage invoke MessageBox, NULL, [theMessage], sTitle, MB_OK ret endp EntryPoint: stdcall some_proc, sMessage invoke ExitProcess, NULL section '.idata' import data readable library kernel32, 'KERNEL32.DLL',\ user32, 'USER32.DLL',\ shell32, 'SHELL32.DLL' include '%fasminc%/apia/kernel32.inc' include '%fasminc%/apia/user32.inc'