به نام خدا

تردید بین زبان ماشین و زبان اسمبلی


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

ببینید زمانی می توانیم زبانهای ماشین و اسمبلی را یک زبان واحد بنامیم و بدانیم که اسمبلی دستی دهه ی 40 میلادی را در نظر بگیریم . 


بله زمانیکه آلن تورینگ و همکاران اش زبان اسمبلی را در دهه  ی 40 میلادی اختراع کردند ، عملا هیچنوع کامپایلر وجود نداشت و لذا زبان اسمبلی همچون زبان ماشین یک زبان برنامه نویسی کاملا دستی بود . 


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

این اشتباه در جزوات رشته ی مهندسی کامپیوتر دانشگاههای ایران هنوز هم دیده می شود . 


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


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


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


خب برای اینکار من باید از یک سد بزرگ عبور کنم :


تردید بین زبان ماشین و زبان اسمبلی 



این تردید انقدر شدید است که حتی مرا نیز سست کرده است . 


طوریکه گاهی اوقات نمی دانم آیا باید زبان اسمبلی را تدریس کنم یا زبان ماشین را !!


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


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


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

ما هنوز در سال 2022 میلادی ، یک گرامر استاندارد بین المللی برای زبان اسمبلی نداریم و این خیلی دردناک است . 



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


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


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


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


NASM  = نتواید اسمبلر 


متاسفانه طراحان این اسمبلر معروف و قدیمی (محصول سال 1995  میلادی ) هنوز که هنوزه حاضر نیستند یک محیط برنامه نویسی یا یک ویراستار کاربر پسند برای این اسمبلر بسازند که واقعا مایه ی تاسف است . 


بدبختانه بازدید کنندگان نیز از میان دهها کامپایلر زبان اسمبلی از قضا به همین نتواید اسمبلر چسبیده اند که مرا متعجب کرده است . 


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


هیچگونه ide  استاندارد برای نتواید اسمبلر ساخته نشده است مگر SASM  که البته یک IDE مشترک برای چندین کامپایلر اسمبلی است و کارکردن با ان چندان جالب و کاربردی نیست  . 


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


من خودم شخصا نتواید اسمبلر را قبول ندارم و هرگز آنرا به شما آموزش نمی دهم چون واقعا یک چیز بی ارزش است و شما را از زبان اسمبلی دور می کند خصوصا اینکه سورس کد اش با زبان سی ساخته شده است و بقول معروف : نور علی نور است !!!!

بنابراین Nasm یا نتواید اسمبلر را از مغزتان دور بریزید و فراموش کنید و اینقدر این اسمبلر ناقص و کودن و قدیمی و مزخرف را بازدید و دنبال نکنید . 


+

+

Masm 


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


اما اجازه دهید یک واقعیت را به شما بگویم :

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


خصوصا اینکه Masm یا حتی Masm32  عملا به ویندوز چسبیده اند و به درد کاربران سایر سیستم عاملها از جمله لینوکس و مک و اندروید نمی خورند . 


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


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


+


RosAsm 


محصول سال 1998 میلادی - فرانسه 

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


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


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


بنابراین  شما باید این یکی را نیز فراموش کنید و فقط برای مقاصد آموزشی از او استفاده نمایید . 


ضمن این نیز هیچگونه سایت ندارد و توسعه اش سالهاست که متوقف شده است . 



+


Fasm  یا فلت اسمبلر :

محصول سال 1999 میلادی - لهستان

Fasm همچون RosAsm یک اسمبلر رایگان و اوپن سورس وخودکامپایل و آزاد است اما امتیازاتی دارد که هیچ اسمبلر دیگری ندارد . 


قبلا در پستهای قدیمی ، تعدادی از مزایای Fasm را تشریح کردم . 


لذا فقط در یک کلام می گویم که :


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



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


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


+


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


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


+

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

+

+

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


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


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


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


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



هرچند که بعید می دانم بتوانم خارج از ایران درس بخوانم لذا سعی می کنم با کمک اینترنت و سایتهای معتبر خارجی ، بصورت غیرمستقیم  در رشته ی مهندسی کامپیوتر یا علوم کامپیوتر درس بخوانم البته به روش خانگی و  خودخوان !!



خب سخن کوتاه می  کنم و از پست بعدی به آموزش زبان اسمبلی (Fasm)

می پردازم !


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


از این وبلاگ وحیدمی متنفر و بیزار شدم . 


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


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



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



آدرس وبلاگهای تخصصی ام در زمینه ی زبان اسمبلی :


https://fasmg.blog.ir



https://spasm.blog.ir



https://assembler.blog.ir



https://fasm.blogsky.com



https://rosasm.blogsky.com



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


لذا  چیزهایی مثل Spasm  یا RosAsm  که در واقع هردو یک چیز واحد هستند ، فقط جنبه ی آموزشی دارد و فقط روی ویندوز کاربرد دارند 


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


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


من از سیاست بیزارم و کاری به مسائل غیرمرتبط ندارم و هرچیزی که گفتم فقط دغدغه و یا نظر شخصی بود که دیگه تمام شد و رفت .


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


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


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


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

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

من فقط افکار و عقاید و نظرات  شخصی ام را نوشتم و هیچ منظور دیگری نداشتم . 

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



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


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


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


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


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


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

کامنتهای غیرمرتبط  تایید نمی شوند . 


+

ببخشید که  شما را خسته کردم .  


منتظر پستهای تخصصی  باشید . فعلا خدا نگهدار . 







+

+


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


https://vahidmy.blog.ir/sitemap.xml