Занести в регістр А двійково-десяткове число, з частотою 2 Гц. Виводити це число на першому та другому знакомісці статичної індикації
Автор: Владислав Миколайович Демид • Февраль 18, 2023 • Лабораторная работа • 1,550 Слов (7 Страниц) • 171 Просмотры
Лабораторна робота №1
Демида Владислава Миколайовича
Варіант № 3
Завдання: Занести в регістр А двійково-десяткове число, з частотою 2 Гц. Виводити це число на першому та другому знакомісці статичної індикації.
Алгоритм роботи программи:
- Ввести двійково-десяткове число в регістр.
- Відобразити його на екрані
- Ввести затримку на двух регістрах, яка рівна #080h, що відповідає 2 герцам
- За допомогою інструкції djnz створити декрименти з вкладеним циклом, які будуть займати такти роботи програми для досягення потрібної частоти в 2 герца
- Очистити екран
- Повернутися в початок програми по проходженню певної ділянки часу
Складений код ассемблеру:
ORG 0
Continue:
mov A,#14h ;записати в А. число 14
mov DPTR,#0B000h ;встановить в DPTR адрес індикатора DD17ffh і зарезервувати для розширення,DD18
movx @DPTR,A ; відобразити на індикаторі DD17ffh, а також на зарезервованому DD18 число 14
mov R1,#080h ; указати часову затримку на регістрах (2 герца)
C1: mov R2,#080h ; вказати часу затримку сигналу для другої половини зображення
C3:
djnz R2, C3; використовуючи такти, збільшити час виконання програми за допомогою циклу, щоб досягти частоти в 2 герца
djnz R1, C1 ; використовуючи інструкцію декрименту
mov A,#000h ; записати блок очищення (нулі)
mov DPTR,#0B000h ;встановити в DPTR адрес індекс DD17ffh і зарезервувати для розширення DD18
movx @DPTR,A ; очистити індикатори DD17ffh та зарезервовані DD18
mov R1,#080h ; часова затримка на обох регістрах (2 герца)
C2: mov R2,#080h ; Використовується для декримету,
C4:
djnz R2, C4 ; визначає час перед переходженям в початок програми
djnz R1, C2 ; відновлює значення в R2
jmp Continue ; перехід в початок програми
END
Результат виконання програми:
1.
[pic 1]
2.
[pic 2]
Значення 14 змінюється з частотою 2 Гц
Контрольні запитання:
- Час виконання команд (поняття такту, машинного циклу)
Такт -- проміжок часу між двома імпульсами тактового генератора, який синхронізує виконання всіх операцій процесора.
Машинний цикл -- проміжок часу між двома послідовними зверненнями центрального процесора до зовнішньої оперативної пам’яті
- Типи команд. Формат команд. Команди прямої і непрямої адресації.
Типи команд
- Команди пересилки даних (mov та ін.);
- Арифметичні команди (add, sub, та ін.);
- Логічні та побітові операції (or, and, xor, shr, ror та ін.);
- Команди управління ходом виконання програми (jmp, loop, ret та ін.);
- Команди виклику переривань (іноді відносять до команд управління): int;
- Команди вводу-виводу в порти (in, out);
- Для мікроконтролерів і мікрокомп'ютерів характерні також команди, що виконують перевірку і перехід по умові, наприклад деякі з них:
- cjne — перейти, якщо не дорівнює;
- djnz — декрементувати, і якщо результат ненульовий, то перейти;
- cfsneq — порівняти, і якщо не дорівнює, пропустити наступну команду.
формат команд
- Команди, котрі не містять операндів, займають в пам’яті 1 байт.
[pic 3]
- Команди з одним операндом (одноадресні)
Операнд в 16-ти розрядному регістрі. Машина команда займає 1 байт, який ділиться на 2 поля: біти 0-4 зберігають код операції (КОП), а біти 5-7 - код регістра.
[pic 4]
В таблиці показані відповідності кодів в r/m і назв для 16-разрядних регістрів.
Код | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
Регістр | AX | CX | DX | BX | SP | BP | SI | DI |
Наприклад
Inc cl
[pic 5]
- Двухоперандні команди
Головна частина команди - 2 байта.
[pic 6]
Наприклад:
mov ax,x
mov x,ax
Значення mod и r/m такі ж, що і при одно-операндних командах. reg зберігає адрес одного з регістрів. Біт d визначає призначення.
...