برای شروع می تونید محیط برنامه را از لینک زیر دانلود کنید
http://www.masm32.com/masmdl.htm
عالی
خیلی خوب
خوب
متوسط
بد
برای شروع می تونید محیط برنامه را از لینک زیر دانلود کنید
http://www.masm32.com/masmdl.htm
اولین برنامه ای که معمولا برای شروع توی هر برنامه نویسی آموزش میدن
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.data
HelloWorld db "Hello World!", 0
.code
start:
invoke MessageBoxA, NULL, addr HelloWorld, addr HelloWorld, MB_OK
invoke ExitProcess, 0
end start
اما توضیح اینکه این برنامه نویسی تقریبا سطح متوسط هستش
همون طوری که می بینید خبری از وقفه ها و بعضی از مواردی که تو داس بود نیست
سه خط اول مربوط به راهنمای اسمبلر و 5 خط بعد هم فایلهای سرآیند و بعد در قسمت دیتا معرفی متغییر و در قسمت کد
برنامه نویسی
بعدا با ذره بین این برنامه رو توضیح کامل میدم
یکی از آموزشهای خوب برای اسمبلی 32بیتی ، کتاب آقای مهندس غلامیان به اسم کرک و تکنیکهای نفوذ به نرم افزار هست
دانلود مستقیم کتاب به حجم 18 مگابایت
http://ALT.ir/other/crack-book.zip
پیوست
میتونید از این لینک دانلودش بکنید
اين سايت ما هم هر از چندگاهي ميره قاطي باقاليا :)
از اين آدرس بگيريد
http://ecc.ir/other/crack-book.zip
تست كردم الان.
اون چيزي كه تو لينك اصلي هست به همراه فايلهاي جانبي هست و حجمش زياده ، اگه كسي مشكل دانلود نداره ميتونه اونا دانلود كنه
آخرین ویرایش به وسیله joker : چهارشنبه 23 شهریور 1390 در 16:11 عصر
برنامه اول به این شکل نوشته میشه که تفاوت پارامتر ها مشخص باشه
.386
.model flat,stdcall ;memory model in win32 is flat
option casemap:none ;case sensitive
include \masm32\include\windows.inc ;MB_OK
include \masm32\include\kernel32.inc ;ExitProcess,
includelib \masm32\lib\kernel32.lib
include \masm32\include\user32.inc ;MessageBox,
includelib \masm32\lib\user32.lib
.data
MsgBoxCaption db "Win32 Assembly",0
MsgBoxText db "hello beginner :D",0
.code
start:
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK
invoke ExitProcess, NULL
end start
اینم یک مرجع خوبه
اما نه برای شروع چون باید یک سری مقدماتو دونست پیشنهاد میکنم کتاب essentials of 80*86 assembly language
رو البته ترجمش هم هست به اسم زبان اسمبلی و معماری ریزپردازنده80*86 مترجم:مشحون همینجا بگم ترجمشو خوندم پر اشکال هست اما بازم برای شروع کسی که آشنایی داره با اسمبلی 8086 و 80286 خوبه
بعد بیاین وارد API ها بشین
من می خوام با اسمبل 32 سکتور هارد رو بخونم باید چکار کنم
جستجو کنید
خدا بخیر کنه هنوز مسیج باکس رو نشون نداده رفتین کجا
بازم میگم اول با اسمبلی 32 آشنا بشین بعد برین سراغ API ،مگر اینکه با c win32 کار کرده باشین
این ها رو قبلا دیده بودم و بلد بودم ولی ته هاردم(مغز)گمشده بود مرسی از یاد آوری گذشته های خوب وبد
من اسمبلی ویندوز کار نکردم (ولی روی لینوکس کارهایی در حد پایه کردم از روی یک کتاب آموزشی).
یکی از رفقا میگفت که ویندوز جلوی بعضی از دسترسی ها و اجرای بعضی از دستورها رو با اسمبلی میگیره. آیا همچین چیزی صحت داره؟
مثلا شاید جلوی دستوراتی رو که سعی میکنن به هستهء خود ویندوز رخنه کنن میگیره. بهرحال ویندوز یه سیستم عامل انحصاری تجاری و کدبسته هست، اما لینوکس خب همه چیزش آزاده.
به نظر من اسمبلی کلا زبان فقیری هست مخصوصا تو ویندوز و در شرایطی که خود میکروسافت ظاهرا تمایلی به پشتیبانی این زبان نداره. خیلی از برنامه نویسانی که علاقه زیادی به اسمبلی دارند سعی کردن در حد توانشون کارهایی رو برای راحت تر شدن برنامه نویسی به این زبان انجام بدن ولی هنوز یک IDE خوب و ایده ال برای اون نیست (بهترینش به نظرم Winasm هست ولی ...). من آموزشهای Iczelion رو برای ویندوز خیلی ارزشمند میدونم یه کپی از سایتش اینجا هست: http://win32assembly.programminghorizon.com/
از نظر شما چه زبانی فقیر نیست؟ دلفی؟ C؟ ++C؟ #C؟ VB؟ همه این زبان ها خروجیشون میتونه فایل اجرایی باشه. فایل اجرایی هم در اصل کد به زبان ماشین هستش. نسبت تبدیل زبان ماشین و اسمبلی هم 1:1 هست، در نتیجه میشه گفت اسمبلی و زبان ماشین تقریباً یکی هستن فقط نوشتارشون با هم فرق میکنه. اینم یعنی اینکه تمام اون فایل های اجرایی که با زبانهای فقیر یا غیر فقیر تولید میشن، با اسمبلی هم میتونن تولید بشن!به نظر من اسمبلی کلا زبان فقیری هست
هیچ منبعی در رابطه با این حرفتون پیدا نکردمدر شرایطی که خود میکروسافت ظاهرا تمایلی به پشتیبانی این زبان نداره
برنامه نویسای حرفه ای اسمبلی به خاطر این وارد این زبان شدن که دنبال بهینه تر کردن و آزادی عمل بیشتر بگردن نه دنبال راحتی کار واسه خودشون. اگه میخواستن میتونستن مثل خیلی های دیگه برن سراغ بقیه زبان های برنامه نویسیخیلی از برنامه نویسانی که علاقه زیادی به اسمبلی دارند سعی کردن در حد توانشون کارهایی رو برای راحت تر شدن برنامه نویسی به این زبان انجام بدن
اگه برنامه نویس برنامه نویس باشه تو همون notepad هم میتونه کد بزنه. IDE فقط یه پوسته برای راحتی کار برای ارتباط بین برنامه نویس و کامپایلره. منم هیچ دلیلی نمیبینم که این وسط به IDE احتیاج باشه چون همه چیز به صورت دستی داره پیاده سازی میشه و عملاً IDE هم باشه به هیچ دردی نمیخوره و تنها کاری که میکنه اینه که فضای رم اشغال کنههنوز یک IDE خوب و ایده ال برای اون نیست
نمیدونم چرا با وجود اون همه مثال خوب تو اون سایتی که معرفی کردید، دارید میگید اسمبلی زبان فقیریه؟!!! از دوستان خواهش میکنم به یه زبان برنامه نویسی از دید برنامه hello world نگاه نکنن
اسمبلی زبان فقیری نیست بلکه از نظر قدرت از خیلی از زبان های دیگه قدرت بیشتری داره اما این وسط چنتا عامل باعث میشه اسمبلی مورد توجه قرار نگیره .
اولیش سرعت توسعه یک برنامه هست . مثلا" برای برنامه ای که توی زبان دلفی 6 خط بیشتر نمیشه , توی اسمبلی باید 16 خط دستور بنویسید .
دومین دلیل نبود کتابخانه های خوب برای اسمبلی هست . به عنوان مثال شما اگه یه برنامه بخوایید بنویسید که از RSA استفاده کنه توی دلفی از FGInt استفاده میکنید و توی اسمبلی از BigLib ولی وقتی میخوایید یه برنامه بنویسید از ECDSA استفاده کنه مجبورید برید سراغ دلفی یا زبان های دیگه و دیگه نمیشه از اسمبلی استفاده کرد , مگر اینکه خودتون واسش توابع کتابخانه ای بنویسید !
در مورد IDE باید بگم IDE فقط کار برنامه نویسی رو راحت تر میکنه و توی قدرت برنامه نویس تاثیری نداره . زبان هایی مثل C یا ASM همگی بدون IDE هم میتونن کار کنن مثل Borland C++ برای C++ .
البته شما میتونید از اسمبلی توی C و دلفی هم استفاده کنید و این خودش قدرت این زبان رو میرسونه .
اسمبلی برای نوشتن برنامه های محاسباتی فوق العاده هست و سرعت بسیار بالایی هم داره .
بعد از کمی کار با اسمبلی شما خودتون متوجه میشید که این زبان چقدر قدرتمنده .