بنام  خدا


آشنایی با کامپایلرهای زبان اسمبلی بخش  2  :


در پست قبلی  معروفترین کامپایلر زبان اسمبلی یعنی  مایکروسافت ماکرو اسمبلر را  معرفی کردم و البته سایت رسمی  نسخه ی مستقل  این اسمبلر را نیز معرفی نمودم .


در این سایت ، یک انجمن بزرگ  و رسمی وجود دارد که صدها عضو  دارد .  می توانید عضو این انجمن بشوید و سوالات خود را از اعضای انجمن بپرسید  و همچنین می توانید  بصورت کاربر میهمان  ،  تمامی نرم افزارهایی که این افراد  آپلود کرده اند را از همین انجمن مستقیما دانلود کنید . (برای دانلود فایلها  نیازی به عضویت نیست ).



اگر موفق به دانلود یا نصب   masm32  نشده اید می توانید  از لینک زیر نسخه ی  قابل حمل  masm32  را که نیازی به نصب ندارد  مستقیما  دانلود نمایید :

برای شروع برنامه نویسی با  masm32  باید از  فایل   qeditor.exe  استفاده کنید :


فایل qeditor.exe    ،  یک  IDE پیشفرض برای سهولت برنامه نویسی با  masm32 می باشد . 

درفرصت مناسب شما را با تعدادی از IDE های حرفه ای و قدرتمند masm32  آشنا می کنم .



لینک مستقیم نسخه ی  قبل حمل  masm32 :



  http://bayanbox.ir/download/3544560587303678911/masm32.zip



پیشنهاد من اینست که برای شروع برنامه نویسی با زبان اسمبلی از همین masm32 استفاده کنید چون همانطور که  گفتم  جامعه ی کاربری بسیار بزرگی در سطح جهان ( و البته ایران) دارد و با زبان های  C  و  ++C  نیز  سازگاری بالایی دارد . نرم افزارهای فراوانی نیز توسط این اسمبلر ساخته شده و کتابخانه های بزرگی نیز دارد .


خلاصه اینکه  در محیط سیستم عامل ویندوز ،  کاملترین و بزرگترین و غنی ترین  اسمبلر  همین  masm32  می باشد .

+

+

+

خب حالا در این پست قصد دارم  یکی دیگر از اسمبلرهای قدرتمند  ویندوزی را   که  تقریبا آنرا می شناسید و قبلا آنرا به شما معرفی کرده ام مجددا معرفی نمایم اما با این تفاوت که  لینک دانلود آنرا برایتان می گذارم و مزایا و معایب اش  را نیز  بازگو می کنم .


اسمبلر  RosAsm  (مخفف  ریاکت او اس اسمبلر ):


اسمبلر  RosAsm  که من  نام اش را بصورت  روسسم تلفظ می کنم و حتی  چند وبلاگ  مستقل  برایش ساخته ام   نخستین بار در سال 1998 میلادی توسط یک دانشمند فرانسوی به نام  رنه تورنویس  ساخته شد . 


طراح این اسمبلر ، دشمن درجه ی یک تمامی زبانهای سطح بالا  و اسمبلرهای masm32 و  HLA   و شرکت مایکروسافت  می باشد .  عملا این اسمبلر بواسطه ی لحن تند و آتشین طراح اش و  بیانیه های سیاسی که علیه  موارد بالا صادر کرده از طرف همه ی برنامه نویسان دنیا حتی برنامه نویسان زبان اسمبلی  ، طرد شده است .


ولی واقعا این اسمبلر یک اسمبلر استثنایی است .  اسمبلر  RosAsm  یک اسمبلر عالی و رایگان و بسیار قدرتمند و سریع و انعطاف پذیر است که مزایای فراوانی دارد .


ابتدا لینک  دانلود  RosAsm  را برایتان می گذارم  بعد در مورد مزایا و معایب اش توضیح می دهم:


لینک دانلود اسمبلر RosAsm  :



http://bayanbox.ir/download/911748257142030266/RosAsm.zip



من از  RosAsm در وبلاگهایم  تعریف کرده ام و روش پیکربندی اش را نیز آموزش داده ام .


بنابراین  الان  فقط خیلی سریع مروری می کنم بر مزایا و  معایب اش:


مزایای  اسمبلر RosAsm  :


1- رایگان ، اوپن سورس و آزاد است . تحت لایسنس معروف  GPL  ساخته شده و در گیتهاب نیز نسخه های متعددی دارد . بنابراین  شما در گیتهاب می توانید با  سرچ کردن  لغت  RosAsm  به صفحه ی مربوطه رفته و نسخه های مختلف این اسمبلر قدرتمند و عالی را  دانلود کنید .


2- درحال توسعه است .  روسسم  یا همان  RosAsm  بواسطه ی اینکه  نرم افزار آزاد محسوب می شود و در گیتهاب  ، سورس و باینری اش در دسترس است  توسط برنامه نویسان گیتهاب ، درحال توسعه است . البته  بیشتر ، همان تیم اولیه درحال توسعه ی ان هستند .

بنابراین هم خود اسمبلر و هم منابع و مستندات اش درحال آپدیت به نسخه ی جدید می باشند و عملا  RosAsm  برخلاف تصور ،  اصلا نمرده و  هنوز نفس می کشد .


شما می توانید با مراجعه به گیتهاب  شاهد پیشرفت اسمبلر  RosAsm  باشید  .


2- بدلیل اینکه  یک نرم افزار آزاد محسوب می شود  شما خودتان نیز می توانید با کدنویسی در پیشرفت و توسعه ی این اسمبلر  سهیم و شریک باشید .  کافیست عضو گیتهاب شوید .

بنابراین از طرف خودتان نیز قابل توسعه  و پیشرفت است .


3- در انحصار هیچ شرکت  یا گروهی نیست .  یک نرم افزار کاملا آزاد است  .


4-  نیازی به نصب ندارد . فقط مراحل پیکربندی اش کمی وقت شما را می گیرد .  اگر  خواستید می توانید در  بخش کامنتها  مراحل پیکربندی این اسمبلر را بپرسید   تا  شرح دهم .


5-   دارای  Disassembler و  Reassembler   در جهت انجام عملیات مهندسی معکوس نرم افزارهای ویندوزی می باشد . البته   فقط نرم افزارهای ساده ی کوچک که حجم شان کمتر از 100  کیلوبایت باشد را می تواند   کرک  کند . 

نباید انتظار داشته باشید که قدرتی معادل با  Ollydbg  یا  IDA pro  داشته باشد !!!!


بیشتر به درد مهندسی معکوس نرم افزارهایی می خورد که توسط سایر کامپایلرهای اسمبلی ساخته  شده باشند .


6- یک  Debugger  قدرتمند و هوشمند دارد  که خط به خط  دستورات زبان اسمبلی را برایتان ارزیابی و رفع اشکال می کند . لذا شما را از  debugger های  خارجی مثل  Ollydbg   تقریبا بی  نیاز می کند .


7-  یک  IDE  منحصر به فرد دارد که فقط مختص خودش می باشد و با خودش بصورت یکپارچه  بکار می رود .


8- تمامی اجزای  محیط برنامه نویسی شامل  IDE  ،  کامپایلر ،  اسمبلر ،  ریسورس کامپایلر ، پارسر ،  دیس اسمبلر ، ری اسمبلر  و  encoding  همگی در قالب یک فایل اجرایی  می باشد و عملا این اسمبلر را براحتی می توان جابجا کرد و قابلیت حمل بالایی در محیط ویندوز دارد .


9-  تنها اسمبلر دنیاست  که   از  رهنمود  include  استفاده نمی کند . لذا مجبور نیستید  صدها  فایل  با پسوند  inc  را به درون برنامه های RosAsm   ،  ضمیمه کنید . این باعث افزایش قابلیت حمل و جابجایی  RosAsm شده است . 


10 - سورس  RosAsm  کاملا درون خودش قرار دارد لذا  شما مجبور نیستید مدام سورس اش را  جابجا کنید و نگران گم شدن یا خراب شدن فایلهای سورس نخواهید بود .


سورس  RosAsm  در بخش پایانی فایل  اجرایی  RosAsm  قرار دارد .یعنی بعنوان آخرین سکشن  قرار می گیرد .


11- دارای لینکر منحصر به فرد است که فقط خودش چنین لینکری دارد .  لینکر RosAsm  در بخش انتهایی  اسمبلر درونی اش  قرار دارد .  یعنی در زیر  بخش assember  . در این مورد باید  به سورس  RosAsm مراجعه کرده و روی  تب  assembler  کلیک کنید و عبارت MZ  را جستجو کنید تا به انتهای بخش  assembler برسید . آنجا به  لینکر برخورد می کنید .



12- برای دسترسی به سورس  RosAsm  کافیست این اسمبلر را ازطریق خودش باز کنید .

یعنی روی فایل اجرایی این اسمبلر کلیک کرده و بعد خود این فایل را از درون خودش باز کنید تا به سورس اش  دسترسی پیدا کنید .  همانطور که گفتم سورس  این اسمبلر در درون شکم خودش قرار دارد و از طریق خودش قابل دسترسی و حتی اصلاح و ریکامپایل می باشد .


هر تغییری که دوست داشته باشید می توانید در این اسمبلر ایجاد کنید ولی البته باید دو نسخه از این اسمبلر را داشته باشید و  یکی از آنها را تغییرنام دهید . وگرنه اجازه ی رونویسی به شما نمی دهد . 


یا می توانید از روی فایل اصلی  کپی گرفته و این فایل کپی را با نامی دلخواه  مثلا casm  تغییر نام دهید . بعد واردش شده  و هرچی  لغت RosAsm دیدید با این نام جدید رونویسی کنید و سپس کامپایل کنید . اینطوری یک اسمبلر جدید ساخته می شود و بعد دست شما برای ایجاد تغییرات کاملا باز می شود .


13- سورس برنامه هایی که توسط  RosAsm  ساخته می شوند  درون شکم خودشان قرار می گیرد . دقیقا شبیه به خود  RosAsm  . 


برای ویرایش سورس نرم افزارهایی که توسط  RosAsm  ساخته شده اند باید حتما آنها را از درون  RosAsm باز کنید و بعد شروع به کدنویسی و ایجاد تغییرات دلخواه بکنید  و بعد با فشردن  کلید   F6  نرم افزار را مجددا  کامپایل کنید (ریکامپایل) . روسسم ذاتا یک دیس اسمبلر و ری اسمبلر است ولی دارای توانایی دیکامپایل و ریکامپایل نیز می باشد



جابجا کردن نرم افزارهایی که توسط  RosAsm  ساخته می شود بدلیل اینکه کل نرم افزار در یک فایل قرار دارد  بسیار آسان و راحت است  .  بنابراین نرم افزارهای این اسمبلر قابل حمل و جابجایی بوده و   محیط برنامه نویسی تان نیز یک محیط خلوت و تمیز و خوانا می باشد .


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



سیاست طراح  اسمبلر  RosAsm بر این بوده که محیط کارتان خلوت و تمیز باشد و نرم افزارهایتان براحتی جابجا شوند و هیچ چیزی در حین جابجایی از قلم نیفتد . 


ایشان کاملا با برنامه نویسی ماژولار ( قطعه قطعه )   مخالف بودند .    


ناگفته نماند که  من خودم نیز با برنامه نویسی ماژولار مخالف هستم  چون  آثار دیوانه کننده ای دارد . آدم به معنای واقعی  از برنامه نویسی بیزار می شود . (موقعی که  کامپوننتهای مختلف دلفی 6  را می خواستم کامپایل کنم  دلفی  6  مدام پیام می داد که فلان فایل سورس یا کتابخانه  یافت نشد درحالیکه بیخ گوش اش بود ولی نمی دیدش  !!!! 

خیلی وقتها هم  می بایست تمام نت را به دنبال برخی فایلها بگردم . خلاصه اینکه  برنامه نویسی ماژولار واقعا  سخت است  و مدام با پیامهای خطا مبنی بر یافت نشدن فلان فایل یا خراب بودن فلان فایل مواجه می شوید که بدجوری  اعصاب و روان ادم را  خط خطی می کند .  شخصا از  زبانهای برنامه نویسی ماژولار خوشم نمی آید . )


اسمبلر RosAsm  همانند  زبان ماشین ( هگز ادیتور)    از روش برنامه نویسی تک فایلی (مونوفایلینگ) استفاده می کند یعنی تمامی اجزای نرم افزار در داخل یک فایل هستند و عملا پیامهای مبنی بر یافت نشدن یا خراب بودن فلان فایل هرگز  ظاهر نمی شود  .



14- دارای ابزارهایی برای برنامه نویسی شیئ گرا و ویژوال ،  می باشد .



15- چندین پارسر قدرتمند دارد که امکان برنامه نویسی با  گرامر سایر اسمبلرها و حتی زبانهای سطح بالا را به شما می دهد . ( چنین امکان جالبی را در هیچ اسمبلر دیگری نخواهید دید  ) .



16-  اسمبلر RosAsm  یک اسمبلر کاملا  (100درصد) خالص و سطح پایین و اصیل است و هیچ وابستگی به هیچکدام از زبانهای سطح بالا ندارد  . 


درواقع در اسمبلر  RosAsm  شما  اگر از ماکرو  یا   پارسر  استفاده نکنید هرگز نمی توانید از  سینتاکس  اسمبلی سطح بالا  یا زبانهای شبه سطح بالا استفاده کنید .


بنابراین اگر تمایل دارید که در  RosAsm با  گرامری شبیه به گرامر  زبانهای سطح بالا یا اسمبلی سطح بالا برنامه نویسی کنید  دو انتخاب دارید :


1- ماکرو


2- پارسر


اینطوری شما اگر ذاتا به اسمبلی علاقه مند نباشید یا دوست داشته باشید تجربه ای جدید بدست اورید  می توانید  با استفاده از ماکرو یا پارسر  مشکل خود را حل کنید .


ماکرو برای برنامه نویسان و  پارسر برای  مهندسین کامپیوتر   . 


البته  شما خودتان هم  می توانید پارسر جدید طراحی کرده و بسازید و مثلا زبان پایتون یا هر زبان دیگری را که به آن علاقه دارید  در درون اسمبلر  RosAsm  پیاده سازی کنید   ولی برای اینکار شما باید حتما  مهندس کامپیوتر باشید و دروسی همچون اصول طراحی کامپایلر را به معنای واقعی متوجه شده باشید . 


صرف برنامه نویس اسمبلی بودن ،  نمی تواند در این مورد که موردی بسیار تخصصی است  به شما  کمکی بکند.


بهرحال  RosAsm  اسمبلی خالص صحیح  سطح پایین استاندارد واقعی و حقیقی است . یعنی همان  دیس اسمبلی .


عملا  بین  RosAsm   و   Disassembly  هیچ فرقی  دیده نمی شود  .  RosAsm   سطح پایین ترین شکل سینتاکس  زبان اسمبلی را  به شما نشان می دهد .




اگر در سورس  RosAsm و برنامه هایش با کلمات زیر مواجه شدید ( که مسلما مواجه خواهید شد)   بدانید که اینها همگی  ماکرو  هستند  و هرگز  جزو  سینتاکس (گرامر)  RosAsm  محسوب نمی شوند:

ماکروهای  اسمبلر  RosAsm  :

if

else

else if

on

while

do

for

next

 proc

end proc


until


case


message


argument


…..

…..

 همه چیز ذاتا  در  اسمبلر  RosAsm  بصورت  دیس اسمبلی ( اسمبلی خالص استاندارد  کاملا سطح پایین )   می باشد  مگر اینکه  از ماکرو استفاده شده باشد .


نکته ی مهم:


تمامی ماکروهای  RosAsm  قابل رمزگشایی هستند . کافیست روی هر ماکرو دابل کلیک کنید و بعد روی عبارت  Unfold   کلیک کنید تا   کادری با عنوان  macro unfolding باز شود .  در این کادر  ،  دستورات دیس اسمبلی معادل با آن ماکرو را پیدا می کنید .


برخلاف برخی اسمبلرها ، ماکروهای  اسمبلر  RosAsm ،  کاملا  باز و قابل رمزگشایی هستند و قابل فهم می باشند .


متاسفانه برخی اسمبلرهای بسیار معروف و قدرتمند مثل فلت اسمبلر ، از یک سیستم ماکرو اینستراکشن    گنگ و نامفهوم  و پیچیده و تودرتو   استفاده می کنند که اصلا کاربرپسند نیست .  مثلا در همین فلت اسمبلر اصلا نمی توان فهمید که  ماکروی  if  با کدام دستورات زبان اسمبلی مطابقت دارد .


درحالیکه  در اسمبلر  RosAsm  ،  کافیست  بر روی   ماکروی  if   راست -کلیک کنید تا  به محلی که این ماکرو  تعریف شده بروید و با دستورات اسمبلی مربوطه  آشنا شوید . برای بازگشت کافیست مجددا  راست کلیک کنید تا به محلی که ماکرو  در کد بکار رفته   بازگردید .


عملا همه چیز در اسمبلر  RosAsm  ، واضح و شفاف و قابل فهم است  . 


با این وجود،   من توصیه می کنم برای فهم کامل زبان اسمبلی ، از ماکرو استفاده نکنید .


استفاده از ماکرو مانع فهم زبان اسمبلی می شود و شما مجددا به خانه ی اول (زبان سطح بالا )  برمی گردید . 


من  خودم شخصا  در محیط  RosAsm   از مدل   دیس اسمبلی  (DisAssembly)  برای برنامه نویسی  استفاده می کنم .  اصلا و ابدا از هیچ پارسر یا ماکرو   استفاده نمی کنم . چون می دانم که استفاده از ماکرو یا پارسر  مانع بسیار بزرگی بین  من و زبان اسمبلی ایجاد می کند و عملا یک کار بیهوده و نوعی خود فریبی است . 

قرار نیست من بعنوان برنامه نویس زبان اسمبلی ، از ماکرو و پارسر برای فریب دادن خودم استفاده کنم .    نباید خودتان را فریب دهید .


برهمین اساس،  من همیشه در  اسمبلر RosAsm   از  اسمبلی کاملا سطح پایین یعنی   دیس اسمبلی  برای نوشتن برنامه   استفاده می کنم و هرگز از ماکرو یا پارسر  استفاده نمی نمایم .


مثلا بجای نوشتن  عبارتهای   proc   و  end proc   از  دستورات خالص اسمبلی به شرح زیر در برنامه هایم  استفاده می کنم که بسیار شبیه به دیس اسمبلی می باشد  :


push   ebp

mov  ebp , esp


……


 mov  esp , ebp


pop  ebp


یا مثلا بجای استفاده از  if  از  cmp  استفاده می کنم . چون می دانم که در زبان اسمبلی چیزی بنام  if   نداریم و باید بجایش از دستور  cmp  استفاده کرد . cmp  یعنی  compare  یعنی مقایسه .


یا می دانم که در اسمبلی چیزی بنام  then  نداریم و باید بجایش از  jump  یا  jcc     استفاده کرد .

jcc  یعنی چیزی مثل  je  یا  jne  یا  jg  یا  jl  یا  jge  و ...



البته من آزمایش کردم و دیدم به شرط استفاده از ماکرو  می توانم  از  then  نیز در RosAsm   استفاده کنم ولی اینکار مرا از  فهم  دیس اسمبلی و باینری  محروم می کند و من اصلا دوست ندارم هیچ چیزی   مرا از فهم حقیقت   منع کند .  



برنامه نویسی به سبک دیس اسمبلی  ، واقعا لذتبخش است و باعث می شود که سورس و دیس اسمبلی نرم افزارهایتان عینا  یکسان باشد و اینطوری شما خیلی راحت می توانید  دیس اسمبلی نرم افزارهای ویندوزی و البته  باینری را  رمزگشایی نمایید .


توصیه می کنم  برای رمزگشایی باینری ویندوز و نرم افزارهایش  یک مدت با سبک دیس اسمبلی  در  RosAsm  برنامه نویسی کنید . نمی دانید چه لذتی دارد. 



البته  این بنده ی حقیر ، افتخار برنامه نویسی با  زبان ماشین را نیز دارم . یعنی با کمک  hex editor  مستقیما با کدهای هگزادسیمال زبان ماشین تحت ویندوز ،  نرم افزار نوشته ام  بنابراین علاوه بر دیس اسمبلی ،  باینری را نیز می توانم رمزگشایی کنم .


مثلا  تفاوت بین  FF15  و   E8  را می دانم . هردوی اینها  به معنای  Call می باشند ولی یک تفاوتهایی دارند که دانستن اش  واقعا  جذاب  و مفید است . 


بعد از تمام کردن  معرفی تمامی کامپایلرهای زبان اسمبلی و  تدریس این زبان قدرتمند ،  اگر عمرم به دنیا باقی باشد  قصد دارم روش برنامه نویسی با زبان ماشین تحت  هگز ادیتور را نیز  آموزش دهم که البته  همان تدریس کردن اش  کار بسیار بسیار بسیار سخت و دشواری است  ولی به همان اندازه  شیرین و لذتبخش است  .


زبان ماشین ؛   قدرتمندترین ، سریعترین ، کاملترین ، همه منظوره ترین ، دشوارترین ، استانداردترین  ، واقعی ترین  ، حوصله سوزترین  و البته  اصیل ترین زبان برنامه نویسی دنیا می باشد و هیچ رقیبی ندارد .


هیچ  زبان برنامه نویسی در دنیا حریف زبان ماشین نمی شود و هرگز نمی تواند جای زبان ماشین را بگیرد .   هیچ زبانی حتی اسمبلی  قادر به رقابت با زبان ماشین  نیست .


دلیلش را خودتان می دانید  :  زبان ماشین  ، تنها زبان واقعی و حقیقی کامپیوتر است و عملا  سایر زبانها حتی اسمبلی در مقابل زبان ماشین در حکم اسباب بازی کودکان هستند .


ضمنا  زبان ماشین  زبانی است  کاملا دستی و تحت کنترل کامل و مستقیم برنامه نویس  . توی زبان ماشین  ما چیزی به نام اسمبلر یا کامپایلر یا لینکر یا ....  نداریم . همه چیز دستی است .


زبان ماشین یک زبان همه  منظوره به معنای واقعی کلمه است .  شما با هیچ زبانی نمی توانید محتویات هارد دیسک یا رم  یا  کارت گرافیک  کامپیوتر را با دست و مستقیم  ویرایش کنید .  فقط با زبان ماشین قادر به انجام  هک سخت افزار هستید .  


هک سخت افزار با زبان اسمبلی یا زبانهای سطح بالا  فقط یک شوخی است .   هکر واقعی  فقط با  زبان ماشین  سروکار دارد . 


برنامه نویس حرفه ای و باتجربه  ،  حتی اسمبلی را نیز بکار نمی برد و  مستقیم از خود زبان ماشین استفاده  می کند و وقتش را بابت یادگیری صدها زبان سطح بالا و صدها کامپایلر زبان اسمبلی  هدر نمی دهد . 



بعدا اگر عمری بود  بطور مفصل  در مباحث مربوط به زبان ماشین ، به این موضوع می پردازم .  انشاء ا...



17- سهولت کدنویسی در  اسمبلر  RosAsm   . 

اسمبلر RosAsm  در ساده ترین و سریعترین شکل ممکن  با کمترین میزان کد  امکان برنامه نویسی با زبان اسمبلی را به شما می دهد .


مثلا برای نوشتن برنامه ی  hello world   در  اسمبلر  RosAsm  کافیست این کدها را بنویسید و کلید F6  را فشار دهید تا برنامه ؛   کامپایل ، بیلد  و  ران (اجرا)  شود :



main:


push   &MB_OK 

push   caption

push   text

push  0

call   'USER32.MessageBoxA'


push 0

call   'KERNEL32.ExitProcess'


[caption:  B$  ' hello  world ' , 0     text:  B$  'win32 Assembly by RosAsm  is very  easy '  , 0  ]


دقت کنید که برنامه را در فولدر  RosAsmFiles  کامپایل کنید وگرنه برنامه فقط کامپایل و بیلد می شود اما  ران (اجرا)  نمی شود . 


می بینید که هیچ پیشوند و پسوندی در اسکلت سورس این برنامه دیده نمی شود . نه نیازی  به صدها  include  دارید ( تمامی اسمبلرهای دنیا )   نه  اینکه مجبورید لینکر را با دست بنویسید ( فلت اسمبلر) . 


فقط کافیست کد برنامه را بنویسید .  به همین راحتی .   کلی در وقت تان صرفه جویی می شود.

من خودم بعنوان یک برنامه نویس مبتدی و بی حوصله که وقت سرخاراندن ندارم  فقط از  RosAsm  استفاده می کنم .


18- ابزار قدرتمند  encoding  که  برای  رمزگشایی کدهای زبان ماشین  بکار می رود.  این ابزار رابطه ی نزدیک بین زبانهای ماشین و اسمبلی را به شما نشان می دهد  و به شما در فهم باینری ( زبان ماشین )    کمک می کند . این ابزار ،  خویشاوندی نزدیک زبانهای  ماشین و اسمبلی   را عملا برای شما به نمایش می گذارد .


در این ابزار می توانید یک دستور زبان اسمبلی مثلا  ret    را در فیلد بالایی نوشته و سپس کلید  Enter را فشار دهید یا روی دکمه ی encode کلیک کنید  .  به محض انجام اینکار  در فیلد پایینی شاهد  کد  زبان ماشین در مبنای هگزادسیمال  خواهید بود :


C3


عکس این عمل نیز امکان  پذیر است یعنی کافیست در فیلد  پایینی    یک  کد زبان ماشین مثل همین  C3  را تایپ کرده و  روی دکمه ی   Decode  کلیک کنید  تا  دستور اسمبلی معادل را به شما نشان دهد .  این یکی خیلی خوب است و به رمزگشایی زبان ماشین  کمک بزرگی می کند .

 

شما با کمک ابزار  encoding  می توانید انکود (رمزگذاری - کامپایل)   و دیکود (رمزگشایی - دیکامپایل)   کنید و باینری را رمزگشایی کنید و لذت ببرید . 




19-  مستندات آموزشی در قالب نرم افزارهای  واکنش گرا :


یکی از امتیازات  اسمبلر  RosAsm  نسبت به سایر اسمبلرها در اینست که یک اسمبلر کاملا  آموزشی است و شما را با زبان اسمبلی کاملا   آشنا می کند .

مستندات  آموزشی این اسمبلر بسیار زیاد است که البته هم در پکیج اصلی و هم در سایر پکیجها  می توانید این مستندات را مطالعه کنید .  بعدا  اگر عمری بود  سایر پکیجهای مربوط به  اسمبلر  RosAsm  را  آپلود می کنم .


اما نکته ی جالب اینجاست که برخی از این مستندات در قالب نرم افزار ارائه شده اند و شما باید  ابتدا اسمبلر RosAsm را اجرا کرده و بعد این نرم افزارهای واکنش گرا و هوشمند را  باز و اجرا کنید تا بصورت  گام به گام روش برنامه نویسی با اسمبلی را به شما اموزش دهند !!


این نرم افزارها  همگی رایگان و اوپن سورس هستند و توسط خود  RosAsm  ساخته شده و توسط خودش نیز اجرا می شوند و به صورت هوشمندانه و واکنش گرا  و گام به گام  روش برنامه نویسی با زبان اسمبلی و  روش برنامه نویسی خاص در  RosAsm  را به شما  یاد می دهند .



امتیازات  اسمبلر  RosAsm  بسیار زیادند اما الان آنها را فراموش کرده ام و به یاد نمی اورم  . خودتان وقتی که  این اسمبلر را دانلود و اجرا کردید متوجه  می شوید که این اسمبلر چه امتیازات فراوانی نسبت به سایر اسمبلرها دارد . 


+

+


معایب :


1- وابستگی  به  ویندوز  و  اینتل  ( عدم قابلیت حمل سخت افزاری )


2-  فقط  نرم افزار  32 بیتی  تولید می کند ( به درد طراحی  سیستم  عامل  نمی خورد )


3- در هر زمان فقط یک برنامه را باز می کند و  اگر کد را ذخیره نکرده باشیم برنامه ی جدید برنامه ی  قبلی را رونویسی می کند  و همه ی زحمات مان هدر می رود .


4- اگر کدی که نوشته ایم خطا داشته باشد و کد را کامپایل کنیم (کلید F6 را بزنیم )  اسمبلر  RosAsm  یک پیام خطا می دهد و بعد خودش را خاموش می کند  و عملا  تمام زحماتمان هدر می رود . پس لازمست در حین کدنویسی حتما  سورس برنامه مان را  مدام ذخیره کنیم . مثلا هر 1 دقیقه یکبار .

اینطوری اگر هر اتفاقی بیفتد  سورس برنامه را می توانیم مجددا وارد اسمبلر کرده و بعد از رفع خطا ، آنرا کامپایل کنیم  و نرم افزار تولید و اجرا می شود .


پس یادتان باشد مرتبا  و دقیقه به دقیقه   سورس برنامه هایتان را ذخیره کنید تا درصورت بروز هر اتفاقی  زحمات تان  به باد نرود .




البته  این معایب  با توجه به  اوپن سورس بودن  این اسمبلر  قابل  رفع  می باشند .

پس لازم نیست زیاد نگران باشید .

 

درکل ، نرم افزارهای آزاد  هرچقدر هم که ناقص یا معیوب باشند این اجازه  را به شما می دهند که خودتان  آستینها  را بالا زده و با کدنویسی دقیق و صحیح  ، معایب را برطرف کنید.


بنابراین معایبی که در بالا  برشمردم  عملا  نباید باعث نفرت شما از این اسمبلر  شود چون خودتان می توانید با بازنویسی سورس ،  این معایب را برطرف کنید و مثلا  امکان برنامه  نویسی در مدلهای 16 و 64 بیتی را به آن اضافه کنید تا بتوانید با کمک ان  یک سیستم عامل بسازید .  


در مجموع ، نواقص  اسمبلر RosAsm   به مراتب کم تر از  محاسن اش می باشد و قابل چشم پوشی است  . 


من خودم شخصا  ترجیح می دهم که تحت ویندوز فقط با  RosAsm  زبان اسمبلی را  بکار گیرم  چون در وقت صرفه جویی می شود .   من عمر نوح و صبر ایوب ندارم پس ترجیح می دهم که فقط با  RosAsm  در کامپیوترم برنامه بنویسم .



اگر سوالی دارید   بپرسید .  جواب می دهم .


اگر احیانا به مشکل برخورد کردید  حتما  با من در میان بگذارید تا بررسی کنم .

+


موضوعات وبلاگ وحیدمی :

من  در تمامی پستهای وبلاگ وحیدمی ، سعی می کنم لااقل یک اشاره ای به موضوعات این وبلاگ داشته باشم . به همین دلیل برای تمامی پستهای این وبلاگ ،  تمام جعبه های موضوعات  وبلاگ  شامل  Idea ،  Assembly  ،  vahidmy  ، Music  ، Binary ، OS ، Weblog ، IT   ؛  را تیک می زنم که البته در دنیای وبلاگنویسی،  این رفتار ؛   کاری مضحک  و بی معنا و غیرحرفه ای محسوب می شود  ولی من به این قواعد و استانداردهای وبلاگنویسی اهمیت نمی دهم و دوست دارم هرطور که دلم می خواهد وبلاگنویسی نمایم و آزاد باشم . لذا  همینقدر که یک اشاره ی کوچک به این موضوعات در همین پاراگراف شد ،  از نظر خودم ، کافی است !!

من تافته ی جدابافته هستم و به سبک خودم وبلاگنویسی می نمایم  و به استانداردهای دنیای وبلاگنویسی اهمیت نمی دهم و برایم مهم نیست که مخاطبان پشت سرم چه می گویند . من به اشتهای مردم غذا نمی خورم و نگران حرف و حدیثهایی که مردم پشت سرم در می آورند نیستم و بی خیال و خونسرد هستم .

من رسومات  کهنه ی دنیای  وبلاگنویسی و مرزهای علم را جابجا می کنم !!

از نظر من ضرورتی ندارد که محتویات یک پست با موضوع مربوطه همخوانی داشته باشد لذا مجبور نیستم در تمام پستها در رابطه با  موضوعات وبلاگ ام  ، مطلب بنویسم . همینقدر که در همین پاراگراف که در تمام پستها انرا کپی  و الصاق می نمایم ، به این موضوع اشاره کردم از نظر خودم کفایت می کند !!


از نظر شما اینکار نوعی ترول گری و اسپم سازی است ولی من اهمیت نمی دهم که اینکار اسپم می باشد یا نه . می توانید پشت سرم هرچه قدر خواستید حرف بزنید و مرا مسخره کنید و به من بخندید ولی من اصلا اهمیت نمی دهم  .


این پاراگراف در تمامی پستهای وبلاگ وحیدمی  توسط خودم ، عینا الصاق و تکرار می شود .


+




وحید محمدی -  وبلاگ  وحیدمی  


https://vahidmy.blog.ir