Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Область вводу / виводу мікроконтролерів AVR

Регістри спеціальних функцій мікроконтролерів PIC

Регістри загального призначення

Пам'ять даних

Архітектура Мікроконтролера PIC

Самостійна робота № 30

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

Програмування

Самостійна робота № 29

Взаємодія вузлів ВМ86

Самостійна робота № 28

Структурна схема в мінімальному режимі

 

 

Структурна схема в максимальному режимі


 

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

Зазвичай використовується низькорівнева мова програмування або такий діалект мови програмування, яка дозволяє функціонування в оточенні з обмеженим набором системних ресурсів.

Працює максимально ефективно і має мінімальне запізнювання за часом завершення.

Має маленьку бібліотеку часу виконання (RTL) або не має її взагалі.

Дозволяє пряме управління (прямий доступ) до пам'яті і логіки, що управляє.

Дозволяє робити асемблерні вставки в код.

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

Системне програмування істотно відрізняється від прикладного, що зазвичай приводить до спеціалізації програміста в одному з них.

Низькорівнева мова програмування (мова програмування низького рівня) - мова програмування, близький до програмуванню безпосередньо в машинних кодах використовуваного реального або віртуального (наприклад, Java, Microsoft .NET) процесора. Для позначення машинних команд зазвичай застосовується мнемонічне позначення. Це дозволяє запам'ятовувати команди не у вигляді послідовності двійкових нулів і одиниць, а у вигляді осмислених скорочень слів людської мови (зазвичай англійських).

Загальновідомий приклад низкоуровнего мови - мова асемблера, хоча правильніше говорити про групу мов асемблера. Більш того! Для одного і того ж процесора існує декілька видів мови асемблера! Вони збігаються в машинних командах, але розрізняються набором додаткових функцій (директив і макросів).

Також до мов низького рівня умовно можна зарахувати MSIL, вживаний в платформі Microsoft .NET, Форт, Java байт-код.

Спочатку, програмісти безваріантно писали на мові асемблера. Експерименти з підтримкою устаткування в мовах високого рівня (1960s привели до появи таких, як BLISS і BCPL. Проте, мова програмування Сі, що зіграла значну роль в створенні UNIX, завоювала велику популярність і розповсюдилася повсюдно до 1980-м роках.

В даний час (2006) деяке застосування знайшлося для вбудовуваного C++. Реалізація основних часток в операційній системі і при використанні мереж потребує розробників системного ПО. Наприклад, реалізація постраничности (через віртуальну пам'ять) або драйвери пристроїв.

Термін Системне програмування безпосередньо пов'язаний з терміном Системний програміст. Це програміст, що працює (що створює, відладжує, діагностує і т. п.) над системним програмним забезпеченням.

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

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

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

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

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

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

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

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

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

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

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

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

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

Асемблери для 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, представили свої варіанти асемблерів. У ряді випадків застосування цих асемблерів виявляється ефективнішим завдяки зручному набору директив і наявності середи програмування, об'єднуючу в собі професійний асемблер мова програмування СІ, відладчик і менеджер програмних проектів.

Програма приймача

org 0000h

jmp start

 

org 0023h

lcall uartpr ; обробка переривання від приймача

reti

 

org 0100h

start:

mov tmod,#00100000b ; настроювання режимів роботи таймера 1

mov ie,#10010000b ; дозвіл переривань від приемопередавача

 

mov tl1,#0FDh ; попередня установка таймера 1

mov th1,#0FDh

mov tcon,#01000000b ; запуск таймера 1

 

mov pcon,#0h ; настроювання приемопередавача

mov scon,#01010000b

jmp start

 

uartpr: clr ri ; скидання біта прийому, що сигналізує про закінчення

mov p2,sbuf ; відображення прийнятих даних

ret

 

end


 

 

Загалом, всі мікроконтролери побудовані за однією схемою. Система управління, що складається з лічильника команд і схеми декодування, виконує зчитування і декодування команд з пам'яті програм, а операційний пристрій відповідає за виконання арифметичних і логічних операцій; інтерфейс вводу / виводу дозволяє обмінюватися даними з периферійними пристроями, і, нарешті, необхідно мати пристрій, що запам'ятовує для зберігання програм і даних (рис. 1.1).

Рис. 1.1. Узагальнена структура мікроконтролера

Пам'ять даних призначена для запису / читання даних, використовуваних програмами. Є енергозалежною, тобто, при відключенні живлення мікроконтролера всі збережені в ній дані, будуть втрачені. У мікроконтролерах AVR пам'ять даних має більш розвинену структуру в порівнянні з мікроконтролера PIC, що показано на рис. 2.1.

Тут і далі шістнадцяткові числа будуть представлені у формі, прийнятої в мові С: з префіксом 0х.

Рис. 2.1. Структура пам'яті даних в мікроконтролерах AVR і PIC

 

Область статичної пам'яті SRAM (Static Random Access Memory) позначена на рис. 2.1 пунктиром, оскільки використовується не всіма мікроконтролера AVR (це відноситься як до внутрішньої, так і до зовнішньої SRAM). Її початкова адреса - 0x060, а верхній адресу - різний в різних пристроях.

У деяких мікроконтролерах AVR можна збільшувати простір пам'яті SRAM допомогою підключення зовнішніх блоків пам'яті аж до 64 Кбайт, однак для цього доводиться пожертвувати портами А і С, які в цьому випадку застосовуються для передачі даних і адрес.

Область регістрів загального призначення (робочих регістрів) призначена для тимчасового зберігання змінних і покажчиків, використовуваних процесором для виконання програм. У мікроконтролерах AVR вона складається з 32 восьмирозрядних регістрів (діапазон адрес 0x000 - 0x01F). У мікроконтролерах PIC регістри загального призначення також восьмирозрядних, проте їх кількість та діапазон адрес залежать від конкретного типу пристрою.

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

Регістри спеціальних функцій використовуються в мікроконтролерах PIC для управління різними операціями. Як і у випадку з регістрами загального призначення, їх кількість і адресація відрізняються від пристрою до пристрою. У програмах, написаних на мові С, безпосереднє звернення до регістрів спеціальних функцій звичайно не потрібно, якщо тільки не використовуються фрагменти на мові асемблера.

 

Область вводу / виводу мікроконтролерів AVR містить 64 регістра, використовуваних для керування або зберігання даних периферійних пристроїв. До кожного з цих регістрів можна звертатися за адресою вводу / виводу (починаючи з 0x000) або за адресою SRAM (у цьому випадку до адреси введення / висновку слід додати 0x020). У програмах на мові С зазвичай використовуються умовні імена регістрів вводу / виводу, а адреси мають значення тільки для програм на мові асемблера.

Імена, адреси введення / виводу і SRAM, а також короткий опис регістрів з області вводу / виводу мікроконтролерів AVR представлені в табл. 2.1. При цьому слід зазначити, що в різних моделях мікроконтролерів деякі з перерахованих регістрів не використовуються, а адреси, не вказані в табл. 2.1, зарезервовані компанією Atmel для використання в майбутньому.


Читайте також:

  1. Автоматизація вводу
  2. Гідрогеологічна область Українського шита
  3. Гідрогеологічна складчаста область Гірського Криму
  4. До зовнішнього водопроводу належать усі пристрої та споруди для забору, очищення, зберігання та розподілу води мережею до вводу в будівлю.
  5. Донецька гідрогеологічна складчаста область
  6. Загальна характеристика сітьових графіків, область використання.
  7. Карпатська складчаста гідрогеологічна область
  8. Коротка характеристика і область застосування різних способів посилення.
  9. Критична область
  10. Львівська область
  11. Львівська область
  12. Настроювання засобів вводу-виводу даних.




Переглядів: 1756

<== попередня сторінка | наступна сторінка ==>
Функціонування ЦП | 

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.027 сек.