
- •Лабораторна робота № 4
- •Хід роботи
- •Програмний емулятор (віртуальний пк) Emu8086
- •Використання емулятора Emu8086
- •Компіляція кода Асемблера
- •Особливості створення асемблерній програми в середовищі dos засобами tasm і masm
- •Процес обробки програми на мові асемблера
- •Особливості створення асемблерній програми в середовищі емулятора emu8086
- •Правила оформлення асемблерних програм
Особливості створення асемблерній програми в середовищі емулятора emu8086
Цей програмний продукт містить все необхідне для створення програми на мові Assembler.
Пакет Emu8086 поєднує в собі покращений варіант текстового редактора, Assembler, disassembler, емулятор програмного забезпечення (віртуальна машина) з покроковим відладчиком, прикладами.
В процесі виконання програми ми можемо спостерігати програмні регістри, прапори і пам'ять, АЛП показує роботу центрального процесора.
Вбудована віртуальна машина повністю блокує звернення програми до реальних апаратних засобів ЕОМ, накопичувачам пам'яті, це робить процес налагодження набагато легшою.
Правила оформлення асемблерних програм
При наборі програм на мові асемблера дотримуйтеся наступних правил:
директиви набирайте великими літерами, інструкції - малими;
пишіть текст широко - не жаліти простору;
не виходьте за край екрану, тобто не робіть текст ширше 80 знаків - його не зручно буде редагувати і друкувати;
для відступів користуйтеся табуляцією (клавіша TAB);
блоки коментарів задавайте з однаковим відступом. Оптимальною вважається такий рядок:
<TAB> <TAB> mov <TAB> ax, <пробіл> bx <(1-3) TAB>; <пробіл> текст коментаря
Кількість табуляцій перед коментарем визначається довжиною аргументів команди і може бути від 1 до 3. В міру знайомства з синтаксисом мови будуть приводитися додаткові правила.
Завдання для виконання
Запустити емулятор EMU8086.
Запустіть програму, натиснувши кнопку 'Emulate' або клавішу F5.
Запустіть отриманий код на виконання, використовуючи кнопку "RUN" або натисніть функціональну клавішу F9.
Відкомпілюйте програму. Поверніться в головне вікно форми, попередньо закривши всі відкриті вікна, далі натисніть кнопку "Compile".
Отриманий com-файл запустіть у вбудованій командному рядку WINDOWS ХХ на виконання або запустіть сеанс dos в total commander'e.
Проекспериментуйте з іншими прикладами, які відкриваються при натискання клавіші "Samples" в головному вікні емулятора.
Ознайомитеся з вбудованою в емулятор EMU8086 довідкою. У ній міститься вся необхідна інформація для роботи з програмою, ази написання програм на мові Assembler та ін.
Контрольні запитання
Які основні відмінності асемблерних програм від мов високого рівня?
Процес трансляції програми на мові асемблера в об'єктний код прийнято називати асемблерування. На відміну від компілювання, асемблерування - більш-менш однозначний і оборотний процес. У мові асемблера кожній мнемоніці відповідає одна машинна інструкція, в той час як в мовах програмування високого рівня за кожним виразом може ховатися велика кількість різних інструкцій. У принципі, це поділ досить умовно, тому іноді трансляцію асемблерних програм також називають компіляцією.
Програміст має змогу створити код, кращий за швидкодією, ніж при трансляції його з більш високорівневої мови. Відсутня переносимість програм на мові асемблеру з однієї платформи на іншу чи на процесор з іншою архітектурою і системою команд. На мові асемблеру пишуться компілятори, інтерпритатори, драйвера, ядра ОС, прошивки BIOSа.
Яка структура асемблерної програми?
На відміну від багатьох сучасних високорівневих мов програмування, в ассемблерній програмі кожна команда розташовується на окремому рядку. Не можна розмістити кілька команд на одному рядку. Не прийнято також розбивати одну команду на кілька рядків. Синтаксис асемблера NASM, яким ми будемо користуватися далі, є регістрочуттєвим. Тобто є різниця між великими і малими літерами. Команда може бути директивою - вказівкою транслятору, яке виконується в процесі перетворення програми в машинний код. Багато директиви починаються з точки. Для зручності читання програми вони звичайно пишуться ВЕЛИКИМИ ЛІТЕРАМИ. Крім директив ще бувають інструкції - команди процесору. Саме вони і будуть складати машинний код програми.
У чому відмінність інструкції від директиви?
Інструкція – це команда процесору, а директива – це команда-вказівка транслятору, що виконується в процесі перетворення програми в машинний код.
Які правила оформлення програм на мові асемблера?
При наборі програм мовою асемблера дотримуйтеся наступних правил:
директиви набирайте великими літерами, інструкції - малими;
пишіть текст широко;
не виходьте за край екрана - його незручно буде редагувати і друкувати;
для відступів користуйтеся табуляцією (клавіша TAB);
блоки коментарів задавайте з однаковим відступом.
Які етапи отримання виконуваного файлу?
Весь процес технічного створення ассемблерної програми можна розбити на 4 кроки (виключені етапи створення алгоритму, вибору структур даних і т.д.).
Набір програми в текстовому редакторі і збереження її в окремому файлі. Кожен файл має ім'я і тип, званий іноді розширенням. Тип в основному використовується для визначення призначення файлу. Наприклад, програма на C має тип c, на Pascal - pas, на мові асемблера - asm.
Обробка тексту програми транслятором. На цьому етапі текст перетворюється в машинний код, званий об'єктним. Крім того є можливість отримати лістинг програми, що містить крім тексту програми різну додаткову інформацію і таблиці, створені транслятором. Тип об'єктного файлу - o, файлу лістингу - lst. Цей етап називається трансляцією.
Обробка отриманого об'єктного коду компоновщиком. Тут програма «прив'язується» до конкретних умов виконання на ЕОМ. Отриманий машинний код називається виконуваним. Крім того, зазвичай виходить карта завантаження програми в ОЗУ. Виконуваний файл зазвичай не має розширення на відміну від програм ОС сімейства DOS і Windows, карта завантаження - map. Цей етап називається компонуванням або лінковкою.
Запуск програми. Якщо програма працює не зовсім коректно, перед цим може бути присутнім етап налагодження програми за допомогою спеціальної програми - відладчика. При знаходженні помилки доводиться проводити корекцію програми, повертаючись до кроку 1.
Для чого потрібен етап налагодження програми?
Етап налагодження програми необхідний для того, щоб відладити програму, якщо та працює не зовсім коректно. При знаходженні помилки доводиться проводити корекцію коду.
Опишіть основні моменти створення виконуваного файлу і емуляції роботи програми?
Які кроки технічного створення асемблерної програми в програмах TASM і MASM?
Мова асемблера є самим низькорівневим мовою програмування. Т. е. він ближче будь-яких інших наближений до архітектури ЕОМ та її апаратним можливостям, дозволяючи отримати до них повний доступ. На відміну від мов високого рівня (МВР) асемблерних програма містить тільки той код, який ВВІВ ПРОГРАМІСТ. Ніяких додаткових "обв'язок". Вся відповідальність за "логічність" коду ПОВНІСТЮ лежить на вузьких плечах ПРОГРАМІСТА.
Основні можливості емулятора Emu8086?
Emu8086 поєднує в собі потужний редактор вихідного коду, асемблер, дізасемблер, програмний емулятор (віртуальний ПК) з відладчиком та поетапне навчання. Ця програма надзвичайно корисна для тих, хто тільки починає вивчати асемблер. Вона компілює вихідний код і виконує його за допомогою емулятора крок за кроком. Візуальний інтерфейс дуже простий в роботі. Ви можете спостерігати регістри, прапори і пам'ять під час виконання вашої програми. Арифметико-логічний пристрій (АЛП) показує внутрішню роботу центрального процесора (CPU). Emu8086 має більш легкий синтаксис, ніж будь-які інші асемблери, але буде генерувати програму, яка зможе бути виконана на будь-якому комп'ютері, що підтримує машинний код 8086.
Методи боротьби з зависанням в DOS-і?
Простий - для виходу з нього досить натиснути Ctrl + Break або Ctrl + C (спочатку натискається клавіша Ctrl і, не відпускаючи її, натискається Друга клавіша - C або Break; відпускаються в зворотному порядку). Програма при цьому аварійно завершується виходом в DOS.
М'який- машина не реагує на Ctrl + Break, але клавіатура "дихає". Тобто при натисканні на клавіші, типу NumLock, моргають відповідні світлодіоди. У цьому випадку машину потрібно буде перевантажити, натиснувши Ctrl + Alt + Del. У середовищі Windows потрібно просто "вбити" сеанс, закривши вікно.
Жорсткий - машина ніяк не реагує на клавіатуру і не сприймає комбінацію Ctrl + Alt + Del. У цьому випадку допоможе апаратне скидання за допомогою кнопки "Reset", розташованої на передній панелі системного блоку. Не потрібно вимикати і включати ЕОМ. Ви як майбутні розробники апаратури повинні знати, що вона виходить з ладу в основному при включенні і виключенні.
Висновок: в ході виконання даної лабораторної роботи я ознайомилась з емулятором EMU8086, навчилась створювати просту програму на мові ассемблера.