проблемма с функциями

Тема в разделе "WASM.ASSEMBLER", создана пользователем Lin, 2 июл 2008.

  1. Lin

    Lin New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2008
    Сообщения:
    5
    учу асм по книге К.Ирвин - Язык ассемблера для процессоров Intel и не могу скомпилировать прогу из-за ошибок функкций

    основной код

    Код (Text):
    1. TITLE Add and Subtract              (AddSub.asm)
    2.  
    3. ; This program adds and subtracts 32-bit integers.
    4. ; Last update: 06/01/2006
    5.  
    6. include \masm32\include\Irvine32.inc
    7.  
    8. .code
    9. main PROC
    10.  
    11.     mov eax,10000h      ; EAX = 10000h
    12.     add eax,40000h      ; EAX = 50000h
    13.     sub eax,20000h      ; EAX = 30000h
    14.     call    DumpRegs
    15.  
    16.     exit
    17. main ENDP
    18. END main
    обе либы на всякий кину

    выдает ошибку

    помогите пожалуйста разобраться в чем проблемма или чего нехватает, огромное спс
     
  2. Lin

    Lin New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2008
    Сообщения:
    5
    2 либа
     
  3. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Библиотек не хватает, Irvine32.lib

    Код (Text):
    1. includelib \masm32\lib\Irvine32.lib
     
  4. Lin

    Lin New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2008
    Сообщения:
    5
    ну теперь все стало намного хуже)))

    Код (Text):
    1. AddSub.obj : error LNK2001: unresolved external symbol _ExitProcess@4
    2. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _CloseHandle@4
    3. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _CreateFileA@28
    4. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _FormatMessageA@28
    5. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _FlushConsoleInputBuffer@4
    6. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetCommandLineA@0
    7. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetConsoleMode@8
    8. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetConsoleScreenBufferInfo@8
    9. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetLastError@0
    10. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetLocalTime@4
    11. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetStdHandle@4
    12. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _GetSystemTime@4
    13. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _LocalFree@4
    14. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _MessageBoxA@16
    15. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _PeekConsoleInputA@16
    16. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _ReadConsoleA@20
    17. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _ReadConsoleInputA@16
    18. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _ReadFile@20
    19. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _SetConsoleCursorPosition@8
    20. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _SetConsoleMode@8
    21. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _SetConsoleTextAttribute@8
    22. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _Sleep@4
    23. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _SystemTimeToFileTime@8
    24. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _WriteConsoleA@20
    25. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _WriteConsoleOutputCharacterA@20
    26. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _WriteConsoleOutputAttribute@20
    27. Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _WriteFile@20
    28. AddSub.exe : fatal error LNK1120: 27 unresolved externals
    у тя самого скомпилилось ??
     
  5. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    А ты мне скинул Irvine32.lib? Как ты собираешь?

    Код (Text):
    1. @echo off
    2.  
    3. \masm32\bin\ml /c /Cp /coff example.asm
    4. \masm32\bin\link /subsystem:windows example.obj
    5.  
    6. echo.
    7. pause
    Собираю так, и требует VirtualKeys.inc
     
  6. Lin

    Lin New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2008
    Сообщения:
    5
    присоединил, виртуал кейс выше!!
    зы спасибо (хоть кто то пытаетьс помоч) :")
     
  7. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Код (Text):
    1. include Irvine32.inc
    2. includelib Irvine32.lib
    3. includelib kernel32.lib
    4. includelib user32.lib
    5.  
    6. .code
    7. main PROC
    8.  
    9.     mov eax,10000h      ; EAX = 10000h
    10.     add eax,40000h      ; EAX = 50000h
    11.     sub eax,20000h      ; EAX = 30000h
    12.     call    DumpRegs
    13.  
    14.     exit
    15. main ENDP
    16. END main
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    kernel32.lib и user32.lib тоже нужно добавить.
     
  9. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
  10. Lin

    Lin New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2008
    Сообщения:
    5
    спасибо вам огромное...все работает
     
  11. Zitzy

    Zitzy New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2009
    Сообщения:
    28
    такая же проблема была(даже пример код такой же, занимаюсь такой же книге), сделал все как тут написано, компиляция прошла без ошибок, но на экран содержимое заветных регистров не выводится...
     
  12. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Всё там выводится.
    Вывод осуществляется в консоль, которая после завершения программы сразу закрывается.
    Либо запускай из консоли (cmd.exe к примеру), либо добавь в конце call WaitMsg
    Код (Text):
    1. include Irvine32.inc
    2. includelib Irvine32.lib
    3. includelib kernel32.lib
    4. includelib user32.lib
    5.  
    6. .code
    7. main PROC
    8.  
    9.     mov eax,10000h      ; EAX = 10000h
    10.     add eax,40000h      ; EAX = 50000h
    11.     sub eax,20000h      ; EAX = 30000h
    12.     call    DumpRegs
    13.     call    WaitMsg
    14.     exit
    15. main ENDP
    16. END main
     
  13. Zitzy

    Zitzy New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2009
    Сообщения:
    28
    cppasm, попробовал добавить call WaitMsg. в итоге программа висит в списке процессов и все, консоль даже не появляется. если запускать из консоли, то тоже самое, процесс есть, в саму консоль дамп регисторв не выводится.
     
  14. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Не знаю чего ты там химичиш, но всё работает.
    В архиве исходник с либами и собранный exe.
    Хочеш пересобрать сам - запусти build.bat
    В него можеш заглянуть, может ты чего не так делаеш.
    Скорее всего ты не указал что у тебя приложение консольное.
     
  15. hoop

    hoop New Member

    Публикаций:
    0
    Регистрация:
    20 авг 2009
    Сообщения:
    12
    спасибо парни очень помогли, тоже столкнулся с этой проблемой
    p.s. поиск рулезз )
     
  16. hack_virii

    hack_virii New Member

    Публикаций:
    0
    Регистрация:
    7 июн 2009
    Сообщения:
    71
    Я по той же книге занимаюсь.

    Там нужно инклюдить только одну "библиотеку".
    Собирай все это дело BAT'ником, прилагающимся к MASM615
    32х - make32.bat
    16x - make16.bat
    Либо вручную, а подключаемые либы смотри из тех же BAT'ников. Но по-моему, она одна: Irvine32.lib
    В asm-файле достаточно только приинклюдить Irvine32.inc
    Код (Text):
    1. TITLE   AddSub   (AddSub.asm)
    2.  
    3. Include Irvine32.inc
    4.  
    5. .code
    6. main PROC
    7.  
    8.     mov eax,10000h      ; EAX = 10000h
    9.     add eax,40000h      ; EAX = 50000h
    10.     sub eax,20000h      ; EAX = 30000h
    11.     call    DumpRegs
    12.     call    WaitMsg
    13.     exit
    14. main ENDP
    15. END main
    И все будет работать! ;)


    ЗЫ. если будешь пользоваться Irvine'скими BAT'ами, сначала проверь\подредактируй пути к MASMy

    Удач!
     
  17. Serjuk

    Serjuk New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2011
    Сообщения:
    17
    Всем привет.
    Тоже занимаюсь по той же книге и тоже не получается скомпилировать этот пример, только ошибку выдает другую..

    Код (Text):
    1. TITLE программа сложения и вычитания
    2.  
    3.  
    4. INCLUDE irvine32.inc
    5. .code
    6. main PROC
    7.  
    8. mov eax,10000h
    9. add eax,40000h
    10. sub eax,20000h
    11. call DumpRegs
    12. exit
    13. main ENDP
    14. 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
    Я так понимаю ошибка кроется в название файла..но как я не менял название - проблема остается открытой.

    Ребята помогите решить проблему)Заранее спасибо)
     
  18. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Serjuk
    поставь перед TITLE программа сложения и вычитания точку с запятой ;
     
  19. Serjuk

    Serjuk New Member

    Публикаций:
    0
    Регистрация:
    28 янв 2011
    Сообщения:
    17
    спасибо, но почему то тоже самое пишет...
     
  20. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Serjuk
    assemb.asm(1):error A2044: invalid character in file -- ошибка в первой строке (assemb.asm(1)), неверный символ -- верными символами могут быть латинские буквы, цифры, скобки, знаки препинания, но не русская надпись программа сложения и вычитания если перед строкой поставить ; вот так:
    Код (Text):
    1. ; TITLE программа сложения и вычитания
    то всё что после точки с запятой считается комментарием, т.е. ошибка должна была исчезнуть