View Full Version : سوال مهم انواع زبان اسمبلی
pars1376
سه شنبه 06 خرداد 1393, 10:47 صبح
اصلا نمیدونم این سوالی که میپرسم درست هست یا نه!
اما بقل معروف پرسیدن عیب نیست....
سوال اول- ما مگه چند نوع زبان اسمبلی داریم؟ چون یه جا خونده بودم اسمبلی 8086! خب یعنی چی؟ اگه میشه انواعش رو نام ببرید.
و فرقشون هم بگین
2 این که نوع اسمبلر چیه؟ به سیستم عامل ربط داره؟
و اگه یه سری نکات تکمیلی هست ممنون میشم بگید
vahid-p
سه شنبه 06 خرداد 1393, 15:08 عصر
برای هر CPU میتونیم یه زبان اسمبلی خاص داشته باشیم. گرچه همه در مبنا یکی هستند، ولی بسته به نوع CPU، دستورات متفاوتی قابل دسترس است.
مثلا علاوه بر سی پی یو های معمولی، برای میکروکنترلر ها که باز برنامه پذیرند اسمبلی وجود داره. نفس زبان یکیه،فقط دستورات متفاوته.
فرض کنید یک سی پی یو از دستور MUL پشتیبانی میکنه یک سی پی یو نه. پس اسمبلی که حاوی دستور MUL هست رو نمیشه رو اون سی پی یویی که پیشتیبانی نمیکنه اجرا کرد. اونجا مثلا با جمع های متوالی باید انجام بدی.
خلاصه اینکه تنوع دستورات، سایز ریجسترها و تعداد ریجستر ها متفاوت همگی تاثیر دارن.
یه مثال از سایز ریجسترها بزنم :
فرض کن تو 8086 ماکزیمم سایز ریجسترها AX,BX,... است که برابر 16 بیت هست. تعداد این ریجسترهای عام منظوره هم 4 تا بیشتر نیست.
اما در پردازنده های جدید 32 بیتی ماکزیمم سایز ریجسترها EAX,EBX,... هست که برابر با 32 بیت است. تعدادشون هم از 4 تا بیشتره.
در پردازنده های جدید 64 بیتی ماکزیمم سایز ریجسترهای RAX,RBX و... هست که برابر با 64 بیت است. تعدادشون هم بیشتره.
خب همه اینها در دستورات، کدهای زبان ماشین و... تاثیر میذارن و باعث میشن که کدهای مختلفی تولید کنند.
pars1376
سه شنبه 06 خرداد 1393, 15:55 عصر
اسمبلی رو تو همون داس مینویسن دیگه؟
یعنی اسمبلی هیچ ربطی به سیستم عامل نداره؟
vahid-p
سه شنبه 06 خرداد 1393, 18:09 عصر
DOS خودش سیستم عامله.
اسمبلی تا جایی که از امکانات سیستم عامل استفاده نکنی، به سیستم عامل بستگی نداره و کاملا به CPU بستگی داره.
یه مثال بزنم برات :
شما در اسمبلی میتونید اینتراپت ها رو خودتون بنویسید. و از اون ها استفاده کنید، در نتیجه مستقل از سیستم عامل است. میتونید از اینتراپت های BIOS استفاده کنید که به BIOS بستگی داره ولی به سیستم عامل خیر.
ولی اگر بخواهید از اینتراپت های سیستم عامل استفاده کنید، خب اونوقت مشخصه که مستقل از سیستم عامل نیست. ولی برای اینکه مستقل باشه، بهتره از اینتراپت های سیستم عامل استفاده نکنید.
اینتراپت های سیستم عامل اونهایی هستند که با INT 21h انجام میشن ( البته سیستم عامل DOS منظورمه ). بقیه اینتراپت ها فکر کنم مربوط به BIOS هست. اگه اشتباه نکنم فقط همون یکی مربوط به سیستم عامل dos هست.
خب شما برای راحتی کار از اینتراپت هایی استفاده میکنید که همراه بالا اومدن ویندوزتون یا سیستم عامل DOS رو رم قرار میگیرن. حالا میتونید کاری به اونا نداشته باشید و مثلا خودتون INT 50h ( برای مثال گفتم ) رو برای خودتون در نظر بگیرید و بنویسید. یکم ریزه کاری داره ولی به هر حال اونوقت از اینتراپت های سیستم عامل استفاده نکردید. توصیه اینه بیشتر از اینتراپت های BIOS استفاده کنید.
موفق باشید
vahid-p
سه شنبه 06 خرداد 1393, 18:11 عصر
کامپایلر های مختلف که برای سیستم عامل های متنوع وجود دارن هم همین کار رو میکنن. کارهای مشابه رو با دستورات و اینتراپت های متفاوت برای سیستم عامل مقصد انجام میدن.
تو زبان های Native مثل C , C++ اینا دقیقا همین کار صورت میگیره. کد یکسان، اسمبلی متفاوت و در نتیجه زبان ماشین متفاوتی داره.
جاوا اینا یه سطح بالاترن. یعنی JVM ش برای سیستم عامل های مختلف متفاوته نه خود برنامه جاوا.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.