
- •Міністерство освіти і науки України Запорізький національний технічний університет методичні вказівки
- •Лабораторна робота № 7 логічні операції. Організація і команди.
- •7.1 Мета роботи
- •7.2 Загальні відомості
- •7.3 Порядок виконання роботи
- •7.5 Контрольні запитання
- •Лабораторна робота № 8 операції і команди зсуву
- •8.1 Мета роботи
- •8.2 Загальні відомості
- •8.3 Порядок виконання роботи
- •8.5 Контрольні запитання
- •Лабораторна робота № 9 операції і команди порівняння
- •9.1 Мета роботи
- •9.2 Загальні відомості
- •9.3 Порядок виконання роботи
- •9.5 Контрольні запитання
- •Лабораторна робота № 10 операції, команди безумовного й умовного переходів
- •10.1 Мета роботи
- •10.2 Загальні відомості
- •10.3 Порядок виконання роботи
- •10.5 Контрольні запитанння
- •Лабораторна робота № 11 маніпуляції зі стеком.Виклик і повернення з підпрограм.Переривання
- •11.1 Мета роботи
- •11.2 Загальні відомості
- •11.3 Порядок виконання роботи
- •11.5 Контрольні запитання
- •Лабораторна робота № 12 уведення,виведення і обмін інформацією
- •12.1 Мета роботи
- •12.2 Загальні відомості
- •12.3 Порядок виконання роботи
- •12.5 Контрольні запитання
- •Література
11.3 Порядок виконання роботи
11.3.1 Написати і виконати програму обміну регістровими парами, використовуючи команди запису в стек і відновлення для регістрів: ВС — > DE, DE — > HL, HL — > ВС.
Вихідні значення взяти довільно. Результати перевірити.
11.3.2 Написати і виконати програму побайтного додавання двох масивів без урахування переносу і запису результатів у перший масив, використовуючи для адресації обох масивів пари HL.
Адреси масивів і значення покажчика стека: перший масив – 0 – FFH, другий масив – 100H – 1FFH, ПС – B20H
11.3.3 Написати і виконати підпрограму, що містить виклик підпрограми, що виконує додавання чотирьох двубайтових величин. Вхідні величини передаються в підпрограму через стек, повернення результату в регістрову пару HL. Вихідні значення двубайтових величин узяти довільно.
11.3.4 Написати і виконати програму відповідно до алгоритму:
- заповнити масив (900H — 9FFH) константою ЕЕН;
- підрахувати контрольну суму масиву (без урахування переносу);
- заповнити масив (0A00H — 0AFFH) константою 11H;
- підрахувати контрольну суму.
Підрахунок контрольної суми оформити у виді підпрограми, з передачею параметрів у якості вхідних -адрес початку і кінця масиву, а в якості вихідного параметра - значення контрольної суми.
11.3.5 Написати і виконати програму,яка викликає внутрішнє переривання через переповнення пам'яті (або апаратні).
11.3.6 Написати і виконати програму реалізуючу зовнішнє переривання, джерелом якого служить кнопка <ПЕРЕРИВАННЯ>.
11.4 Зміст звіту
Звіт повинен містити:
назву та мету роботи;
написані програми відповідно до завдань 11.3;
результати та висновки.
11.5 Контрольні запитання
1) визначення і характеристика області стека;
2) особливості запису і відновлення вмісту стека;
3) практична реалізація стека в МП КР580;
4) звертання і повернення з підпрограм;
5) організація переривань.
Лабораторна робота № 12 уведення,виведення і обмін інформацією
12.1 Мета роботи
Вивчення особливостей взаємодії мікропроцесора з зовнішніми пристроями.
12.2 Загальні відомості
Організація взаємодії МП із зовнішніми пристроями шляхом передачі інформаційних повідомлень здійснюється за допомогою портів. Портом називають спеціальну схему, що підключається до шин МП, яка забезпечує підключення зовнішнього пристрою (клавіатури, накопичувача, принтера і т.п.).
Кожна така схема має групу восьмиразрядних шин уведення/виведення , адресну шістнадцатирозрядну шину, шину керування уведенням/виведенням і групи шин, які часто називають портами, хоча більш правильно було б називати адресними регістрами, які служать для тимчасового зберігання переданої інформації і які складають основу зазначених вище схем.
Так як адресна шина порту шістнадцятирозрядна, значення адрес лежать у межах 0000Н...FFFFH, тобто МП може адресувати 65536 портів. Очевидно, що МП функціонально обмежений, що випливає з концепції його побудови. Вони функціонують як елементи СІ системи. З'єднання між окремими елементами системи складають інтерфейс. Інтерфейсом називають сукупність уніфікованих технічних і програмних засобів, необхідних для підключення певного функціонального пристрою до системи чи однієї системи до іншої. Звичайно інтерфейс є спільною межею між окремими пристроями, що обумовлюють розділ інформації. Серед багатьох властивостей інтерфейсу слід відзначити рішення завдань синхронізації, вибору напрямку передачі даних, узгодження рівнів і форм сигналів та ін. Уведення даних є по суті входженням до МП, а виведення - це вихід із МП. Як правило, МП є ядром всіх операцій, включаючи уведення/виведення за винятком операції прямого доступу до пам'яті, у якому він не бере участі, надаючи керування шинами даних і адрес переферійним пристроям.
Звичайно передача даних до МП і із нього здійснюється у формах:
- зчитування пам'яті;
- запис у пам'ять;
- зчитування з зовнішнього пристрою;
- запис у зовнішній пристрій;
- керування перериванням або скиданням.
Очевидно, що ША, ШД і ШК відіграють важливу роль у взаємних зв'язках елементів системи нарівні з програмними засобами. Крім того, у ряді випадків до складу інтерфейсу входять додаткові узгоджуючі і спеціалізовані пристрої: адаптери, контролери, регістри і т.п.
Адаптер - пристрій, що здійснює узгоджений обмін інформацією між каналами різного рівня або пристроями з різними способами представлення даних, або різними видами інформаційних сполучень. Входить до складу апаратури автоматичної передачі даних. Забезпечує обмін інформацією в системі між ОЗП, ЗП і пристроями уведення/виведення інформації незалежно від роботи МП. Найчастіше використовується в обчислювальних системах колективного користування, у мережах, модемах і т.п.
Контролер - керуючий, контролюючий чи оброблюючий інформацію пристрій, що реалізує строго визначену логіку реагування на сигнали і значення параметрів об'єкта керування. Представляє собою непрограмований автомат або автомат з незмінною програмою, спеціалізований на виконанні певного завдання. Широко застосовується для організації систем сполучення МП із ЗП, периферійними пристроями, пристроями переривань та прямого доступу до пам'яті і т.п. Використовуючи зазначені принципи і пристрої можна організувати взаємодію МП з іншими елементами даної МПС, а також між різними МПС, використовуючи необхідні датчики і перетворювачі сигналів, автоматизувати керування зовнішніми об'єктами. У системі команд КР580 передбачені дві команди взаємодії МП із зовнішніми пристроями: уведення і виведення восьмирозрядних даних.
За командою уведення зчитуються дані з зовнішнього порту, адреса якого задана у другому байті команди, до акумулятора МП. Формат команди:
IN PORT N,
де PORT N - адреса порту уведення.
По команді виведення здійснюється виведення даних з акумулятора МП у зовнішній порт, адреса якого указується в другому байті команди. Формат команди:
OUT PORT M
де PORT M - адреса порту виведення.
Використовуючи ці команди можна створити програми-драйвери, що забезпечують взаємодію МП із периферійною технікою.
Як приклад розглянемо програму-драйвер прийому даних із клавіатури НМК і виведення на шестисигментний дисплей.
Вихідні дані і прийняті позначення:
- PORT A порт номер індикатора містить:
1) 20Н - 0 індикатор ( правий );
2) 10Н - 1 індикатор;
3) 08Н - 2 індикатор;
4) 04Н - 3 індикатор;
5) 02Н - 4 індикатор;
6) 01Н - 5 індикатор;
- адреса порту F8H.;
- PORT B - порт виведення даних (кодів відображуваного символу);
- адреса порту F9H;
- PORT C - порт стану клавіатури;
- адреса порту FAH.
Відображення символу на дисплеї здійснюється в такий спосіб: у порт А вводиться номер індикатора, а в порт В - код символу. Щоб відображені символи постійно були присутні на індикаторах дисплея, їх необхідно постійно регенерувати. Для цього використовується буфер регенерації, у якому зберігаються коди відображуваних символів і періодично виводяться в порт А і порт В. Щоб погасити індикатор, у порт А треба вивести номер даного індикатора, а в порт В - 0. При натисканні кнопки клавіатури в порт С встановлюються біти, що сигналізують про те, що є дані для уведення.
Запишемо в пам'ять коди програми уведення і відображення даних.
Таблиця 12.1
-
800
LXI H, 08AEH
21 AE 08
Обнулити буфер регенерації
803
MVI C, 06H
0E 06
805
MVI M, 00H
36 00
807
INX H
23
808
DCR C
0D
809
JNZ 805H
C2 05 08
80С
LXI H, 08AEH
21 AE 08
Регенерація дисплея
80F
MVI B, 20H
06 20
Завантажити порт В-номер мол. індикатора
811
MOV A, B
78
812
OUT PORT A
D3 F8
Виведення номера індикатора
814
MOV A, M
7E
А = М, код виведеного символу
815
OUT PORT B
D3 F9
Виведення символу на дисплей
817
IN PORT C
DB F9
Фіксація моменту натискання клавіші
819
ANI 74H
E6 74
81B
CPI 74H
FE 74
81D
MVI A, 00H
3E 00
Скидання виведеного символу
81F
OUT PORT B
D3 F9
821
JNZ 82EH
C2 2E 08
Перехід при натиснутій клавіші
824
INX H
23
HL=HL+1 адреса наступного символу
825
MOV A, B
78
Віднімання номера наступного індикатора
826
RRC
0F
827
MJV B, A
47
828
JNC 0811H
D2 11 08
Цикл регенерації і перевірки уведення
82B
JMP 080CH
C3 0C 08
Перехід до першого індикатора
82E
CALL 865H
CD 65 08
Виклик п/п затримки сигналу
831
IN PORT C
DB FA
Читання введених даних
833
MOV C, A
4F
834
IN PORT C
DB FA
Фіксація моменту відпускання клавіші
836
ANI 74H
E6 74
838
CPI 74H
FE 74
83A
JNZ 834H
C2 34 08
83D
CALL 865H
CD 65 08
Виклик п/п затримки сигналу
840
CALL 86FH
CD 6F 08
Виклик п/п перетворення коду
843
LXI H, 89EH
21 9E 08
Перетворення коду ASCII у код виведення
846
CPI A
FE 41
HL - адреса таблиці кодів
848
JC 84DH
DA 4D 08
А - код символу ASCII
84B
SUI 7
D6 D7
Індекс у таблиці кодів
84D
ANI OFH
E6 0F
84F
MOV E, A
5F
850
MVI D,O
16 00
852
DAD D
19
853
MOV E, M
5E
Код виведення символу
854
LXI H,8AEH
21 AE 08
Запис у буфер виведення
857
MVI D, 6
16 06 08
859
MOV A, M
7E
85A
MOV M, E
73
85В
MOV E, A
5F
85С
INX H
23
85D
DCR D
15
85E
JNZ 859H
C2 59 08
861
JMP 80CH
C3 0C 08
Продовжувати
864
NOP
00
П/п затримки сигналу, усунення дрижання контактів
865
LXI D,1000H
11 00 10
868
DCX D
1B
DE=DE-1
869
MOV A, E
7B
86A
ORA D
B2
86B
JNZ 868H
C2 68 08
86E
RET
C9
П/п перетворення коду клавіші в код ASCII, результат повернення в А
86F
MOV A, C
79
870
ANI 10H
E6 10
872
JNZ 877H
C2 77 08
875
MVI C, 0
0E 00
877
MOV A, С
79
878
ANI 64H
E6 64
87A
RAR
1F
87B
RAR
1F
87C
RAR
1F
87D
MOV C, A
4F
87E
MOV A, B
78
87F
ANI 3
E6 03
881
JNZ 897H
C2 97 08
884
MOV A, B
78
885
RAR
1F
886
RAR
1F
887
RAR
1F
888
CPI 4H
FE 04
88A
JNZ 88EH
C2 8E 08
88D
DCR A
3D
88E
ADD C
81
88F
ORI 00H
F6
891
CPI 3AH
FE 3A
893
RC
D8
894
ADI 07H
C6 07
896
RET
C9
897
DCR A
3D
898
MOV B, A
47
899
MOV A, C
79
89A
RRC
0F
89B
ADD B
80
89C
RET
C9
89D
NOP
00
Таблиця кодів виведених символів
89E
8A2
8A6
8AA
8AE
DB 3FH, 6H, 5BH, 4FH
DB 66H, 6DH, 7DH, 7H
DB 7FH, 6FH, 77H, 7CH
DB 39H, 5EH, 79H, 71H
буфер регенерації
Контрольна сума кодів уведеної програми (800H - 89DH) повинна дорівнювати 44Н.
Запустити програму командою <СТ> 800 <ВП>.
При натисканні на будь-яку кнопку клавіатури даних на правому індикаторі дисплея повинний відображатися уведений символ. Раніше уведений символ переміщається уліво на наступний індикатор. Вихід із програми здійснюється кнопкою <ПЕРЕРИВАННЯ>.
Клавіатура даних являє собою матрицю ключів розміром 4*4, що має вертикальні лінії (стовпчики) і горизонтальні лінії (рядки). Стовпчики скануються, тобто на них послідовно подаються сигнали з заданою частотою. Сканування може бути реалізоване МП, зсувовим регістром, двійковим лічильником і дешифратором. Вертикальні лінії і горизонтальні лінії зв'язані із схемою кодування. Матриця клавіатури при скануванні МП з'єднується з портами уведення/виведення . Для виконання сканування вертикальних ліній, виконання процедури багаторазового підтвердження факту замикання контактів ключа і виключення дрижання контактів, а також для формування вихідних сигналів потрібні спеціальні підпрограми.
Для відображення інформації на дисплеї використовуються букво-цифрові символи на основі сегментних структур, найчастіше із семи елементів. Шестнадцяткові цифри на такому індикаторі мають вид, показаний в табл.12.2.
Таблиця 12.2
-
Ключ
Код ключа
D0 D1 D2 D3
Коди ASCII
D0 D1 D2 D3
Код символу
D4 D5 D6 D7
0
0000
0011
0000
1
0001
0001
2
0010
0010
3
0011
0011
4
0100
0100
5
0101
0101
6
0110
0110
7
0111
0111
8
1000
1000
9
1001
1001
A
1010
0100
0001
B
1011
0010
C
1100
0011
D
1101
0100
E
1110
0101
F
1111
0110