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


Автор: ferz721 14.1.2011, 04:21
прочитал статьи и форумы http://forum.vingrad.ru/forum/s/6a2eca6a354d346490e513a214e5c97c/topic-34/0.html
Цитата



"Итак, начнем. Запустите tp7(или более младшие версии, 
где можно писать asm end; - и компиллер не ругнется).
Tp7 Вы можете взять тут(~550Кил): 
http://chat.ru/~vzubko/tp7.zip

Наберите следующий код:" 


как здесь компилировать и выполнять? при нажатии на help пишет "invalid help file"

http://www.security-teams.net/board/index.php?showtopic=5154 
Цитата

Это - вредная привычка, потому я хотел бы посоветовать читателю посмотреть в сторонуфайлового менеджера FAR (желательно наличие плагина Colorer) или же в сторону мощнейшего и к тому же бесплатного редактораNotepad++, скачать который можно сhttp://notepad-plus.sourceforge.net.Скачать MASM можно на masm32.com.

я скачал там редактор + наверно компилятор, как там можно компилировать и выполнять я ненашол?
как его можно подключить к notepad++?
зачем нужен far (файловый менеджер) при написании кода на asm?
http://progbook.net/assembler/175-assembler.-samouchitel.html
тут объесняется все подробно но файла myasm.exe у меня нет и я ненашел где его скачать.


помогите настроить среду выполнения.

Автор: Cheloveck 14.1.2011, 09:09
Компилятор (в данном случае это не компилятор, а ассемблер) не нужно подключать к текстовому редактору. Компиляторы (и ассемблеры) компилируют (ассемблируют) непосредственно файлы, а не текст, набранный в текстовом редакторе. Если надо что-то собрать, то в командной строке пишешь что-то вроде того (для masm32)
Код

> C:\masm32\bin\ml.exe /c /coff test.asm
> C:\masm32\bin\link.exe /SUBSYSTEM:CONSOLE /OUT:test.exe test.obj

Есть интегрированная среда (IDE) для masm32 - http://www.mbuilder.jino-net.ru/. Но нет ничего страшного, если ты будешь собирать всё это дело руками (а лучше с помощью скрипта на batch или Makefile).

Автор: ferz721 14.1.2011, 13:09
можно по подробней 
Цитата

Без подсветки
1:
2:
  > C:\masm32\bin\ml.exe /c /coff test.asm
> C:\masm32\bin\link.exe /SUBSYSTEM:CONSOLE /OUT:test.exe test.obj

где можно почитать про это?
Цитата

Но нет ничего страшного, если ты будешь собирать всё это дело руками (а лучше с помощью скрипта на batch или Makefile).

и про это, потому и задал вопросы так как ненашел ответов в гугле?
допустим я отркыл notepad++ набрал код. что делать дальше?

Автор: Cheloveck 14.1.2011, 13:25
ml.exe - это ассемблер masm32.
link.exe - это компоновщик.
соответственный команды 
Код

ml /help

и
Код

link /help

Покажут справки по использованию
Цитата

C:\Users\Sergey>ml /help
Microsoft ® Macro Assembler Version 6.14.8444
Copyright © Microsoft Corp 1981-1997.  All rights reserved.


        ML [ /options ] filelist [ /link linkoptions ]

/AT Enable tiny model (.COM file)         /nologo Suppress copyright message
/Bl<linker> Use alternate linker          /Sa Maximize source listing
/c Assemble without linking               /Sc Generate timings in listing
/Cp Preserve case of user identifiers     /Sf Generate first pass listing
/Cu Map all identifiers to upper case     /Sl<width> Set line width
/Cx Preserve case in publics, externs     /Sn Suppress symbol-table listing
/coff generate COFF format object file    /Sp<length> Set page length
/D<name>[=text] Define text macro         /Ss<string> Set subtitle
/EP Output preprocessed listing to stdout /St<string> Set title
/F <hex> Set stack size (bytes)           /Sx List false conditionals
/Fe<file> Name executable                 /Ta<file> Assemble non-.ASM file
/Fl[file] Generate listing                /w Same as /W0 /WX
/Fm[file] Generate map                    /WX Treat warnings as errors
/Fo<file> Name object file                /W<number> Set warning level
/FPi Generate 80x87 emulator encoding     /X Ignore INCLUDE environment path
/Fr[file] Generate limited browser info   /Zd Add line number debug info
/FR[file] Generate full browser info      /Zf Make all symbols public
/G<c|d|z> Use Pascal, C, or Stdcall calls /Zi Add symbolic debug info
/H<number> Set max external name length   /Zm Enable MASM 5.10 compatibility
/I<name> Add include path                 /Zp[n] Set structure alignment
/link <linker options and libraries>      /Zs Perform syntax check only


C:\Users\Sergey>link /help
LINK /Link for help on Linker
LINK /Lib for help on Library Manager
LINK /Dump for help on Dumper
LINK /Edit for help on Editor
LINK /Help for help on Helper


Цитата(ferz721 @  14.1.2011,  13:09 Найти цитируемый пост)
где можно почитать про это?

Прежде чем спрашивать, поискал бы в гугле
http://msdn.microsoft.com/en-us/library/s0ksfwcf%28VS.71%29.aspx
http://msdn.microsoft.com/en-us/library/y0zzbyt4%28VS.80%29.aspx

Цитата(ferz721 @  14.1.2011,  13:09 Найти цитируемый пост)
допустим я отркыл notepad++ набрал код. что делать дальше? 

Сохранить файл, открыть консоль и набрать команды, аналогичные тем, что я показал.

Добавлено через 38 секунд
Для того, чтобы не набирать полный путь до ml.exe допиши этот путь в переменную среды Path

Автор: iff 14.1.2011, 18:44
Насчет "подключения" подключения редактора к компилятору: в Notepad++ есть такая функция (Меню "Запуск > Запуск..." там ещё будет кнопка сохранения.). Там нужно указать файл, который будет запускаться, а также коммандная строка, которая будет передана программе. Так вот пишем батник, подключаем его через это меню, сохраняем настройку. Теперь выбираем меню "Запуск > [имя_под которым_сохранили_настройку]". Всё.

Автор: ferz721 12.2.2011, 12:20
Cheloveck можешь написать пример работающего кода, например ввести число, умножить и вывести?

Автор: Cheloveck 12.2.2011, 14:47
Код

.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
include masm32.inc
includelib kernel32.lib
includelib masm32.lib

BSIZE equ 20

.data
.data?    
    buf BYTE BSIZE dup(?)
    stdout DWORD ?
    stdin DWORD ?
    written DWORD ?
    read DWORD ?
    num DWORD ?

.code

start:
    invoke GetStdHandle, STD_OUTPUT_HANDLE 
    mov stdout, eax
    invoke GetStdHandle, STD_INPUT_HANDLE
    mov stdin, eax
    invoke ReadConsole, stdin, addr buf, 20, addr read, NULL        
    invoke atol, addr buf
    mov ebx, 8
    mul ebx
    mov num, eax
    invoke dwtoa, num, addr buf
    invoke WriteConsole, stdout, addr buf, read, addr written, NULL
    invoke ExitProcess, 0
end start

Здесь введённое число умножается на 8 и выводится в stdout. Собрать можно так
Код

ml /ID:\masm32\include /c /coff main.asm
link /LIBPATH:D:\masm32\lib /SUBSYSTEM:CONSOLE /OUT:test.exe main.obj

Путь до ml.exe в Path, а D:\masm32 заменяешь на свой.

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