Ассемблер - Директивы определения данных
Автор: Василий Шпагин • Апрель 17, 2020 • Лекция • 3,062 Слов (13 Страниц) • 378 Просмотры
Лекція - Ассемблер.
Засоби розробки програм
Програму, написана на мові асемблер, перетворюється в послідовність машинних команд за допомогою програми, яка називається асемблером (компілятор з мови асемблер).
Програма на Асемблері складається з інструкцій, директив та коментарів.
Інструкції виконуються процесором.
Директиви - це спеціальні командами, які виконує сама програма-асемблер (компілятор). Наприклад, директиви для визначення даних, опису сегментів.
Коментарі позначаються символом крапка з комою (;).
Синтаксис директив залежить від версії асемблера і ніяк не пов'язаний з системою команд процесорів Intel. Різні асемблери можуть генерувати ідентичний машинний код для системи команд процесорів Intel, але вони можуть підтримувати абсолютно різний набір директив.
Ми будемо, головним чином, розглядати програмування в операційній системі (ОС) Windows. Ця ОС - багатозадачна. ОС підтримує мультипрограмування. У пам'яті може знаходиться більш ніж одне завдання, яке очікує процесор. Завдання можуть чекати і інші ресурси обчислювальної системи (оперативну пам'ять, пристрій введення/виводу, масив даних і тому подібне).
Програма, яка представляє ЕХЕ-файл, це статичний об'єкт. Він не обробляється обчислювальною системою, а тільки зберігається на диску. Після її активізації (запуску) вона вже знаходиться в динамічному стані. Усе програмне забезпечення, що функціонує на комп'ютері, включаючи ОС, можна представити у вигляді набору процесів. Кожен процес описується набором параметрів. Ще існує поняття потоків, але ми це поняття розглядати не будемо (курс «Операційні системи». У загальному вигляді, для управління процесами, потоками та ресурсами операційна система створює системні таблиці
[pic 1] | [pic 2] |
Програма на асемблері повинна містити виклики процедур, які працюють під управлінням ОС, яка запускає їх, забезпечує взаємодію із зовнішнім середовищем (виведення символів на екран, читання і запис на жорсткі диски і т. д.) і потім допомагає правильно завершитися. Ці процедури називають інтерфейсом прикладних програм. API (Application Programming Interface) - Windows API.
Таким чином, Win API - це набір функцій і класів, які використовуються для програмування застосувань, що працюють під управлінням ОС. Кожній процедурі Windows API передаються параметри.
У кожній програмі на асемблері є процедура ExitProcess, яка викликається завжди. Параметр процедури - код завершення, який отримує ОС після закінчення роботи програми. 0 - нормальне завершення . Процедури ОС викликаються директивою invoke,
invoke ExitProcess, 0 ;invoke - викликати - англ. викликати.
При написанні програм в 64-розрядному середовищі, необхідність виклику процедури ExitProcess в тексті програми - відсутня. Замість неї необхідно написати команду ret.
Нагадаю, що програма, написана на мові машинних команд, яку ми розглядали в лабораторних роботах №1 та 2, складалася з двох сегментів: сегмент коду і сегмент даних.
Принцип написання програм на мові Асемблер залишається той же самий. У програмі, за допомогою спеціальних директив, необхідно виділити дві області. Одна - для опису даних. Причому, тут описуються тільки глобальні або статичні змінні (локальні змінні розташовуються в спеціальній області, яка називається стеком). Інша область - для опису послідовності дій, які виконуються над даними. Сегмент коду будемо розглядати в іншій лекції.
Розглянемо приклад програми на мові Асемблер.
Приклад програми на Асемблері для 64-разрядного компілятора
;----------------------------------------------------------------------
.data ;директива визначення сегменту даних
a dword 5 ; виділяється пам'ять розміром 4 байти
b dword - 5
;-----------------------------------------------------------------------
.code ; директива визначення сегменту коду
start proc ; початок процедури з ім'ям start
...