- •Лабораторна робота №1
- •Xor ax, ax
- •Int 21h
- •Зміст звіту
- •2 Короткі теоретичні відомості
- •2.1. Етапи розробки програм мовою асемблер
- •2.2 Формати команд мікропроцесора 8086
- •2.3 Елементи мови асемблера
- •2.4 Формат команд і псевдооператорів мови асемблера
- •2.5 Структура програми
- •2.6 Псевдооператори мови асемблера
- •2.6.1 Опис сегмента
- •2.6.2 Псевдооператори визначення ідентифікаторів
- •2.6.3 Директиви опису даних
- •2.6.4 Оператори
- •2.7 Лістинг програми
- •2.8 Програмні переривання
Лабораторна робота №1
Тема: Ознайомлення з програмуванням мовою асемблер
Цілі: 1.Вивчення структури програми на мові асемблер та послідовності написання програми.
2. Вивчення формату команд
3. Вивчення псевдооператорів мови асемблер
4. Формування програми та її налагодження
6. Навчитися аналізувати програму за допомогою лістингу.
Завдання
Набрати програму на мові асемблер виводу строкової та символьної інформації на екран монітору.
Вивчити використання операторів
Проаналізувати роботу програми за допомогою її лістингу.
Розробити програму, яка демонструє використання операторів та їх властивості.
Підготувати звіт
Набрати представлену програму:
title word
dat1 segment
a db 'Hello world1',10,13
b db 'Hello world2',10,13,'$'
c db '34'
dat1 endS
cod1 segment
assume cs:cod1, ds:dat1
start1: mov ax, dat1
mov ds, ax
Xor ax, ax
mov ah, 09h
mov dx, offset a
int 21h
mov ah, 02h
mov dx, ‘c’
int 21h
mov ah,4Ch
Int 21h
cod1 endS
end Start1
Контрольні питання
Етапи створення програми на мові асемблер
Написання програми в текстовому редакторі за допомогою мнемокодів асемблера та присвоєння їй імені з розширенням asm–***.asm.
Одержання файлів з розширення obj (***.obj), lst (***.lst), map (***.map), exe (***.exe) та їх призначення.
Формати команд мікропроцесора 8086
Конструкція команд та псевдооператорів
Мітка та ідентифікатор і різниця між ними
Припустимими символами при написанні тексту програм
Структура програми на мові асемблер
. Псевдооператори опису сегмента мови асемблера
Псевдооператори визначення ідентифікаторів
Директиви опису даних
Оператор одержання повної складової адреси
Лічильник адреси
Розміщення рядків на екран монітору
Лістинг програми
Програмні переривання
Алгоритм програмного переривання
Завдання на реалізацію програми
Використання псевдооператорів визначення ідентифікаторів: equ і "=" (дорівнює).
Використання директив опису даних db, dw, dd та n dup(x),
Використання операторів одержання повної складової адреси Seg та offset:
Використання лічильника адреси ($)
Керування розміщенням рядків при виводі на екран монітору за допомогою службових ASCII-кодів 0Ah та 0Dh
Дослідити призначення блоку команд
mov ax, dat1
mov ds, ax
xor ax, ax
Дослідити призначення псевдооператора assume
Зміст звіту
Тема, цілі роботи
Короткі теоретичні відомості
Результати
представити лістинги програм
пояснення по роботі програм
Висновки
2 Короткі теоретичні відомості
2.1. Етапи розробки програм мовою асемблер
Асемблер – це мова програмування, що дозволяє писати програми на машинному рівні, використовуючи при цьому умовні скорочення – мнемокоди, які транслюються асемблером у машинні команди. Послідовність створення програми мовою асемблер представлено на рис. 1.
Рисунок 1 – Схема розробки програми мовою асемблер
Написання програми мовою асемблер відбувається в кілька етапів:
1) написання програми в текстовому редакторі за допомогою мнемокодів асемблера та присвоєння їй імені з розширенням asm–***.asm.
Для створення нового файлу потрібно запустивши файловий менеджер FAR, нажати клавіші Shift та F4. В вікні яке появилося набрати ім’я файлу та присвоїти розширення asm. Наприклад: Prog1.asm. В створеному файлі набрати програму.
2) переведення (трансляція) програми в машинні коди, яке здійснюється за допомогою спеціальної програми Tasm.exe або Masm.exe. Для виконання трансляції можна використовувати командний рядок наступного формату:
TASM [опції] ім’я_початкового_файла [, ім’я_об’єктного_фай-ла] [, ім’я_файла_листинга] [, ім’я_файла_перехресних_посилань]
Інформація, яка задана в квадратних дужках не є обов’язковою для задавання. Якщо не задати імена файлів, показаних в квадратних дужках, буде сформовано відповідні файли з іменем початкового файла. Наприклад:
Tasm.exe Prog1.asm
У результаті роботи транслятора створюється програма в об'єктних кодах з розширенням obj (***.obj) і файл лістингу (***.lst) – Prog1.lst та Prog1.obj.
Об'єктний файл містить програму в кодах команд ЕОМ, а також дані для корекції адресних частин команд при об'єднанні декількох об'єктних файлів в одну програму.
Файл лістингу містить результати трансляції кожного рядка програми мовою асемблер, сам рядок програми та діагностичні повідомлення.
Трансляція виконується за допомогою внутрішнього перекодування та може здійснюватися за один або два проходи початкового тексту. У процесі трансляції відбувається створення таблиці міток і присвоєння міткам адрес розташування. При виникненні в програмі звертання до міток замість міток підставляються їхні адреси;
3) створення виконавчої програми, що здійснюється за допомогою програми редактора зв'язків (компонувальник, лінкувальник) Tlink.exe. Для створення виконавчої програми можна використовувати командний рядок такого формату:
TLINK [опції] список об’єктних файлів [, ім’я_завантажувального_модуля] [, ім’я_файла_карти] [, ім’я файла_ бібліотеки]
Вхідними файлами редактора зв'язків є об'єктні файли, які можуть розташовуватися також у бібліотечних. Список об’єктних файлів складається з компонованих файлів з розширенням ***.obj. Ці файли можуть бути розділені пропусками або знаком "+". Якщо не вказати ім’я завантажувального модуля, то буде створено завантажувальний файл з першим іменем зі списку об’єктних файлів типу ***.exe. Наприклад Tlink.exe Prog1.obj
Завантажувальний файл можна запускати на виконання. Ім’я файла карти має розширення ***.map і містить дані про розподіл пам'яті: розміри програми в цілому, адреси завантаження та розміри сегментів. У полі з іменем файлу бібліотеки вказується шлях до бібліотечних файлів і об’єктних модулів, які потрібні для компонування програми.