ормат запису машинних команд, зручний для сприйняття людиною. Часто для стислості його називають просто ассемблером, що не вірно.
Зміст мови.
Команди мови асемблера один в один відповідають командам процесора і, фактично, являють собою зручну символьну форму запису (мнемокод) команд і їх аргументів. Також мова асемблера забезпечує базові програмні абстракції: зв'язування частин програми і даних тих через мітки з символьними іменами (при асемблюванні [1] для кожної мітки вираховується адресу, після чого кожне входження мітки замінюється на цю адресу) і директиви [2].
Директиви асемблера дозволяють включати в програму блоки даних (описані явно чи лічені з файлу); повторити певний фрагмент вказане число разів; компілювати фрагмент за умовою; задавати адреса виконання фрагмента, відмінний від адреси розташування в пам'яті [уточнити!]; міняти значення міток в процесі компіляції; використовувати макроозначення з параметрами та ін.
Кожна модель процесора, в принципі, має свій набір команд і відповідний йому мову (або діалект) асемблера.
Переваги: ??
) Мінімальна кількість надлишкового коду, тобто використання меншої доличества команд та звернень в пам'ять, дозволяє збільшити швидкість і зменшити розмір програми.
) Забезпечення повної сумісності і максимального використання можливостей потрібної платформи: використання спеціальних інструкцій і технічних особливостей даної платформи.
3) При програмуванні на асемблері стають доступними спеціальні можливості: безпосередній доступ до апаратури, портам вводу-виводу і особливим регістрам процесора, а також можливість написання САМОМОДІФІЦІРУЮЩІЕСЯ коду (тобто метапрограмування, причому без необхідності програмного інтерпретатора).
) Останні технології безпеки, впроваджувані в операційні системи, не дозволяють робити САМОМОДІФІЦІРУЮЩІЕСЯ коду, так як виключають одночасну можливість виконання інструкцій і запис в одному і тому ж ділянці пам'яті (технологія W ^ X в BSD-системах, DEP в Windows).
Недоліки:
) Великі обсяги коду і велике число додаткових дрібних завдань, що призводить до того, що код стає дуже складно читати і розуміти, а отже ускладнюється налагодження та доопрацювання програми, а також труднощі реалізації парадигм програмування та будь-яких інших угод, що призводить до складності спільної розробки.
2) Менша кількість доступних бібліотек, їх мала сумісність між собою.
) Непереносимість на інші платформи (крім двійково сумісних).
Застосування.
Напряму випливає з достоїнств і недоліків.
Оскільки великі програми на асемблері писати вкрай незручно, їх пишуть на мовах високого рівня. На асемблері ж пишуть невеликі фрагменти або модулі, для яких критично важливі:
швидкодія (драйвери);
розмір коду (завантажувальні сектори, програмне забезпечення для мікроконтролерів і процесорів з обмеженими ресурсами, віруси, програмні захисту);
спеціальні можливості: робота безпосередньо з апаратурою або машинним кодом, тобто завантажувачі операційних систем, драйвери, віруси, системи захисту.
Зв'язування ассемблерного коду з іншими мовами.
Оскільки на асемблері найчастіше пишуть лише фрагменти програми, їх необхідно пов'язувати з іншими частинами на інших мовах. Це досягається 2 основними способами:
На етапі компіляції - вставка в програму ассемблерних фрагментів (англ. inline assembler) спеціальними директивами мови, в тому числі написання процедур на мові асемблера. Спосіб зручний для нескладних перетворень даних, але повноцінного ассемблерного коду, з даними і підпрограмами, включаючи підпрограми з безліччю входів і виходів, які не підтримуються високорівневими мовами, за допомогою нього зробити не можна.
На етапі компоновки, або роздільна компіляція. Для взаємодії скомпонованих модулів достатньо, щоб сполучні функції [3] підтримували потрібні угоди про виклики (англ. Calling conventions) і типи даних. Написані ж окремі модулі можуть бути будь-якими мовами, у тому числі і на асемблері.
Синтаксис.
Загальноприйнятого стандарту для синтаксису мов асемблера не існує. Однак, існують стандарти, яких дотримуються більшість розробників мов асемблера. Основними такими стандартами є Intel-синтаксис і AT amp; T-синтаксис.
Інструкції.
Загальний формат запису інструкцій однаковий для обох стандартів: [позначка:] опкод [операнди] [; коментар], де опкод - безпосередньо мнемоніка інстру...