
- •Практична робота №1 Перевід чисел із однієї системи числення в іншу
- •1.1 Мета роботи
- •1.2 Короткі теоретичні відомості
- •Представлення цілих чисел
- •Перевід правильних дробів
- •Представлення неправильних дробів
- •1.3 Порядок виконання роботи
- •1.4 Таблиця індивідуальних завдань
- •1.5 Контрольні запитання
- •Практична робота №2 Оболонка Turbo Debugger
- •1.1 Основні теоретичні відомості
- •2 Варіанти завдань
- •Практична робота №3 Арифметичні операції в позиційних системах числення
- •3.1 Основні теоретичні відомості
- •Методичні вказівки
- •3.2 Порядок виконання роботи
- •1.3 Контрольні запитання
- •Практична робота №4-5
- •Основні теоретичні відомості
- •1 Фоpмати чисел з плаваючою комою
- •2 Аpифметичнi опеpацiї додавання та вiднiмання чпк
- •3 Множення чпк
- •4 Дiлення чпк
- •5 Арифметичні операції між чпк та числами із фіксованою комою
- •6 Пеpетвоpення чпк до двiйково-десяткової фоpми
- •Контрольна робота №2
- •1.1 Порядок виконання роботи
- •1.2 Контрольні запитання Програмна модель мікропроцесора
- •16 Користувальницькі регістри
- •Користувальницькі регістри
- •Регістри загального призначення
- •Сегментні регістри
- •Приклад оформлення звіту
- •Опис команд пересилки даних між регістрами та комірками пам’яті
- •3.2 Завдання на роботу
- •3.3 Варіанти завдань
- •3.4 Приклад оформлення звіту
- •Практична робота №7
- •Основні теоретичні відомості
- •Директиви асемблера
- •Команди пересилки. Способи адресації
- •Моделі пам’яті
- •Структура коду команди
- •2.2 Порядок виконання роботи
- •Програма на мові Assembler:
- •Стани регістрів в процесі виконання програми:
- •2.3 Контрольні запитання
- •Практична робота №7
- •7.1 Основні теоретичні відомості Логічні команди
- •Команди передачі управління по значеннях флагів zf, sf, pf
- •7.2 Порядок виконання роботи
- •Стани регістрів в процесі виконання програми:
- •7.3 Завдання
- •7.4 Контрольні запитання
2.2 Порядок виконання роботи
1. Скласти асемблер-програму згідно з завданням. У завданні 1 дані розмістити в кодовому сегменті, у завданні 2 – в сегменті даних.
2. Використовуючи програми tasm.exe та tlink.exe, отримати виконувані модулі - .com для завдання 1 та .exe для завдання 2.
3. Виконати отримані програми у відладчику Turbo Debugger (td.exe) в покроковому режимі. Переконатись у правильності виконання програми, переглядаючи вміст необхідних регістрів та комірок пам’яті.
4. Після виконання кожної команди процесора відобразити значення регістрів що змінилися.
Приклад оформлення програм:
Програма на мові Assembler:
.MODEL SMALL
.STACK 100h
.DATA
Mes DB 'Hello!',13,10,'$'
.CODE
mov ax,@Data
mov ds,ax ; встановити регістр DS так,
; щоб він вказував на сегмент даних
mov ah,9 ; функція DOS виводу рядка
mov dx,OFFSET Mes ; посилання на повідомлення "Hello!"
int 21h ; вивести "Hello!" на екран
mov ah,4ch ; функція DOS закінчення програми
int 21h ; закінчити програму
END
Стани регістрів в процесі виконання програми:
Команда |
Стани регістрів, що використовуються |
Стани флагів |
|||||||||
ax |
dx |
ip |
c |
z |
s |
o |
p |
a |
i |
d |
|
mov ax,@Data |
5B7E |
|
0003 |
|
|
|
|
|
|
1 |
|
mov dx,ax |
5B7E |
5B7E |
0005 |
|
|
|
|
|
|
1 |
|
mov ah,9 |
097E |
5B7E |
0007 |
|
|
|
|
|
|
1 |
|
mov dx,OFFSET Mes |
097E |
|
000A |
|
|
|
|
|
|
1 |
|
int 21h |
0924 |
|
000C |
|
|
|
|
|
|
1 |
|
mov ah,4ch |
4C24 |
|
000E |
|
|
|
|
|
|
1 |
|
Примітка. Стан регістрів і комірок пам’яті зафіксувати до виконання коду завершення програми (int 21h).
5. Зробити висновки за результатами роботи.
Варіант № |
Завдання |
1 |
Задана однобайтова змінна А, константа С=100 та масив В з 5 двобайтових змінних. 1) переслати С в регістр АХ 2) переслати вміст регістру АХ в третій елемент масиву В, використовуючи пряму адресацію. 3) переслати в регістр DL змінну А, використовуючи індексну адресацію. |
2 |
Задана константа С=200, двобайтова змінна А та масив В з 8 двобайтових змінних. 1) переслати в регістр СХ третій елемент масиву В, використовуючи індексну адресацію зі зміщенням. 2) переслати вміст регістру СХ в змінну А, використовуючи базову адресацію 3) переслати С в четвертий елемент масиву В, використовуючи пряму адресацію |
3 |
Задана константа С=20, однобайтова змінна А та масив В з 5 однобайтових змінних. 1) переслати С в змінну А, використовуючи пряму адресацію 2) переслати вміст регістру ВН в третій елемент масиву В, використовуючи базову адресацію. 3) переслати в регістр СХ другий елемент масиву В, використовуючи індексну адресацію. |
4 |
Задана константа С=300, двобайтова змінна А та масив В з 8 однобайтових змінних. 1) переслати в регістр СН другий елемент масиву В, використовуючи базову адресацію зі зміщенням. 2) переслати в регістр ВХ змінну А, використовуючи пряму адресацію. 3) переслати С в третій елемент масиву В, використовуючи індексну адресацію зі зміщенням. |
5 |
Задана константа С=120, масив А з 6 двобайтових змінних та однобайтова змінна В. 1) переслати С в змінну В, використовуючи базову адресацію 2) переслати в регістр АХ другий елемент масиву А, використовуючи індексну адресацію зі зміщенням. 3) переслати В в регістр СХ, використовуючи пряму адресацію. |
6 |
Задана константа С=128, двобайтова змінна А та масив В з 6 однобайтових змінних. 1) переслати в регістр ВН четвертий елемент масиву В, використовуючи пряму адресацію. 2) переслати в регістр СХ змінну А, використовуючи індексну адресацію 3) переслати С в четвертий елемент масиву, використовуючи базову адресацію зі зміщенням. |
7 |
Задана константа С=197, двобайтова змінна А та масив D з 5 двобайтових змінних. 1) переслати в п’ятий елемент масиву вміст регістру ВХ, використовуючи базово-індексну адресацію. 2) переслати С в змінну А, використовуючи пряму адресацію 3) переслати в регістр DХ другий елемент масиву, використовуючи пряму адресацію. |
8 |
Задана константа С=200, двобайтова змінна А та масив В з 8 двобайтових змінних. 1) переслати в регістр СХ третій елемент масиву В, використовуючи базову адресацію. 2) переслати вміст регістру СХ в змінну А, використовуючи пряму адресацію 3) переслати С в четвертий елемент масиву В, використовуючи індексну адресацію зі зміщенням |
9 |
Задана константа С=300, однобайтова змінна А та масив В з 6 двобайтових змінних. 1) переслати в регістр DI другий елемент масиву В, використовуючи пряму адресацію. 2) переслати в регістр ВН змінну А, використовуючи базову адресацію. 3) переслати С в другий елемент масиву В, використовуючи індексну адресацію. |
10 |
Задана константа С=196, двобайтова змінна А та масив В з 10 двобайтових змінних. 1) переслати С в змінну А, використовуючи пряму адресацію. 2) переслати вміст регістру ВХ в четвертий елемент масиву В, використовуючи базову адресацію зі зміщенням. 3) переслати в регістр DХ другий елемент масиву В, використовуючи індексну адресацію зі зміщенням. |
11 |
Задана двобайтова змінна А, константа С=50, масив В з 6 однобайтових змінних 1) переслати в регістр СХ змінну А, використовуючи базову адресацію. 2) переслати С в третій елемент масиву В, використовуючи пряму адресацію. 3) переслати третій елемент масиву В в регістр ВХ, використовуючи індексну адресацію зі зміщенням. |
12 |
Задана константа С=420, двобайтова змінна А та масив В з 7 двобайтових змінних. 1) переслати С в змінну А, використовуючи індексну адресацію. 2) переслати вміст регістру SI в шостий елемент масиву В, використовуючи пряму адресацію. 3) переслати в регістр СL другий елемент масиву В, використовуючи базову адресацію зі зміщенням. |
13 |
Задана константа С=1024, двобайтова змінна А та масив В з 6 однобайтових змінних. 1) переслати в регістр ВН п’ятий елемент масиву В, використовуючи пряму адресацію. 2) переслати вміст регістру СХ в змінну А, використовуючи індексну адресацію 3) переслати С в четвертий елемент масиву, використовуючи базово-індексну адресацію. |
14 |
Задана константа С=30, однобайтова змінна А та масив В з 6 двобайтових змінних. 1) переслати в регістр ВН змінну А, використовуючи пряму адресацію. 2) переслати вміст регістру ВХ в п’ятий елемент масиву В, використовуючи пряму адресацію 3) переслати С в змінну А, використовуючи базову адресацію. |
15 |
Задана константа С=777, однобайтова змінна А та масив В з 6 однобайтових змінних. 1) переслати в регістр СН третій елемент масиву В, використовуючи індексну адресацію. 2) переслати вміст регістру DL в змінну А, використовуючи пряму адресацію 3) переслати С в п’ятий елемент масиву В, використовуючи базову адресацію. |