Скачано с
http://users.freenet.am/~alex1983/Downloads
Предназначение программы.
ASM IDE является интегрированной средой разработки программ
для ассемблера (хотя возможно использование и для других языков). Он особенно
подходит для создания больших проектов, так как позволяет одновременно
открывать до 36 файлов.
Основной вид программы

- Как видите внизу показывается количество
выделенного текста, так что не нужно подстчитывать длину строки, просто
выделите ее и получите внизу ее длину. ( длина верна только если выделенный
текст полностью находится на одной строке )
- Слева находится список открытых
файлов. Вы можете добавлять до 36 файлов. ( .asm .inc .txt
и т. д. )
- Переключение осуществляется как с помощью мышки так и с
помощью комбинации клавиш Ctrl + UP / DOWN
- В зависимости от расширения открытого
файла имя файла в списке будет разного цвета. Другое дело правый список где
цвет выделения означает совершенно другое. (см. внизу)
- Во время компиляции создаются
программы. Если в тексте будут ощибки то .exe (или .dll .sys
и т. д.) файл не будет создан.
- Для того чтобы знать файл существует или нет его надо
добавить в правый список с помощью пунктов меню
- "Projects" -- "Results" -- "Add file name to
results" после чего каждый раз после
компиляции ASMIDE будет проверять существование
этих файлов. Автоматическое обновление списка "Results"
выполняется после нажатия следующих клавиш и их комбинации:
Клавиша или ее комбинация |
Описание |
F9 |
Компиляция
проекта. (О проектах смотри ниже) |
Ctrl + S |
Сохранить
текущий файл |
Ctrl +
T |
Сохранить
текущий проект |
Ctrl + Q |
Сохранить как
проект |
- Чтобы обновить данные о существование файлов выполните
пункты меню
"Projects" -- "Results" --"Validate Project Results" .
- О том какие файлы существуют а какие нет можно узнать по
их цвету(которое меняется в зависимости существования
- файла). Ниже показан пример:
( ASMIDE показывает только имя файла для большей
наглядности )
Пример списка
Здесь первые два файла( "FRDv10.exe"
и "FRDv10.dll" ) существуют а последний
третий("w457.exe")
- нет.
В указанном примере первый файл ("FRDv10.exe")
выделен, при этом о существовании файла можно судить по цвету текста, если текст
зеленый то файл существует, а если текст белый тогда файл не существует. В
указанном примере если бы выделение находилось на последнем файле ("w457.exe")
то цвет текста стал бы белым.
- Если вы все же сомневайтесь или хотите
увидеть полные имена файлов откройте окно "Report"
нажав
F7 после чего
- нажав пункты меню
"Projects" -- "Results" -- "Generate Results Report"
вы получите в окне редактирования полный отчет о всех файлов в списке
"Reports" вместе с данными
о том существуют файлы или нет. До этого вам следует обновить их
вышеуказанным методов.
Для получения полного списка открытых файлов выполните пункты
меню "View"
-- "Generate
Loaded Files Report"
предварительно нажав
F8
для открытия окна "Report".
- Процесс компиляции происходит с использованием
специального скрипта имеющего расширение .spl .
- Когда вы нажимаете
F9 происходит выполнение этого .spl
файла
который открывается в окне "SPL"
с помощью клавишы
F6. Результат работы скрипта выводится в окно "Output".
Для того чтобы просмотреть его нужно нажать
F7.
- Для того чтобы создать SPL
нужно сделать следующее:
- 1. Открыть новый .SPL файл.
пункты меню "Projects" --
"SPL" --" Add new SPL file to project"
после чего будет открыт пустой новый файл.
- 2. Открываете окно "SPL"
нажимая клавишу F6 и генерируете стандартный
SPL
скрипт выполнив пункты меню
"Projects" -- "SPL" --"Generate Standard SPL"
. Это сделано для того чтобы вам не нужно было
запоминать структуру
SPL файла. После генерации в окне вы получите следующий
текст:
- [File_List_Start]
[ 00172 = 'c:\TasmIDE\Tasmide2\Projects1\Scanner\MN.ASM'] ;
имя файла
;
[ SHELL = "C:\myfile.doc" ]
- [File_List_End]
[Programs_List_Start]
[Masm_compiler = 'c:\masm32\bin\ML.EXE' ]
; местонахождение компилятора ( можете менять
их )
[Masm_linker = 'c:\masm32\bin\LINK.EXE' ]
; местонахождение линкера
[Programs_List_End]
[Operations_List_Start]
[Operation 'Compile'
Start][Output:STDOUT/STDERR][
Masm_compiler ][ ' /c /coff [Insert "File" Start][00172][Insert
"File" End] ' ]
- [Operation 'Compile'
End]
[Operation 'Delete' Start][Output:STDOUT/STDERR][
'[Insert "File" Start][00172]["exe"][Insert
"File" End] ' ][Operation
'Delete' End]
- [Operation 'Link' Start][Output:STDOUT/STDERR][
Masm_linker ][ ' /SUBSYSTEM:WINDOWS [Insert "File"
Start][00172]["obj"][Insert "File" End]
' ][Operation 'Link' End]
- [Operation 'Execute' Start][Output:STDOUT/STDERR][
'[Insert "File" Start][00172]["exe"][Insert
"File" End]' ][Operation 'Execute' End]
- ; [Operation 'ShellExecute' Start][Output:STDOUT/STDERR][
'[Insert "File" Start][SHELL][Insert
"File" End]' ][Operation 'ShellExecute' End]
- ; [Operation 'Copy' Start][Output:STDOUT/STDERR][
"c:\check_file_io.txt" ][
"c:\TasmIDE\Tasmide2\Projects1\Scanner\check_file_io.txt" ]
-
- [Operation 'Copy' End]
[Operations_List_End]
ml.exe /c /coff file.asm ;Standard Win32 .exe file
link.exe /SUBSYSTEM:WINDOWS file.obj ;Standard Win32 .exe file
|
Выделеныые красным и синим цветами слова
являются зарезервированными словами и не должны писаться по другому.
Описание структура
SPL файла
- 1. Между [File_List_Start]
и [File_List_End]
пишется список файлов которые используются. Вам чаще всего придется изменять
только этот список Каждому файлу присваивается метка. Например у первого
файла метка "00172" а у второго файла
метка
"SHELL". Имя файла может быть
заключено как в одинарные так и в двойные кавычки. Как видете метка может
состоять как из цифр так и из букв. Второй файл с меткой "SHELL"
закомментирован и следовательно игнорируется. Комментарии в .SPL
файлах такие же как у ассемблера то есть точка с запятой
" ; " .
-
- 2. Между
[Programs_List_Start]
и
[Programs_List_End]
пишется список компиляторов, линкеров, компиляторов ресурсов и так
далее. Каждому из них также присваевается метка. Имена меток не должны
повторяться, но если имена все таки будут повторятся то это не является
ошибкой, просто в этом случае только первая их них будет приниматься а
остальные будут игнорированы.
- 3.Между
[Operations_List_Start]
и
[Operations_List_End]
пишется список операции которые будут выполнятся. Все что угодно написанное
вне этих полей игнорируется, как например последние две строки.
- Этот скрипт делает абсолютно то же самое что
можно сделать с помощью make - файлов.
Большиство IDE так и поступают. Но
make - файлы имеют один недостаток:
они не позволяют получать выходные данные от компиляторов.
А вот SPL перехватывает все сообщения от
всех компиляторов (которых может быть очень много) объединяет все эти
сообщения в единое целое, добавляет некоторую дополнительную
информацию и генерирует в окне "Output"
огромный отчет. Более того она позволяет перехватывать например только
STDOUT или только STDERR
или оба вместе. Кроме того если произойдет какая нибудь
системная ошибка то вы получите подробную информацию об этом.
- Все это особенно важно например при
создании .DLL или .SYS (системный
драйвер). Поскольку при этом обычно создаются как
.DLL так и программа которая должна использовать
этот .DLL для того чтобы протестировать этот
.DLL. Весь этот процесс может быть автоматизирован с
помощью SPL.
|
Рассмотрим структуру одиночной операции (
в тексте определеы 6 операции, последние два из которых закомментированы.)
Для примера возьмем первую определенную операцию
- [Operation 'Compile'
Start][Output:STDOUT/STDERR][
Masm_compiler ][ ' /c /coff [Insert "File" Start][00172][Insert
"File" End] ' ]
- [Operation 'Compile'
End]
После слова "Operation"
определена в кавычах название операции 'Compile'.
Оно может принимать следующие значения:
Тип операции |
Описание |
Compile |
Компиляция с
использованием консольного компилятора. При этом первый вводной параметр
определяет используемый консольный компилятор а второй вводной параметр
определяет командную строку. (про вводный параметры см. ниже) |
Link |
Практически то же что и при "Compile"
|
ConsoleConnect |
Практически то же что и
при "Compile"
|
Delete |
Операция уничтожения
файла. При этом первый вводной параметр определяет файл который нужно
уничтожить. А второй вводный параметр не используется. |
Execute |
Операция выполнения программы.
При этом первый вводной параметр определяет .exe
программу которую нужно выполнить а второй - ее
командную строку. (ASMIDE при этом использует
API функцию CreateProcessA ) |
ShellExecute |
То же что и "Execute"
только с той разницей что ASMIDE при
этом использует API функцию
ShellExecuteA. Так что кроме .exe
файлов можете выполнять .bat, .doc, .html, .xls
и так далее. |
Copy |
Операция копирования. При этом
первый вводной параметр определяет файл который нужно копировать а
второй вводный параметр определяет место куда нужно копировать. (Если файл
уже существует то производится overwrite) |
[Operation 'Compile'
Start] и [Operation 'Compile'
End] определяют начало и
конец операции. Название операции в начале и в конце всегда совпадают.
После них идет определение вывода [Output:STDOUT/STDERR]
которая имеет значение только при консольных операциях то есть "Compile"
, "Link" и "ConsoleConnect" .
Может принимать следующие значения:
Значение |
Описание |
[Output:STDOUT/STDERR]
или [Output:STDERR/STDOUT] |
Перехватывать
вывод как STDOUT так и STDERR |
[Output:STDOUT] |
Перехватывать
только STDOUT |
[Output:STDERR] |
Перехватывать
только STDERR |
[Output:None] |
Не
перехватывать вывод. |
- Следущим идет первая вводный параметр в котором определена
метка "Masm_compiler" . Соответствующий
ей файл определен между
[Programs_List_Start]
и
[Programs_List_End]
"c:\masm32\bin\ML.EXE" .
- [ Masm_compiler ]
- (Название соответствующего метке файла определенная в
первом вводном параметре ищется между
[Programs_List_Start]
и
[Programs_List_End]
)
- Если вы не хотите определять метку, тогда вы должны писать
[ "c:\masm32\bin\ML.EXE" ]
Далее идет второй вводный параметр
[ ' /c /coff [Insert "File" Start][00172][Insert
"File" End] ' ]
который в данном случае определяет командную строку
которая будет передано.
при это оператор [Insert "File" Start][00172][Insert
"File" End] будет заменен на файл с
меткой "00172".
Есди бы было написано [Insert "File" Start][00172]["obj"][Insert
"File" End] то при этом оператор
будет заменен на файл с меткой "00172" с
изменением расширения на "obj" (если расширение
отсутствует вообще, тогда раширение будет добавлено).
Файл соответствующий метке "00172"
ищется между [File_List_Start]
и [File_List_End]
.
- Итак операция
- [Operation 'Compile'
Start][Output:STDOUT/STDERR][
Masm_compiler ][ ' /c /coff [Insert "File" Start][00172][Insert
"File" End] ' ]
- [Operation 'Compile'
End]
|
- означает следующее:
- Будет выполнена
"c:\masm32\bin\ML.EXE" в
которой будет
- передано командная строка "
/c /coff c:\TasmIDE\Tasmide2\Projects1\Scanner\MN.ASM"
- при этом STDOUT и
STDERR от c:\masm32\bin\ML.EXE
будет перехвачено.
- А вот вторая операция
- [Operation 'Link' Start][Output:STDOUT/STDERR][
Masm_linker ][ ' /SUBSYSTEM:WINDOWS [Insert "File"
Start][00172]["obj"][Insert "File" End]
' ][Operation 'Link' End]
|
- означает следующее:
- Будет выполнена
"c:\masm32\bin\Link.EXE" в
которой будет
- передано командная строка "
/SUBSYSTEM:WINDOWS c:\TasmIDE\Tasmide2\Projects1\Scanner\MN.obj"
- при этом STDOUT и
STDERR от c:\masm32\bin\Link.EXE
будет перехвачено.
В этом SPL файле вам придется изменить
имя файла, местонахождение компилятора и линкера. После чего вам придется
создать проект. Для этого нажимаем комбинацию клавиш Ctrl + Q
и создаем файл проекта. Файл проекта имеет расширение .APF
и хранит данные о всех открытых файлах, SPL
файле, данные о файлах в списке "Results".
Так что в следующий раз вы уже сразу откроете файл проекта и при этом
автоматически откроются все ваши файлы, SPL и список
"Results" то есть в файле .APF
хранится workspace (также как и в Visual
Studio).
В программе также предусмотрен удобный поиск по тексту.
- Имеется возможность как поиска одного слова, так и поиска
комбинации слов.
- Это может быть удобно при поиске функции, например в этом
случае нужно искать "Myfunction_Name" + "proc"
при этом устанавливая "On one line" (в этом
слечае будет производится поиск только тех комбинации которые находятся на
одной строке )
-
- Для разработки приложении на ассемблере вам также
понадобятся пакет MASM32 или MASM64 (в
случае если вы создаете под AMD64 или EM64T)
их вы можете также скачать из моего сайта
http://users.freenet.am/~alex1983/Downloads
- Проект ASMIDE v1.6.0.0
является open - source и исходники находятся в
каталоге ..\sources\
- Буду рад если это программа поможет вам
- С уважением автор - разработчик Александр Амбарцумян
- compilation date 2:58 AM 10/19/2005
- Ереван