Міністерство освіти та науки України
Національний технічний університет України
« Київський політехнічний інститут»
Факультет інформатики та обчислювальної техніки
Кафедра технічної кібернетики
Звіт
про виконання індивідуального
практичного завдання
по курсу
«Мікропроцесорні системи»
Варіант 16
Виконали Студенти ІII курсу групи ІК-92
Жуковський В.В. |
Перевірив доцент кафедри технічної кібернетики
___________________ Ігнатенко В. М.
|
Київ 2012
Зміст роботи
Варіант завдання
Змістовний опис програми
Блок-схема алгоритму програми
Текст програми та підпрограми з коментарями
Висновок
Завдання
Створити програму по виводу 3-х текстових повідомлень наступного виду, що записані у відповідних областях памяті:
АБС9, РПГb SOРS, ПАdF ГFH7, EOП5 за допомогою кожного з 3-х тумблерів.
Змістовний опис програми
Створена нами програма повинна виводити на екран повідомлення, які записані в певних областях пам’яті, причому повідомлення повинні виводить в відповідності до увімкнених тумблерів, тобто: якщо увімкнений 1-ий тумблер виводиться перше повідомлення і так далі, при інших комбінаціях тумблерів, таких як 1,2 або 2,3 або 1,3 або всі вимкнені чи всі вимкнені програма не буде ніяк реагувати.
Блок-схема алгоритму програми
Текст програми та підпрограми з коментарями Формуємо код програми
Адреса |
Код |
Асемблер |
Коментарі |
8000 |
3E |
MVI A, 81 |
Програмування інтерфейсу |
8001 |
81 |
|
|
8002 |
D3 |
OUT FB |
Робота на ввід/вивід з регістром РКС |
8003 |
FB |
|
|
8004 |
DB |
IN FA |
Читання стану тумблерів |
8005 |
FA |
|
|
8006 |
06 |
MVI B, 0E |
Заносимо до регістру В маску, для відокремлення бітів які нас цікавлять |
8007 |
0E |
|
|
8008 |
A0 |
ANA B |
Накладаємо маску на отриманий байт |
8009 |
FE |
CPI 08 |
Порівнюємо відфільтрований результат зі станом тумблера який нас цікавить |
800A |
08 |
|
|
800B |
C2 |
JNZ 8014 |
Якщо результат порівняння не 0, то ввімкнений тумблер, який нас не цікавить, переходимо до наступної перевірки, в іншому випадку виконуємо необхідні дії. |
800C |
14 |
|
|
800D |
80 |
|
|
800E |
11 |
LXI D,8070 |
Заносимо до регістрової пари Д,Е адресу, де знаходиться відповідне повідомлення (в даному випадку перше) |
800F |
70 |
|
|
8010 |
80 |
|
|
8011 |
CD |
CALL 8040 |
Викликаємо підпрограму для виводу повідомлення, як результат повідомлення виводиться на табло. |
8012 |
40 |
|
|
8013 |
80 |
|
|
8014 |
DB |
IN FA |
|
8015 |
FA |
|
|
8016 |
06 |
MVI B,0E |
Заносимо до регістру В маску, для відокремлення бітів які нас цікавлять |
8017 |
0E |
|
|
8018 |
A0 |
ANA B |
Накладаємо маску на отриманий байт |
8019 |
FE |
CPI 04 |
Порівнюємо відфільтрований результат зі станом тумблера який нас цікавить |
801A |
04 |
|
|
801B |
C2 |
JNZ 8024 |
Якщо результат порівняння не 0, то ввімкнений тумблер, який нас не цікавить, переходимо до наступної перевірки, в іншому випадку виконуємо необхідні дії. |
801C |
24 |
|
|
801D |
80 |
|
|
801E |
11 |
LXI D,8078 |
Заносимо до регістрової пари Д,Е адресу, де знаходиться відповідне повідомлення (в даному випадку друге) |
801F |
78 |
|
|
8020 |
80 |
|
|
8021 |
CD |
CALL 8040 |
Викликаємо підпрограму для виводу повідомлення, як результат повідомлення виводиться на табло.
|
8022 |
40 |
|
|
8023 |
80 |
|
|
8024 |
DB |
IN FA |
|
8025 |
FA |
|
|
8026 |
06 |
MVI B,0E |
Заносимо до регістру В маску, для відокремлення бітів які нас цікавлять |
8027 |
0E |
|
|
8028 |
A0 |
ANA B |
Накладаємо маску на отриманий байт |
8029 |
FE |
CPI 02 |
Порівнюємо відфільтрований результат зі станом тумблера який нас цікавить |
802A |
02 |
|
|
802B |
C2 |
JNZ 8004 |
Якщо результат порівняння не 0, то ввімкнений тумблер, який нас не цікавить, тому повертаємося на повторне зчитування тумблерів, в іншому випадку виконуємо дії. |
802C |
04 |
|
|
802D |
80 |
|
|
802E |
11 |
LXI D,8080 |
Заносимо до регістрової пари Д,Е адресу, де знаходиться відповідне повідомлення (в даному випадку третє) |
802F |
80 |
|
|
8030 |
80 |
|
|
8031 |
CD |
CALL 8040 |
Викликаємо підпрограму для виводу повідомлення, як результат повідомлення виводиться на табло. |
8032 |
40 |
|
|
8033 |
80 |
|
|
8034 |
C3 |
JMP 8004 |
Виконуємо безумовний перехід на повторне зчитування стану тумблерів, та подальшу перевірку. |
8035 |
04 |
|
|
8036 |
80 |
|
Код використаної підпрограми (ВИВІД ПОВІДОМЛЕННЯ)
Адреса |
Код |
Асемблер |
Коментарі |
8040 |
3E |
MVI A, F0 |
|
8041 |
81 |
|
|
8042 |
D3 |
OUT FB |
|
8043 |
FB |
|
|
8044 |
26 |
MVI H,08 |
Лічильник циклу: 08 – вісім сегментів на табло |
8045 |
08 |
|
|
8046 |
01 |
LXI B,83F8 |
Заносимо до регістрової пари В,С адресу по якій ми будемо виводити повідомлення |
8047 |
F8 |
|
|
8048 |
83 |
|
|
8049 |
1A |
LDAX D |
Завантаження в Акк. значення, яке знах. по адресі, яка записана в регістровій парі Д,Е |
804A |
02 |
STAX B |
Запам’ятовуємо вміст Акк. По адресі яка записана в В,С |
804B |
13 |
INX D |
Збільшення вмісту регістрової пари Д,Е на одиницю |
804C |
03 |
INX B |
Збільшення вмісту регістрової пари B,C на одиницю |
804D |
25 |
DCR H |
Зменшення регістру Н на одиницю |
804E |
3E |
MVI A,00 |
Заносимо до Акк. 0 |
804F |
00 |
|
|
8050 |
BC |
CMP H |
Порівнюємо Акк. З регістром Н |
8051 |
C2 |
JNZ 8049 |
Якщо нуль то завершуємо вивід повідомлення
|
8052 |
49 |
|
|
8053 |
80 |
|
|
8054 |
3E |
MVI A, 81 |
|
8055 |
81 |
|
|
8056 |
D3 |
OUT FB |
|
8057 |
FB |
|
|
8058 |
C9 |
RET |
Повернення до виконання основної програми |