товарищи, подскажите, пожалуйста, как вызвать макрос dwtoa? (и другие, общий принцип, полный пример, где посмотреть/почитать) что нужно указывать?: include с:\masm32\include\masm32.inc include c:\masm32\macros\macros.asm include с:\masm32\m32lib\dwtoa.asm dwtoa proto :dword,:dword что дальше? можно ли без процедуры, сразу invoke dwtoa, eax, ADDR buf? по всякому пытался, линковщик (компилятор) выдаёт ошибку: error LNK2001: unresolved external symbol _dwtoa@8 fatal error LNK1120: 1 unresolved externals мой пример из http://www.wasm.ru/forum/viewtopic.php?id=34564 Код (Text): .386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc include \masm32\include\gdi32.inc include \masm32\include\masm32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\gdi32.lib include c:\masm32\macros\macros.asm .data buf db 10 dup(?) .code start: mov eax,4Eh invoke RtlZeroMemory,offset buf,10 invoke dwtoa, eax, ADDR buf ;из eax переводим в dec и помещаем в буфер push eax invoke MessageBox,0,addr buf,addr buf,0 pop eax ex: invoke ExitProcess,0 end start
сенсеи, пошевелите ногой - нужен дружественный пинок, направляющий идущего к просветлению: скажите что-то типа: ищи лучше на форуме (помню, десять лет назад была тема), статья есть на wasm, кури Зубкова (Юрова, Калашникова...и.т.п., Магду не предлагать - читал) - там было, смотри примеры/help к masm32 - там всё разжевано, молись гуглю и медитируй (нигде не видел) нужен не сам асм (опкоды), а именно описание masm32. п.с. добавил includelib \masm32\lib\masm32.lib, убрал push/pop и всё заработало: Код (Text): .386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc include \masm32\include\masm32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib include c:\masm32\macros\macros.asm includelib \masm32\lib\masm32.lib .data buf db 10 dup(?) mes db "aaaa",0 xxx dd 12 .code start: mov eax,12Eh invoke dwtoa, eax, ADDR buf ;из eax переводим в dec и помещаем в буфер invoke MessageBox,0,addr buf,addr mes,0 ex: invoke ExitProcess,0 end start
Шевелю ногой : 1) Макрос - это "псевдо команда". При ее использовании вставляется последовательность ассемблерных команд. Пример - макрос invoke, который заменяется командами записи в стек + команда call 2) Ты же имел проблему с использованием библиотечной функции dwtoa. Как только добавил библиотеку - все стало нормально.