Скачал с офф сайта и поставил nasm. Как поставил так тут же и упал. 1) Своего родного линковщика у него нету. 2) inc и lib файлы тоже отсутствуют. Подскажите где взять, попробовал от масм32, чета не подошло. 3) Не нашел исходников виндовских приложений. Погуглив, вообще мало что нашел. До этого использовал masm.
"Hello world!" пойдет? Сохранить как .bat файл. Код (Text): ;@echo off ;goto make extern __imp__ExitProcess@4 ExitProcess EQU __imp__ExitProcess@4 extern __imp__MessageBoxA@16 MessageBox EQU __imp__MessageBoxA@16 extern __imp__GetCurrentProcessId@0 GetCurrentProcessId EQU __imp__GetCurrentProcessId@0 extern __imp__wsprintfA wsprintf EQU __imp__wsprintfA %macro push 2-* %rep %0 push %1 %rotate 1 %endrep %endmacro %macro pop 2-* %rep %0 %rotate -1 pop %1 %endrep %endmacro %macro invoke 1-* %rotate -1 %rep %0-1 push %1 %rotate -1 %endrep call [%1] %endmacro %macro cinvoke 1-* %rotate -1 %rep %0-1 push %1 %rotate -1 %endrep call [%1] %if (%0-1) add esp, 4*(%0-1) %endif %endmacro global _start section .data USE32 sz db "Hello, world!",0 format_string db "PID: %08lX",0 section .bss USE32 szBuff resb 64 section .text USE32 _start: invoke GetCurrentProcessId cinvoke wsprintf, szBuff, format_string, eax invoke MessageBox, 0, szBuff, sz, 0 invoke ExitProcess, 0 ; push 0 ; call [ExitProcess] ;:make ;SET PROJECTNAME=Hello ;if exist %PROJECTNAME%.res del %PROJECTNAME%.res ;if exist %PROJECTNAME%.obj del %PROJECTNAME%.obj ;if exist %PROJECTNAME%.exe del %PROJECTNAME%.exe ;if exist *.rc goto rc ;\nasm\nasmw -fwin32 %PROJECTNAME%.bat ;\masm32\bin\link /nologo /opt:nowin98 /SUBSYSTEM:WINDOWS /ENTRY:start /release /LIBPATH:\masm32\lib %PROJECTNAME%.obj KERNEL32.LIB USER32.LIB ;goto exit ;:rc ;\nasm\nasmw -fwin32 %PROJECTNAME%.bat ;\masm32\bin\rc %PROJECTNAME%.rc ;\masm32\bin\link /nologo /opt:nowin98 /SUBSYSTEM:WINDOWS /ENTRY:start /release /LIBPATH:\masm32\lib %PROJECTNAME%.obj %PROJECTNAME%.res KERNEL32.LIB USER32.LIB ;del %PROJECTNAME%.res ;:exit ;del %PROJECTNAME%.obj ;echo. ;pause ;cls
jershell Ему и не нужен линковщик, как и компилятор ресурсов. Посмотри здесь начиная с #110 уроки Iczeliona на nasm, inc-файлы можно взять на сайте http://visual-assembler.pt.vu/, там же куча примеров, lib-файлы не требуются, так как прямо в asm-файле указывают имена используемых dll. Синтаксис nasm похож на masm в режиме ideal или на fasm, который является потомком nasm. Основные отличия от masm при обращении к переменной её имя заключаешь в квадратные скобки [x], если просто имя переменной -- это её адрес т.е. x в nasm соответствует offset x в masm, отсутствует ptr т.е. dword [x] в nasm соответствует dword ptr [x] в masm
jershell А в гугл слабо набить "nagoa nasm" -- не найдешь -- кое-что могу сбросить в почту, только адрес укажи
Mikl___ Пробовал ещё вчера.Мб я слепой, незнаю на что пинять, но все ссылки либо на рапиду, с которой не качать, либо 404. Зеркал нету. Посмотрел. У меня вот вопрос, а вот первые 3 аттача, они требуют линкер, и запускаться под вистой стали? И как лучше, компилировать с линкером, или всё это дело вручную вставлять? Вот нашел исходник: Код (Text): %include "c:/nasm/inc/nagoa.inc" def WinMain def WinProc Больше ссылок на библиотеки, или какие либо импорты ввида Код (Text): LAST_BEGIN __LIBS_ kernel32,'kernel32.DLL' __IMPORT_ kernel32,\ GetStdHandle,'GetStdHandle',0,\ WriteFile,'WriteFile',0 LAST_END В самом исходнике нету. Я так понимаю что все это дело в nagoa.inc? Вчера ещё читал про эту вещь, правда на английском(в котором не силен), пробовал скачать, как уже говарил выще не вышло. Ну допустим не существует никакого nagoa, то списки импорта доставать из MSDN, затем компилить и линквать?
Mikl___ Большое спасибо. Кстати раз уж nagoa закрылся(ну по крайней мере закрыт сейчас), то вот есть альтернатива в виде nasmX IDE проекта. Распросраняется как под вин так и под линь системы. Скорее всего буду использовать его. Состав значит такой include файлы, rceditor, компилятор думаю понятно какой, линкер GoLink, компилятор rc - GoRc.