Скачано с 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
  Ереван