به نام خدا 


داستان آشنایی من با زبان اسمبلی 



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


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


سپس یک کتاب آموزش زبان ویژوال بیسیک خریدم و سپس مجموعه ویژوال استودیو 98 را خریدم و با زبان ویژوال بیسیک 6 تحت ویندوز98  برنامه نویسی می کردم . 


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


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


یادم می آید که یک دیکشنری انگلیسی به فارسی را به روش زیر و با کمک زبان ویژوال بیسیک شش  نوشتم و کامپایل و بیلد و ران کردم  و روی ویندوز 98 اجرا کردم : 


private  sub  Textbox1.Change 



If textbox1.text = " "   Then  Textbox2.text= "  "


If textbox1.text = " a "   Then  Textbox2.text= " یک "


If textbox1.text = "book "   Then  Textbox2.text= " کتاب "


If textbox1.text = " good"   Then  Textbox2.text= " خوب "


If textbox1.text = " bad "   Then  Textbox2.text= " بد "


If textbox1.text = "word "   Then  Textbox2.text= "کلمه-واژه  "


end sub 




معمولا برای ساخت دیکشنری یا مترجم متن ، از یک بانک اطلاعاتی استفاده می شود ولی من به ساده ترین روش یعنی به سبک بالا  ؛ دیکشنری ساختم زیرا هنوز روش ساخت بانک اطلاعاتی و البته روش برنامه نویسی با زبان ویژوال فاکس پرو شش را بلد نبودم و البته هیچگاه نتوانستم با زبان فاکس پرو  کار بکنم اما  در عوض با یک زبان برنامه نویسی زشت و زمخت و بی ریخت  و دشوار اما بسیار قدرتمند یعنی زبان ویژوال سی پلاس پلاس شش  آشنا شدم و از آنجا بود که با یک زبان  برنامه نویسی سمبلیک و نمادین به ظاهر ساده و تمیز و شسته رفته و خالص اما نامفهوم و بسیار بسیار دشوار و قدرتمند یعنی زبان اسمبلی آشنا شدم 


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


آنجا بود که من با چیزهایی به نام  eax و ebx و ecx و edx آشنا شدم و جالب اینکه هروقت ویندوز 98 به هم می  ریخت  دیباگر زبان ویژوال سی پلاس پلاس شش  پیامی صادر می کرد که در آن پیام اسامی فوق را به من نشان می داد . 

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


بطور اتفاقی با بازی معروف GTA  آشنا شدم و فهمیدم که برای ادامه بازی  باید کدهای تقلب را تایپ کنم تا گیم آور نشوم !! 


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


کل وب فارسی مملو بود از روش کرک نرم افزار و بازی ، با کمک زبان اسمبلی !!! 



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


من فهمیدم که  در وب فارسی هیچکس به رابطه ی نزدیک بین زبانهای سی پلاس پلاس و اسمبلی  پی نبرده یا اینکه نخواسته چیزی بگوید و می ترسیده دست زیاد شود !! 


قانع نشدم و در وب انگلیسی  لغت Assembly را جستجو کردم تا اینکه به صدها وبسایت انگلیسی و فرانسوی و چینی و روسی  برخورد کردم که در تمام آنها   عبارت win32 Assembly  به چشم می خورد !! 


یعنی برنامه نویسی با زبان اسمبلی تحت ویندوز !! 


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



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


ابتدا با masm32 آشنا شدم و آنرا روی ریشه ی درایو D نصب کردم و قدری با آن برنامه نوشتم و اسمبل و ران کردم و لذت بردم . 


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


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


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


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


داشتم می گفتم : 


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


در همین راستا ،  با Fasm آشنا شدم و دیدم که Fasm بسیار سریعتر و قویتر از masm32 می باشد زیرا سیستم عامل هایی را با آن ساخته بودند که با هیچ زبان دیگری ساخته نمی شدند  ضمنا  Fasm  کاملا رایگان و اوپن سورس و آزاد و خودکامپایل بود و توسط خودش ساخته شده بود  لذا بسیار سریعتر و قدرتمندتر از Masm32 بود و کارایی بیشتری داشت . 


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



سپس با تعدادی انیمیشن سه بعدی آشنا شدم که بطور کامل با hex editor  یعنی زبان ماشین ساخته شده بودند 



سپس با کمک Fasm  و ابزارهای کرک  توانستم بر معماری ویندوز مسلط شوم  طوریکه چند نرم افزار ساده و کوچک ویندوزی را با دست و با کمک hex editor برای ویندوز نوشتم 


سپس در جستجوی decompiler بودم که بطور اتفاقی با  Ida pro و سپس  بومرنگ  و سپس با RosAsm   آشنا شدم 


ابتدا خیال کردم که  RosAsm یک decompiler است  اما خیلی زود فهمیدم که RosAsm یک کامپایلر قدرتمند زبان اسمبلی است که البته  از ابزارهایی همچون disassembler و ReAssembler و debugger برخوردار است و آن کدهایی که من دیده بودم ماکرو بودند . 


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


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


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



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


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



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



بنابراین  نرم افزار ویژوال استودیو 98  و   البته دلفی شش را بطور کامل حذف کردم و  مستقیما به سراغ زبان اسمبلی رفتم . 


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


مخلص کلام : 


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


در واقع ؛ این اسمبلی بود که مرا با خودش آشنا کرد . 


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


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



نکته ی مهم : 


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


Fasm 


 RosAsm 



بگذریم ....



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



من می دانستم که بیل گیتس خبیث و بی وجدان  به چه دلیلی فناوری احمقانه Dot NET FrameWork  را به زور توی حلق کاربرها فرو کرد : 


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



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


حالا همه خوشحال بودند که ویژوال بیسیک و سی پلاس پلاس  از قدرت و کیفیت یکسان برخوردار شده اند !!! 


در حالیکه در  ویژوال استودیو  دات نت ؛  بازهم  کما فی السابق   شاهد  کد اسمبلی نبودیم و  نیستیم تا با مقایسه کد اسمبلی بتوانیم  از یکسان بودن قدرت بیسیک و سی پلاس پلاس  مطلع شویم !! 


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


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




با این حساب از کجا باید بفهمیم که قدرت و سرعت و کیفیت  زبانهای بیسیک و سی پلاس پلاس  ؛ یکسان و برابر شده است ؟؟؟؟؟!!!!!! 


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


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



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



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



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



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



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


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



این جمله را مدام در ذهن تان مرور کنید : 



"  بیل گیتس از ویندوز تا واکسن کرونا "