Сейчас на форуме: Adler, _MBK_ (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Дневники чайника: компиляция в masm32
Посл.ответ Сообщение

Ранг: 0.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 28 февраля 2011 20:19
· Личное сообщение · #1

Здрасти всем!
Сразу извиняюсь за вопрос.. так как считаю его что не наесть тупейшим. Просьба тех кто считает так же как я, не читать дальше... Те кто делал первые шаги со статей "дневники чайника", прошу, подскажите. Кто читал дневники чайника наверняка столкнулся с данной проблемкой. Я дошел до masm32. прописал строки в autoexec.bat,
PATH D:\masm32\bin
SET HELPFILES=D:\masm32\bin
создал новый асм файл.
В тексте автора написано использование build файл_асм для компиляции и линковки. нашел я этот файл в папке masm/bin запустил как описано автором статьи, но увы не вышло. файл obj не появился в директории с асм файлом. может что я не так делаю?!
PS:Конечно я наверное смог бы решить эту проблему самостоятельно, порывшись в сети. поюзал поиск по форуму, поискал в темах для новичков, но ничего по этому вопросу не нашел. Думаю этот вопрос будет полезен всем людям делающим такие же первые mov, add и jmp!




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 01 марта 2011 00:24 · Поправил: plutos
· Личное сообщение · #2

файл obj не появился в директории с асм файлом
А что появилось?

Выложи весь build.bat.

-----
Give me a HANDLE and I will move the Earth.




Ранг: 0.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2011 04:25
· Личное сообщение · #3

Спасибо plutos за внимание!
В директории вообще ничего не создается. там лежит несколько com файлов с кодами проектов из статьи и один асм файл(который и надо откомпилировать) прграмма довольно примитивная и особой нагрузки не несет! Могу привести ее код если это важно.

Сам бат файл
@echo off

if exist %1.obj del %1.obj
if exist %1.exe del %1.exe

@echo %1

\masm32\bin\ml /c /coff %1.asm
if errorlevel 1 goto errasm

if not exist rsrc.obj goto nores

\masm32\bin\Link /SUBSYSTEM:WINDOWS /OPT:NOREF %1.obj rsrc.obj
if errorlevel 1 goto errlink

dir "1.*
goto TheEnd

:nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS /OPT:NOREF %1.obj
if errorlevel 1 goto errlink
dir %1.*
goto TheEnd

:errlink
echo _
echo Link error
goto TheEnd

:errasm
echo _
echo Assembly Error
goto TheEnd

:TheEnd

pause




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 01 марта 2011 05:49 · Поправил: plutos
· Личное сообщение · #4

Я бы начал с того, что проверил бы, действительно ли directory маsм32 (а в нем directory "bin" ) существует на D: drive.
Потом убедился бы добавлен ли "D:\masm32\bin" к твоим ENVIRONMENTAL VARIABLES.
(by typing "D:\>PATH" at DOS command promp)
Далее, создал бы new directory, say "AsmProj1, куда поместил бы твой .asm file AND твой build.bat.
Then run it like this:

D:\masm32\AsmProj1\build.bat myfile

В крайнем случае, выложи сам .asm file.
Попробую его скомпеллировать.

-----
Give me a HANDLE and I will move the Earth.




Ранг: 0.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2011 19:32
· Личное сообщение · #5

Хорошо, я сейчас попробую все сделать как ты написал. На счет файла, не думаю что это необходимо. это 5 листинг "дневника чайника", самый первый проект в серии статей под masm32. Ну на крайний случай чтобы не копаться, вот исходник:
Code:
  1.       .386
  2.       .model flat, stdcall
  3.       option casemap :none   ; case sensitive
  4. ;##################################################################### ####
  5.       include \masm32\include\windows.inc
  6.       include \masm32\include\user32.inc
  7.       include \masm32\include\kernel32.inc
  8.  
  9.       includelib \masm32\lib\user32.lib
  10.       includelib \masm32\lib\kernel32.lib
  11. ;##################################################################### ####
  12.     .data
  13.          MsgBoxCaption db "It's the first your program for Win32",0
  14.          MsgBoxText    db "Assembler language for Windows is a fable!",0
  15. ;##################################################################### ####
  16.     .code
  17.  
  18. start:
  19.          invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK
  20.          invoke ExitProcess, NULL
  21. end start




Ранг: 0.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 марта 2011 19:42
· Личное сообщение · #6

Спасибо plutos! Ты помог! Честно говоря я не понимаю почему не работало раньше... Я просто Создал папку AsmProj1 в masm32 как ты посоветовал. Скопировал туда асм файл и build.bat. С командной строки выполнил команду D:\masm32\AsmProj1\build.bat praxis05 и в результате в папке появились 2 новых файла, obj и exe! Спасибо что отозвался и помог!
Можно считать вопрос исчерпанным!




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 01 марта 2011 20:49 · Поправил: plutos
· Личное сообщение · #7

Честно говоря я не понимаю почему не работало раньше...
Желательно все же понять, чтобы не наступать снова и снова на одни и теже грабли.
Да и весь смысл учебы в этом: что-то не получалось - разобрался - чему-то научился. Так приходит опыт. А просто решил с подсказки конкретный вопрос, но не понял принципа, значит будет снова ситуация, подобная этой, а ты снова не готов.
Мне кажется, что ты ran your build.bat without a command-line argument - praxis05.
То, что этот аргумент нужен сразу видно из самого build.bat.
Но я могу и ошибаться.
В любом случае - не паникуй, ты не один!
Но прежде, чем задавать вопросы, сделай все, что в твоих силах сам! Только так чему-то научишься по-настоящему.
Удачи!

-----
Give me a HANDLE and I will move the Earth.




Ранг: 0.8 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 марта 2011 20:38
· Личное сообщение · #8

plutos, спасибо за наставление! Ценю, видно что с душой относишься к новичку. По больше бы таких людей! ))
В проблеме я разобрался. Был портак с путями. просто я вызывал сам build.bat по полному пути, а в коммандной строке передавал не полный путь к файлу асма. А файла то нету рядом с буилдом. а вот когда уже скопировал туда файл асма, точнее наоборот я зделал. Я скопировал буилд в директорию с файлом асма, и запустил как прежде, все заработало. Ошибка была в пути.
Ну знаешь, когда чего то очень хочется.. глаза большие... мелочей не замечаешь... Если бы подошел сразу основательно и не забегал бы вперед, думаю нашел бы проблему...
Да и свою роль сыграло то что я знаком с асмом для АВР микроконтроллеров. там процесс компиляции немного другой. В общем огромное спасибо! И тебе удачи! Надеюсь этот мой глупый вопрос поможет еще кому то! Всем удачи и успехов! Закрываю тему!


 eXeL@B —› Вопросы новичков —› Дневники чайника: компиляция в masm32
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати