Мнемокод - це

Команди мови асемблера один до одного відповідають командам процесора. фактично, вони є більш зручну для людини символьну форму запису (мнемокод) команд і їх аргументів.

Директиви асемблера дозволяють, зокрема, включати блоки даних, задати ассемблирование фрагмента програми по умові, задати значення міток, використовувати макроозначення з параметрами.

Кожна модель (або сімейство) процесорів має свій набір команд і відповідний йому мову асемблера.

Існують ЕОМ. реалізують в якості машинного мову програмування високого рівня (Forth. Lisp. Ель-76), фактично в них він є «асемблером».

Гідності й недоліки

Переваги мови асемблера

  • Майстерний програміст, як правило, здатний написати ефективнішу програму на асемблері, ніж ті, що генеруються трансляторами з мов програмування високого рівня, тобто для програм на асемблері характерне використання меншої кількості команд і звернень в пам'ять. що дозволяє збільшити швидкість і зменшити розмір програми.
  • Забезпечення максимального використання специфічних можливостей конкретної платформи, що також дозволяє створювати більш ефективні програми з меншими витратами ресурсів.
  • При програмуванні на асемблері можливий безпосередній доступ до апаратури, в тому числі портів введення-виведення, регістрів процесора. та ін.

Недоліки мови асемблера

застосування

Історично можна розглядати асемблер як друге покоління мов програмування ЕОМ (якщо першим вважати машинний код). Недоліки асемблера, складність розробки на ньому великих програмних комплексів привели до появи мов третього покоління - мов програмування високого рівня (Фортран, Лісп, Кобол, Паскаль, Сі і ін.). Саме мови програмування високого рівня і їх спадкоємці в основному використовуються в даний час в індустрії інформаційних технологій. Однак, мови асемблера зберігають свою нішу, яка зумовлює їх унікальними перевагами в частині ефективності і можливості повного використання специфічних засобів конкретної платформи.

На асемблері пишуться програми або фрагменти програм, для яких критично важливі:

  • швидкодія (драйвери. гри);
  • обсяг використовуваної пам'яті (завантажувальні сектора, вбудовується (англ. embedded) програмне забезпечення, програми для мікроконтролерів і процесорів з обмеженими ресурсами, віруси. програмні захисту).

З використанням програмування на асемблері проводяться:

Нелегальна сфера діяльності

Програмування на мові асемблера характерно також для нелегальних сфер діяльності в ІТ, зокрема, з використанням асемблера проводяться:

Зв'язування програм на асемблері з іншими мовами

Оскільки на асемблері часто розробляються тільки фрагменти програм, їх необхідно пов'язувати з іншими частинами програмної системи, написаними на інших мовах.

Це досягається 2 основними способами:

  • На етапі компіляції - вставка в програму асемблерних фрагментів (англ. Inline assembler) за допомогою спеціальних директив мови (зокрема, даний спосіб підтримується мовою програмування Сі), в тому числі написання процедур на мові асемблера. Спосіб зручний для нескладних перетворень даних, але повноцінного ассемблерного коду, з даними і подпрограммами, включаючи підпрограми з безліччю входів і виходів, які не підтримуються високорівневими мовами, за допомогою нього зробити не можна.
  • На етапі компонування. або роздільна компіляція. Для взаємодії скомпонованих модулів досить, щоб сполучні функції (визначені в одних модулях і використовуються в інших) підтримували потрібні угоди виклику (англ. Calling conventions) і типи даних. Написані ж окремі модулі можуть бути будь-якими мовами, в тому числі і на асемблері.

Синтаксис мови асемблера визначається системою команд конкретного процесора.

набір команд

Типовими командами мови асемблера є (більшість прикладів дані для архітектури mov. Lea і т. Д.)
  • Аріфметічекіе команди (add. Sub. Imul і т. Д.)
  • Логічні та побітові операції (or. And. Xor. Shr і т. Д.)
  • Команди управління ходом виконання програми (jmp. Loop. Ret і т. Д.)
  • Команди виклику програмних переривань (іноді відносять до команд управління): int. into
  • Команди введення / виведення в порт (in. Out)
  • Для мікроконтролерів і мікроЕОМ характерні також команди, що виконують перевірку і перехід по умові, наприклад:
    • cbne - перейти, якщо не дорівнює
    • dbnz - декрементіровать, і якщо результат ненульовий, то перейти
    • cfsneq - порівняти, і якщо не дорівнює, пропустити наступну команду

    інструкції

    Типовий формат запису команд:

    Використовувані мнемоніки зазвичай однакові для всіх процесорів однієї архітектури або сімейства архітектур (серед широко відомих - мнемоніки процесорів і контролерів Motorola. ARM. X86). Вони описуються в специфікації процесорів. Можливі виключення:

    • Якщо асемблер використовує багатоплатформовий ATT -сінтаксіс (оригінальні мнемоніки приводяться до синтаксису ATT)
    • Якщо спочатку існувало два стандарти запису мнемонік (система команд була успадкованою від процесора іншого виробника).

    Наприклад, процесор Zilog Z80 успадковував систему команд Intel i8080. розширив її і поміняв мнемоніки (і позначення регістрів) на свій лад. Процесори Motorola Fireball успадковували систему команд Z80. кілька її урізавши. Разом з тим, Motorola офіційно повернулася до мнемоніку Intel. І в даний момент половина ассемблеров для Fireball працює з интеловский мнемониками, а половина з мнемониками Zilog.

    Програма на асемблері може містити директиви. інструкції, які не переводяться безпосередньо в машинні команди, а керують роботою компілятора. Набір і синтаксис їх значно різняться і залежать не від апаратної платформи, а від використовуваного транслятора (породжуючи діалекти мов в межах одного сімейства архітектур). Як «джентельменський набір» директив можна виділити наступні:

    • визначення даних (констант і змінних)
    • управління організацією програми в пам'яті і параметрами вихідного файлу
    • завдання режиму роботи компілятора
    • всілякі абстракції (тобто елементи мов високого рівня) - від оформлення процедур і функцій (для спрощення реалізації парадигми процедурного програмування) до умовних конструкцій і циклів (для парадигми структурного програмування)
    • макроси

    приклад програми

    Приклади програми Hello, world! для різних платформ і різних діалектів:

    Приклад програми для

    Походження і критика терміна «мова асемблера»

    Даний тип мов отримав свою назву від назви транслятора (компілятора) з цих мов - асемблера (англ. Assembler - складальник). Назва останнього обумовлено тим, що програма «автоматично збиралася», а не вводилася вручну покомандно безпосередньо в кодах. Слід мати на увазі можливу плутанину термінів: ассемблером в сучасній російській мові називають як мова програмування, так і транслятор з нього.

    Мова асемблера в українській мові також іноді називають «автокод».

    Використання терміну «мову асемблера» також може викликати помилкове думка про існування такого собі єдиного мови низького рівня, або хоча б стандарту на такі мови. При іменуванні мови асемблера бажано уточнювати, асемблер для якої архітектури мається на увазі.

    Примітки

    1. ↑ Ендрю Танненбаум. Архітектура комп'ютера. 5-е изд.
    2. ↑ Е. Танненбаум. Архітектура комп'ютера. 3-е изд.
    3. ↑ Кріс Касперски. мистецтво дизассемблирования

    література

    Програмні пакети для програмування на асемблері

    WinAsm • ASMedit • Easy Code • Fresh

    Дивитися що таке "Мнемокод" в інших словниках:

    мнемокод - mnemokodas statusas T sritis automatika atitikmenys: angl. mnemocode; mnemonic code vok. Buchstabencode, m; mnemonischer Code, m; mnemotechnischer Befehlscode, m rus. мнемокод, m; мнемонічний код, m pranc. code mnémonique, m ... Automatikos terminų žodynas

    мнемокод - у, ч. спец. Сімволічній Запис машінної командіровку, покладених в основу машінозорієнтованіх мов ... Український тлумачний словник

    Пропуск - Цей термін має також інші значення див. Пробіл (значення). Пропуск Пунктуація апостроф ... Вікіпедія

    Нерозривний пробіл - Пропуск інтервал між буквами, що позначає межі слів у багатьох системах писемності. Пропуск функціонально належить до знаків пунктуації. Пропуск порівняно пізніше винахід. Його не було в фінікійському і первісних варіантах ... ... Вікіпедія

    Пропуск (символ) - пробіл інтервал між буквами, що позначає межі слів у багатьох системах писемності. Пропуск функціонально належить до знаків пунктуації. Пропуск порівняно пізніше винахід. Його не було в фінікійському і первісних варіантах ... ... Вікіпедія

    Прогалини - Пропуск інтервал між буквами, що позначає межі слів у багатьох системах писемності. Пропуск функціонально належить до знаків пунктуації. Пропуск порівняно пізніше винахід. Його не було в фінікійському і первісних варіантах ... ... Вікіпедія

    Чотири пробілу - Пропуск інтервал між буквами, що позначає межі слів у багатьох системах писемності. Пропуск функціонально належить до знаків пунктуації. Пропуск порівняно пізніше винахід. Його не було в фінікійському і первісних варіантах ... ... Вікіпедія

    Схожі статті