МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет
„Львівська політехніка”
Кафедра САПР
Звіт
Про лабораторної роботи №3
На тему:
“СИСТЕМА ПРОГРАМУВАННЯ НА АСЕМБЛЕРІ”
З курсу „Системне програмування та операційні системи”
МЕТА РОБОТИ
Мета роботи - вивчення системи програмування на Асемблері ІВМ РС.
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Асемблер є мовою програмування низького рівня. Він забезпечує написання, відладку та виконання програм на рівні близькому до машинних команд. Основна область застосування Асемблера - написання високоефективних програм системного характеру (драйверів, динамічна відеографіка, обробка сигналів в режимі реального часу, тощо).
Програмування на Асемблері базується на системі програмування, яка забезпечує перехід від початкового файлу з текстом програми до завантажуваного файлу, готового до виконання (інтерпретації мікропроцесором).
Реалізація програми на Асемблері охоплює такі етапи:
- написання програми на мові Асемблера, ввід та оформлення її у вигляді початкового файлу за допомогою текстового редактора (наприклад, Nогtоn Соmmander);
- трансляція початкового файлу в об'єктний файл;
- редагування зв'язків на основі декількох об'єктних файлів і формування завантажуваного файлу для інтерпретації мікропроцесором.
Така схема забезпечує незалежне асемблювання кількох початкових файлів з подальшим їх об'єднанням на рівні об'єктних файлів в один завантажуваний. Вказаний підхід реалізує концепції модульного програмування (розробка та реалізація програм по частинах - модулях). Відповідно розглядають початковий модуль, об'єктний модуль та завантажуваний модуль. Відомі і простіші схеми асемблювання, які забезпечують, перехід, від рівня початкових файлів до завантажуваних.
2.1. Структура програми на Асемблері
Програма. на Асемблері складається з модулів. Модулі складаються з сегментів. Сегменти складаються з процедур, команд та директив.
Початковий програмний модуль складається з операторів. Виділяються оператори трьох типів: команди, директиви, коментар. Оператори команд визначають операції, які виконує процесор. Директиви вказують Асемблеру та Редактору зв'язків як оформляти (об'єднувати) команди та модулі в програму. Директиви також забезпечують розподіл пам'яті та визначення даних.
Оператори команд складаються з символічного імені, коду операції, поля операндів та коментаря. Код операції визначає команду і відрізняє її від директиви. При написанні програми на Асемблері символічне ім’я ставиться перед кодом операції через двокрапку і називається міткою (внутрішньою). Мітка визначає адресу команди в оперативній пам'яті, що може використовуватись, наприклад, операторами переходу.
Операнди (два, один, або відсутні) визначають дані над якими виконуються операції процесором. Операнди відділяються один від одного комою, а від коду команди - пропуском.
Коментар відділяється від полів команди та операндів пропуском та крапкою з комою. Він не приймає участі в асемблюванні і служить лише для документування програми.
Оператори директив складаються з символічного імені, коду псевдооперації, поля операндів та коментаря. Структура директиви аналогічна структурі команди. Код псевдооперації визначає зміст директиви.
Операндів директиви може бути декілька і вони розділяються комами, а від коду псевдооперації відділяються пропуском.
Символічне ім'я, яке стоїть на початку директиви розподілу пам'яті (директиви визначення) називається змінною. Символічне ім'я директиви відділяється від коду пропуском, а не двокрапкою, як мітка.
Коментар записується через пропуск та крапку з комою.
Програма складається з модулів, які можуть бути паралельно розроблені та реалізовані. Кожний модуль складається з операторів, які обробляються (транслюються) Асемблером. Для транслятора признаком кінця операторів модуля є директива - ЕND (Кінець). Крім того операнд директиви END визначає точку входу програми.
Кожний модуль поділяється на окремі частини директивами сегментації, які визначають початок (SEGMENT) та кінець (ENDS) сегмента. Кожен і...