ассемблерная программа подготовленная к трансляции MASM'ом
Программа нормально транслируется и даже работает, но не дает ответа на вопрос — почему же ее создатель не выполнил все эти действия заранее?! Да потому, что программа предназначалась для TASM'а, библиотекарь которого именует функции так, как написано, а не так, как диктует соглашение о stdcall-вызовах. Но почему бы тогда не транслировать программу TASM'ом?! Тому есть свои причины. Во-первых, TASM заброшен и уже не развивается (впрочем, MASM ни хуя не развивается тоже), во-вторых, объектные файлы, сгенерированные TASM'ом трудно интегрировать в другие проекты. В-третьих, мыщъх'и испытывают к багдаду стойкую антипатию, непреодолимую даже пивом. Но если кому-то нравится TASM, то, пожалуйста! Компилируйте программу так:
rem ассемблируем
tasm32 /ml h2.asm
rem
готовим библиотеки из dll
implib -c user32.lib C:\WINNT\system32\user32.dll
implib -c kernel32.lib C:\WINNT\system32\kernel32.dll
rem линкуем
tlink32 h2.obj -Tpe -aa -L user32.lib -L kernel32.lib