В ФАСМ 1.65 не опознаются команды ENTER и RETURN , почему так , и как это можно исправить ? Я перелопатил инфы по нему много включая туториал но ни чего не нешёл .
Просто это макросы, а не комадны. И они заменены на MASM-подобные proc и endp. А чтобы пользоваться enter и return, необходимо создать inc-файл следующего содержания: Код (Text): macro proc name,[arg] ; define procedure { common name: virtual at ebp+8 if ~ arg eq forward local ..arg ..arg dd ? arg equ ..arg common end if ..ret = $ - (ebp+8) end virtual local ..dynamic_data,..dynamic_size dynamic_data equ ..dynamic_data dynamic_size equ ..dynamic_size virtual at ebp - dynamic_size dynamic_data: } macro enter ; begin procedure instructions { dynamic_size = $ - dynamic_data end virtual enter dynamic_size,0 } macro return ; return from procedure { leave ret ..ret } И подключать этот inc-файл в программы.
начиная с версии 1.62 несколько изменилась концепция для процедур, объявленых через proc. если брать старые примеры, то лучше просто удалить enter-ы, а return-ы заменить на ret
Ясно но мне так говорили уже и не аргументировали ! Я пробовал программа чесно говоря не работала ! Попробовать как сказал Alexey2005 стоит думаю
proc/endp - это макросы, которые были изменены в версии 1.6?. предъяви процедуру. === на всякий случай: для того, чтобы эти макросы появились, нужно включить либо либо macro\proc32.inc, либо win32a.inc (и тп)
пробую пример EXAMPLES\DIALOG\DIALOG.ASM всё равно выдаёт Код (Text): Error: Missing end directive if used DialogProc
fasmw.ini [Environment] Fasminc = C:\fasmw\INCLUDE include = C:\fasmw\INCLUDE Если подрубаю inc командой include 'ret.inc' (так назвал код приведённый Alexey2005) выдаёт: Error Illegal Instruction Instruction: DialogProc hwnddlg: а в ret.inc указывает на name: