اسمبلی میتونه به رجیسترها، پورتها و... دسترسی داشته باشه، اما ویژوال بیسیک، ذاتا نمیتونه.
پاسکال( و دلفی) و C ( و ویژوال سی) تقریبا" همه کارهایی که اسمبلی انجام میده رو میتونن انجام بدن. (مثل برنامه هایTSR، کار با وقفه، پورت، دسترسی به سکتور و ...)
- دسترسی به محتویات و وضعیت پردازنده ربطی به کامپایلر نداره .
- دسترسی به سخت افزار دو حالت داره :
غیر مستقیم و با استفاده از توابع سیستم عامل : همه زبانها ، کامپایلر و اسمبلر نقش ویژه ای ایفا نمیکنند .
مستقیم : نیاز به کد سطح کرنل است ، که اگر زبانی لینکر مناسب داشته باشد میتواند چنین کدی تولید کند و باز هم خود کامپایلر و اسمبلر نقش تعیین کننده ای ندارند .

در چه زبان برنامه نویسی می توان DLL یک و نیم کیلو بایتی ساخت؟؟؟؟؟
با خیلی از زبانها ، با استفاده از تنظیمات مناسب و بسته به کاربرد مورد نظر .

مثلاَ من در خط 20 برنامه دستور Mov Ax,2 را نوشته ام، من به راحتی میتوانم در زمان واقعی runtime مثلاَ در کدی که در خط 10 اجرا میشود، کد خط 20 را به Mov Bx,5 تغییر دهم!!
چه زبان دیگری میتواند کدهای خودش را در runtime خودش عوض کند؟
متامورفیسم ارتباطی به کامپایلر/اسمبلر ندارد . موتورهای متامورفیک متعددی با دلفی و سی نوشته شدن ، و البته اسمبلی .
ولی مسئله این است که مثلا من کدی در VB نوشته ام مثل i=5 آیا به همین را حتی ها میتوانم در زمان واقعی runtime آن را به a=7 تغییر دهم؟؟؟؟؟؟؟
قطعا . رجوع به توضیح قبلی .

حتی در VB8 هم به راحتی و بدون کمک از API میتوان حافظه را تغییر داد
زبانهائی که کد کرنل تولید نمیکنند ، من جمله دات نت و وی بی و دلفی و ... بدون توابع سیستم عامل ، به هیچ کدام از عناصر سخت افزاری ، من جمله حافظه ، دسترسی نخواهند داشت . تعامل با سخت افزار و سیستم عامل ، مسئله ای نیست که به زبان و کامپایلر بستگی داشته باشد . این مسئله به نحوهء تولید باینری و نوع دستورات بکار رفته در آن و نحوهء تعامل آن با سیستم عامل ، به عنوان کد User Mode یا کد Kernel Mode است . در تمامی مسائل مطرح شده ، نام بردن از یک زبان یا قیاس یک زبان با زبان دیگر بیهوده بود ، چون اصولا" این مسائل با زبان ارتباطی ندارند ؛

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

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