учу асм по книге К.Ирвин - Язык ассемблера для процессоров Intel и не могу скомпилировать прогу из-за ошибок функкций основной код Код (Text): TITLE Add and Subtract (AddSub.asm) ; This program adds and subtracts 32-bit integers. ; Last update: 06/01/2006 include \masm32\include\Irvine32.inc .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h call DumpRegs exit main ENDP END main обе либы на всякий кину выдает ошибку помогите пожалуйста разобраться в чем проблемма или чего нехватает, огромное спс
ну теперь все стало намного хуже))) Код (Text): AddSub.obj : error LNK2001: unresolved external symbol _ExitProcess@4 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _CloseHandle@4 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _CreateFileA@28 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _FormatMessageA@28 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _FlushConsoleInputBuffer@4 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetCommandLineA@0 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetConsoleMode@8 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetConsoleScreenBufferInfo@8 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetLastError@0 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetLocalTime@4 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetStdHandle@4 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetSystemTime@4 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _LocalFree@4 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _MessageBoxA@16 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _PeekConsoleInputA@16 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _ReadConsoleA@20 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _ReadConsoleInputA@16 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _ReadFile@20 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _SetConsoleCursorPosition@8 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _SetConsoleMode@8 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _SetConsoleTextAttribute@8 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _Sleep@4 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _SystemTimeToFileTime@8 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _WriteConsoleA@20 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _WriteConsoleOutputCharacterA@20 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _WriteConsoleOutputAttribute@20 Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _WriteFile@20 AddSub.exe : fatal error LNK1120: 27 unresolved externals у тя самого скомпилилось ??
А ты мне скинул Irvine32.lib? Как ты собираешь? Код (Text): @echo off \masm32\bin\ml /c /Cp /coff example.asm \masm32\bin\link /subsystem:windows example.obj echo. pause Собираю так, и требует VirtualKeys.inc
Код (Text): include Irvine32.inc includelib Irvine32.lib includelib kernel32.lib includelib user32.lib .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h call DumpRegs exit main ENDP END main
такая же проблема была(даже пример код такой же, занимаюсь такой же книге), сделал все как тут написано, компиляция прошла без ошибок, но на экран содержимое заветных регистров не выводится...
Всё там выводится. Вывод осуществляется в консоль, которая после завершения программы сразу закрывается. Либо запускай из консоли (cmd.exe к примеру), либо добавь в конце call WaitMsg Код (Text): include Irvine32.inc includelib Irvine32.lib includelib kernel32.lib includelib user32.lib .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h call DumpRegs call WaitMsg exit main ENDP END main
cppasm, попробовал добавить call WaitMsg. в итоге программа висит в списке процессов и все, консоль даже не появляется. если запускать из консоли, то тоже самое, процесс есть, в саму консоль дамп регисторв не выводится.
Не знаю чего ты там химичиш, но всё работает. В архиве исходник с либами и собранный exe. Хочеш пересобрать сам - запусти build.bat В него можеш заглянуть, может ты чего не так делаеш. Скорее всего ты не указал что у тебя приложение консольное.
Я по той же книге занимаюсь. Там нужно инклюдить только одну "библиотеку". Собирай все это дело BAT'ником, прилагающимся к MASM615 32х - make32.bat 16x - make16.bat Либо вручную, а подключаемые либы смотри из тех же BAT'ников. Но по-моему, она одна: Irvine32.lib В asm-файле достаточно только приинклюдить Irvine32.inc Код (Text): TITLE AddSub (AddSub.asm) Include Irvine32.inc .code main PROC mov eax,10000h ; EAX = 10000h add eax,40000h ; EAX = 50000h sub eax,20000h ; EAX = 30000h call DumpRegs call WaitMsg exit main ENDP END main И все будет работать! ЗЫ. если будешь пользоваться Irvine'скими BAT'ами, сначала проверь\подредактируй пути к MASMy Удач!
Всем привет. Тоже занимаюсь по той же книге и тоже не получается скомпилировать этот пример, только ошибку выдает другую.. Код (Text): TITLE программа сложения и вычитания INCLUDE irvine32.inc .code main PROC mov eax,10000h add eax,40000h sub eax,20000h call DumpRegs exit main ENDP END main Мои действия : Соответственно я ее написал в блокноте и сохранил с именем assemb.asm Далее делаю : помещаю make32 (компилятор MASM) в одну папку с программой, захожу в cmd, перехожу с помощью cd в папку , и набираю команду make32 assemb - после чего пишется : Assembling : assemb.asm assemb.asm(1):error A2044: invalid character in file Ну и появляется файл assemb.lst , который похож на тот, который должен получится, но в конце у него warning 0 error 1 и соответственно нету двух остальных файлов с расширением .exe , .obj Я так понимаю ошибка кроется в название файла..но как я не менял название - проблема остается открытой. Ребята помогите решить проблему)Заранее спасибо)
Serjuk assemb.asm(1):error A2044: invalid character in file -- ошибка в первой строке (assemb.asm(1)), неверный символ -- верными символами могут быть латинские буквы, цифры, скобки, знаки препинания, но не русская надпись программа сложения и вычитания если перед строкой поставить ; вот так: Код (Text): ; TITLE программа сложения и вычитания то всё что после точки с запятой считается комментарием, т.е. ошибка должна была исчезнуть