
- •Лабораторна робота №5
- •4. Методичні вказівки для виконання роботи
- •4.1 Проста програма на Асемблері
- •4.4 Теоретичні відомості про команди мови Assembler
- •4.4.1. Команди арифметичниз операцій
- •4.4.2. Команди передачі значень:
- •4.4.3.Команди додавання і віднімання.
- •4.4.4 Команди множення й ділення.
- •4.4.5Команди умовного Перехіду
- •Контрольний приклад
- •4.5 Введення і виведення
- •4.5.1Введення/виведення з використанням модуля io.Asm
- •Ввод числа: inint ор
- •4.5.2 Приклад програми з використанням io.Asm
Лабораторна робота №5
1. Назва роботи ЗНАЙОМСТВО З НАПИСАННЯМ ПРОГРАМ НА МОВІ СИМВОЛІЧНИХ КОМАНД ПРОЦЕСОРА 2.Мета роботи Вивчення структури програми, етапів створення програми на мові символічних команд мікропроцесора(Асемблері), можливостей відладчика.
3. Ресурси для виконання : можливість роботи у вікні DOS і турбоасемблер фірми Borland
4. Методичні вказівки для виконання роботи
4.1 Технологія роботи з турбоасемблером фірми Borland
Перші програмісти писали свої програми у машинному коді. Проте написання таких програм надзвичайно важка справа і тому питання про створення більш зручних інструментів було не тільки методом полегшення каторжної праці програмістів, але й просто вирішальним моментом щодо розвитку комп’ютерної галузі. Найпростішою ідеєю було написання програми не машинними кодами, а їх символічними іменами, щоб потім певна системна програма могла перевести текст з такими символічними іменами в машинний код. Таку програму назвали Асемблер від assemble – збирати. Розглянемо спочатку текст дуже простої програми на мові Асемблер. Зауважимо, що нумерація в реальному тексті не ведеться(тут рядки пронумеровані тільки для зручності пояснень). Текст в рядках після крапки з комою є коментарями – поясненнями і жодним чином у виконанні програми участі не беруть.
4.1 Проста програма на Асемблері
Для знайомства з мовою Асемблера розглянемо один з варіантів програми, що здійснює вивід на екран фрази "Hellow World!!"!.
1DOSSEG
2 .model small ; модель пам'яті
3 .STACK 100h ;визначення сегменту стека
4 .DATA; оголошення сегменту даних
5 Message DB ''Hellow World!!! ',13,10,'$'
6 .CODE ; оголошення сегменту коду
7 start: ; точка входу в програму
8 mov ax,@Data
9 mov ds,ax ; налаштування DS на сегмент даних
10 mov ah,9 ; функція переривання 21h DOS виводу рядка
11 mov dx,OFFSET Message ; посилання на рядок "Hellow World!!! "
12 int 21h ; вивести "Hellow World!!! " на екран
13 mov ah,4ch ; функція переривання DOS завершення програми
14 int 21h ; виклик переривання
15 END start ; завершення виконання коду
16 END
Рядок 2 містить оголошення вибраної моделі пам'яті.
Рядок 3 описує сегмент стеку програми - область пам'яті, що спеціально виділяється для тимчасового зберігання даних програми. Під стек зарезервовано 256 байт (100h).
Рядки 4-5 оголошують сегмент даних. У рядку 5 описана рядкова змінна Мessage ''Hellow World!!!', допоміжний символ '$' використовується для сигналу про закінчення виведення повідомлення на екран. Рядки 6-16 містять сегмент коду. Мітка start позначає першу команду програми. Рядки 9-10 виконують ініціалізацію сегментного регістра DS. У рядку 11 в регістр DX завантажується адреса повідомлення message 'Hellow World!!!'.
У рядку 10 в регістр ah заноситься число 9h - номер функції MS DOS Виведення рядка, а потім викликається переривання MS - DOS int 21h, яке запус-кає цю функцію.
Рядки 13-14 - звернення до засобів операційної системи для стандартного виходу з програми – виконання функції 4ch переривання 21h DOS.
Рядок 16 містить директиву END
4.2 Етапи розробки програми
В процесі формування програми на мові асемблера виділено 4 етапи: - введення початкового коду програми текстовим редактором, - трансляція програми, - створення завантажувального модуля, - відладка програми.
4.3.1 Для перетворення коду асемблера на код виконуваний процесором необхідно використовувати службові програми пакетів Асемблера. У даній лабораторній роботі це пакет Turbo Assembler TASM фірми Borland.
4.3.2 Для підготовки коду програми на Асемблере можна використати будь-який текстовий редактор, наприклад, Блокнот, Microsoft Word, вбудовані редактори оболонок FAR, Norton Commander та ін. Файл з початковою програмою повинен мати розширення .asm. Нехай для ім'я розглянутої вище за програму буде progr1.asm.
4.3.3 На етапі трансляції за допомогою програми tasm.exe формирует-ся об'єктний модуль, який включає представлення початкової програми в машинних кодах і деяку іншу інформацію, необхідну для відладки і компонування його з іншими модулями. Формат команди :
TASM [< опції >] < ім'я початкового файлу > [,< ім'я об'єктного файлу >] [,< ім'я файлу лістингу >] [,< ім'я файлу перехресних посилань >],
де:
текст розміщений в квадратні дужки не обов'язковий < опції > - режим роботи транслятора TASM, як правило опція має формат /< 1-2 букви >; наприклад опція /zi - включає в об'єктний файл інформацію для відладки; < ім'я початкового файлу > - обов'язковий параметр; < ім'я об'єктного файлу >, < ім'я файлу лістингу >, < ім'я файлу перехрещення- ни х посилань > - необов'язкові параметри, якщо не задано два останні імена, то відповідні файли не будуть створені.
Для отримання довідки про формат командного рядка і можливих значеннях параметрів треба запустити tasm.exe без вказівки аргументів. Файл лістингу містить інформацію про програму у вигляді рядків формату : < глибина вкладеності > < номер рядка > < зміщення > < машинний код > < початковий код > де: < глибина вкладеності > - рівень вкладеності файлів, що включаються, або мак-рокоманд в початковому файлі; < номер рядка > - номер рядка у файлі лістингу (а не в програмі!); < зміщення > - зміщення в байтах поточної команди відносно початку сег-мента коду; < машинний код > - машинне представлення команди Асемблера, яка записана в полі < початковий код >; < початковий код > - рядок коду початкової програми. У кінці лістингу формуються таблиці про використовувані мітки, імен і сегментах в програмі. За наявності помилок транслятор включає в рядок і в кінець лістингу відповідні повідомлення.
4.3.4 . Якщо, окрім об'єктного файлу, потрібні файли лістингу і перехресних посилань і їх імена при цьому повинні співпадати з ім'ям початкового файлу (найбільш типовий випадок), то треба поставити коми замість вказівки імен файлів : tasm.exe /zi progr,,, В результаті будуть створені файли: progr.obj, progr.lst, progr.xrf. Якщо імена об'єктного файлу, файлу лістингу і файлу перехресних посилань не повинні співпадати з ім'ям початкового файлу, то треба у відповідному порядку в командному рядку вказати імена цих файлів. 4.3.4 В результаті роботи програми tasm на екрані з'явиться приблизно наступне: Turbo Assembler Version 4.1 Copyright (c) 1988, 1996 Borland International Assembling file: progr.asm Error messages: None Warning messages: None Passes: 1 Remaining memory: 373k Якщо програма містить помилки, то транслятор видасть на екран рядки повідомлень, які починаються словами "Error" (помилка) і "Warning" (попередження)
4.3.5 Результатом роботи компонувальника є створення завантажувального ( виконуваного ) файлу з розширенням .ехе або .com. Далі розглянемо процес формування exe-файлів. Формат командного рядка для запуску компонувальника : TLINK [< опції >] <список об'єктних файлів > [,< ім'я завантажувального мо-дуля >] [,< ім'я файлу карти>] [,< ім'я файлу бібліотеки >], де: < опції > - необов'язкові параметри, що управляють роботою компонувальника, одна з найбільш вживаних опцій : /v - включити налагоджувальну інформацію у виконуваний файл; < список об'єктних файлів > - обов'язковий параметр, файли мають бути розділені пропусками або знаком плюс; < ім'я завантажувального модуля > - якщо не вказано, то ім'я завантажувального модуля буде співпадати з ім'ям першого об'єктного файлу із списку; < ім'я файлу карти > - наявність цього параметра зобов'язує компонувальник створити файл, в якому для компонування учбової програми слід запустити програму tlink.exe командним рядком виду : tlink.exe /v progr1.obj При успішному компонуванні на екрані з'являється повідомлення: Turbo Link Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International Для запуску програми на виконання треба набрати в командному рядку ім'я виконуваного модуля (у нашому випадку: progr.exe ) і натиснути . Програма виведе на екран повідомлення: Hellow World!!! 4.3.6 Не завжди створення виконуваного модуля гарантує правильність роботи програми. Тому практично обов'язковим етапом розробки програми стає відладка. Деякі можливості відладчика Turbo Debugger (TD) : виконання трасування програми, тобто виконання програми по кроках; перегляд і зміна стану апаратних ресурсів микропроцес-сора під час покомандного виконання програми. TD не дає можливості виправляти початковий текст програми. Після визначення причини помилкової ситуації можна, при необхідності, не завершуючи роботу відладчика, внести виправлення прямо в машинний код і запустити програму на виконання. Проте, після завершення роботи відладчика ці зміни не будуть збережені, і треба внести їх повторно, але вже в вихідний текст і наново створити завантажувальний модуль. Запуск відладчика роблять з командного рядка: td < ім'я виконуваного модуля > У вікні перегляду модуля Module, що відкрилося, знаходиться початковий текст програми. Курсор виконання (у вигляді трикутника) вказує на першу команду, що підлягає виконанню. Цій команді передує ім'я мітки. Це так звана точка входу в програму.
4.3.7Завдання для практичної роботи 1. У текстовому редакторові набрати текст програми, зберегти її під ім'ям progr.asm. 2. Виконати трансляцію файлу progr.asm з отриманням об'єктного файлу, файлу лістингу і файлу перехресних посилань 3. Проглянути файл лістингу. 4. Виконати компонування учбової програми і запустити воно на ви пол-нение. 5. Запустити відладчик для роботи з програмою progr.exe. 6. Вивчити можливості усіх вікон відладчика. 7. Запустити програму на виконання у відладчику в кожному з чотирьох режимів.