- •Питання до модульного контролю № 1
- •Охарактеризувати поняття: інформація, її джерела, форми представлення, інформаційні процеси, мірила визначення, ентропія, надлишковість дискретного повідомлення.
- •Структурна схема обчислювальної системи, основні вузли.
- •Відеосистема обчислювальної системи, текстовий і графічний режими роботи.
- •Питання до модульного контролю № 2
- •Навести алгоритм побудови гістограми розподілу випадкових чисел.
- •1. Структура процесорної шини
- •Операнди та основні режими адресації
- •Етапи виконання команд
- •Мови програмування високого рівня
- •Різні погляди на програмування і різні парадигми програмування
- •Алгоритм rle
- •Алгоритми групи kwe
- •Алгоритм Хафмана
- •Основними джерелами вірусів є:
- •Звідси випливає, що зараження комп'ютера не відбудеться, якщо:
- •Основними ранніми ознаками зараження комп'ютера вірусом є:
- •Коли вірус переходить в активну фазу можливі такі ознаки:
- •Існує дуже багато різних вірусів. Умовно їх можна класифікувати наступним чином:
- •Розрізняють такі типи антивірусних програм:
- •Виконавець алгоритму
- •Властивості алгоритму
- •Базові структури алгоритму
- •9. Написання програми
- •Асемблери
- •Основні вимоги до програм
- •1. Правильність.
- •2. Ефективність.
9. Написання програми
Компілятор сприймає програму, написану мовою високого рівня. Текст цієї програми називається початковим кодом. Результатом роботи компілятора є об'єктний код. Різні частини програми можуть компілюватися незалежно. Програма, яка збирає в єдине ціле незалежно відкомпільовані об'єктні модулі, називається редактором зв'язків. При цьому відбувається налаштування програми на реальні машинні адреси, з якими вона буде працювати. Результатом роботи редактора зв'язків є програма, готова до виконання (часто вона називається завантажувальним модулем). Ця програма може бути негайно виконана, а може бути збережена на диску. Програма, яка завантажує готову програму в оперативну пам'ять і забезпечує її запуск на виконання, називається завантажувачем. Завантажувач у найбільш типовому випадку є частиною операційної системи. Він повинен розмістити програму в оперативну пам'ять і передати їй керування (це означає встановлення програмного лічильника на першу команду програми, що виконується). Розрізняють абсолютні і налаштовуючі завантажувачі. Абсолютний завантажувач розміщує програму за жорстко заданими адресами. Для цього в об'єктному і завантажувальному коді повинні бути визначені конкретні адреси комірок пам'яті, з якими буде працювати програма. Налаштовуючий завантажник важче реалізувати, але він є значно більш гнучким. Він може розмістити програму в довільному місці пам'яті. При цьому в завантажувальному коді вказуються не явні адреси, а зміщення відносно початку програми.
Асемблери
Слід розрізняти поняття мови асемблеру і власне асемблери. Мовою асемблеру прийнято називати машинно-орієнтовану мову низького рівня (хоча і більш високого, ніж машинний код). Мова асемблеру має такі характерні особливості:
· одна команда асемблеру відповідає одній машинній команді. Певні послаблення цього принципу пов'язані з використанням макрокоманд, які на етапі підготовки програми автоматично замінюються деякою послідовністю машинних команд;
· на відміну від машинного коду, в мові асемблеру використовуються символічні позначення команд. Це робить програми, написані мовою асемблеру, придатними для сприйняття людиною, а сам процес програмування - більш простим і більш захищеним від помилок.
Асемблером називається програма, призначена для перекладу вихідних текстів програм, написаних мовою асемблера, в машинні коди. Сам процес перекладу називається асемблюванням. Зрозуміло, що асемблювання є набагато простішим, ніж трансляція з мов високого рівня.Втім, мови асемблеру часто також називають асемблерами. З контексту, як правило, зрозуміло, про що йде мова.Оскільки існує чітка відповідність між асемблерними інструкціями та машинними командами, досить легкою задачею виявляється зворотній переклад з машинної мови на мову асемблера. Така операція називається дизасемблюванням. Незважаючи на більш високу читабельність асемблерних програм порівняно з машинним кодом, програмування мовою асемблеру все-таки залишається досить марудною справою. Але доцільність використання асемблеру диктується такими основними міркуваннями:
· ефективність. Компілятори з мов високого рівня не завжди генерують код, що є раціональним з точки зору швидкодії або використання пам'яті. Якщо програму зразу написати мовою асемблера, вона може стати значно більш ефективною;
· необхідність використання в програмах низькорівневих операцій з пам'яттю, зовнішніми пристроями і т.п. Якщо мова високого рівня не надає відповідних можливостей, програмування на асемблері залишається єдиним виходом.
На сучасному етапі рідко хто програмує на чистому асемблері. Програми в основному пишуться мовами високого рівня; асемблер використовується для програмування лише окремих критичних операцій. Ряд мов високого рівня надають у розпорядження програміста вбудовані асемблери, які дозволяють органічно інтегрувати асемблерні фрагменти до програм, основна частина яких пишеться цими мовами.