Я надеюсь, Вы не думаете, что Вас тут будут учить ассемблеру. Единственное, что я помогу Вам сделать это настроить ПО для работы, а уж дальше... Каждому по способностям... :)
Для начала советую воспользоваться советом Sensus'а в соседней ветке и скачать указанную им программу, так как я тоже ей пользуюсь и помогу ее настроить. Дальше будем исходить из того, что Вы работаете в ОС WinXP.
Произведем установку Tasm (я буду писать про него, для Masm переделаете сами), например, в каталог: "c:\Asm\TASM\", а программу, которую советовал Sensus, в каталог: "c:\Asm\Assembler\". Теперь пропишем пути. Открываем настройки системы: Пуск->Панель управления->Система, там на закладке "Дoпoлнитeльнo" нажимаем "Пepeмeнныe cpeды" и в окошке "Cиcтeмныe пepeмeнныe" добавим в переменную "Path" дополнительные значения разделяя их точкой с запятой ";". Значения такие: "c:\Asm\TASM\BIN\;c:\Asm\TASM\LIB\;c:\Asm\TASM\INCLUDE\;c:\Asm\Assembler\". И закрываем все кнопкой "ОК". Перегружаем машину.
Займемся настройками непосредственно ПО. Создадим в папке "c:\Asm\Assembler\" файл "Build.bat" следующего содержания:
Код
@echo OFF
echo.
if "%2" == "windll" goto windll
if "%2" == "winresdb" goto winresdb
if "%2" == "winres" goto winres
if "%2" == "windows" goto windows
if "%2" == "konsole" goto konsole
if "%2" == "exedb" goto exedb
if "%2" == "exe" goto exe
if "%2" == "comdb" goto comdb
echo ******************* Build %1.COM ********************
echo.
echo.
echo Tasm to %1.obj
echo.
tasm.EXE %1 > %1.log
echo. >> %1.log
echo TLink to %1.com
echo ----------------------- >> %1.log
tlink.EXE /t /x %1.obj >> %1.log
if errorlevel 1 NotePad.EXE %1.log
goto end
:comdb
echo ********* Build %1.COM + Debug info **********
echo.
echo.
echo Tasm to %1.obj
echo.
tasm.EXE /zi %1 > %1.log
echo. >> %1.log
echo TLink to %1.com
echo.
tlink.EXE /x /v %1.obj >> %1.log
echo. >> %1.log
echo. >> %1.log
echo. >> %1.log
echo TdStrip add DebugInfo for %1.com
echo ----------------------- >> %1.log
tdstrip -s -c %1.exe %1.tds >> %1.log
if errorlevel 1 NotePad.EXE %1.log
goto end
:exe
echo ******************* Build %1.EXE ********************
echo.
echo.
echo Tasm to %1.obj
echo.
tasm.EXE %1 > %1.log
echo. >> %1.log
echo TLink to %1.exe
echo ----------------------- >> %1.log
tlink.EXE /x %1 >> %1.log
if errorlevel 1 NotePad.EXE %1.log
goto end
:exedb
echo ********* Build %1.EXE + Debug info **********
echo.
echo.
echo Tasm to %1.obj
echo.
tasm.EXE /zi %1 > %1.log
echo. >> %1.log
echo TLink to %1.exe
echo ----------------------- >> %1.log
echo.
tlink.EXE /x /v %1 >> %1.log
echo. >> %1.log
echo. >> %1.log
echo. >> %1.log
echo TdStrip add DebugInfo for %1.exe
echo ----------------------- >> %1.log
tdstrip -s %1.exe %1.tds >> %1.log
if errorlevel 1 NotePad.EXE %1.log
goto end
:konsole
echo ******************* Build %1.EXE konsole ********************
echo.
echo.
echo Tasm to %1.obj
echo.
tasm.EXE /m /ml %1 > %1.log
echo. >> %1.log
echo TLink32 to %1.exe
echo ----------------------- >> %1.log
tlink32.EXE /Tpe /ap /c /x %1 >> %1.log
if errorlevel 1 NotePad.EXE %1.log
goto end
:windows
echo ******************* Build %1.EXE windows ********************
echo.
echo.
echo Tasm to %1.obj
tasm.EXE /m3 /ml %1 > %1.log
echo.
echo. >> %1.log
echo TLink32 to %1.exe
echo ----------------------- >> %1.log
tlink32.EXE /Tpe /aa /c /x %1 >> %1.log
if errorlevel 1 NotePad.EXE %1.log
goto end
:winres
echo ************* Build %1.EXE + resource **************
echo.
echo.
echo Tasm to %1.obj
echo.
tasm.EXE /x /m3 /ml %1 > %1.log
echo. >> %1.log
echo BrCC32 add ResourceInfo to %1.exe >> %1.log
echo ----------------------- >> %1.log
BRCC32.EXE %1.rc >> %1.log
echo. >> %1.log
echo. >> %1.log
echo. >> %1.log
echo TLink32 to %1.exe >> %1.log
echo ----------------------- >> %1.log
tlink32.EXE /Tpe /aa /c %1,,,,,%1.res >> %1.log
if errorlevel 1 NotePad.EXE %1.log
goto end
:winresdb
echo ********** Build %1.EXE + Debug info ***********
echo.
echo.
echo Tasm to %1.obj
echo.
tasm.EXE /zi /x /m3 /ml %1 > %1.log
echo. >> %1.log
echo BrCC32 add ResourceInfo to %1.exe
echo ----------------------- >> %1.log
BRCC32.EXE %1.rc >> %1.log
echo. >> %1.log
echo. >> %1.log
echo. >> %1.log
echo TLink32 add DebugInfo for %1.exe
echo ----------------------- >> %1.log
tlink32.EXE /Tpe /aa /c /v %1,,,,,%1.res >> %1.log
if errorlevel 1 NotePad.EXE %1.log
goto end
:windll
echo ********** Build %1.DLL ***********
echo.
echo.
echo Tasm to %1.obj
echo.
tasm.EXE /m /x /ml %1 > %1.log
echo. >> %1.log
echo TLink32 to %1.dll
echo ----------------------- >> %1.log
tlink32.EXE -Tpd -c %1.obj,,,,%1.def >> %1.log
IMPLIB.EXE %1.lib %1.dll >> %1.log
if errorlevel 1 NotePad.EXE %1.log
:end
if exist %1.res del %1.res
if exist %1.map del %1.map
if exist %1.obj del %1.obj
Если будет желание разобраться, то можно и под Masm переписать. А пока не особо вникая, расскажу о сути файла. Файл позволяет полностью скомпилировать следующие поекты:
Com-файл
Com-файл с отладочной информацией
Exe-файл (DOS)
Exe-файл с отладочной информацией (DOS)
Exe-файл (WIN)
Exe-файл (WIN console)
Exe-файл с файлом ресурсов (RC) (WIN)
Exe-файл с файлом ресурсов (RC) и отладочной информацией (WIN)
DLL библиотека
При этом в случае возникновении ошибки во время компиляции открывается блокнот с логом. Ежели компиляция прошла успешно, никаких сообщений не появляется. Файл вызывается с командной строкой, в которой два параметра: имя asm-файла без расширения и второй параметр это тип компиляции, одно из следующих значений:
com
comdb
exe
exedb
windows
konsole
winres
winresdb
Windll
Список соответствует вышеописанным проектам.
Пример:
"build.bat cyrcle com" – скомпилируется com-файл из файла cyrcle.asm
"build.bat OpisStat winresdb" – скомпилируется exe-файл из файла OpisStat.asm, при этом в каталоге с OpisStat.asm должен быть файл OpisStat.rc
Пойдем дальше.
Если Вы все-таки решили, для редактирования asm-файлов, воспользоваться программой "ASM Editor for Windows", которую мы тут советуем, то предложу Вам добавить/заменить в файле "AsmEd.ini", который находится в каталоге "c:\Asm\Assembler\", секцию "[Project]
" на:
Код
[Project]
Build COM=build.bat {b} com
Build EXE=build.bat {b} exe
Com Debug Info=build.bat {b} comdb
Exe Debug Info=build.bat {b} exedb
-=
Win=build.bat {b} windows
Win konsole=build.bat {b} konsole
Win resourse=build.bat {b} winres
Win resource DebugInfo=build.bat {b} winresdb
--=
Build DLL=build.bat {b} windll
---=
Run COM={b}.com
Run EXE={b}.exe
----=
Soft Ice 4.05 - com=c:\Asm\SoftIce95\Util16\Dldr.exe {b}.com
Soft Ice 4.05 - exe (DOS)=c:\Asm\SoftIce95\Util16\Dldr.exe {b}.exe
Soft Ice 4.05 - exe=C:\Asm\SoftIce95\loader32.exe /translate /load {b}.exe
Это мои настройки, но можно создать и свои, здесь просто наглядно видно гибкость программы в отношении настроек.
Теперь откроем "ASM Editor for Windows" и напишем следующий текст:
Код
.model tiny
.code
.286
org 100h
_start:
mov dx,offset hello
mov ah,9
int 21h
ret
hello db "Hello$"
end _start
Сохраним его, например в каталог "c:\Asm\Project\Hello\" под именем Hello.asm
Выберем меню "Project" и пункт "Build COM". На некоторое время мигнет консольное окошко и в каталоге "c:\Asm\Project\Hello\" появится файл Hello.com.
А теперь за книжки и учиться, учиться и учиться.
P.S.
Не надо сохранять проекты в каталоги имена которых длиннее 8 символов, а также называть asm-файлы именами, превышающими эту же длину.
P.S.S.
Не претендую на истину в последней инстанции, но новичку это должно помочь. IMHO :)