Есть либа jcalg1 (думаю все знают зачем она) . Как правильно заставить работать её ? Делаю так. Впроге на С++ это пример выглядит так CODE JCALG1_GetInfo(&Jcalg1_Info); printf("\n Algorithm revision: %d.%d", Jcalg1_Info.majorVer, Jcalg1_Info.minorVer); где выше определено _JCALG1_Info Jcalg1_Info; а _JCALG1_Info это и есть нужная структура. Дизасмцо это так .text:004011A4 lea eax, [esp+438h+var_41C] .text:004011A8 push eax .text:004011A9 call sub_401B62 ;это нужная процедура (заполняет поля структуры) .text:004011AE mov ecx, [esp+438h+var_418] .text:004011B2 mov edx, [esp+438h+var_41C] .tex В сорце сама процедура выглядит так JCALG1_GetInfo PROC stdcall pInfoStructWORD mov eax,pInfoStruct mov [eax+_JCALG1_Info.MajorRevision],MAJOR_REV mov [eax+_JCALG1_Info.MinorRevision],MINOR_REV mov [eax+_JCALG1_Info.SmallDecompressorSize],(offset JCALG1_Decompress_Small_ends-offset JCALG1_Decompress_Small) mov [eax+_JCALG1_Info.FastDecompressorSize],(offset JCALG1_Decompress_Fast_ends-offset JCALG1_Decompress_Fast) ret JCALG1_GetInfo ENDP У себя в проге обьявил структуру struc _JCALG1_Info { .MajorRevision dd ? .MinorRevision dd ? .FastDecompressorSize dd ? .SmallDecompressorSize dd ? } но с ней ваще некомпилица делаю тогда так. (как посоветовали) _JCALG1_Info: _JCALG1_Info.MajorRevision dd ? _JCALG1_Info.MinorRevision dd ? _JCALG1_Info.FastDecompressorSize dd ? _JCALG1_Info.SmallDecompressorSize dd ? Пытаюсь делать так CODE lea eax, [_JCALG1_Info] push eax call JCALG1_GetInfo invoke SetDlgItemText,[hWnd],2002,_JCALG1_Info.MajorRevision Пачиму это неработает ??? Где я неправ ? Прилогаю на фасме то чё неработает.
Структуру ты только объявил, но для неё надо ещё место выделить: Код (Text): struc _JCALG1_Info { .MajorRevision dd ? .MinorRevision dd ? .FastDecompressorSize dd ? .SmallDecompressorSize dd ? } _J_Info _JCALG1_Info Ещё call JCALG1_GetInfo надо заменить на call [JCALG1_GetInfo], она же в импорте, короче читай хелп по фасму
Сделал так Код (Text): lea eax, [J_Info] push eax call [JCALG1_GetInfo] invoke SetDlgItemText,[hWnd],2002,J_Info.MinorRevision Всё компилаца, но поцему в EDIT (2002) ничё не выводиться ? Ттам же должна вывестись версия. Где я неправ ?