
Міністерство освіти і науки України
Кіровоградський національний технічний університет
Кафедра програмного забезпечення
Методичні вказівки
до лабораторних робіт
Дисципліна: “ Машино-орієнтоване програмування ”
Розробив: асистент Дрєєва Г.М.
м.Кіровоград 2011
Вступ
Мікропроцесор (МП) – пристрій, що виконує функції програмної обробки інформації, які аналогічні функціям центрального процесора звичайної ЕОМ (електро - обчислювальної машини). МП побудовано на одній схемі великого степеню інтеграції (ВІС) або в вигляді модуля, що містить декілька ВІС.
Рані ЕОМ виконувались з застосуванням тисяч електронних ламп. Вони були громіздкі та незручні. Наступне покоління ЕОМ будувалось на транзисторах, що зробило їх значно надійнішими, зменшило їх розміри та коштовність. Це поклало початок практичному використанню комп’ютера. В 1960 році були виготовлені маленькі та потужні ЕОМ на основі сотень вентилів, тригерів та інших подібних їм інтегральних схем. З розвитком напівпровідникової технології стало можливим сумістити в одній схемі декілька вентилів.
Роботи по мініатюризації ЕОМ продовжувались, і в1971 році було створено перший МП. Мікропроцесорний кристал містить тисячі вентилів і є інтегральною схемою ВІС. Крім того отримали розвиток ВІС, що зберігають тисячі біт цифрової інформації в одному корпусі.
Шина адреси
Шина даних
Шина
керування
Рис.1 Схема
мікропроцесорної системи
Блок пам’яті
Пристрій введення/ виведення
МП
На рис.1 показано спрощену схему мікропроцесору КР580ВМ80.
Лабораторна робота №1
Тема: Робота з навчальним мікропроцесорним комплектом (УМК)
Мета: навчитись працювати з УМК.
Теоретичні відомості
Курс «Програмування на мові ASM-80» побудовано на основі навчального мікропроцесорного комплекту (УМК), що має МП на одному кристалі КР580ВМ80 і є МП 2-го покоління (зарубіжний аналог Intel 8080). Його розрядність становить 8біт (1байт).
Асемблер або компілятор може працювати не обов’язково на тій ЕОМ, на якій він генерує об’єктну програму. Асемблер, що працює на ЕОМ того ж типу, на якій буде виконуватися програма, називається власним асемблером або резидентним асемблером. Асемблер, що працює на іншій ЕОМ, називається крос-асемблером.
Монітор - резидентна керуюча програма діалогового взаємовідношення оператора з мікро - ЕОМ, яка виконує наступні основні функції:
керування роботою програмного каналу обміну з периферійними пристроями (клавіатура, дисплей, принтер);
створення різних режимів роботи мікро - ЕОМ і керування ними;
приймання різних команд оператора та їх інтерпретація процесором;
завантаження абсолютних програм і керування ходом їх виконання.
Монітори мають також функції відлагодження:
індикація змісту пам’яті та змісту регістрів ЦП;
модифікація змісту пам’яті та змісту регістрів ЦП;
виконання програми з вказаної адреси;
припинення виконання програми, якщо досягнуто вказану адресу, виконання вказаної команди, умови;
покомандне трасування (кроковий режим);
трасування групи команд.
Навчальний мікропроцесорний комплект (УМК)
В постійну пам’ять УМК занесено програму монітор, яка займає 1кВ і має адреси 0…3FFH. Ще 1кВ постійної пам’яті, що має адреси 400Н…7FFH, зарезервовано за користувачем. Оперативна пам’ять використовується для зберігання програм і даних, що змінюються. Оперативна пам’ять займає адреси з 800Н до BFFH та має ємність 1кВ. Остані 54 комірки оперативної пам’яті займає стек.
Пульт оператора складається з клавіатури, 6-розрядного дисплею, світлової індикації, керуючих кнопок: “СБ”- скид, “ПР”- переривання, “ШГ”- крок і перемикачів: “РБ/ШГ” - робота-крок; “КМ/ЦК” – команда-цикл.
Клавіатура складається з 24 клавіш, з них 8 – директивні, а 16 – інформаційні.
Директивні:
“П” – читання і зміна змісту пам’яті;
“РГ” - читання і зміна змісту регістрів;
“СТ” – передача керування програмі користувача;
“КС” – визначення контрольної суми масиву пам’яті;
“ЗК” – заповнення масиву пам’яті константою;
“ПМ” – переміщення масиву пам’яті в адресному просторі;
“ ” – використовується для розділення кількох змінних при введенні;
“ВП” – виконати, кінець директиви.
Інформаційні клавіші використовують для введення чисел в 16 – му коді. Клавіші від А до F використовують для ідентифікації регістрів. При помилках в роботі з клавіатурою виникає знак питання “?”
Порядок вмикання:
Кнопка “~” в відтиснутому стані.
Підключити до мережі змінного струму.
Перемикач “РБ/ШГ” в положенні робота (відтиснутий стан).
Ввімкнути УМК, натиснувши кнопку “~”.
Натиснути кнопку “СБ”, після чого в крайній лівій позиції з’явиться “-”, як запрошення до роботи.
Індикація і зміна змісту пам’яті
“П” X1X2X3X4 D1D2 D3D4 “ВП”
адреса дані
Індикація і зміна змісту регістрів
“РГ” А … “ВП”
В
С
D
E
H
L
F
SL
SH
PL
PH
Передача керування програмі користувача
“СТ” Адреса1 Адреса2 Адреса3 “ВП”
Адреса1 – початкова адреса програми, Адреса2 і Адреса3 – адреси виконання переривання програми.
Визначення контрольної суми масиву пам’яті
“КС” Адреса1 Адреса2 “ВП”
Заповнення масиву пам’яті константою
“ЗК” Адреса1 Адреса2 D “ВП”,
де D – байт даних, що заносяться в пам’ять.
Переміщення масиву пам’яті в адресному просторі
“ПМ” Адреса1 Адреса2 Адреса3 “ВП”,
Адреса3 не повинна бути в межах адрес 1 та 2.
Приклад: ( 2 * ( 56 – 2 * 18 ) – 19 ) / 2
Блок – схема Програма
ORG
800H
; початкова адреса
800
3E 12 MVI A,18 ; A
18 802
87 ADD A ; A
A + A 803
47 MOV B,A ; B
A 804
3E 38 MVI A,56 ; A
56 806
90 SUB B ; A
A-B 807
87 ADD A ; A
A + A 808
D6 13 SUI 19 ; A
A-19 80A
37 STC ;
80B
3F CMC ; ділення на 2
80C
1F RAR ;
80D
76 HLT
A
18 A
A + A
A
A-B A
A+A
A
A-19 ділення
на 2
B
A A
56
Завдання:
Набрати на УМК об’єктний код запропонованої програми. Запустити її і перевірити результат.
Скласти алгоритм та написати програму для обчислення виразу 2*N + N/2 + N,
де N – номер варіанту в журналі.
Контрольні питання:
Скільки байт має УМК?
Скільки байт займає постійна пам’ять?
Скільки байт займає оперативна пам’ять?
З якої адреси користувач може писати програми?
За допомогою якої директиви програму записують в УМК?
За допомогою якої директиви програму запускають на виконання?
За допомогою якої директиви можна переглянути вміст регістрів процесора?
Звіт до кожної лабораторної роботи повинен мати:
Титульна сторінка (додаток 1).
Завдання.
Алгоритм у відповідності з держ. стандартами (додаток 2).
Лістинг програми.
Результати.
Лабораторна робота №2
Тема: Послідовні програми
Мета: навчитися використовувати послідовне програмування для рішення конкретних задач
Теоретичні відомості
Приклад: Обчислити Z, враховуючи, що X і Y знаходяться в пам’яті за мітками XXX i YYY відповідно. Результат розмістити за міткою ZZZ.
Z=(2X + 25 – 4Y )/2 + 12, X=10, Y=16
Блок – схема Програма
ORG
800H
; початкова
адреса
800
3A 18 08 LDA XXX ; A
(XXX) 803
87 ADD A ; A
A + A 804 C6 19 ADI
25 ; A
A+25 806 47 MOV
B,A ; B
A 807 3A 19
08 LDA YYY ; A
(YYY) 80A
87 ADD A ; A
A + A 80B
87 ADD A ; A
A + A 80C
4F MOV C,A; C
A 80D
78 MOV A,B; A
B 80E
91 SUB C; A
A – C 80F
37 STC
;
810
3F CMC
; ділення
на 2
811
1F RAR ;
812
C6 0C ADI 12 ; A
A+12 814
32 1А 08 STA ZZZ ; (ZZZ)
(A) 817
76 HLT 818
0A XXX: DB 10 819
10 YYY: DB 16 81A
00 ZZZ: DB 0 END
A
(XXX) A
A + A
A
(YYY) A
A+A
A
A+A C
A
A
B
A
A+25 B
A
A
A- С ділення
на 2
A
A+12 (ZZZ)
(A)
З авдання: Написати алгоритм і програму у відповідності з вказаним варіантом. Програму розпочати з адреси 800H+N, де N – номер варіанту. Результат розмістити за міткою ZZZ. Набрати програму на УМК . Запустити і перевірити результат.
Варіант №1. Z=(5X – 4Y )/2 - 9, X=30, Y=6
Варіант №2. Z=2(X + 2Y ) + X/2, X=10, Y=10
Варіант №3. Z=(X/2 – 4Y )/2 + 26, X=1, Y=6
Варіант №4. Z=5X – Y + 126/2 , X=10, Y=26
Варіант №5. Z=120/2 + 3(X+2Y - 12), X=30, Y=20
Варіант №6. Z=2(X + 2Y ) - 25, X=31, Y=8
Варіант №7. Z=2Y + 4X + 100, X=10, Y=2
Варіант №8. Z= 120 + X/4 – 2Y , X=16, Y=6
Варіант №9. Z=2(X + 2Y) - 126/2, X=40, Y=10
Варіант №10. Z=(3X + 2Y +15 )/2, X=13, Y=7
Варіант №11. Z=(100 + 2X)/2 + 4Y, X=12, Y=1
Варіант №12. Z=(3X + Y + 64 )/2 + 6, X=4, Y=15
Варіант №13. Z= 56 + 3Y + X, X=60, Y=2
Варіант №14. Z=2X + Y - 6, X=21, Y=16
Варіант №15. Z=(2X + 3Y )/2 + 16, X=3, Y=38
Варіант №16. Z=X + 5Y - 8, X=120, Y=1
Варіант №17. Z=(3X – 2Y )/4 - 9, X=10, Y=4
Варіант №18. Z=4(Y + 5 ) + X/2, X=12, Y=18
Варіант №19. Z=(X/4 – 2Y )/2 + 16, X=24, Y=6
Варіант №20. Z=110/2 + 3(X+4Y - 12), X=20, Y=10
Варіант №21. Z=4(X + 3Y ) - 12, X=3, Y=18
Варіант №22. Z=2Y + 3X + 10, X=15, Y=12
Варіант №23. Z= (120 + X)/4 – Y , X=10, Y=14
Варіант №24. Z=2(3X + 2Y) - 126/4, X=4, Y=8
Варіант №25. Z=(5X + 4Y - 13 )/2, X=18, Y=17
Варіант №26. Z=(120 + 3X)/2 + 4Y, X=19, Y=7
Варіант №27. Z=(4X + 5Y - 34 )/2 + 16, X=2, Y=10
Варіант №28. Z= 125 - 3Y + X, X=60, Y=20
Варіант №29. Z=(5X + Y – 6)/2, X=2, Y=56
Варіант №30. Z=(3X - 2Y )/4 + 96, X=3, Y=3
Контрольні питання:
Як визначити скільки байт займає команда?
Скільки байт займає команда MVI ?
Як здійснити множення на 4 та ділення на 4?