Сам я работаю на Масме для одной темы изучаю пример на Фасме в определённых частях кода мне интересно узнавать какое значение у определённого объекта Для этого сделал тандем функций wsprintf и MessageBox принцип я думаю всем понятный первая функция переводит значение в текстовый вид а вторая банально выводит это значение через месаджбокс всё работает нормально но каждый раз ставить этот тандем в нужном месте мягко говоря утомляет по этому решил завернуть этот тандем в функцию Код (ASM): proc Message Temp invoke wsprintf,addr pText,'%d',[Temp] invoke MessageBox,0,addr pText,0,32 ret endp и вызывать эту функцию в нужном мне месте Код (ASM): invoke Message,eax но Фасм выводит ошибку - Error: operand size not specified Первое что пришло в голову то это то что нужно прописать прототип но как это сделать на синтаксисе Фасма я честно говоря не знаю просмотрел примеры которые были в комплекте Фасма там ни чего подобного я не нашёл Подскажите пожалуйста как объявить прототип на Фасме или дело совсем в другом
в fasm , емнип, нет прототипов. Но можно явно указать размерность аргументов в описании процедуры. По умолчанию размер аргумента считается равным ширине стека, но можно явно задать размер. Например: Код (Text): proc myproc,a:BYTE,b:WORD,c:DQWORD http://asmworld.ru/uchebnyj-kurs/029-makrosy-proc-i-endp/
Я явно указал размер Код (ASM): proc Message,Temp:DWORD invoke wsprintf,addr pText,'%d',[Temp] invoke MessageBox,0,addr pText,0,32 ret endp но всё равно ошибка всё таже значит дело в другом а вот в чём именно ???
Спасибо Thetrik, то есть как я понял при вызове пользовательских функций вместо (invoke) нужно писать (stdcall) Фасм вроде бы позицианируется как продвинутая платформа у вдруг такие сложности я честно говоря очень удивлён