Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Ассемблер - Директивы определения данных

Автор:   •  Апрель 17, 2020  •  Лекция  •  3,062 Слов (13 Страниц)  •  320 Просмотры

Страница 1 из 13

Лекція - Ассемблер.  

Засоби розробки програм

Програму, написана на мові асемблер, перетворюється в послідовність машинних команд за допомогою програми, яка називається асемблером (компілятор з мови асемблер).

Програма на Асемблері складається з  інструкцій,  директив та коментарів.

 Інструкції виконуються процесором.

Директиви - це спеціальні командами, які виконує сама програма-асемблер (компілятор). Наприклад, директиви для  визначення даних, опису сегментів.

Коментарі позначаються символом крапка з комою (;).

Синтаксис директив залежить від версії асемблера і ніяк не пов'язаний з системою команд процесорів 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

...

Скачать:   txt (22 Kb)   pdf (426.8 Kb)   docx (156.4 Kb)  
Продолжить читать еще 12 страниц(ы) »
Доступно только на Essays.club