ورود

View Full Version : سینتکس در nasm



amir_civil
جمعه 15 خرداد 1388, 17:45 عصر
سلام دوستان
من یه سوال در مورد سینتکس nasm داشتم
میشه بگید چه فرقی بین برنامه هایی که با


[BITS 32]

global _start

_start:
شروع میشن و برنامه هایی که با


%include '..\..\..\inc\win32\kernel32.inc'
%include '..\..\..\inc\win32\user32.inc'

entry demo1

[section .text]
proc demo1
.
.

وجود داره؟
ایا در قسمت اول هم میشه فایل اجرایی ساخت؟ یا فقط میشه فایل باینری ساخت
اگر ممکنه دستورش رو بگید
ممنون

amir_civil
شنبه 16 خرداد 1388, 23:59 عصر
ممنون میشم دوستان کمک کنن

hoax3r
یک شنبه 17 خرداد 1388, 01:57 صبح
entry و proc ماکروهایی است که تو nasmx.inc تعریف شدن که آخرش همون کد اولی رو میسازن
شما موقع کامپایل باید مشخص کنید که به چه نوع فرمتی میخواید برنامه کامپال بشه
که با پرامتر f- مشخص میشه میشه و مقداری مثل bin یا win32 یا win64 و ... رو میگیره

مثلا یه نمونه برای ساختن آبجکت فایلی از نوع win32:


nasm -f win32 -o file.obj


بعدم با یه لینکر فایل اجرایی رو میشه ساخت

amir_civil
یک شنبه 17 خرداد 1388, 13:09 عصر
»منون
در فرمت اول چه جوری میشه از کتابخانه های nasm استفاده کرد؟
میشه یه مثال کوچک بزنید

hoax3r
یک شنبه 17 خرداد 1388, 19:40 عصر
nasm مگه کتابخانه داره؟ اگه مثل دومی میخوای از API و ماکرو هایی مثل invoke و proc و ..
استفاده کنی از اون هدر فایلهای بسته nasmx باز باید استفاده کرد
نمیدونم حالا درست متوجه منظورتون شدم

مثلا مثال اولو میشه اینجوری تغییر داد (البته مسیر هدرا رو باید درست کنید)


[BITS 32]

%include 'nasmx.inc'
%include 'windows.inc'
%include 'user32.inc'

[section .data]
szContent: db 'test program.', 0
szTitle: db 'MsG', 0

[section .text]
global _main
_main:
invoke MessageBoxA, NULL, szContent, szTitle, MB_OK
ret


البته بازم میگم اینا فرقی باهم ندارن چون در نهایت یه چیز تولید میشه، فقط دومی یکسری ماکرو تعریف کرده
بر اساس اونا یکم کد تغییر کرده