Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота4.doc
Скачиваний:
1
Добавлен:
15.11.2019
Размер:
151.04 Кб
Скачать

Державний заклад “Київський коледж зв’язку”

СХВАЛЕНО Затверджую

на засіданні циклової комісії Заступник директора

компютерних систем та мереж з навчально - виробничої роботи

протокол № _____

від"____"_______________2008р. ______________ О.Ю. Коновалов

Голова_________ А.Ю.Лойкова "____"__________________2008р.

МЕТОДИЧНІ ВКАЗІВКИ

ПО ВИКОНАННЮ

ЛАБОРАТОРНОЇ РОБОТИ №4

З ПРЕДМЕТУ

„СИСТЕМНЕ ПРОГРАМУВАННЯ”

для студентів вищих навчальних закладів,

які навчаються за

освітньо-кваліфікаційним рівнем „бакалавр”

з напрямку 6.050102 – „Комп’ютерна інженерія ”

Розробив викладач

Довженко П.В.

_____________________________

"_____"_________________2008р.

Київ – 2008

Тема: Синтаксис та директиви асемблера.

  1. Мета завдання.

  • Поглибити знання про синтаксис та директиви асемблера.

  1. Прилади та обладнання.

  • ЕОМ типу IBM PC, система програмування Асемблер.

  1. Теоретичні відомості.

Структура програми на асемблері

  • Синтаксис асемблера

  • Стандартні директиви сегментації

  • Спрощені директивы сегментації

Програма на асемблері являє собою сукупність блоків пам'яті, названих сегментами пам'яті . Програма може складатися з одного або декількох таких блоків-сегментів. Кожний сегмент містить сукупність речень мови, кожне з яких займає окремий рядок коду програми.

Речення асемблера бувають чотирьох типів:

  • команди або інструкції , що представляють собою символічні аналоги машинних команд. У процесі трансляції інструкції асемблера перетворяться у відповідні команди системи команд мікропроцесора;

  • макрокоманди — оформлювані певним чином речення тексту програми, що заміщаються під час трансляції іншими реченнями;

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

  • рядки коментарів , що містять будь-які символи, у тому числі й букви російського алфавіту. Коментарі ігноруються транслятором.

Синтаксис асемблера

Речення, що становлять програму, можуть являти собою синтаксичну конструкцію, що відповідає команді, макрокоманді, директиві або коментарю. Для того щоб транслятор асемблера міг розпізнати їх, вони повинні формуватися по певних синтаксичних правилах. Для цього найкраще використовувати формальний опис синтаксису мови на зразок правил граматики. Найпоширеніші способи подібного опису мови програмування — синтаксичні діаграми й розширені форми Бекуса-Наура . Для практичного використання більш зручні синтаксичні діаграми . Приміром, синтаксис речень асемблера можна описати за допомогою синтаксичних діаграм, показаних на наступних рисунках.

Рис. 1. Формат речення асемблера

Рис. 2. Формат директив

Рис. 3. Формат команд і макрокоманд

На цих рисунках:

  • ім'я мітки — ідентифікатор, значенням якого є адреса першого байта тієї пропозиції вихідного тексту програми, що він позначає;

  • ім'я — ідентифікатор, що відрізняє дану директиву від інших однойменних директив. У результаті обробки асемблером певної директиви цьому ім'ю можуть бути привласнені певні характеристики;

  • код операції (КІП) і директива — це мнемонічні позначення відповідної машинної команди, макрокоманди або директиви транслятора;

  • операнди — частини команди, макрокоманди або директиви асемблера, що позначають об'єкти, над якими виробляються дії. Операнди асемблера описуються вираженнями із числовими й текстовими константами, мітками й ідентифікаторами змінних з використанням знаків операцій і деяких зарезервованих слів.

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

Лексемами є:

  • ідентифікатори — послідовності припустимих символів, що використовуються для позначення таких об'єктів програми, як коди операцій, імена змінних і назви міток. Правило запису ідентифікаторів полягає в наступному: ідентифікатор може складатися з одного або декількох символів. Як символи можна використовувати букви латинського алфавіту, цифри й деякі спеціальні знаки — _, ?, $, @. Ідентифікатор не може починатися символом цифри. Довжина ідентифікатора може бути до 255 символів, хоча транслятор сприймає лише перші 32, а інші ігнорує. Регулювати довжину можливих ідентифікаторів можна з використанням опції командного рядка mv . Крім цього існує можливість указати транслятору на те, щоб він розрізняв прописні й малі літери або ігнорував їхнє розходження (що й робиться за замовчуванням). Для цього застосовуються опції командного рядка /mu, /ml, /mx ;

  • ланцюжок символів — послідовності символів, укладені в одинарні або подвійні лапки;

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

    • Десяткові числа не вимагають для свого ототожнення вказівки яких-небудь додаткових символів, наприклад 25 або 139.

    • Для ототожнення у вихідному тексті програми двійкових чисел необхідно після запису нулів і одиниць, що входять у їхній состав, поставити латинське “ b ”, наприклад 10010101 b .

    • Шістнадцяткові числа мають більше умовностей при своєму записі:

      • По-перше, вони складаються із цифр 0...9 , рядкових і прописних букв латинського алфавіту a , b , c , d , e , f або A , B , C , D , E , F .

      • По-друге, у транслятора можуть виникнути труднощі з розпізнаванням шістнадцяткових чисел через те, що вони можуть складатися як з одних цифр 0...9 (наприклад 190845), так і починатися з букви латинського алфавіту (наприклад ef15 ). Для того щоб "пояснити" транслятору, що дана лексема не є десятковим числом або ідентифікатором, програміст повинен спеціальним способом виділяти шістнадцяткове число. Для цього на кінці послідовності шістнадцяткових цифр, що становлять шістнадцяткове число, записують латинську букву “ h ”. Це обов'язкова умова. Якщо шістнадцяткове число починається з букви, то перед ним записується провідний нуль: 0 ef15 h .

Практично кожна пропозиція містить опис об'єкта, над яким або за допомогою якого виконується деяка дія. Ці об'єкти називаються операндами . Їх можна визначити так: операнды — це об'єкти (деякі значення, регістри або комірки пам'яті), на які діють інструкції або директиви, або це об'єкти, які визначають або уточнюють дію інструкцій або директив.

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

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

Результатом обчислення виразу може бути адреса деякої комірки пам'яті або деяке константне (абсолютне) значення.