
- •Методичні вказівки
- •«Системне програмування»
- •5.05010201«Обслуговування комп’ютерних систем і мереж»
- •Рецензія
- •Тема 3. Мова програмування Assembler ……………………………..……..135
- •1.1. Історія розвитку мов системного програмування Питання для опрацювання
- •Методичні рекомендації
- •1. Класифікація мов програмування
- •2. Розвиток мов системного програмування
- •Студент повинен
- •Питання для самоконтролю
- •Історія виникнення мови програмування с
- •2. Сфери застосування мови програмування с
- •1. Двійкова, вісімкова та шістнадцяткова системи числення.
- •2. Формати представлення чисел у різних системах числення.
- •3. Стандарти представлення чисел зі знаком.
- •Формати з плаваючою комою
- •Векторні формати
- •Приклади
- •Студент повинен
- •Питання для самоконтролю
- •Література
- •Питання для опрацювання
- •Методичні рекомендації
- •Приклад:
- •2. Керуючі послідовності
- •1. Види логічних операцій, які виконуються в комп’ютері.
- •За структурою
- •За типом запису даних
- •За архітектурними особливостями
- •За формою подання даних
- •Залежно від часу виконання операцій
- •Залежно від реалізації мікроалгоритму
- •Пристрій управління
- •Операційний пристрій
- •Регістри
- •2. Алгоритми виконання логічних операцій.
- •Побітові логічні операції
- •Бітові зсуви
- •Бітові операції як основа цифрової техніки[ред. • ред. Код]
- •Студент повинен
- •Питання для самоконтролю
- •Література
- •Питання для опрацювання
- •Методичні рекомендації
- •Студент повинен
- •Питання для самоконтролю
- •Література
- •Питання для опрацювання
- •Методичні рекомендації
- •Порядок використання вбудованих функцій під час написання програм.
- •2. Порядок практичного використання багатовимірних масивів під час створення програм.
- •Студент повинен
- •1. Порядок задання і створення масивів структур.
- •2. Порядок практичного використання масивів структур під час створення програм.
- •1. Створення динамічних масивів за допомогою вказівників.
- •2. Передача аргументів процедур та функцій з використанням вказівників.
- •3. Використання масивів вказівників.
- •Студент повинен
- •Питання для самоконтролю
- •1. Головні означення та властивості теорії графів.
- •Зображення графів на площині
- •1. Порядок переходу у графічний режим виводу інформації.
- •2. Функції для побудов геометричних фігур.
- •1. Базові поняття об’єктно‑орієнтованого програмування (ооп).
- •2. Успадкування та поліморфізм.
- •Практичні прийоми програмування з використанням об’єктів.
- •Студент повинен
- •Питання для самоконтролю
- •Література
- •Тема 3. Мова програмування Assembler
- •3.1. Спеціалізоване використання регістрів процесора Intel 8086 Питання для опрацювання
- •Методичні рекомендації
- •1. Спеціалізоване використання регістрів даних.
- •2. Спеціалізоване використання регістрів-вказівників.
- •3.2. Способи адресації пам’яті у процесорах Intel 8086
- •1. Регістрова адресація.
- •2. Безпосередня адресація.
- •3. Пряма адресація.
- •4. Непряма адресація та її різновиди.
- •Питання для самоконтролю
- •1. Особливості роботи з відеорежимами.
- •2. Порядок задання кольору для виведення даних.
- •1. Функції для керування роботою послідовного порту
- •2.Функції для керування роботою паралельного порту
2. Розвиток мов системного програмування
Мова Асемблера – це символічне представлення машинної мови. Він полегшує процес програмування в порівнянні з програмуванням в машинних кодах.
Програмісту не обов'язково вживати справжні адреси елементів пам'яті з розміщеними в них даними, що беруть участь в операції, а також адреси тих команд, до яких програма не звертається. Замість них вказується їх символьне позначення (MOV ax, bx).
Деякі завдання, наприклад, обмін з нестандартними пристроями обробки даних складних структур неможливо вирішити за допомогою мов програмування високого рівня. Це під силу асемблеру.
У принципі, мова Асемблер є машинною мовою. І програміст що реалізовує яке-небудь завдання на мовах високого рівня, за допомогою Асемблера може визначити чи осмислено рішення даної задачі, з погляду використання ЕОМ. Але на Асемблері програмувати складно, тому у більшості випадків інтерфейс програми складається на мовах високого рівня, а команди обміну даними із пристроями вводу/виводу складаються на Асемблері. Тому практично всі компілятори мов програмування високого рівня дозволяють розміщувати асемблерні вставки у програмах користувача.
Сі – це мова програмування загального призначення, добре відома своєю ефективністю, економічністю, і переносимістю. Вказані переваги Сі забезпечують хорошу якість розробки майже будь-якого виду програмного продукту. Використання Сі як інструментальна мова дозволяє одержувати швидкі і компактні програми. У багатьох випадках програми, написані на Сі, порівнянні за швидкістю з програмами, написаними на мові асемблера. При цьому вони мають кращу наочність і їх простіше супроводжувати. Сі поєднує ефективність і потужність у відносно малій за розміром мові.
Сі – це чудова мова, і хоча деяким він не подобається, але все таки більшість програмістів його люблять. На Сі ви можете створювати програми, які роблять все, що ви побажаєте. Немає іншої такої мови, яка б так само стимулювала до програмування. Створюється враження, що решта мов програмування споруджує штучні перешкоди для творчості, а Сі – ні. Використання цієї мови дозволяє скоротити витрати часу на створення працюючих програм. Сі дозволяє програмувати швидко, ефективно і передбачено. Ще одна перевага Сі полягає в тому, що він дозволяє використовувати всі можливості вашої ЕОМ. Ця мова створена програмістом для використання іншими програмістами, чого про інші мови програмування сказати не можна.
Мова Сі має свої істотні особливості, давайте перерахуємо деякі з них:
Сі забезпечує повний набір операторів структурного програмування. Сі пропонує незвично великий набір операцій. Багато операцій Сі відповідають машинним командам, і тому допускають пряму трансляцію в машинний код. Різноманітність операцій дозволяє вибирати їх різні набори для мінімізації результуючого коду. Тобто один і той самий алгоритм можна описати з використанням різних операторів.
Сі підтримує покажчики (вказівники) на змінні і функції, тобто дозволяє працювати з динамічною пам’яттю. Покажчик на об'єкт програми відповідає машинній адресі цього об'єкта. За допомогою розумного використання покажчиків можна створювати ефективно-виконувані програми, оскільки покажчики дозволяють посилатися на об'єкти тим же самим шляхом, як це робить машина. Сі підтримує арифметику покажчиків, і тим самим дозволяє здійснювати безпосередній доступ і маніпуляції з оперативною пам'ятю не гірше ніж мова Асемблера.
Очевидно, що мова Сі також має ряд недоліків. Зокрема вона пред'являє достатньо високі вимоги до кваліфікації програміста. При вивченні Сі бажано мати уявлення про структуру і роботу комп'ютера. Велику допомогу і глибше розуміння ідей Сі, як мови системного програмування, забезпечать хоч би мінімальне знання мови асемблер. Рівень старшинства деяких операторів не є загальноприйнятим, деякі синтаксичні конструкції могли б бути краще, оскільки завдяки їх простоті вони часто втрачають зрозумілість. Проте, як виявилося Сі – надзвичайно ефективна і виразна мова, придатна для широкого класу завдань.
Назва Сі++ - винахід літа 1983-його. Раніші версії мови використовувалися починаючи з 1980-го і були відомі як "Cі з Класами". Спочатку мова була придумана тому, що автор хотів написати покроково керовані моделі для чого був би ідеальний Simula67, якщо не брати до уваги ефективність. "Cі з Класами" використовувався для крупних проектів моделювання, в яких строго тестувалися можливості написання програм, що вимагають (тільки) мінімального простору пам'яті і часу на виконання. У "Cі з Класами" не вистачало перевантаження операцій, посилань, віртуальних функцій і багатьох деталей. Сі++ був вперше введений за межами дослідницької групи автора в липні 1983-го. Проте тоді багато особливостей Сі++ були ще не придумані.
Назву Сі++ вигадав Рік Масситті. Назва указує на еволюційну природу переходу до нього від Cи. "++" - це операція інкременту в Cи. Трохи коротше ім'я Cі+ є синтаксичною помилкою, крім того, його вже було використано як ім'я зовсім іншої мови. Назви D мова не одержала, оскільки вона є розширенням Cі і в ній не робиться спроб зцілитися від проблем шляхом викидання різних особливостей.
Сі++ - це універсальна мова програмування, задумана так, щоб зробити програмування приємнішим для серйозного програміста. За винятком другорядних деталей Сі++ є надбудовою мови програмування Cи. Крім можливостей, які дає Cи, Сі++ надає гнучкі і ефективні засоби визначення нових типів. Використовуючи визначення нових типів, що точно відповідають концепціям застосування, програміст може розділяти програму, що розробляється, на частини, що легко піддаються контролю. Такий метод побудови програм часто називають абстракцією даних. Програмування із застосуванням таких об'єктів часто називають об'єктно-орієнтованим. При правильному використанні цей метод дає коротші програми, що простіше розуміються і легше контрольовані.
Спочатку Сі++ був розроблений, щоб автору і його друзям не доводилося програмувати на асемблері, Cі або інших сучасних мовах високого рівня. Основним його призначенням було зробити написання хороших програм простішим і приємнішим для окремого програміста. Плану розробки Сі++ на папері ніколи не було. Проект, документація і реалізація рухалися одночасно. Зрозуміло, зовнішній інтерфейс Сі++ був написаний на Сі++. Ніколи не існувало "Проекту Сі++" і "Комітету з розробки Сі++". Тому Сі++ розвивався і продовжує розвиватися на всіх напрямках, щоб справлятися з складнощами, з якими стикаються користувачі, а також в процесі дискусій автора з його друзями і колегами.
Як базова мова для Сі++ був вибраний Cі, тому що він:
багатоцільовий, лаконічний і щодо низького рівня:
відповідає більшості завдань системного програмування:
придатний для роботи на різних типах ЕОМ і під керуванням різних операційних систем;
Сі++ був розвинений з мови програмування Cі і за дуже небагатьма виключеннями зберігає Cі як підмножину. Базова мова, Cі підмножина Сі++, спроектована так, що є дуже близька відповідність між його типами, операціями і операторами і комп'ютерними об'єктами, з якими безпосередньо доводиться мати справу: числами, символами і адресами.
Одним з первинних призначень C було застосування його замість програмування на асемблері в найнасущніших завданнях системного програмування. Коли проектувався Сі++, були вжиті заходи, щоб не ставити під загрозу успіхи в цій області. Відмінність між Cі і Сі++ полягає в першу чергу в ступені уваги, що приділяється типам і структурам.
Особлива увага, приділена при розробці Сі++ структурі, відобразилася на зростанні масштабу програм, написаних з часу розробки Cі. Маленьку програму (менше 1000 рядків) ви можете примусити працювати за допомогою грубої сили, навіть порушуючи всі правила хорошого стилю. Для програм великих розмірів це не зовсім так. Якщо програма в 10000 рядків має погану структуру, то ви виявите, що нові помилки з'являються так само швидко, як віддаляються старі. Сі++ був розроблений так, щоб дати можливість розумним чином структурувати великі програми так, щоб для однієї людини не було непомірним справлятися з програмами в 25 000 рядків. Існують програми набагато більших розмірів, проте ті, які працюють, в цілому, як виявляється, складаються з великого числа майже незалежних частин, розмір кожної з яких набагато нижче вказаних меж.
Природно, складність написання і підтримки програми залежить від складності розробки, а не просто від числа рядків тексту програми, так що точні цифри, за допомогою яких були виражені попередні міркування, не слід сприймати дуже серйозно.
Винахід мови програмування вищого рівня дозволив нам спілкуватися з машиною, розуміти її (якщо звичайно Вам знайома використовувана мова), як розуміє американець небагато знайомий з російською мовою стародавню азбуку Кирилиці. Простіше кажучи, ми в нашому розвитку науки програмування поки що з ЕОМ на ВИ. Повірте – це не сарказм ви тільки подивитеся як розвинулася наука програмування з того часу, як з'явилися мови програмування, адже мова програмування вищого рівня, судячи з усього ще немовля. Але якщо ми звернемо увагу на темпи зростання і розвитку новітніх технологій у області програмування, то можна припустити, що в найближчому майбутньому, людські пізнання в цій сфері, допоможуть породити мови, що уміють приймати, обробляти і передавати інформації у вигляді думки, слова, звуку або жесту. Так і хочеться назвати це дітище комп'ютеризованого майбутнього: (мови програмування "високого" рівня). Можливо, концепція рішення цього питання проста, а найближче майбутнє цього проекту вже не за горами, і у цей момент, де нібудь в Запоріжжі, Амстердамі, Токіо або Єрусалимі, перед стареньким Pentium3 горбить молодою, ніким не визнаний фахівець і розробляє новітню систему штучного інтелекту, яка нарешті дозволить людині, за допомогою своїх машинних мов, вести діалог з машиною на ТИ.
Роздумуючи над цим, хочеться вірити в прогрес науки і техніки, у високо - комп'ютеризоване майбутнє людства, як єдиної істоти на планеті, хай і що не використовує один, певна розмовна мова, але здатного так швидко прогресувати і розвивати свій інтелект, що і переходу від багатомовної системи до загального розуміння довго чекати не доведеться.
Завершити свою працю добре б на такій оптимістичній ноті, але ні, наприкінці хочеться процитувати людину, фрагменти роботи якого, у вигляді інформації про мову Сі, вам вже попадалися на сторінках цього тексту:
Єдиний спосіб вивчати нову мову програмування – писати на ній програми.
Б’єрн Страуструп