Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Первая прога


Автор: IKM2007 31.7.2008, 13:40
Всем добрый день.

В книге Крупника "Изучаем Ассемблер" написано последовательность шагов создания первой программы.
Скачал FAR1705 и MYASM.

Говориться создать командный файл amake.bat и поместить в одну из папок, указанных в переменной path. Я создал в C:\Program Files\Common Files\Autodesk Shared\.

Затем написано отправиться в папку, где храниться исходный текст программы("l11.asm"), набрать в командной строке оболочки (показано на рисунке) "amake l11" и Enter.(Но на рисунке ничего не видно.)Я открываю папку, где находится "l11.asm" и внизу окна FAR-а ввожу amake l11.

После этого в исходной папке должно появится два новых файла: l11.obj и l11.exe.Но этого не происходит.

Так где я должен вводить "amake l11" и что я не так деляю?
Заранее Спасибо.

Автор: Maka6er 31.7.2008, 14:35
А в самом amake.bat что прописано?

Я делаю так: 
создаю .bat файл с таким содержанием:
Код

С:\masm\ml.exe /c /Fl src.asm 
С:\masm\link.exe src.obj;
pause 

затем просто кидаю его в папку с программой и запускаю. И фар не нужен. А для редактирования кода мне больше Notepad++ по душе  smile 

; Вместо С:\masm\, src.asm и src.obj подставить свое

Автор: IKM2007 31.7.2008, 16:12
Цитата(Maka6er @  31.7.2008,  14:35 Найти цитируемый пост)
А в самом amake.bat что прописано?

Код

ml /c /coff "%1.asm"
link /SUBSISTEM:CONSOLE "%1.obj"



Maka6er, скачал Notepad++ 5.02. Можешь пошагово сказать, что как делать(и еще какой нибудь рабочий код приведи).

Автор: Maka6er 31.7.2008, 22:50
Ну вот например helloworld:
Код

.model        small
.stack        100h                    
;*********************************************************************************
.code
start:        
            mov        ax,@data        
            mov        ds,ax           

            mov        dx,offset message
            mov        ah,9
            int        21h              
                
            mov        ax,4C00h
            int        21h              
;*********************************************************************************        
.data
            message db        "Hello World!",0Dh,0Ah,'$'
;*********************************************************************************        
end    start

Создаем файл src.asm с этим кодом. В ту же папку кидаем мой .bat. Запускаем его и получаем прогу.

;Уже 5.02 вышел, пора апдейтится smile

Автор: airyashov 1.8.2008, 08:36
возможно файлы компилятора недоступны посмотрите в консоли что происходит при исполнение командного файла
ml /c /coff "%1.asm"
link /SUBSISTEM:CONSOLE "%1.obj"
или запустите консоль и наберите эти команды вручную


Автор: Kellmir 1.8.2008, 09:49
Учился по той же книжке
Код

.386
.model flat, stdcall
includelib \masm32\lib\kernel32.lib
ExitProcess proto :DWORD
.code
start:
mov eax, 8
add eax, 8
invoke ExitProcess, 0
end start 

.bat файл содержит
ml /c /coff "%1.asm"
link /SUBSYSTEM:CONSOLE "%1.obj"
в path добавил путь 
e:\masm32\bin
куда и сунул amake.bat
Потом захожу в папку с *.asm файлом через командную строку и пишу amake * (* - имя твоего файла)
у меня срабатывает, надеюсь поможет
P.S. 
Лично я не знал команд командной строки, сильно помогла команда HELP (а вообще смена директории - CHDIR нужный путь)  

Автор: IKM2007 1.8.2008, 12:51
Maka6er, сделал как ты сказал, написал твою прогу, создал .bat файл в папке с .asm файлом, но когда нажимаю Запуск в Notepad-е, просто открывается E: диск.Ничего не происходит
Твой в .bat файл написал так.
Код

 С:\ASM\BIN\ml.exe /c /Fl l11.asm 
С:\ASM\BIN\link.exe l11.obj;
pause

в командной строке появляется это
user posted image
Как я понимаю, все дело в path -е и .bat файле.
В path-е я должен добавить директорию с MYASM?То есть у меня C:\ASM\BIN\ 
Kellmir, а на FAR-е  в .bat файле пишу
Код

ml /c /coff "%1.asm"
link /SUBSYSTEM:CONSOLE "%1.obj"

и когда пишу "amake l11", появляеться вот это
user posted image

Два дня не могу настроить. smile 

У меня MYASM извлечен в папке C:\ASM\ , может это поможет.

Автор: Maka6er 1.8.2008, 13:17
Цитата(IKM2007 @  1.8.2008,  12:51 Найти цитируемый пост)
но когда нажимаю Запуск в Notepad-е

Не из Notepad запускать надо. Он только для редактирования кода. Надо bat-ник запустить, просто кликнуть на него.

Автор: Kellmir 1.8.2008, 14:49
ты в path что дописал?
Как я понимаю там должен быть путь как до ml и link, так и до amake.bat
Я это совместил (сунул amake.bat в e:\masm32\bin) и дописал путь к ним
Для тебя должно быть так 
1) в path дописываешь c:\asm\bin
2) в amake.bat
    
Код

    ml /c /coff "%1.asm"
    link /SUBSYSTEM:CONSOLE "%1.obj"

3) помещаешь amake.bat в c:\asm\bin
4) из папки с *.asm файлом в командной строке набираешь amake *
Вроде бы так, удачи
P. S.
Я забил на FAR  и пользуюсь командной строкой, мне так удобнее, но вольному воля 

Автор: IKM2007 1.8.2008, 15:17
В .bat файле написал
Код

ml /c /coff l11.asm
link /SUBSYSTEM:CONSOLE l11.obj
pause

получилось  smile
Kellmir, 
Maka6er,
Большое Спасибо за помощь.(+1 репа) smile 

Автор: Kellmir 1.8.2008, 15:26
напиши как в моем amake.bat, а то у тебя только l11.asm будет компилиться (другие имена не подойдут)
то есть "%l11.asm", "%l11.obj"

Автор: IKM2007 1.8.2008, 15:50
Цитата(Kellmir @  1.8.2008,  15:26 Найти цитируемый пост)
напиши как в моем amake.bat, а то у тебя только l11.asm будет компилиться (другие имена не подойдут)то есть "%l11.asm", "%l11.obj"

так у меня не компилится. Если создаю допустим l12.asm, а в .bat файле пишу, как у тебя, ругается, что не может открыть l11.asm файл. Ладно, и так пойдет. Всем спасибо.
Тема закрыта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)