
- •Лабораторна робота № 4
- •Хід роботи
- •Програмний емулятор (віртуальний пк) Emu8086
- •Використання емулятора Emu8086
- •Компіляція кода Асемблера
- •Особливості створення асемблерній програми в середовищі dos засобами tasm і masm
- •Процес обробки програми на мові асемблера
- •Особливості створення асемблерній програми в середовищі емулятора emu8086
- •Правила оформлення асемблерних програм
Особливості створення асемблерній програми в середовищі dos засобами tasm і masm
Мова асемблера є самим низькорівневим мовою програмування. Т. е. він ближче будь-яких інших наближений до архітектури ЕОМ та її апаратним можливостям, дозволяючи отримати до них повний доступ. На відміну від мов високого рівня (МВР) асемблерних програма містить тільки той код, який ВВІВ ПРОГРАМІСТ. Ніяких додаткових "обв'язок". Вся відповідальність за "логічність" коду ПОВНІСТЮ лежить на вузьких плечах ПРОГРАМІСТА.
Простий приклад. Зазвичай підпрограми закінчуються командою повернення. Якщо її не поставити явно, транслятор все одно додасть її в кінець підпрограми. Асемблерних підпрограма без команди повернення НЕ ПОВЕРНЕТЬСЯ в точку виклику, а буде виконувати код, наступний за підпрограмою, ніби він є її продовженням. Можна спробувати "виконати" дані замість коду. Часто це позбавлено сенсу. Але якщо програміст це зробить, транслятор промовчить. Мова асемблера дозволяє робити все! Тут немає НІЯКИХ обмежень. Але з іншого боку це часто є джерелом помилок.
Ці особливості призводять до того, що асемблерні програми часто "підвішують" комп'ютер, особливо у початківців програмістів.
Виділимо три різновиди "зависання" за способом боротьби з ним.
Просте - для виходу з нього досить натиснути Ctrl + Break або Ctrl + C (спочатку натискається клавіша Ctrl і, не відпускаючи її, натискається Друга клавіша - C або Break; відпускаються в зворотному порядку). Програма при цьому аварійно завершується виходом в DOS.
М'яке - машина не реагує на Ctrl + Break, але клавіатура "дихає". Тобто при натисканні на клавіші, типу NumLock, моргають відповідні світлодіоди. У цьому випадку машину потрібно буде перевантажити, натиснувши Ctrl + Alt + Del. У середовищі Windows потрібно просто "вбити" сеанс, закривши вікно.
Жорстке - машина ніяк не реагує на клавіатуру і не сприймає комбінацію Ctrl + Alt + Del. У цьому випадку допоможе апаратне скидання за допомогою кнопки "Reset", розташованої на передній панелі системного блоку. Не потрібно вимикати і включати ЕОМ. Ви як майбутні розробники апаратури повинні знати, що вона виходить з ладу в основному при включенні і виключенні.
Процес обробки програми на мові асемблера
Через свою специфіку, а також за традицією, для програмування мовою асемблера немає ніяких середовищ-оболонок типу Turbo C, Turbo Pascal і т.д. Тут доводиться користуватися "утилітами командних рядків". Весь процес технічного створення асемблерній програми можна розбити на 4 кроки (виключені етапи створення алгоритму, вибору структур даних і т.д.).
Набір програми в текстовому редакторі і збереження її в окремому файлі. Кожен файл має ім'я і тип, званий іноді розширенням. Тип в основному використовується для визначення призначення файлу. Наприклад, програма на C має тип C, на Pascal - PAS, на мові асемблера - ASM.
Обробка тексту програми транслятором. На цьому етапі текст перетворюється в машинний код, званий об'єктним. Крім того, є можливість отримати лістинг програми, що містить крім тексту програми різну додаткову інформацію і таблиці, створені транслятором. Тип об'єктного файлу - OBJ, файлу лістингу - LST. Цей етап називається трансляцією.
Обробка отриманого об'єктного коду компонувальником. Тут програма "прив'язується" до конкретних умов виконання на ЕОМ. Отриманий машинний код називається виконуваним. Крім того, зазвичай виходить карта завантаження програми в ОЗП. Виконуваний файл має тип EXE, карта завантаження - MAP. Цей етап називається компонування або лінковка.
Запуск програми. Якщо програма працює не зовсім коректно, перед цим може бути присутнім етапі налагодження програми за допомогою спеціальної програми - відладчика. При знаходженні помилки доводиться проводити корекцію програми, повертаючись до кроку 1. Таким чином, процес створення асемблерній програми можна зобразити у вигляді такої схеми. Кінцевою метою, нагадаємо, є працездатний виконуваний файл HELLO.EXE.