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

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

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

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

Відсутня переносимість програм на комп'ютери з іншою архітектурою і системою команд (окрім двійково-сумісних).

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

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

- швидкодія (драйвери, ігри);

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

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

- оптимізація критичних до швидкості ділянок програм написаних на мові високого рівня, такому як C++. Це особливо актуально для ігрових приставок, біля яких фіксована продуктивність, і для мультимедійних кодеків, які прагнуть робити менш ресурсоємними і популярнішими;

- створення операційних систем (ОС). ОС часто пишуть на Сі, мові, яка спеціально була створена для написання однієї з перших версій Unix. Апаратні залежні ділянки коду, такі, як завантажувач ОС, рівень абстрагування від апаратного забезпечення - HAL і ядро, часто пишуться на асемблері. Асемблерний коду в ядрах Windows або Linux зовсім небагато, оскільки автори прагнуть до переносимості і надійність, але проте він присутній. Деякі любительські ОС, такі, як MENUETOS, цілком написані на асемблері. При цьому MENUETOS поміщається на дискету і містить графічний багатовіконний інтерфейс;

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

- створення драйверів. Деякі ділянки драйверів, що взаємодіють з апаратним забезпеченням, програмують на асемблері. Хоча в цілому в даний час драйвери прагнуть писати на мовах високого рівня у зв'язку з підвищеними вимогами до надійності. Надійність для драйверів грає особливу роль, оскільки в Windows NT і Linux драйвери працюють в режимі ядра. Одна помилка може привести до краху системи;

- створення антивірусів і інших захисних программ;

- написання трансляторів мов програмування.

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

Злом програм. «Оригінал» ПО, копії якого продаються незаконно, якщо в нім використовувалися технічні засоби захисту авторських прав, ймовірно, був зламаний за допомогою відладчика і знань мови асемблера. Це дозволяє за допомогою відладчика або дизасемблера знайти усередині коду програми функцію, відповідальну за введення коду активації або припинення роботи демонстраційної версії програми. Зломщик може змінити початковий код програми за допомогою спеціального редактора, або створити генератор ключа. Перший спосіб простіший для кінцевого користувача. Другою менш караний (УК РФ, ст. 272: до 2 років).

Створення вірусів і інших шкідливих програм (УК РФ, ст. 273: до 3 років, при тяжких наслідках до 7 років).

2. Види асемблерів

Асемблери для DOS . Найбільш відомими асемблерами для операційної системи DOS були Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM), і Watcom Assembler (WASM). Також свого часу був популярний простою асемблер A86.

Microsoft Windows. При появі операційної системи Microsoft Windows з'явилося розширення TASM, іменоване TASM32, що дозволило створювати програми для виконання в середі Windows. Остання відома версія TASM - 5.3, що підтримує інструкції MMX, на даний момент включена в Turbo C++ Explorer. Але офіційний розвиток програми повністю зупинено.

Microsoft підтримує свій продукт під назвою Microsoft Macro Assembler. Вона продовжує розвиватися і до цього дня, останні версії включені в набори DDK. Але версія програми, направлена на створення програм для DOS, не розвивається. Крім того, Стівен Хатчессон створив пакет для програмування на MASM під назвою «MASM32».

GNU і GNU/Linux. Сюди перенаправляється запит «GNU Assembler». На цю тему потрібна окрема стаття.

Сюди перенаправляється запит «gas». На цю тему потрібна окрема стаття.

До складу операційної системи GNU входить пакет binutils, асемблер gas (GNU Assembler), що включає, використовуючий AT&T-синтаксис, на відміну від більшості інших популярних асемблерів, які використовують Intel-синтаксис.

Переносимі асемблери. Також існує відкритий проект асемблера, версії якого доступні під різні операційні системи і який дозволяє отримувати об'єктні файли для цих систем. Називається цей асемблер NASM (Netwide Assembler).

Yasm - це переписана з нуля версія NASM під ліцензією BSD (з деякими виключеннями).

flat assembler (fasm) - молодий асемблер під модифікованою для заборони перелицензирования (включаючи під GNU GPL) BSD-лицензией. Є версії для KOLIBRIOS, GNU/Linux, DOS і Microsoft Windows, використовує Intel-синтаксис і підтримує інструкції AMD64.

8051 - класична архітектура мікроконтролера. Для неї існує крос-асемблер ASM51, випущений корпорацією MetaLink. крім того багато фірм, розробники програмного забезпечення, такі як IAR або keil, представили свої варіанти асемблерів. У ряді випадків застосування цих асемблерів виявляється ефективнішим завдяки зручному набору директив і наявності середи програмування, об'єднуючу в собі професійний асемблер мова програмування СІ, відладчик і менеджер програмних проектів.

К-во Просмотров: 287
Бесплатно скачать Курсовая работа: Низькорівневе програмування контроллера клавіатури