м.
За допомогою дизассемблера дозволяє досліджувати існуючі програми при відсутності вихідного коду.
Недоліки
Складну програму написати на мові асемблера набагато складніше - аж до неможливості, з причини складності, - ніж на мові високого рівня.
У силу машинної орієнтації - низького рівня - мови асемблера людині складніше читати і розуміти програму на ньому в порівнянні з програмою на мові високого рівня. А підлягає редагуванню асемблерний код порівняно великий, - програма на мові асемблера складається з надто дрібних елементів - машинних команд. Відповідно, ускладнюються програмування та налагодження, росте трудомісткість розробки, порівняно велика ймовірність програмних помилок.
Потрібна висока кваліфікація програміста. Код на асемблері виконується швидше, але написаний недосвідченим програмістом, зазвичай виявляється гірше згенерованого компілятором з мови високого рівня
Як правило, менша кількість доступних бібліотек в порівнянні з сучасними індустріальними мовами програмування.
Програми на мові асемблера НЕ стерпні на комп'ютери з іншою архітектурою і системою команд як на рівні машинних команд так і на рівні вихідних кодів, що у випадку з мовами асемблера одне і те ж.
1.3 Застосування
Історично можна розглядати мова асемблера як друге покоління мов програмування ЕОМ. (Якщо перший вважати числові двійкові коди машинних команд.) Вади мови асемблера, складність розробки на ньому великих програмних комплексів привели до появи мов третього покоління - мов програмування високого рівня. Зокрема: Фортран, Лісп, Кобол, Паскаль, Сі і багатьох ін. Саме мови програмування високого рівня та їх спадкоємці в основному використовуються в даний час в індустрії інформаційних технологій. Однак мови асемблера зберігають свою нішу, обумовлює їх унікальними перевагами в частині ефективності і можливості повного використання специфічних засобів конкретної платформи.
На мовіасемблера пишуть підпрограми (в даний час досить рідко програми пишуться на асемблері цілком), для яких критично важливі:
· швидкодія (драйвери);
· обсяг використовуваної пам'яті (завантажувальні сектори, вбудовуване (англ. embedded) програмне забезпечення, програми для мікроконтролерів і процесорів з обмеженими ресурсами, віруси, програмні захисту).
З використанням програмування мовою асемблера виробляються:
Оптимізація критичних до швидкості підпрограм в програмах на мовах високого рівня, таких як C ++ або Pascal. Це особливо актуально для ігрових приставок, що мають фіксовану продуктивність, і для мультимедіа-кодеків, які прагнуть робити менш ресурсоємними і більш швидкими і, отже, більш популярними.
Створення операційних систем (ОС) або машінозавісімих компонентів ОС. Причому переважна більшість ОС в даний час пишуть на Сі - мові високого рівня, який спеціально був створений для написання однієї з перших версій UNIX. Невеликі шматочки ОС, такі як завантажувач ОС, рівень абстрагування від апаратного забезпечення (hardware abstraction layer) і ядро, часто пишуться з застосуванням ассемблерних вставок або асемблерних підпрограм. Фактично, ассемблерного коду в ядрах Windows або Linux зовсім небагато, оскільки автори прагнуть забезпечити переносимість і надійність, але, тим не менш, він там присутній. Деякі аматорські ОС, такі як MenuetOS, цілком написані на мові асемблера. При цьому MenuetOS поміщається на дискету і містить графічний багатовіконний інтерфейс. При цьому через складність написання великих програм на асемблері на MenuetOS не існує має практичну цінність прикладного програмного забезпечення, а продуктивність системи з причини високої ентропії не настільки велика, як можна було б очікувати від програмного забезпечення написаного цілком на асемблері
Програмування мікроконтролерів (МК) та інших вбудованих процесорів. На думку професора Таненбаума, розвиток МК повторює історичний розвиток комп'ютерів новітнього часу. На сьогоднішній день для програмування МК вельми часто застосовуються нерідко, але вже рідше, ніж мови високого рівня. У МК доводиться переміщати окремі байти і біти між різними осередками пам'яті. Програмування МК вельми важливо, оскільки, на думку Таненбаума, в автомобілі і квартирі сучасної цивілізованої людини в середньому міститься 50 мікроконтролерів.
Створення драйверів. Деякі ділянки драйверів, програмують на мові асемблера. Хоча в цілому в даний час драйвери також намагаються писати на мовах високого рівня у зв'язку з підвищеними вимогами до надійності і достатньою продуктивністю сучасних процесорів і достатнім досконалістю компіляторів з мов виск...