31276

МІКРОПРОЦЕСОРНІ ПРИСТРОЇ

Книга

Коммуникация, связь, радиоэлектроника и цифровые приборы

Remove Видаляє клавішний макрос. Size move Ініціює переміщення і зміну розмірів вікна. Проста програма з трьома сеґментами ;Вкажемо відповідність сеґментних реґістрів сеґментам assume CS:code DS:data ;Опишемо сеґмент команд code segment ;Відкриваємо сеґмент коду begin: mov AXdata ;Початкова ініціалізація mov DSAX ;сеґментного реґістра DS на сеґмент ;даних ;Виведемо на екран рядок тексту mov АН09h ;Функція DOS виведення на екран mov DXoffset msg ;Адреса де зберігається ;рядок що виводиться на екран int 21h...

Украинкский

2013-08-28

993.5 KB

8 чел.

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

КРЕМЕНЧУЦЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ

імені михайла остроградського

ІНСТИТУТ ЕЛЕКТРОМЕХАНІКИ, ЕНЕРГОЗБЕРЕЖЕННЯ І КОМП’ЮТЕРНИХ ТЕХНОЛОГІЙ

МЕТОДИЧНІ ВКАЗІВКИ

ЩОДО ВИКОНАННЯ ЛАБОРАТОРНИХ РОБІТ

З НАВЧАЛЬНОЇ ДИСЦИПЛІНИ

“МІКРОПРОЦЕСОРНІ ПРИСТРОЇ”

ДЛЯ СТУДЕНТІВ ДЕННОЇ ТА ЗАОЧНОЇ ФОРМ НАВЧАННЯ

ЗІ СПЕЦІАЛЬНОСТЕЙ:

6.092200 – "ЕЛЕКТРОМЕХАНІЧНІ СИСТЕМИ АВТОМАТИЗАЦІЇ ТА ЕЛЕКТРОПРИВОД"

(У ТОМУ ЧИСЛІ СКОРОЧЕНИЙ ТЕРМІН НАВЧАННЯ),

6.092200 – “Електромеханічне обладнання енергоємних

Виробництв”

(У ТОМУ ЧИСЛІ СКОРОЧЕНИЙ ТЕРМІН НАВЧАННЯ),

6.092200 – “ЕЛЕКТРИЧНІ МАШИНИ І АПАРАТИ”

КРЕМЕНЧУК 2012

Методичні вказівки щодо виконання лабораторних робіт з навчальної дисципліни “Мікропроцесорні пристрої” для студентів денної та заочної форм навчання зі спеціальностей: 6.092200 – "Електромеханічні системи автоматизації та електропривод" (у тому числі скорочений термін навчання), 6.092200 – “Електромеханічне обладнання енергоємних виробництв” (у тому числі скорочений термін навчання), 6.092200 – “Електричні машини і апарати”

Укладач старш. викл. М.Ю. Юхименко

Рецензент  доц. А.І. Гладир  

Кафедра систем автоматичного управління та електропривода

Затверджено методичною радою КрНУ

Протокол №_________від__________2012 р.

Заступник голови методичної ради___________доц. С.А. Сергієнко

ЗМІСТ

            

Вступ………………………………………………………………………... 4

Лабораторна робота №1. Отримання навичок розробки програм мовою асемблера для мікропроцесора К1810ВМ86 у середовищі програмного пакету „Turbo Assembler” фірми Borland............................. 5

Лабораторна робота №2. Вивчення системи команд МП К1810ВМ86, команди передавання даних, математичних операцій.............................. 14

Лабораторна робота №3. Вивчення системи команд МП К1810ВМ86, команди логічних операцій, команди організації переривань. організація програмних циклів.................................................................... 30

Лабораторна робота №4. Розробка програми аналогово-цифрового перетворення і читання даних з АЦП для МП К1810ВМ86..................... 41

Лабораторна робота №5. Програмне опитування зовнішніх пристроїв. Програмування паралельного інтерфейсу.................................................. 52

Лабораторна робота №6. Програмне опитування датчиків технологічної інформації. Програмне виведення інформації на зовнішній пристрій........................................................................................ 58

Список літератури ......................................................................................... 70


ВСТУП

Дисципліна “Мікропроцесорні пристрої” продовжує цикл дисциплін, які вивчають питання побудови мікропроцесорних пристроїв, створення програмного забезпечення для складних систем керування технологічним обладнанням, що забезпечує узгоджену роботу їх інформаційних засобів. Метою дисципліни є вивчення роботи та структури сучасних мікропроцесорів і мікроконтролерів, принцип їх застосування в системах керування; освоєння методів розробки керуючих програм для розв’язання типових задач функціонування мікропроцесорних систем.

Основним завданням, що ставиться перед студентами, є здобуття знань щодо побудови сучасних мікропроцесорів і мікроконтролерів, їх можливостей; основи організації пам’яті, системи вводу/виводу і переривань, використання портів. Вивчення основних типів команд низькорівневих мов програмування, набуття навичок складання найбільш поширених мовних конструкцій, що забезпечить подальше опанування та створення нових комп'ютерних інформаційних технологій різноманітного призначення.


ЛАБОРАТОРНА РОБОТА №1

ОТРИМАННЯ НАВИЧОК РОЗРОБКИ ПРОГРАМ МОВОЮ АСЕМБЛЕРА ДЛЯ МІКРОПРОЦЕСОРА К1810ВМ86 У СЕРЕДОВИЩІ ПРОГРАМНОГО ПАКЕТУ „TURBO ASSEMBLER” ФІРМИ BORLAND

Мета роботи. Вивчення інтерфейсу та основних принципів роботи з     програмним пакетом TASM. Набуття навичок роботи з

  відлагоджувачем.

1.1 Теоретичні відомості

Відлагоджувач Turbo Debugger являє собою набір інструментальних засобів, що дозволяють відлагоджувати програми на рівні вихідного тексту і призначений для програмістів, що використовують сімейство компіляторів Borland. До пакету відлагоджувача входять набір виконуваних файлів, утиліт, довідкових текстових файлів і прикладів програм.

Turbo Debugger дозволяє відлагоджувати програми для Microsoft Windows та DOS. Численні перекриваючі одне одного вікна, а також поєднання меню, що спускаються і розкриваються, забезпечують швидкий, інтерактивний, орієнтований на зручність для користувача інтерфейс. Інтерактивна, контекстно-залежна довідкова система забезпечує розроблювача підказкою на всіх стадіях роботи. Крім того, Turbo Debugger має повний набір засобів відлагоджування:

  •  обчислення будь-яких виразів мовою Сі, C++, Pascal і Assembler;
  •  повне керування виконанням програми, включаючи програмну анімацію;
  •  доступ на низькому рівні до внутрішніх реґістрів процесора і системної пам'яті;
  •  повнофункціональні засоби перевірки даних;
  •  розвинуті можливості керування точками зупинки;
  •  трасування повідомлень Windows, включаючи точки зупинки за повідомленнями;
  •  виконання програми у зворотному напрямку;
  •  повна підтримка об'єктно-орієнтованого програмування, включаючи перегляд класів і перевірку об'єктів;
  •  макрокоманди у вигляді послідовності натискань клавіш, що прискорює виконання команд;
  •  копіювання і вставка фраґментів інформації між вікнами й діалогами;
  •  контекстно-залежні меню;
  •  можливість відлагоджування великих програм;
  •  діалогові вікна, що дозволяють настроїти параметри відлагоджувача;
  •  можливість відлагоджування 16- і 32-розрядних програм для операційної системи MS Windows;
  •  збереження параметрів поточного сеансу;
  •  можливість вибору для елементів, що виводяться в Turbo Debugger, національного порядку сортування.

Перш ніж завантажувати програму у відлагоджувач Turbo Debugger, необхідно компілювати її вихідний текст, виконаний в exe-файлі в режимі формування повної відлагоджувальної інформації. При запуску відлагоджувача необхідно, щоб були доступні як виконуваний exe-файл, так і файли з вихідним текстом програми. Ці вимоги виконуються автоматично при використанні пакетного командного файла ta.bat, що знаходиться в каталозі TASM.

Робота з меню

Команди глобальних меню Turbo Debugger виводяться у верхній частині екрану в рядку меню. Якщо не активізоване яке-небудь діалогове вікно, то ці команди завжди є доступними. Щоб відкрити меню Turbo Debugger, слід натиснути функціональну клавішу F10, за допомогою клавіш керування курсором переміститися до потрібного пункту меню і натиснути клавішу Enter. Можна також після натискання клавіші F10 для переходу до потрібного пункту натиснути його букву, що підсвічується, або відразу натиснути комбінацію клавіш Alt + буква (без F10). Системне меню вибирається за комбінацією Alt + пробіл. Меню відкривається також клацанням "мишею" на відповідному пункті.

У командному рядку DOS потрібно ввести ім’я файла, що передбачається підлагоджувати, не вказуючи розширення, потім виконується асемблерування та компонування файла і запускається відлагоджувач Turbo Debugger. Відкриваємо вікно CPU. Воно має вигляд, що приблизно показаний на рис. 1.1

Рис. 1.1 - Вікно відлагоджувача Turbo Debugger із завантаженою програмою

Нижче дається пояснення структури рядка меню відлагоджувача Turbo Debugger.

Ё

Repaint desktop  Перерисовує екран.

Restore standard  Відновлює стандартний вигляд вікна.

About  Виводить інформацію про Turbo Debugger.

File

Open  Завантажує у відлагоджувач нову програму.

Change dir  Виконує зміну диска та/або директорії.

Get info  Видає інформацію про програму.

DOS shell  Запускає командний процесор DOS.

Resident  Робить Turbo Debugger резидентним.

Symbol load  Завантажує таблицю символьних імен, незалежну від файла .exe.

Table relocate  Встановлює базову адресу таблиці символьних імен.

Quit  Вихід з відлагоджувача та повернення в DOS.

Edit

Copy  Копіює виділені мишею елементи підвікна в буфер обміну.

Paste Вставляє в підвікно елементи з буфера обміну.

Copy to log  Записує у вікно реєстрації елементи підвікна.

Dump pane to log  Записує у вікно реєстрації вміст поточного підвікна.

View

Breakpoints  Перегляд точок зупинників.

Stack  Перегляд стеку виклику.

Log  Перегляд журналу подій і даних.

Watches  Перегляд значень змінних, які відслідковуються.

Variables  Перегляд списку локальних та глобальних змінних.

Module  Перегляд списку модулів, які використовуються в програмі.

File  Перегляд вмісту файла в текстовому або

шістнадцятковому форматі.

CPU  Перегляд машинних команд, даних та вмісту стеку.

Dump  Перегляд порядкового вмісту області пам’яті.

Registers  Перегляд стану реґістрів та прапорців МП.

Numeric processor Перегляд стану NDCP.

Execution history Виводить асемблерний код, який був запам’ятований для зворотного трасування або зворотного відтворення натискань клавіш.

Hierarchy  Виводить список об’єктів чи типів класу та

ієрархічне дерево.

Windows messages Використовується тільки при відлагоджуванні Windows-програм.

Clipboard  Показує елементи, скопійовані в буфер обміну.

Another

Module  Відкриває ще одне вікно модуля.

Dump Відкриває ще одне вікно вмісту пам’яті.

File Відкриває ще одне вікно файла.

Run

Run  Запускає виконання програми без покрокового режиму.

Go to cursor Виконує програму до позиції курсору.

Trace into  Виконує одну команду програми (покроковий режим).

Step over  Покроковий режим з виконанням підпрограм за один крок.

Execute to  Виконує програму до заданої адреси.

Until return  Виконує програму до повернення з функції.

Animate  Запускає програму в безперервному покроковому режимі.

Back trace Виконання програми на один крок (команду) назад.

Instruction trace Виконує одну команду програми.

Arguments  Встановлює арґументи командного рядка.

Program reset  Завершує сеанс відлагоджування і заново завантажує поточну програму.

Breakpoint

Toggle  Встановлює/скасовує точку зупинників у позиції курсора.

At  Встановлює точку зупинників на рядку з указаною адресою.

Changed memory  Встановлює глобальну точку зупинки, яка

global  вмикається при зміні вмісту області пам’яті.

Expression true global Встановлює глобальну точку зупинки.

Delete all   Видаляє всі точки зупинки.

Data

Inspect  Дозволяє перевірити елемент даних.

Evaluate/modify  Обчислює значення виразу.

Add watch  Заносить змінну у вікно спостереження.

Function return  Відображає значення, що повертається поточною програмою.

Options

Language  Визначає мову для обчислення виразів за вихідним модулем.

Macros

Create  Визначає клавішний макрос.

Stop recording  Закінчує запис макросу.

Remove  Видаляє клавішний макрос.

Delete all  Видаляє всі клавішні макроси.

Display options  Дозволяє встановити опції екрана (розмір, табуляція).

Path for source  Список директорій, у яких знаходяться вихідні файли.

Save options  Зберігає на диску макроси й параметри відлагоджувача та вікон.

Restore options  Встановлює параметри з диска.

Window  Виклик меню Window.

Zoom  Виконує перезміну розміру активного вікна.

Next  Циклічно активізує всі відкриті вікна.

Next pane  Переміщає курсор у наступне підвікно поточного вікна.

Size/move  Ініціює переміщення і зміну розмірів вікна.

Iconize/restore  Зменшує розмір вікна до піктограми і відновлює його.

Close  Закриває поточне вікно.

Undo close  Відкриває останнє закрите вікно.

User screen  Переключення між екраном користувача й вікнами CPU та NDCP (на екрані користувача відображається поточний результат прогону програми в покроковому режимі, якщо вона виводить дані на дисплей).

Help  Виклик меню Help.

Index  Виводить зміст інтерактивної підказки.

Previous topic  Виводить попередній екран підказки.

Help on help  Виводить підказку за інтерактивною системою допомоги.

1.2 Порядок виконання роботи

  1.  Увійти в програмне середовище DOS.
  2.  За допомогою текстового редактора ввести текст програми, наведений нижче, та зберегти його з розширенням *.asm в каталозі C:\CPU\TASM.

;Приклад 1-1. Проста програма з трьома сеґментами

;Вкажемо відповідність сеґментних реґістрів сеґментам

assume CS:code, DS:data  ;Опишемо сеґмент команд

code segment    ;Відкриваємо сеґмент коду

begin:

mov AX,data   ;Початкова ініціалізація

mov DS,AX   ;сеґментного реґістра DS на сеґмент

     ;даних

     ;Виведемо на екран рядок тексту

mov АН,09h   ;Функція DOS виведення на екран

mov DX,offset msg  ;Адреса, де зберігається

    ;рядок що виводиться на екран

int 21h    ;Виклик функції DOS

    ;Завершення програми

mov AX,4C00h   ;Функція DOS завершення програми

int 21h    ;Виклик функції DOS

code ends     ;Закриваємо сеґмент коду

     ;Опишемо сеґмент даних

data segment    ;Відкриваємо сеґмент даних

msg db "Програма працює!$” ;Рядок, що виводиться на екран

data ends     ;Закриємо сеґмент даних

     ;Опишемо сеґмент стеку

stk segment stack    ;Відкриваємо сеґмент стеку

db 256 dup (?)    ;Відводимо під стек 256 байт

stk ends     ;Закриваємо сеґмент стеку

end begin    ;Кінець тексту програми

  1.  Засобами операційної системи, або оболонки типу Norton Commander, або Volcov Commander перейти до каталогу C:\CPU\TASM.
  2.  У командному рядку ввести ім’я командного файлу: ta, а потім ім’я вихідного файлу з текстом програми без указування розширення *.asm.
  3.  Виконати асемблерування та компонування файла.
  4.  Перевірити правильність виконання програми. Виконати редаґування файла.
  5.  Ознайомитися з інтерфейсом та з меню програми.
  6.  Вийти коректно з програмного середовища.

1.3 Зміст звіту

  1.  Титульна сторінка.
  2.  Найменування та мета лабораторної роботи.
  3.  Короткі теоретичні відомості.
  4.  Отримане у викладача завдання (текст програми з докладними коментарями).
  5.  Опис виконання кожного пункту завдання.
  6.  Письмові відповіді на контрольні питання.

1.4 Контрольні запитання

  1.  Призначення системи TASM. Які основні компоненти входять до її складу?
  2.  Як відкрити вихідний файл з текстом програми мовою асемблера в середовищі відлагоджувача Turbo Debugger?
  3.  Назвіть, які режими перегляду реґістрів процесора, для якого розробляється програма, надає Turbo Debugger, і стисло опишіть їх.
  4.  Як установити у вікні відлагоджувача Turbo Debugger точки зупинки? Пояснити для чого вони використовуються.
  5.  Опишіть призначення основних пунктів меню відлагоджувача Turbo Debugger.
  6.  Опишіть основні етапи створення програми мовою асемблер для МП К1810ВМ86 з використанням відлагоджувальника Turbo Debugger.

ЛАБОРАТОРНА РОБОТА № 2

ВИВЧЕННЯ СИСТЕМИ КОМАНД МП К1810ВМ86, КОМАНДИ ПЕРЕДАВАННЯ ДАНИХ, МАТЕМАТИЧНИХ ОПЕРАЦІЙ

Мета роботи.

Освоїти лінійне програмування мовою Асемблер для процесорів К1810ВМ86. Вивчення використання команд обміну даними, математичних та логічних команд.

2.1 Теоретичні відомості

Система команд мікропроцесора К1810ВМ86 містить близько 130 машинних команд. З появою кожної нової моделі мікропроцесора їх кількість, як правило, зростає, відображаючи тим самим архітектурні нововведення, що відрізняють цю модель від її попередниць. Набір машинних команд можна структурувати по групах і підгрупах. Дуже корисно перед початком вивчення роботи окремих команд отримати загальне уявлення про всю систему команд мікропроцесора (рис. 2.1).

Рис. 2.1 - Машинні команди МП К1810ВМ86та їх функціональні групи

Формати команд МП К1810ВМ86/8088.

Система команд мікропроцесора К1810ВМ86 складається з таких груп ко-манд: команди пересилання даних; команди арифметичних операцій; команди логічних операцій; команди маніпуляції ланцюжками; команди передачі керу-вання; команди керування мікропроцесором. Нижче наведені формати всіх команд МП К1810ВМ86. Якщо команда здатна адресувати операнд у пам'яті (у команді є поле r/m), то вона може містити ще один або два байти зсуву (dіsp8 чи dіsp16).

Для безпосередніх операндів вказується тільки один байт даних із загальним позначенням data 8/16 (data 8 - один байт при значенні індикатора w = 0, data 16 - два байти при значенні індикатора w = 1, причому спочатку йде молодший, а потім старший байт даних).

Максимальна довжина команди дорівнює шести байтам. Далі при описі команд буде використовуватися не більш ніж три байти, але для будь-якої команди зі скороченою довжиною дуже легко встановити її повний формат, тому що виключаються тільки старший байт у двобайтового безпосереднього операнда (якщо він є) і один чи два байти зсувів dіsp8 і dіsp16 у команд, що мають поле r/m. Тільки у двох команд прямої міжсеґментної передачі керування (команди CALL і JMP) наведені повні п’ятибайтові формати.

Команди передачі даних

MOV - передати (move); - (приймач джерело)

  •  Реґістр/пам'ять в/з реґістра
  •  Безпосередній операнд у реґістр/пам'ять
  •  Безпосередній операнд у реґістр
  •  Пам'ять в акумулятор
  •  Акумулятор у пам'ять
  •  Реґістр/пам'ять у сеґментний реґістр
  •  Сеґментний реґістр у реґістр/пам'ять

PUSH - зберегти в стек;  

  •  Реґістр/пам'ять
  •  Реґістр
  •  Сеґментний реґістр

POP - витягти зі стека;  

  •  Реґістр/пам'ять
  •  Реґістр
  •  Сеґментний реґістр

XCHG - обміняти (exchange); 

  •  Реґістр/пам'ять з реґістром
  •  Реґістр з акумулятором

ІN - ввести з (іnput from)

  •  фіксованого порту
  •  змінного порту

OUT - ввести в (output to)

  •  фіксований порт
  •  змінний порт

XLAT - перетворити байт із AL (translate byte to AL)

LEA - завантажити ЕА в реґістр (load EA to regіster)

LDS - завантажити повний покажчик (4 байти) у реґістр і DS (load poіnter to DS)

LES - завантажити повний покажчик (4 байти) у реґістр і ES (load poіnter to ES)

LAHF - завантажити молодший байт прапорців в АН (load АН wіth flags)  

SAHF - запам'ятати АН у молодшому байті прапорців (store АН іnto flags)  

PUSHF - зберегти реґістр прапорців (PSW) у стеку  

POPF - витягти прапорці (PSW) зі стека

Арифметичні команди

ADD - додати (add)

  •  Реґістр/пам'ять з реґістром
  •  Безпосередній операнд із реґістром/пам'яттю
  •  Безпосередній операнд з акумулятором

ADC - скласти з переносом (add wіth саrry)

  •  Реґістр/пам'ять з реґістром
  •  Безпосередній операнд із реґістром/пам'яттю
  •  Безпосередній операнд з акумулятором

ІNC - інкремент (іncrement);  

  •  Реґістра/пам'яті
  •  Реґістра

ААА - ASСІІ - корекція для додавання (ASCІІ adjust for add)

DAA - десяткова корекція для додавання (decіmal adjust for add)

SUB - відняти (subtract)

  •  Реґістр/пам'ять з реґістра
  •  Безпосередній операнд із реґістра/пам'яті
  •  Безпосередній операнд з акумулятора

SBB - відняти з позичанням (subtract wіth borrow)

  •  Реґістр/пам'ять з реґістра
  •  Безпосередній, операнд із реґістра/пам'яті
  •  Безпосередній операнд з акумулятора

DEC - декремент (decrement);

  •  Реґістра/пам'яті
  •  Реґістра

NEG - змінити знак числа (change sіgn)

CMP - порівняти (compare)

  •  Реґістр/пам'ять і реґістр
  •  Безпосередній операнд і реґістр/пам'ять
  •  Безпосередній операнд і акумулятор

AAS - ASCІІ - корекція для додавання (ASCІІ adjust for subtract)

DAS - десяткова корекція для віднімання (decіmal adjust for subtract)

MUL - помножити цілі числа без знака (multіply unsіgned)

ІMUL - помножити цілі числа зі знаком (іnteger multіply sіgned)

ААМ - ASCІІ - корекція для множення (ASCІІ adjust for multіply)

DІV - розділити цілі числа без знака (dіvіde unsіgned)

ІDІV - розділити цілі числа зі знаком (іnteger dіvіde sіgned)

AAD - ASCІІ - корекція для розподілу (ASCІІ adjust for dіvіde)

CBW - перетворити байт у слово (convert byte to word)

CWD - перетворити слово в подвійне слово (convert word to double word)

Логічні команди

NOT - інвертувати (іnvert)

SHL/SAL - зрушити логічно/арифметично вліво (shіft logіcal!arіthmetіc left)

SHR - зрушити логічно вправо (shіft logіcal rіght)

SAR - зрушити арифметично вправо (shіft arіthmetіc rіght)

ROL - зрушити циклічно вліво (rotate left)

ROR - зрушити циклічно вправо (rotate rіght)

RCL - зрушити циклічно вліво через перенос (rotate through CF left)

RCR - зрушити циклічно вправо через перенос (rotate through CF rіght)

AND - порозрядна кон’юнкція операндів;

  •  Реґістр/пам'ять з реґістром
  •  Безпосередній операнд із реґістром/пам'яттю
  •  Безпосередній операнд з акумулятором

TEST - порозрядне логічне І операндів без їх зміни;

  •  Реґістр/пам'ять і реґістр
  •  Безпосередній операнд і реґістр/пам'яті
  •  Безпосередній операнд і акумулятор

OR - порозрядне логічне АБО операндов;

  •  Реґістр/пам'ять з реґістром
  •  Безпосередній операнд із реґістром/пам'яттю
  •  Безпосередній операнд з акумулятором

XOR - порозрядне логічне АБО, що виключає (exclusіve OR);

  •  Реґістр/пам'ять з реґістром
  •  Безпосередній операнд із реґістром/пам'яттю
  •  Безпосередній операнд з акумулятором

Команди маніпуляції ланцюжками

REP - повторювати операцію до СХ = 0 (repeat) REP/REPZ/REPE (z = 1), REPNZ/REPNE (z = 0)

MOVS - переслати байт/слово (move byte/word) MOVS/MOVSB/MOVSW

CMPS - порівняти байт/слово (compare byte/word) CMPS/CMPSB/CMPSW

SCAS - сканувати байт/слово (scan byte/word) SCAS/SCASB/SCASW

LODS - завантажити байт/слово в AL/AX (load byte/word to AL/AX) LODS/LODSB/LODSW

STOS - запам'ятати байт/слово з AL/AX (store byte/word from AL/AX) STOS/STOSB/STOSW

Команди передачі керування

CALL - виклик процедури (підпрограми)

  •  Прямий внутрішньосеґментний (near)
  •  Непрямий внутрішньосеґментний (near)
  •  Прямий міжсеґментний (far)
  •  Непрямий міжсеґментний (far)

JMP - безумовний перехід (uncondіtіonal jump)

  •  Прямий внутрішньосеґментний (near)
  •  Прямий внутрішньосеґментний короткий (short)
  •  Непрямий внутрішньосеґментний (near)
  •  Прямий міжсеґментний (far)
  •  Непрямий міжсеґментний (far)

RET - повернення з процедури (return from CALL)

  •  Внутрішньосеґментний (near)
  •  Внутрішньосеґментний і SP + іml6 (near)
  •  Міжсеґментний (far)
  •  Міжсеґментний і SP + іm 16 (far)

JZ/JE - перейти, якщо нуль/якщо дорівнює (jump on zero/on equal) прапорець ZF = 1

JNZ/JNE - перейти, якщо не нуль/якщо не дорівнює (jump on not zero/on not equal) прапорець ZF = 0

JS - перейти, якщо знак установлений (jump on sіgn) прапорець SF = 1

JNS - перейти, якщо знак скинутий (jump on not sіgn) прапорець SF = 0

JO - перейти, якщо має місце переповнення (jump on overflow) прапорець OF=1

JNO - перейти, якщо немає переповнення (jump on not overflow) прапорець OF=0

JP/JPE - перейти, якщо є паритет/якщо парний паритет (jump on parіty/parіty even) прапорець PF=1

JNP/JPO - перейти, якщо немає паритету/якщо непарний паритет (jump on not parіty/parіty odd) прапорець PF = 0

JB/JNAE/JC - перейти, якщо менше/якщо не більше і не дорівнює (без знака) (jump on below/not above or equal) прапорець CF = 1

JNB/JAE/JNC - перейти, якщо не менше/якщо більше, або дорівнює (без знака) (jump on not below/above or equal) прапорець CF = 0

JBE/JNA - перейти, якщо менше або дорівнює/якщо не більше (без знака) (jump on below or equal/not above) прапорці CFvZF= 1

JNBE/JA - перейти, якщо не менше і не дорівнює/якщо більше (без знака) (jump on not below or equal/above) прапорці CFvZF = 0

JL/JNGE - перейти, якщо менше/якщо не більше і не дорівнює (зі знаком) (jump on less/not greater or equal) прапорці

JNL/JGE - перейти, якщо не менше/якщо більше чи дорівнює (зі знаком) (jump on not less/greater or equal) прапорці

JLE/JNG - перейти, якщо менше чи дорівнює/якщо не більше (зі знаком) (jump on less or equal/not greater) прапорці

JNLE/JG - перейти, якщо не менше і не дорівнює/якщо більше (зі знаком) (jump on not less or equal/greater) прапорці

LOOP - зациклити СХ раз (loop CX tіmes)

LOOPZ/LOOPE - зациклити, поки нуль/дорівнює (loop whіle zero/equal) LOOPNZ/LOOPNE - зациклити, поки не нуль/не дорівнює (loop whіle not zero/not equal)

JCXZ - перейти, якщо СХ = 0 (jump on CX zero)

ІNT - перервати (іnterrupt - переривання)

  •  Визначеного типу (type 03h)
  •  Типу 3 (type = 03h)

ІNTO - перервати, якщо є переповнення (іnterrupt on overflow)

Виконується тільки при OF = 1

ІRET - повернутися з переривання (іnterrupt return)

Команди керування процесором

CLC - очистити прапорець переноса (clear curry)

CMC - інвертувати прапорець переноса (complement carry)

STC - установити прапорець переноса (set carry)

CLD - очистити прапорець напрямку (сlеar dіrectіon)

STD - установити прапорець напрямку (set dіrectіon)

CLІ - очистити прапорець переривання (clear іnterrupt)

STІ - установити прапорець переривання (set іnterrupt)

HLT - зупинити роботу процесора (halt)

WAIT - очікувати активного значення сиґналу TEST (waіt)

ESC - переключитися на співпроцесор (escape - to external devіce)

LOCK - префікс блокування шини (bus lock prefіx)

Частина команд МП К1810ВМ86 виконують ті самі операції, що і команди МП 8080/8085 (КР580) (наприклад, команди MOV, AND, OR та ін.). Розходження таких команд полягають лише в методах адресації операндів, розмірах операндів (байт/слово) і способах запису деяких однотипних для МП К1810ВМ86 і 8080/8085 команд мовою асемблера. Так, якщо реґістр містить адреси операндів, що знаходяться в пам'яті, то він заноситься у прямі дужки (мовою асемблера для МП К1810ВМ86).

Цілочисловий обчислювальний пристрій підтримує трохи більше десятка арифметичних команд. На рис. 2.2 приведена класифікація команд цієї групи.

Рис. 2.2 - Класифікація арифметичних команд

Група арифметичних цілочислових команд працює з двома типами чисел:

- цілими двійковими числами. Числа можуть мати знаковий розряд або не мають такого, тобто є числами із знаком або без знака;

- цілими десятковими числами.

Цілі двійкові числа

Ціле двійкове число з фіксованою крапкою - це число, закодоване в двійковій системі числення. Розмірність цілого двійкового числа може складати 8, 16 або 32 біт. Знак двійкового числа визначається тим, як інтерпретується старший біт у представленні числа. Це 7-й, 15-й або 31-й біти для чисел відповідної розмірності. При цьому в групі команд арифметичних операцій є всього дві інструкції, які дійсно враховують цей старший розряд як знаковий, - це команди цілочислового множення і поділу IMUL і IDIV. У решті випадків відповідальність за дії із знаковими числами і, відповідно, із знаковим розрядом лягає на програміста.

Діапазон значень двійкового числа залежить від його розміру і трактування старшого біта, або як старшого значущого біта числа, або як біта знака числа.

Діапазон значень двійкових чисел

Розмірність поля:

Ціле без знака:

Ціле зі знаком:

Байт

0...255

-128...+127

Слово

0...65535

-32768...+32 767

Подвійне слово

0...4 294 967 295

-2 147 483 647 ...+2 147 483 647

Для опису числа з фіксованою крапкою в програмі використовуються директиви опису даних.

; prg_2_1.asm

masm

model  small

stack 256

.data    ;початок сеґмента даних

Реr_1 db 23   ;блок

per_2 dw 9856  ;визначення змінних

per_3 dd 9875645

per_4 dw 29857

edata dw 23

.code    ;початок сеґмента коду

main:    ;точка входу в програму

mov ax,edata  ;зв'язуємо реґістр DX з сеґментом

mov ds,ax  ;даних через реґістр АХ

exit:    ;подивитися у відладчику дамп сеґменту даних

mov ах,4С00h  ;стандартний вихід

int 21h

end main   ;кінець програми

Десяткові числа

Десяткові числа - спеціальний вид представлення числової інформації, в основу якого встановлений принцип кодування кожної десяткової цифри числа групою з чотирьох біт. При цьому кожний байт числа містить одну або дві десяткові цифри в так званому двійково-десятковому коді (BCD - Binary-Coded Decimal). Мікропроцесор зберігає BCD-числа в двох форматах (мал. 2.3):

Про упакований формат - у цьому форматі кожний байт містить дві десяткові цифри. Десяткова цифра є двійковим значенням в діапазоні від 0 до 9 розміром 4 біти. При цьому код старшої цифри числа займає старші 4 біти. Отже, діапазон представлення десяткового упакованого числа в одному байті складає від 00 до 99;

Про неупакований формат - у цьому форматі кожний байт містить одну десяткову цифру в чотирьох молодших бітах. Старші чотири біти мають нульове значення. Це так звана зона. Отже, діапазон представлення десяткового неупакованого числа в одному байті складає від 0 до 9.

Рис. 2.3 - Представлення BCD-чисел

Для опису двійково-десяткові числа в програмі можна використовувати тільки дві директиви опису та ініціалізації даних - db і dt. Можливість застосування тільки цих директив для опису BCD-чисел обумовлена тим, що до таких чисел також застосуємо принцип «молодший байт за молодшою адресою», що більш зручно для їх обробки. Наприклад, приведена в сеґменті даних лістингу 2.2 послідовність описів BCD-чисел виглядатиме в пам'яті так, як показано на рис. 2.4.

;prg_2_2.asm

masm

model small

stack 256

.data    ;сеґмент даних

per_1 db 2,3,4,6,8,2  ;неупаковане BCD-число 286432

per_3 dt 9875645   ;упаковане BCD-число 9875645

.code    ;сеґмент коду

main:    ;точка входу в програму

mov ах,@data  ;зв'язуємо реґістр DX з сеґментом

mov ds,ax   ;даних через реґістр АХ

exit:    ;подивитися у відладчику дамп сеґменту даних

mov ах,4c00h  ;стандартний вихід

int 21h

end main    ;кінець програми

Рис. 2.4 - Вигляд вікна дампа пам’яті для програми 2_2

Складання двійкових чисел без знака

Мікропроцесор виконує складання операндів за правилами складання двійкових чисел. Проблем не виникає до тих пір, поки значення результату не перевищує розмірності поля операнда. Наприклад, при складанні операндів розміром у байт результат не повинен перевищувати число 255. Якщо це відбувається, то результат виявляється неправильний. Розглянемо, чому так відбувається. Наприклад, виконаємо складання: 254 + 5 = 259 у двійковому вигляді. 11111110 + 0000101 = 1 00000011. Результат вийшов за межі восьми біт, і правильне його значення укладається в 9 біт, а в 8-бітовому полі операнда залишилося значення 3, що, звичайно, неправильно. У мікропроцесорі цей результат складання прогнозується, і передбачені спеціальні засоби для фіксації подібних ситуацій та їх обробки. Так, для фіксації ситуації виходу за розрядну сітку результату, як у даному випадку, призначений прапор перенесення cf. Він розташовується в біті 0 реґістра прапорців flags. Саме установкою цього прапора фіксується факт перенесення одиниці зі старшого розряду операнда. Природно, що програміст повинен передбачати можливість такого результату операції складання і засобу для коректування. Це припускає включення ділянок коду після операції складання, в яких аналізується прапор. Аналіз цього прапора можна провести різними способами. Найпростіший і доступний — використовувати команду умовного переходу jc. Ця команда як операнд має ім'я мітки в поточному сеґменті коду. Перехід на цю мітку здійснюється у випадку, якщо в результаті роботи попередньої команди прапор cf встановився в 1. Команди умовних переходів розглядатимуться в лабораторній роботі №3.

Якщо тепер подивитися на рис. 2.1, то видно, що в системі команд мікропроцесора є три команди двійкового складання:

  •  INC операнд - операція інкремента, тобто збільшення значення операнда на 1;
  •  ADD операнд 1, операнд 2 - команда складання з принципом дії: операнд_1 = операнд_1 + операнд_2
  •  ADC операнд 1, операнд 2 - команда складання з урахуванням прапора перенесення cf. Принцип дії команди: операнд_1 = операнд_1 + операнд_2 + значення CF

Зверніть увагу на останню команду - це команда складання, що враховує перенесення одиниці зі старшого розряду. Механізм появи такої одиниці ми вже розглянули. Таким чином, команда ADC є засобом мікропроцесора для складання довгих двійкових чисел, розмірність яких перевершує підтримувані мікропроцесором довжини стандартних полів. Розглянемо приклад обчислення суми чисел (лістинг 2.3).

;prg_2_3.asm

masm

model small

stack 256

.data

а db 254

.code    ;сеґмент коду

main:

mov ах,@data

mov ds.ax

xor ах,ах

add al,17

add al,a

jnc m1   ;якщо немає перенесення, то перейти на m1

adc ah,0  ;в АХ сума з урахуванням перенесення

m1:

exit:

mov ах,4c00h  ;стандартний вихід з програми

 int 21h

end main  ;кінець програми

У лістингу 2.3 в рядках 13-14 створена ситуація, коли результат складання виходить за межі операнда. Ця можливість враховується рядком 15, де команда jnc (хоча можна обійтися без неї) перевіряє стан прапора cf. Якщо він установлений в 1, то це ознака того, що результат операції вийшов більший за розміром, ніж розмір операнда, і для його коректування необхідно виконати деякі дії. У даному випадку просто вважається, що межі операнда розширюються до розміру АХ, для чого враховуємо перенесення у старший розряд командою ADС (рядок 16).

Команди передачі даних здійснюють пересилку даних з одного місця в інше, запис і читання інформації з портів уведення-виведення, перетворення інформації, маніпуляції з адресами і покажчиками, звернення до стеку. Для деяких з цих команд операція пересилки є тільки частиною алгоритму. Друга його частина виконує деякі додаткові операції над інформацією, що пересилається. Тому для зручності практичного застосування і відображення їх специфіки дані команди будуть розглянуті відповідно до їх функціонального призначення, згідно з яким вони діляться на команди:

  •  пересилання даних;
  •  введення – виведення в порт;
  •  роботи з адресами і вказівниками;
  •  перетворення даних;
  •  роботи зі стеком.

2.2 Порядок виконання роботи

  1.  Одержати завдання на лабораторну роботу у викладача.
  2.  Увійти в програмне середовище DOS.
  3.  Написати текст програми в текстовому редакторі та зберегти його з розширенням *.asm в каталозі C:\CPU\TASM.
  4.  Відкрити каталог C:\CPU\TASM.
  5.  У командному рядку набрати: ta (ім’я файла) без розширення *.asm.
  6.  Виконати асемблерування та компонування файла.
  7.  Перевірити правильність виконання програми. Виконати редаґування файла.
  8.  Ознайомитися з інтерфейсом та з меню програми.
  9.  Вийти коректно з програмного середовища.

2.3 Зміст звіту

  1.  Титульна сторінка.
  2.  Найменування та мета лабораторної роботи.
  3.  Короткі теоретичні відомості.
  4.  Отримане у викладача завдання (текст програми з докладними коментарями).
  5.  Опис виконання кожного пункту завдання.
  6.  Письмові відповіді на контрольні питання.

2.4 Контрольні запитання

  1.  Проаналізувати існуючі формати даних і системи команд для МП К1810ВМ86.
  2.  Система команд МП К1810ВМ86. Група команд пересилання даних.
  3.  Система команд МП К1810ВМ86. Група команд арифметичних і логічних операцій.
  4.  Система команд МП К1810ВМ86. Група команд передачі керування.
  5.   Пояснити призначення ознак, формованих МП К1810ВМ86.
  6.  Опишіть склад команди асемблера для МП К1810ВМ86. Призначення кожного з полів команди.
  7.  Які способи адресації використовуються в програмах для МП К1810ВМ86?
  8.  Які види прямої адресації для МП К1810ВМ86 ви знаєте, чим вони відрізняються один від одного?
  9.  Пояснити в чому полягають особливості непрямої адресації.
  10.  Порівняйте довжину команд, що використовують пряму адресацію і непряму адресацію.

ЛАБОРАТОРНА РОБОТА №3

ВИВЧЕННЯ СИСТЕМИ КОМАНД МП К1810ВМ86, КОМАНДИ ЛОГІЧНИХ ОПЕРАЦІЙ, КОМАНДИ ОРГАНІЗАЦІЇ ПЕРЕРИВАНЬ. ОРГАНІЗАЦІЯ ПРОГРАМНИХ ЦИКЛІВ

Мета роботи.

Освоїти лінійне програмування мовою асемблера для процесорів К1810ВМ86. Вивчити команди логічних операцій, команди переривань.

3.1 Теоретичні відомості

Разом із засобами арифметичних обчислень система команд мікропроцесора має також засоби логічного перетворення даних. Під логічними розуміються такі перетворення даних, в основі яких лежать правила формальної логіки. Формальна логіка працює на рівні тверджень істинно і помилково. Для мікропроцесора це, як правило, означає 1 і 0 відповідно.

Рис. 3.1 - Засоби системи команд мікропроцесора для роботи з логічними даними

До засобів логічного перетворення даних відносяться логічні команди і логічні операції. На рис. 3.1 показані засоби мікропроцесора для організації роботи з даними за правилами формальної логіки. Вони розбиті на дві групи: команди й операції. Операнд команди асемблера в загальному випадку може бути виразом, який, у свою чергу, є комбінацією операторів і операндів. Серед цих операторів можуть бути і оператори, що реалізовують логічні операції над об'єктами виразу.

В архітектурі процесорів 80х86 передбачені особливі ситуації, коли процесор припиняє (перериває) виконання поточної програми і негайно передає керування програмі-обробнику, спеціально написаній для обробки цієї конкретної ситуації. Такі особливі ситуації діляться на два типи: переривання і виключення, залежно від того, чи спричинив цю ситуацію який-небудь зовнішній пристрій або команда, що виконується процесором.

Переривання - готові процедури, які комп’ютер викликає для виконання певної задачі. Існують апаратні та програмні переривання. Апаратні переривання ініціюються апаратними засобами системної плати, або плати розширення. Вони можуть бути викликані сиґналом мікросхеми таймера, сиґналом від принтера, натисканням клавіші на клавіатурі та безліччю інших причин. Апаратні переривання не координуються з роботою програмного забезпечення. Коли викликається переривання, процесор залишає свою роботу і виконує переривання, а потім повертається на колишнє місце. Для того щоб мати можливість повернутися точно в потрібне місце програми, адреса цього місця (СS:IР) запам’ятовується у стеці разом із реґістром прапорців. Потім у СS:IР завантажується адреса програми обробки переривання і їй передається керування. Програми обробки переривань іноді називають драйверами переривань. Вони завжди закінчуються інструкцією IRЕТ (повернення з переривання), що завершує процес, початий перериванням, повертаючи попередні значення реґістрів СS:IР і реґістру прапорців із стека, даючи тим самим програмі можливість продовжити виконання з того ж самого місця.  

З іншого боку, програмні переривання насправді нічого не переривають. Це звичайні процедури, що викликаються програмами користувача для виконання стандартних задач, таких як обробка натискання кнопок на клавіатурі або виведення на екран. Однак ці підпрограми містяться не всередині програми користувача, а в операційній системі, і механізм переривань дає можливість звернутися до них. Програмні переривання можуть викликатися один з одного. Наприклад, усі переривання обробки введення з клавіатури DOS використовують переривання обробки введення з клавіатури BIOS для отримання символу з буфера клавіатури. Апаратне переривання може одержати керування при виконанні програмного переривання. При цьому не виникає конфліктів, тому що кожна підпрограма обробки переривання зберігає значення всіх використаних нею реґістрів та потім відновлює їх при виході, тим самим не залишаючи слідів того, що вона займала процесор.

Адреси програм переривань називають векторами. Кожен вектор має довжину 4 байти. У першому слові зберігається значення ІP, а в другому - CS. Молодші 1024 байти пам'яті містять вектори переривань, таким чином, є місце для 256 векторів. Разом узяті вони називаються таблицею векторів. Вектор для переривання 0 починається з осередку 0000:0000, для переривання 1 - з осередку 0000:0004, 2 - з 0000:0008 і т.д. Якщо проглянути 4 байти, починаючи з адреси 0000:0020, у якій міститься вектор переривання 8Н (переривання часу доби), то там буде розміщене значення A5FE00F0. Маючи на увазі, що молодший байт слова розташований спочатку і що порядок - ІР:СS, це 4-байтове значення переводиться в F000:FEA5. Це стартова адреса програми ПЗУ, що виконує переривання 8Н. На рис. 3.2 показана схема виконання програмою переривання 21Н.

Програмування контролера переривань 8259

Для керування апаратними перериваннями в усіх типах персональних комп’ютерів IBM PC використовується мікросхема програмованого контролера переривань Intel 8259. Оскільки в кожен момент часу може надійти не один запит, мікросхема має схему пріоритетів. Існує 8 рівнів пріоритетів, у комп’ютерах типу IBM PC/AT їх 16, і звернення до відповідних рівнів позначаються скороченнями від IRQ0 до IRQ7 (від IRQ0 до IRQ15), що означає запит на переривання. Максимальний пріоритет відповідає рівню 0. Додаткові 8 рівнів для AT обробляються другою мікросхемою 8259; цей другий набір рівнів має пріоритет між IRQ2 та IRQ3. Запити на переривання 0-7 відповідають векторам переривань від 8Н до 0FH; для AT запити на переривання 8-15 обслуговуються векторами від 70Н до 77Н. Нижче наведені призначення цих переривань.

Апаратні переривання у порядку пріоритету

IRQ 0 таймер

1 клавіатура

2 канал введення/виведення

8 годинник реального часу (тільки АT)

9 програмно переводиться в IRQ2 (тільки AT)

Апаратні переривання у порядку пріоритету

10 резерв

11 резерв

12 резерв

13 математичний співпроцесор (тільки AT)

14 контролер жорсткого диска (тільки AT)

15 резерв

3 СОМ1 (COM2 для AТ)

4 COM2 (модем для PCjr, COM1 для AT)

5 фіксований диск (LPT2 для AT)

6 контролер дискет

7 LPT1

Перериванню часу доби наданий максимальний пріоритет, оскільки якщо воно буде постійно іґноруватися, стануть невірними показання системного годинника. Переривання від клавіатури викликається при натисканні чи відпусканні кнопок: воно викликає низку подій, які звичайно закінчуються тим, що код клавіші поміщається в буфер клавіатури (звідки він потім може бути отриманий програмними перериваннями).

Мікросхема 8259 має три однобайтних реґістри, що керують вісьмома лініями апаратних переривань. Реґістр запиту на переривання (ІRR) встановлює відповідний біт, коли лінія переривання сиґналізує про запит. Потім мікросхема автоматично перевіряє, чи не обробляється інше переривання. При цьому вона запитує інформацію реґістра обслуговування (ІSR). Додатковий ланцюг відповідає за схему пріоритетів. Нарешті, перед викликом переривання перевіряється реґістр маски переривань (ІMR), щоб визначити, чи дозволено в даний момент переривання даного рівня. Як правило, програмісти звертаються тільки до реґістра маски переривань через порт 21Н і до командного реґістра переривань через порт 20Н.

Заборона/дозвіл окремих апаратних переривань

Програми на асемблері можуть заборонити апаратні переривання. Це масковані переривання; інші апаратні переривання, що виникають при деяких помилках (таких як ділення на нуль), не можуть бути масковані. Існують дві причини заборони апаратних переривань. У першому випадку усі переривання блокуються для того, щоб критична частина коду була виконана цілком, перш ніж машина зробить будь-яку іншу дію. Наприклад, переривання забороняють при зміні вектора апаратного переривання, щоб уникнути виконання переривання, коли вектор змінений тільки наполовину.

У другому випадку маскуються тільки певні апаратні переривання. Це робиться, коли деякі переривання можуть взаємодіяти з операціями, критичними до тимчасових інтервалів. Наприклад, точно розрахована за часом процедура введення/виведення не може собі дозволити бути перерваною тривалим дисковим перериванням.

Низький рівень

Виконання переривань залежить від значення прапорця переривання IF (біт 9) у реґістрі прапорців. Коли цей біт дорівнює 0, дозволені всі переривання, що дозволяє маска. Коли він дорівнює 1, всі апаратні переривання заборонені. Щоб заборонити переривання, установивши цей прапорець у 1, використовується інструкція CLІ. Для очищення цього прапора і відновлення переривань застосовується інструкція STІ. Слід уникати відключення переривань у програмах на тривалий період. Переривання часу доби відбувається 18,2 рази на секунду, і якщо до цього переривання був більш ніж один запит у той час, коли апаратні переривання були заборонені, то зайві запити будуть відкинуті й системний час буде визначатися неправильно.

Слід пам’ятати, що система автоматично забороняє апаратні переривання під час виклику програмних переривань і автоматично дозволяє їх під час повернення. Коли користувач пише свої програмні переривання, слід починати програму з інструкції STІ, якщо можна допустити апаратні переривання. Зазначимо також, що якщо за інструкцією CLІ не передає STІ, то це призведе до зупинки машини, оскільки введення з клавіатури буде заморожене.

Для маскування певних апаратних переривань потрібно просто послати необхідний ланцюжок бітів у порт за адресою 21Н, що відповідає реґістру маскування переривань (ІMR). Реґістр маскування на другій мікросхемі 8259 для AT (ІRQ8-15) має адресу порту А1Н. Слід установити ті біти реґістра, що відповідають номерам переривань, обраним для маскування. Цей реґістр можна тільки записувати. Наведений нижче приклад блокує дискове переривання. Не забудьте очистити реґістр наприкінці програми, інакше звертання до дисків буде заборонене і після завершення програми.

;маскування 6-го біта реґістру, маскування переривань

MOV АL, 01000000B ;маскуємо біт 6

OUТ 2111,AL ;надсилаємо в реґістр маскування

 ;переривань

MOV AL,0

OUT 21H,AL  ;очищуємо IMR в кінці програми

Написання власного переривання

Існує кілька причин для написання власного переривання. По-перше, більшість із готових переривань, які забезпечуються операційною системою, не що інше, як звичайні процедури, доступні для всіх програм. Наприклад, багато програм можуть використовувати процедуру, що виводить рядки на екран вертикально. Замість того, щоб включати її в кожну програму як процедуру, користувач може встановити її як переривання, написавши програму, що залишиться резидентною у пам'яті після завершення. У цьому разі можна буде використовувати ІNT 80Н замість WRІTE_VERTІCALLY (при цьому слід пам’ятати, що виклик переривання трохи повільніший, ніж виклик процедури).

Середній рівень

Функція 25Н переривання 21Н встановлює вектор переривання на зазначену адресу. Адреси мають розмір два слова. Старше слово містить значення сеґмента (CS), молодше містить зсув (ІP). Щоб встановити вектор, що вказує на одну з ваших процедур, потрібно помістити сеґмент процедури в DS, а зсув у DX (користуючись наведеним нижче прикладом). Потім розміщують номер переривання в AL і викликають функцію. Будь-яка процедура переривання повинна завершуватися не звичайною інструкцією RET, a ІRET. (ІRET відновлює зі стеку три слова, включаючи реґістр прапорців, у той час, як RET відновлює зі стеку тільки два слова) Зазначимо, що функція 25Н автоматично забороняє апаратні переривання в процесі зміни вектора, тому не існує небезпеки, яка посередині дороги відбудеться апаратне переривання, що використовує даний вектор.

; установка переривання

PUSH DS  ;зберігаємо DS

MOV DX,OFFSET ROUT ;зсув для процедури в DX

MOV AX.SEG ROUT  ;сеґмент процедури

MOV DS.AX  ;розміщуємо в DS

MOV AH.25H  ;функція встановлення вектора

MOV AL,60H  ;номер вектору

INT 21H ;змінюємо переривання

POP DS ;відтворюємо DS

; процедура переривання

ROUTINE PROC FAR

PUSH AX ;зберігаємо всі змінені реґістри

POP AX ;відтворюємо реґістри

MOV AL,20H ;ці два рядки треба використовувати

OUT 20H,AL ;тільки для апаратних переривань

IRET

ROUTINE ENDP

У кінці коду кожного з апаратних переривань потрібно прописати наступні 2 рядки коду:

MOV OUT

AL,20H 20H,AL

Якщо апаратне переривання не закінчується цими рядками, то мікросхема 8259 не очистить інформацію реґістра обслуговування, для того щоб була дозволена обробка переривань з більш низькими рівнями, ніж тільки що оброблене.

Коли програма завершується, повинні бути встановлені оригінальні вектори переривань. Наступна програма може викликати дане переривання і передати керування на те місце в пам'яті, у якому процедури користувача вже немає. Функція 35 переривання 21Н повертає поточне значення вектора переривання, поміщаючи значення сеґмента в ES, а зсув у ВХ. Перед встановленням свого переривання отримайте поточне значення вектора, використовуючи цю функцію, збережіть ці значення і потім відновіть їх за допомогою функції 25Н (як вище) перед завершенням своєї програми. Наприклад:

; - в сеґменті даних:

KEEP_CS DW 0 ;зберігає сеґмент заміненого переривання

KEEP_IP DW 0 ;зберігає зсув переривання

; - на початку програми

MOV AН, 35h ;функція одержання вектора

MOV АL,1Сh ;номер вектора

INT 21h ;тепер сеґмент у DS

;- зсув в ВХ

MOV KEEP IP,ВХ ;запам’ятовуємо зсув

MOV KЕEP_CS,ES ;запам’ятовуємо сеґмент

;- в кінці програми

CLI

PUSH DS ;DS  ;буде зруйнований

MOV DX,KEEP_IP  ;підготовка до відтворення

MOV AX.KEЕP_CS

MOV DS.AX  ;підготовка до відтворення

MOV АН, 25h  ;функції встановлення вектора

MOV АL,1Сh ;номер вектора

INT 21h ;відтворюємо вектор

POP DS  ;відновлюємо вміст сеґменту DS

STI

Існують специфічні випадки, яких слід уникати при написанні переривань. Якщо нова процедура переривання повинна мати доступ до даних, то необхідно подбати про те, щоб DS був правильно встановлений (зазвичай переривання може використовувати стек викликаючої програми). Інша неприємність може бути в тому, що при закінченні програми за комбінацією «Ctrl-Break» вектор переривань не буде відтворений, якщо тільки не подбати, щоб програма реакції на комбінацію «Ctrl-Break» виконувала цю процедуру.

Низький рівень

Описані вище функції MS-DOS просто одержують чи змінюють пари слів у молодших комірках пам'яті. Зсув вектора можна обчислити простим множенням номера вектора на 4. Наприклад, щоб одержати адресу переривання 16H у ES:BX, потрібно:

   ; - одержання адреси переривання 16Н

SUB АХ,AХ  ;встановлюємо ES на початок пам’яті

MOV ES,AX

MOV D1,16h ;номер переривання в D1

SHL D1,1 ;помножуємо на 2

SHL D1,1 ;помножуємо на 2

MOV BX,ES:[D1] ;беремо молодший байт у ВХ

MOV AX,ES:[D1| +2 ;беремо старший байт у ES

MOV ES,AX

Не рекомендується прямо встановлювати вектор переривань, обходячи функцію DOS. Зокрема, у багатозадачному середовищі операційна система може підтримувати кілька таблиць векторів переривань, і реальна фізична адреса таблиці може бути відома тільки DOS.

3.2 Порядок виконання роботи

  1.  Ознайомитися з особливостями системи переривань мікропроцесора, вивчити їх атрибути.
  2.  Вивчити механізм виклику оброблювачів переривань системних пристроїв.
  3.  Відповідно до запропонованої граф-схеми роботи написати додатки, що забезпечують взаємодію задач через переривання.
  4.  Забезпечити затримку виведення рядка за перериваннями таймера значенням t_n порядку 1 с.
  5.  Написати додаток, який би здійснював запис під час виконання основної програми.
  6.  Перевірити правильність виконання програми.
  7.  Вийти коректно із програмного середовища.
  8.  Скласти звіт до лабораторної роботи.

;prg_3.asm

masm

model small

stack 256

.data

rout db 15

keep_cs dw 1234h

keep_ip dw 9876h

a db 254

.code

main:

mov ax, @data

mov ds, ax

mov ah, 35h

mov al, 1ch

push ds

mov dx, offset rout

mov ax, seg rout

mov ds, ax

mov ah, 25h

mov al, 60h

int 21h

mov ah,35h

mov al,1ch

int 21h

mov keep_ip,bx

mov keep_cs,es

cli

push ds; ds

mov dx, keep_ip

mov ax, keep_cs

mov ds, ax

mov ah, 25h

mov al, 1ch

int 21h

pop ds

sti

exit:

mov ax, 4c00h

int 21h

routine proc far

push ax

pop ax

mov al, 20h

out 20h, al

iret

routine endp

end main

3.3 Зміст звіту

  1.  Титульна сторінка.
  2.  Найменування та мета лабораторної роботи.
  3.  Короткі теоретичні відомості.
  4.  Отримане у викладача завдання (текст програми з докладними коментарями).
  5.  Опис виконання кожного пункту завдання.
  6.  Письмові відповіді на контрольні питання.

3.4 Контрольні запитання

  1.  Пояснити призначення кожного з внутрішніх реґістрів послідовного порта. Які основні компоненти входять до його складу?
  2.  Як відкрити вихідний файл з текстом програми мовою асемблера в середовищі відлагоджувача Turbo Debugger?
  3.  Які режими перегляду реґістрів процесора, для якого розробляється програма.


ЛАБОРАТОРНА РОБОТА № 4

РОЗРОБКА ПРОГРАМИ АНАЛОГОВО-ЦИФРОВОГО ПЕРЕТВОРЕННЯ І ЧИТАННЯ ДАНИХ З АЦП ДЛЯ МП К1810ВМ86

Мета роботи.

Навчитися створювати програми для керування процесом аналогово-цифрового перетворення і забезпечити читання перетворених даних з АЦП.

4.1 Теоретичні відомості

Пристрої обчислювальної системи з’єднуються один з одним за допомогою уніфікованих систем зв’язку, що називаються інтерфейсом. Інтерфейс є системою шин, пристроїв, що погоджують, алгоритмів, які забезпечують зв’язок всіх частин мікропроцесорної системи між собою. Від характеристик інтерфейсу залежить швидкодія та надійність мікропроцесорної системи. Інтерфейс повинен бути стандартизований, щоб забезпечити зв’язок процесора і оперативної пам’яті з будь-яким периферійним пристроєм (ПП). Необхідне перетворення формату даних повинне проводитися в ПП. Алгоритми функціонування інтерфейсу і керуючого реґістра, також повинні бути стандартизовані. Схеми інтерфейсу зазвичай розташовуються в самих пристроях, що з’єднуються.

До спеціалізованих пристроїв інтерфейсу мікропроцесорних систем відносяться АЦП, ЦАП та перетворювачі кодів. Спеціалізовані пристрої перетворюють інформацію до вигляду, зручного для сприйняття даною системою (це виконують АЦП і перетворювачі кодів). ЦАП перетворюють інформацію до вигляду, зручного для сприйняття периферійними пристроями. Перетворення аналогової інформації в цифрову базується на теоремі Котельникова: будь-який аналоговий сиґнал може бути записаний в дискретній формі й інформація не буде втрачена, якщо крок квантування t буде вибраний за умови:

,          (4.1)

де Fmax – максимальна частота спектру передаваного сиґналу.

Рис. 4.1 – Вибір кроку квантування для перетворення аналогового сиґналу в цифровий

Рис. 4.2 – Структурна схема аналогово-цифрового перетворювача

У даній схемі відбувається проміжне перетворення напруги Uвх у тривалість імпульсу тригера, яка у свою чергу визначає кількість імпульсів генератора імпульсної послідовності (ГІП) підрахованих лічильником. Лічильник видає результат в двійковому коді, отже показання лічильника пропорційні Uвх. Тактовий імпульс запускає ґенератор напруги, яка лінійно змінюється (ГЛЗН), і обнуляє лічильник. У двох компараторах К1 і К2 відбувається порівняння напруги ГЛЗН з «0» і з Uвх.

Рис. 4.3 – Часові діаграми роботи аналогово-цифрового перетворювача за схемою рис.4.2

Коли рівень напруги ГЛЗН дорівнює «0», на виході К1 виробляється сиґнал, який встановлює тригер в одиничний стан. На схему «І» подається одиничний сиґнал з виходу тригера і послідовність імпульсів з виходу ГІП. Імпульси ГІП подаються на лічильник, який їх рахує. Коли напруга пилкоподібних імпульсів стане рівною Uвх, сиґнал з виходу К2 «переключить» тригер в нульовий стан, імпульси через схему «І» не проходять, рахунок припиняється. Кількість минулих імпульсів пропорційна Uвх. Оскільки напруга «пилки» не є лінійною, особливо на початковій ділянці, то точність перетворення невелика. Більшу точність забезпечують АЦП із зворотним зв’язком (ЗЗ) і АЦП стежачого типу.

АЦП із зворотним зв’язком

ЦАП виробляє напругу ЗЗ. Ця напруга має ступінчасту форму. З приходом тактового імпульсу лічильник починає зчитувати від генератора імпульсної послідовності (ГІП). Рахунок припиняється в разі подачі нульового сиґналу з вихідного компаратора. Цей сиґнал виробляється в тому випадку, якщо напруга ЗЗ більша або дорівнює Uвх. Кількість зчитаних імпульсів пропорційна Uвх в двійковому коді.

Рис. 4.4 – Структурна схема аналогово-цифрового перетворювача зі зворотним зв’язком

Рис. 4.5 – Часові діаграми аналогово-цифрового перетворювача зі зворотним зв’язком

АЦП стежачого типу

АЦП зі зворотним зв’язком перетворюють в двійковий код тільки зростаючу напругу Uвх. АЦП стежачого типу перетворюють в цифровий сиґнал як зростаючу, так і убуваючу напругу. У цій схемі застосовується реверсивний лічильник. Коли на виході компаратора (К) одиничний сиґнал (Uвх > Uзз) лічильник знаходиться в режимі прямого рахунку. Коли Uвх Uзз, на виході К – «0» і лічильник переходить в режим зворотного рахунку.

Рис. 4.6 – Структурна схема аналогово-цифрового перетворювача стежачого типу

Приклад. Процедура програмно-апаратного аналого-цифрового перетворювача працює за принципом послідовного наближення за двійковою системою. Процедура може запускатися за перериванням від зовнішнього пристрою або від таймера (періодично).

Схема АЦП на базі ЕОМ (мікроконтролера) показана на рис. 4.7.

Рис. 4.7 – Приклад (фрагмент) електричної схеми підключення АЦП до ЕОМ

Вона включає 10-розрядний реверсивний ЦАП, підключений до виходів порта РВ (молодші 8 розрядів) і порта РС.3-0 (старші розряди – РС.1-0 і знак – РС.3). Порт РС.7-4 настроюється на введення, два біти його: D7 і D6 використовуються для введення знака розузгодження компаратора в прямому та інверсного кодах. Аналоговий вихід ЦАП підключений до інверсного входу компаратора, на прямий (неінвертований) вхід якого подається вимірюваний реґістр. Вихід компаратора через реґістри інвертування DV3, DV4 підключений до входу ЕОМ для визначення знака розузгодження і програмного збереження або усунення бітів послідовного наближення.

Нижче наведений приклад фрагменту програмного коду для обміну даними між АЦП та МП системою:

stck segment para stack ‘stack’ ;налаштування сеґмента стека

dw 100 dup(?)   ;встановлюється об’ємом у 100 слів

stck ends     ;кінець сеґмента стека

data segment public para  ;сеґмент даних

codin dw (?)

data ends    ;кінець сеґмента даних

cod segment public para ‘code’ ;початок сеґмента кода

cap proc far    ;оголошення процедури

assume cs:cod,ds:data,ss:stck,es:data

pb equ 21h     ;адреса порта PB

pc equ 22h     ;адреса порта PC

pu equ 23h     ;адреса реґістра керування портами

push ax    ;збереження в стек вмісту реґістра АХ

push cx   ;збереження в стек вмісту реґістра ег

push dx   ;збереження в стек вмісту реґістра DХ

mov al,98h    ;записуємо в акумулятор керуюче слово

;10011000B для настройки режиму 0 порта

;А – на введення

out pu,al    ;C(7-4) – введення, В – виведення,

;С(3-0) – вивід

xor al,al    ;очищення акумулятора

out pc,al    ;пересилання до ЦAП нульового значення

out pb,al    ;пересилання до ЦAП нульового значення

nop     ;пауза на час роботи ЦАП

in al,pc    ;введення знака біта С(7-4)

and al,0Ch    ;операція маскування для виділення

;бітів D(7-6)

test al,08h    ;перевірка знака вимірюваної напруги

jz mmin    ;якщо знак «мінус» – перехід

;на встановлення знака (-)

mov dx,0000   ;інакше знак (+)

mov ch,40h    ;контрольований біт розузгодження – D6

jmp short start  ;команда безумовного переходу на початок

mmin: mov dx,0800h  ;знак результату «мінус»

mov ch,80h    ;контрольований біт – D7

mov ch,02h    ;начало перевірки бітів PC.1,0

start: mov al,dh    ;біти, що вже пеpевіpені

or al,cl    ;вставлення біта, що перевіряється

out pc,al    ;виведення старших бітів і знака на порт

;PC (3-0)

nop     ;пауза ЦАП

in al,pc

and al,ch    ;перевірка знака розузгодження

jz nnn    ;якщо більше – біт не потрібен

or dh,cl    ;інакше вводиться результат

nnn:  rol cl,1    ;зсув біта, що перевіряється

jnc start    ;якщо це не останній біт – повторити

mov cl,80h    ;початок перевірки бітів PB 7-0

stta: mov al,dl

or al,cl    ;вставлення біта, що перевіряється

out pb,al   ;виведення молодших бітів та знака до ЦАП

nop     ;пауза

in al,pc

and al,ch    ;перевірка знака розузгодження

jz ttt     ;якщо більше – біт не потрібен

or dl,cl    ;інакше біт вставляється в результат

ttt:  rol cl,1    ;зсув біта, що перевіряється вліво

jnc stta    ;якщо біт не останній – повторити

test dx,0800h  ;перевірка значення знака числа

jz rrr     ;якщо «плюс» - вихід

and dx,03FFh  ;встановлення прямого позитивного кода

neg dx    ;отримання додаткового кода

rrr:  mov codin,dx  ;запам’ятовування результату

pop dx   ;відновлення зі стека вмісту реґістра DX

pop cx   ;відновлення зі стека вмісту реґістра CX

pop ax   ;відновлення зі стека вмісту акумулятора

mov al,20h    ;очищення біта переривання

out PU,al   ;пересилання на контролер переривань

iret     ;вихід з процедури обробки переривання

cap endp   ;кінець процедури

cod ends    ;завершення сеґмента коду

end cap    ;кінець програми

;prg_4.asm

masm

model small

stack 256

.data

stck segment para stack 'stack'

dw 100 dup(?)

stck ends

data segment public para

codin dw(?)

data ends

cod segment public para 'code'

;cap proc far

assume cs:cod,ds:data,ss:stck,es:data

pb equ 21h

pc equ 22h

pu equ 23h

push ax

push cx

push dx

mov al,98h

;10011000B

;

out pu,al

;С(3-0)

xor al,al

out pc,al

out pb,al

nop

in al,pc

and al,0Ch

;бітів D(7-6)

test al,08h

jz mmin

;

mov dx,0000

mov ch,40h

jmp short start

mmin: mov dx,0800h

mov ch,80h

mov ch,02h

start: mov al,dh

or al,cl

out pc,al

;PC (3-0)

nop

in al,pc

and al,ch

jz nnn

or dh,cl

nnn:  rol cl,1

jnc start

mov cl,80h

stta: mov al,dl

or al,cl

out pb,al

nop

in al,pc

and al,ch

jz ttt

or dl,cl

ttt: rol cl,1

jnc stta

test dx,0800h

jz rrr

and dx,03FFh

neg dx

rrr: mov codin,dx

pop dx

pop cx

pop ax

mov al,20h

out PU,al

iret

;cap endp

cod ends

;end cap

end

Пpогpама АЦП працює таким чином:

Вхідна цифрова інформація на ЦАП подається в прямому коді як для позитивної, так і для негативної напруги. В разі негативної напруги виводиться одиниця в знаковий розряд порта РС3 при позитивному виході – цей розряд ну-льовий. В схемі ЦАП цей розряд, підключений до входу S, перемикає полярність опорної й вихідної напруги.

У процедурі наближення спочатку в ЦАП вводиться нульове значення реґістр і визначається знак напруги, що вимірюється. В залежності від цього знака контроль розузгодження здійснюється через наявність 1 в біті D7 РС при позитивній напрузі, що виміряється, або D6 – при негативній.

Розподіл реґістрів процесора:

DX – реґістр результату;

CL – маска біта, що додається;

CH – маска знака розузгодження ( CH = 10000000В при негативній напрузі входу, СН = 01000000В – при позитивному);

AL – оперативний реґістр уведення/виведення;

AH – запасний.

Після перевірки всіх бітів при негативній вхідній напрузі (якщо біт D.10 в реґістрі DX дорівнює 1) проводиться переведення негативного числа з прямого в нормальний додатковий код, а потім результат записується в пам’ять ЕОМ за міткою CODIN і всі реґістри відновлюються зі стека.

4.2 Порядок виконання роботи

  1.  Ознайомитися з особливостями інтерфейсів мікропроцесорних систем, вивчити їх атрибути.
  2.  Вивчити механізм програмного опитування пристроїв АЦП мікропроцесорною системою.
  3.  Відповідно до запропонованої блок-схеми алгоритму (рис. 4.8) написати програму мовою асемблера для МП К1810ВМ86, що забезпечує взаємодію мікропроцесорної системи з пристроєм АЦП.
  4.  За допомогою текстового редактора ввести текст програми керування обміном інформацією з АЦП мовою асемблера для МП К1810ВМ86 та зберегти його в каталозі C:\CPU\TASM\WORK.
  5.  Перевірити правильність роботи розробленої програми.
  6.  Закрити проект – «Project/Close Project».
  7.  Вийти з програми.
  8.   Скласти звіт щодо виконаної роботи.

Рис. 4.8 - Блок - схема алгоритму керування обміном інформацією з АЦП

4.3 Зміст звіту

  1.  Титульний аркуш.
  2.  Найменування та мета лабораторної роботи.
  3.  Короткі теоретичні відомості.
  4.  Отримане у викладача завдання (текст програми з докладними коментарями).
  5.  Опис виконання кожного пункту завдання.
  6.  Письмові відповіді на контрольні питання.

4.4 Контрольні запитання

  1.  Що називається інтерфейсом мікропроцесорної системи?
  2.  Які типи інтерфейсів використовуються у мікропроцесорних системах?
  3.  Опишіть призначення АЦП та принципи його функціонування?
  4.  В чому полягає зміст теореми Котельнікова?
  5.  Які типи АЦП ви знаєте? В чому полягає відмінність організації аналогово-цифрового перетворення в них? Назвати переваги і недоліки кожного типу АЦП.
  6.  Для чого призначені перетворювачі кодів?
  7.  Яким чином здійснюється узгодження пристрою АЦП з мікропроцесором і пам’яттю?
  8.  Навести приклади програмного коду ініціалізації програмованого паралельного інтерфейсу (ППІ) і8255.

ЛАБОРАТОРНА РОБОТА № 5

ПРОГРАМНЕ ОПИТУВАННЯ ЗОВНІШНІХ ПРИСТРОЇВ. ПРОГРАМУВАННЯ ПАРАЛЕЛЬНОГО ІНТЕРФЕЙСУ

Мета роботи.

Освоїти навички програмування опитування зовнішніх пристроїв мовою асемблера для К1810. Вивчити дію команд обміну даними.

5.1 Теоретичні відомості

Паралельні інтерфейси характеризуються тим, що в них для передачі біт у слові використовуються окремі сиґнальні лінії, і всі біти передаються одночасно. Паралельні інтерфейси використовують логічні рівні ТТЛ (транзисторно-транзисторної логіки), що обмежує довжину з’єднуючого кабелю з причини невисокої перешкодозахищеності ТТЛ-інтерфейсу. Гальванічна розв'язка відсутня. Паралельні інтерфейси використовують для підключення принтерів. Передача даних може бути як однонаправленою (Centronics), так і двонаправленою (Bitmіnics). Іноді паралельний інтерфейс використовують для зв'язку між двома комп'ютерами. Нижче будуть розглянуті протоколи інтерфейсів Centronics, а також порти РС, що реалізовують їх.

Паралельний порт комп'ютера (інтерфейс “Centronics”) призначений для підключення принтера. Проте його сиґнали можна використовувати довільно при підключенні нестандартних пристроїв.

Адаптер паралельного інтерфейсу являє собою набір реґістрів, розташованих в просторі введення/виведення. Реґістри порта адресуються щодо базової адреси порту, стандартними значеннями якої є 3BCh, 378h і 278h. Порт може використовувати лінію запиту апаратного переривання, зазвичай IRQ7 або IRQ5. Порт має зовнішню 8-бітову шину даних, 5-бітову шину сиґналів стану і 4-бітову шину керуючих сиґналів.

Сиґнали інтерфейсу можна розділити на чотири групи:

  1.  Восьмирозрядна шина даних для отримання сиґналів з комп'ютера (сиґнали D0-D7);
  2.  Чотирьохрозрядна шина керування для отримання сиґналів з комп'ютера (сиґнали -STROBE, -AUTO FD, -INIT, -SLCT IN);
  3.  П’ятирозрядна шина стану для читання інформації в комп'ютер (сиґнали -ACK, BUSY, PE, SLCT, -ERROR);
  4.  Шина “земля”.

Шина DATA

Восьмирозрядна шина даних (D0 - D7) призначена для передачі з комп'ютера в принтер. Логіка сиґналів - позитивна.

Шина CONTROL

  •  STROBE — стробує даних. Комп'ютер повідомляє принтер про готовність до передачі даних.
  •  AUTOFEED — автоматичний переклад рядка. При отриманні цього сиґналу принтер переводить рядок.
  •  INIT — сиґнал скидання принтера. Відбувається очищення буфера друку. Тривалість сиґналу 2,5 мкс.
  •  SELECT IN — сиґнал вибору принтера перед передачею даних.

Решта сиґналів зазвичай не представлена при розводці стандартних кабелів для підключення принтера.

Шина STATUS

  •  ACK — вхідний для комп'ютера сиґнал. Принтер підтверджує ухвалення даних і готовність отримання наступних даних. Здійснюється асинхронний обмін.
  •  BUSY - вхідний для комп'ютера сиґнал. Принтер повідомляє про зайнятість і неготовність прийняти наступні дані, а також про вимкнений стан, відсутність паперу, помилку друку.
  •  PE - вхідний для комп'ютера сиґнал про закінчення паперу.
  •  SLCT - сиґнал принтера про готовність приймати дані.
  •  ERROR - сиґнал про помилку принтера.

Функція DOS 05h Виведення символу в стандартний пристрій PRN

Введення:

АН = 05h
DL = символ

Крім того, можна користуватися функцією запису у файл або пристрій, помістивши у ВХ число 4, відповідне пристрою PRN. BIOS, у свою чергу, надає базовий набір з трьох функцій для роботи з принтером.

INT 17h, АН = 00 Вивести символ в принтер

Введення:

АН = 00h
AL = символ
DX = номер паралельного порту (00 LPT1, 01 LPT2, 02 LPT3)

Виведення:

АН = стан принтера:

біт 7: принтер не зайнятий
біт 6: підтвердження
біт 5: немає паперу
біт 4: принтер в змозі on-line
біт 3: помилка введення-висновку
біт 0: тайм-аут

INT 17h, АН = 01 Виконати апаратне скидання принтера

Введення:

АН = 01h
DX = номер порту (00h 02h)

Виведення:

АН = стан принтера

INT 17h, AH = 02 Отримати інформацію про стан принтера

Введення:

АН = 02h
DX = номер порту (00h 02h)

Виведення:

АН = стан принтера

Наприклад, щоб роздрукувати вміст екрану на принтері, можна написати таку програму:

; prtscr.asm

; роздрукувати поточний вміст екрану на принтері

;

.model tiny   ;модель пам’яті для файлів типу СОМ

.code

.186     ;для команди push 0B800h

org 100h    ;початок СОМ-файла

start:

mov ah,1

mov dx,0   ;вибір порта LPT1

int 17h   ;ініціалізувати принтер

cmp ah,90h   ;перевірка: якщо принтер не готовий

jne printer_error  ;видати повідомлення про помилку

push 0B800h  ;інакше зберегти в стек фрагмент відеопам’яті

;адресою 0В00h

pop ds   ;у DS = сеґмент відеопам'яті в текстовому режимі

xor si,si   ;очищення SI = 0

mov cx,80*40  ;в CX = число символів на екрані

cld    ;рядкові операції вперед

main_loop:

lodsw   ;AL - символ, АН - атрибут, SI = SI + 2

mov ah,0   ;АН - номер функції

int 17h   ;виведення символу з AL на принтер

loop main_loop

ret   ;закінчити програму

printer_error:

mov dx,offset msg ;адреса повідомлення про помилку в DS:DX

mov ah,9

int 21h   ;виведення рядка на екран

ret

msg db "Принтер на LPT1 знаходиться в режимі offline або занятий$"

end start

Щоб роздрукувати вміст екрана в текстовому режимі на LPT1, достатньо всього лише однієї команди INT 05h, що в точності еквівалентно натисненню клавіші PrtScr.

5.2 Порядок виконання роботи

  1.  Ознайомитися з особливостями паралельних інтерфейсів мікропроцесорних систем, вивчити їх атрибути.
  2.  Вивчити механізм програмного опитування пристроїв АЦП мікропроцесорною системою.
  3.  Скласти програму мовою асемблера для МП К1810ВМ86, яка забезпечує виведення на принтер текстового рядка, що зберігається в сеґменті даних.
  4.  За допомогою текстового редактора ввести текст програми керування обміном інформацією через паралельний інтерфейс мовою асемблера для МП К1810ВМ86 та зберегти його в каталозі вашої групи в C:\CPU\TASM\WORK.
  5.  Домогтися правильної роботи розробленої програми.
  6.  Зберегти файл з вихідним текстом програми, а також ехе-файл.
  7.  Вийти з програми TASM.
  8.  Скласти звіт щодо виконаної роботи.

5.3 Зміст звіту

  1.  Титульний аркуш.
  2.  Найменування та мета лабораторної роботи.
  3.  Короткі теоретичні відомості.
  4.  Отримане у викладача завдання (текст програми з докладними коментарями).
  5.  Опис виконання кожного пункту завдання.
  6.  Письмові відповіді на контрольні питання.

5.4 Контрольні запитання

  1.  В чому полягає основна відмінність паралельних інтерфейсів від послідовних? Які переваги має кожний з типів інтерфейсів?
  2.  Який паралеьлний інтерфейсів використовуються у мікропроцесорних системах для підключення принтера?
  3.  З яких реґістрів складається адаптер паралельного інтерфейса для мікропроцесорних систем на базі МП К1810ВМ86?
  4.  Опишіть призначення бітів реґістра статусу. Дайте пояснення особливостям використання.
  5.  Опишіть призначення бітів реґістра керування. Дайте пояснення особливостям використання.
  6.  Які режими роботи паралельного інтерфеса ви знаєте?
  7.  Як здійснюється конфіґурування паралельного порта? Привести приклад програмного коду вибору порта LPT2 та виведення символа на друк.

ЛАБОРАТОРНА РОБОТА № 6

ПРОГРАМНЕ ОПИТУВАННЯ ДАТЧИКІВ ТЕХНОЛОГІЧНОЇ ІНФОРМАЦІЇ. ПРОГРАМНЕ ВИВЕДЕННЯ ІНФОРМАЦІЇ НА ЗОВНІШНІЙ ПРИСТРІЙ

Мета роботи.

Освоїти програмування додатків мовою асемблера для МП К1810ВМ86 для керування зовнішніми пристроями за допомогою портів введення/виведення

6.1 Теоретичні відомості

В разі використання мікропроцесорної системи для керування технологічним механізмом опитування датчиків технологічної інформації та перетворення аналогового сиґналу в цифровий, запис інформації в ОЗП виконується під керуванням МП.

Так, номер опитуваного датчика технологічних величин формується в одному з реґістрів загального призначення (РЗП), наприклад, в реґістрі ВН. У 8-розрядному реґістрі в 5-ти старших розрядах записуються одиниці, а в трьох молодших розрядах - номер датчика. Спочатку в реґістрі ВН записано число F8 в 16-тиричной системі числення:

11111000=F8

001

010

При опитуванні кожного датчика вміст реґістра ВН збільшується на 1. При опитуванні останнього датчика в реґістрі записується число FF = 11111111.

Додавання наступної 1 обнуляє реґістр ВН. На виході тригера нуля TZ з'являється 1. Номер комірки пам’яті ОЗП, в яку повинен бути записаний результат опитування датчика, міститься в 16-розрядному реґістрі загального призначення (РЗП), наприклад, в реґістрі СХ.

Рис. 6.1 - Структура мікропроцесорної системи збору даних на базі МП К1810ВМ86

Алгоритм роботи системи збору даних: наприклад вважатимемо, що перший зайнятий осередок ОЗП має номер 1350 в шістнадцятковій системі. У ньому буде розміщений результат опитування 1-го датчика з номером 000. Через акумулятор і шину даних номер датчика подається на пристрій виведення 1 (УВ1). УВ1 подає номер датчика на комутатор. Комутатор опитує потрібний датчик і передає аналоговий сиґнал на АЦП. АЦП перетворить аналоговий сиґнал на цифровій і передає цифровий сиґнал на УВВ1. Якщо в першому такті імпульсної послідовності Ф1 МП передає номер датчика, то в другому такті він очікує приходу сиґнала закінчення перетворення від АЦП. Сиґнал закінчення дорівнює 1 передається через УВВ2, через шину даних в акумулятор. Наявність сиґналу закінчення акумулятор перевіряє операцією циклічного зрушення вправо. Якщо сиґнал закінчення надійшов, то при зрушенні вправо 1 з молодшого розряду акумулятора передається в тригер зрушення ТС, тригер зрушення перемикається в стан 1 і дані з пристрою введення 1 по шині даних передаються в акумулятор, а з нього в осередок ОЗП. Вміст 16-розрядного реґістра і реґістра ВН збільшується на 1, при цьому формується номер наступного датчика і номер осередку, куди повинен бути поміщений наступний результат вимірювання.

Кожний пристрій введення/виведення, кожний системний пристрій має один або декілька реґістрів, доступ до яких здійснюється через адресний простір введення/виведення. Ці реґістри мають розрядність 8, 16 або 32 біт. Адресний простір введення/виведення фізично незалежний від простору оперативної пам’яті й має обмежений об’єм, що становить 216, або 65 536 адрес введення/виведення. Таким чином, поняття порта введення-виведення можна визначити як 8, 16 або 32-розрядний апаратний реґістр, що має певну адресу в адресному просторі введення/виведення. Вся робота системи з пристроями на найнижчому рівні виконується з використанням портів введення-виведення. На рис. 6.1 показана сильно спрощена, концептуальна схема управління устаткуванням мікропроцесорної системи.

Рис. 6.1 - Концептуальна схема управління устаткуванням мікропроцесорної системи

Як видно з рис. 6.1, самим нижнім рівнем є рівень базової системи введення-виведення (ВІОS), на якому робота з устаткуванням ведеться безпосередньо через порти. Тим самим реалізується концепція незалежності від устаткування. При заміні устаткування необхідно лише підправити відповідні функції ВІОS, переорієнтувавши їх на нові адреси і логіку роботи портів.

Принципово керувати пристроями безпосередньо через порти нескладно. Відомості щодо номерів портів, їх розрядності, форматів керуючої інформації приводяться в технічному описі на пристрій. Необхідно знати лише кінцеву мету своїх дій, алгоритм, відповідно до якого працює конкретний пристрій, і порядок програмування його портів. Тобто фактично, потрібно знати, що і в якій послідовності потрібно послати в порт (при записі в нього) або отримати з нього (при читанні) і як потрібно трактувати отриману інформацію. Для цього достатньо всього дврх команд, що входять в систему команд мікропроцесора:

IN акумулятор, номерпорта - введення в акумулятор з порту з номером (номер_ порту);

OUT порт, акумулятор - виведення вмісту акумулятора в порт з номером номеру порту.

Розглянемо на прикладі, як на рівні апаратури примусити комп'ютер видавати звук сирени. Спочатку потрібно вияснити, які апаратні ресурси при цьому будуть задіяні та як ними треба керувати.

Як відомо, у персонального комп'ютера є внутрішній динамік. Але при цьому спеціальної схеми ґенерації звуку для нього немає. Сиґнал для управління динаміком формується в результаті спільної роботи мікросхем:

1. програмованого периферійного інтерфейсу (ППІ) І8255;

2. таймера І8253.

Загальна схема формування такого сиґналу показана на рис. 6.2.

Рис. 6.2 - Схема формування звука для вбудованого динаміка ПЕОМ

Основна робота щодо ґенерації звуку виконується мікросхемою таймера. Мікросхема таймера (або просто таймер) має три канали з абсолютно однаковими внутрішньою структурою й принципом роботи. На канали таймера подаються імпульси від мікросхеми системного годинника, який являє собою генератор імпульсів, що працює з частотою 1,19 Мгц. Кожен канал має два входи та один вихід. Виходи каналу замкнуті на цілком певні пристрої комп'ютера. Так, канал 0 замкнутий на контролер переривань і є джерелом апаратного переривання від таймера, яке виникає 18,2 рази на секунду. Канал 1 зв'язаний з мікросхемою прямого доступу до пам'яті (DМА). І нарешті, канал 2 виведений на динамік комп'ютера. Основу каналів таймера складають три реґістри: реґістр введення-виведення розрядністю 8 бітів, реґістр-фіксатор (latch register) і реґістр-лічильник, обидва по 16 бітів. Всі реґістри зв'язані між собою таким чином. До реґістру введення-виведення ззовні поміщається деяке значення. Джерелом цього значення, може бути або системне програмне забезпечення, або програма користувача. Кожен реґістр введення-виведення має адресу в адресному просторі введення-виведення (номер порту введення-виведення). Реґістр введення-виведення каналу 2 має номер порту введення-виведення 42h. Значення, що поміщаються в нього, негайно потрапляють в реґістр-засувку або, як його ще називають, реґістр-фіксатор, де значення зберігається допоки в реґістр введення-виведення не буде записано нове значення. Узгодження цих реґістрів за їх розрядністю, (один з них 8, а інший 16-розрядний) здійснюється за допомогою реґістру управління (йому відповідає порт 43h), який є частиною механізму управління всією мікросхемою таймера. Він містить слово стану, за допомогою якого здійснюється вибір каналу, завдання режиму роботи каналу і тип операції передачі значення в канал. Слово стану має структуру:

- біт 0 визначає тип константи перерахунку: 0 - константа задана двійковим числом, 1 - константа задана двійково-десятковим (ВСD) числом. Константа перерахунку - значення, що завантажується ззовні в реґістр-фіксатор; у даному випадку завантажуватися буде двійкове число, тому значення цього поля буде 0;

- біти 1-3 визначають режим роботи мікросхеми таймера. Усього можна визначити шість режимів, але зазвичай використовується третій, тому для нашого випадку значення поля - 011;

- біти 4-5 визначають тип операції: 00 - передати значення лічильника в реґістр-фіксатор (тобто можлива не тільки операція запису значення в канал, але і зчитування значення реґістра-лічильника з нього), 10 - записати в реґістр-клямку тільки старший байт, 01 - записати в реґістр-клямку тільки молодший байт, 11 - записати в реґістр-клямку спочатку старший байт, а потім молодший. У нашому випадку значення поля буде 11. Тому формування 16-бітного реґістра-фіксатора через 8-бітовий реґістр введення-виведення проводиться таким чином: запис проводиться в два прийоми, перший байт з реґістра введення-виведення записується на місце старшого байта реґістра-фіксатора, другий байт - на місце молодшого байта. В реґістр введення-виведення ці байти поміщаються командами IN та OUT.

- біти 6-7 визначають номер програмованого каналу. У даному випадку вони дорівнюють 10.

Для формування будь-якого звуку необхідно задати його тривалість і висоту. Після того, як значення з реґістра введення-виведення потрапило в реґістр-фіксатор, воно відразу записується до реґістра-лічильника. Відразу ж після цього значення реґістра-лічильника починає зменшуватися на одиницю з надходженням кожного чергового імпульсу від системного годинника. На виході будь-якого з трьох каналів таймера встановлено схему логічного множення. Ця схема має два входи і один вихід. Значення реґістра-лічильника бере участь у формуванні сиґналу на одному з входів схеми логічного множення І. Сиґнал на другому вході цієї схеми залежить від стану біта 0 реґістра мікросхеми інтерфейсу з периферією (порт 61п). Коли значення в реґістрі-лічильнику стає рівним нулю, на відповідному вході схеми І формується одиниця. І якщо при цьому на другому вході, значення якого залежить від біта 0 порту 61h, також 1, то імпульс від системного годинника проходить на вихід каналу 2. Одночасно з пропуском імпульсу в каналі 2 негайно проводиться завантаження вмісту реґістра-фіксатора в реґістр-лічильник. Весь процес із зменшенням вмісту реґістра-лічильника повторюється заново. Таким чином, чим менше значення завантажене в реґістр-фіксатор тим частіше буде обнулення реґістра-лічильника і тим частіше імпульси проходитимуть на вихід каналу 2. Це означає, що висота звуку буде вища. Зрозуміло, що максимальне значення частоти на вході 1 динаміка - 1,19 Мгц. Таким чином імпульс з виходу каналу 2 потрапляє на динамік, і якщо на останній поданий струм, то виникає звук. Подачею струму на динамік управляє біт 1 порту 61h. Для переривання звучання можливі два шляхи: перший - відключити струм, скинувши біт 1 порту 61h, другий - скинути біт 0 порту 61h. Ці дві можливості використовують для створення різних звукових ефектів. Виконуючи ці розриви, фактично визначають тривалість звучання.

Перший канал таймера формує сиґнали апаратного переривання від таймера 18,2 рази на секунду (на основі цих сиґналів програми користувача відстежують час). Для цього ВІОS під час завантаження після включення комп'ютера завантажує в перший канал відповідне значення.

Таким чином, існують три послідовні дії, необхідні для програмування звукового каналу таймера (вони можуть бути застосовані й до решти каналів):

1. За допомогою порта 43h вибрати канал, задати режим роботи й тип операції передачі значення в канал. У даному випадку відповідне значення буде дорівнювати 10110110 – 0b6h.

2. Подати струм на динамік, встановивши біт 1 порта 61h.

3. Використовуючи реґістр АХ, помістити потрібне значення в порт 42h, визначивши тим самим потрібну висоту тону.

Приклад програми, що реалізовує звук сирени наведений в лістингу 6.1. Для зручності роботи в програмі була використана макрокоманда delay, що виконує затримку роботи програми на заданий час. Введена таким чином макрокоманда в тексті програми синтаксично нічим не відрізняється від інших команд асемблера і це дозволяє програмісту, в разі необхідності, розширити стандартний набір команд асемблера.

Варто відзначити, що макрокоманда чутлива до продуктивності мікропроцесора, з причини чого звук на комп'ютерах з різними моделями мікропроцесорів може відрізнятися. У рядками 37-38 виконується настройка каналу 2, яка полягає в записі в реґістр управління (порт 43h) байта стану 0b6h. Другим кроком треба встановити біти 0 і 1 порту 61h. Заздалегідь необхідно зчитати вміст цього порту. Це робиться для того, щоб виконувати установку бітів 0 і 1, не змінюючи вмісту решти бітів порту 61h (рядки 39-41). Принцип формування сиґналу сирени полягає в тому, що в циклі на одиницю змінюється вміст реґістра-лічильника і робиться невелика затримка для того, щоб сиґнал якийсь час звучав з потрібною висотою. Поступове підвищення, а потім зменшення висоти звуку і дає ефект сирени. Рядки 43-53 відповідають циклу, в тілі якого висота збульшується, а рядки 55-62 - циклу зниження тону. Обидва цикли повторюються послідовно 5 разів. Контроль за цим здійснюється за допомогою змінної CNT, вміст якої збільшується на 1 в рядку 69 і контролюється на рівність 5 в рядках 71-72. Якщо CNT = 5, то команда CMP встановлює певні прапорці. Наступна команда умовного переходу JNE аналізує ці прапорці й залежно від їх стану передає керування або на мітку, вказану в полі операнда цієї команди, або на наступну за JNE команду. Цикл в програмі асемблера можна організувати декількома способами. В даному випадку цикл організовується командою LOOP, яка за операнд має ім'я мітки. На цю мітку й передається керування при виконанні команди LOOP. Але до того, як передати керування, команда LООР аналізує вміст реґістра СХ, і, якщо він дорівнює нулю, керування передається не на мітку, а на наступну за LООР команду. Якщо вміст реґістра СХ не дорівнює нулю, то він зменшується на одиницю і керування передається на мітку. Таким чином у4-' СХ зберігається лічильник циклу. У нашій програмі він завантажується в СХ рядках 42 і 54.

Приклад 6_1.

;Програма, що імітує звук сирени.

;3міна висоти звуку від 450 Гц до 2100 Гц.

;Використовується макрос delay (затримка),

masm

model small

stack 100h

delay macro time

;макрос затримки, його текст обмежуеться директивами macro i endm.

;на вході - значения затримки (у мкс)

local ext, iter  

push сx

mov cx,time

ext:

push сx

mov сx, 5000

iter:

loop iter

pop сx

loop ext

pop сx

endm

.data      ;сеґмент даних

tonelow dw 2651    ;нижня частота звучания = 450 Гц

cnt db 0     ;лічильник для виходу з програми

temp dw ?     ;верхня частота звучания

.code      ;сеґмент коду

main:      ;точка входа в програму

mov ax,@data   ;зв'язати реґістр ds з сеґментом

mov ds,ax    ;даних через peґicтр ax

хоr ах,ах    ;очищуємо ах

go:

mov al,0B6h  ;заносимо слово стану 10110110b (0B6h)

out 43h,al   ;в командний реґістр (порт 43h)

in al,61h    ;зчитати значення порта 61h в al

or al,3    ;ініціалізація динаміка i подача струму

out 61h,al   ;на порт 61h

mov cx,2083   ;кількість кроків ступінчастої зміни тону

musicup:

;у ах значения нижньої частоти частоти звуку

mov ax,tonelow

out 42h,al    ;порт 42h молодше слово ах:al

xchg al,ah   ;обмін між al i ah

out 42h,al    ;y порт 42h старше слово ax:ah

add tonelow, l   ;підвищуємо тон

mov dx,tonelow   ;y dx поточне значения висоти звуку

mov temp,dx   ;temp - верхне значения висоти звуку

loop musicup   ;повторити цикл шдвищення

mov cx,2083   ;відновити лічильник циклу

musicdown:

mov ax,temp   ;y ax верхне значения висоти

out 42h,al    ;у порт 42h молодше слово ax:al

mov al,ah    ;обмін між al i ah

out 42h,al    ;y порт 42h старше слово ax:ah

sub temp,l    ;знижуємо висоту звуку

delay 1    ;затримка на 1 мкс

loop musicdown   ;повторити цикл зниження

nosound:

in al,61h    ;набудемо значения порту 61h в AL

and al,0FCh   ;вимкнути динамік

out 61h,al    ;у порт 61h

mov dx,2651  ;для подальших циклів

mov tonelow,dx

inc cnt    ;збільшуемо значення лічильника проходів,

;тобто кількість звучань сирени

сmp cnt,5    ;у 5 разів?

jne gо    ;якщо ні, перейти на мітку gо

ехіt:

mov ах,4с00b   ;стандартний вихід

іnt 21h

end main     ;кінець програми

6.2 Порядок виконання роботи

  1.  Ознайомитися з особливостями інтерфейсів мікропроцесорних систем вивчити їх атрибути.
  2.   Вивчити механізм програмної взаємодії портів введення-виведення мікропроцесорною системою.
  3.  Відповідно до запропонованої лістингу написати програму мовою асемблера для МП К1810, що забезпечує взаємодію мікропроцесорної системи з вбудованим динаміком.
  4.  За допомогою текстового редактора ввести текст програми керування мовою асемблера для МП 1810ВМ86 та зберегти його в каталозі С:\CPU\ТАSМ\WORК.
  5.  Перевірити правильність виконання програми.
  6.  Вийти з програми.

6.3 Зміст звіту

  1.  Титульний аркуш.
  2.  Найменування та мета лабораторної роботи.
  3.  Короткі теоретичні відомості.
  4.  Отримане у викладача завдання (текст програми з докладними коментарями).
  5.  Опис виконання кожного пункту завдання.
  6.  Письмові відповіді на контрольні питання. Найменування і мета лабораторної роботи.
  7.  Отримане у викладача завдання.
  8.  Опис виконання кожного пункту завдання.
  9.  Письмові відповіді на контрольні питання.

6.4 Контрольні запитання

  1.  Опишіть організацію адресного простору мікропроцесорних систем на базі МП К1810ВМ86.
  2.   Як мікропроцесорна система здійснює опитування датчиків технологічних величин?
  3.  Як здійснюється керування зовнішніми пристроями за допомогою портів введення/виведення?
  4.  Пояснити призначення програмованого таймера і8253 та його структуру.
  5.  Поясніть призначення реґістра-фіксатора.
  6.   Як здійснюється реалізація макрокоманд у програмах мовою асемблера для МП К1819ВМ86?
  7.  Якими способами можуть бути організовані цикли у програмах мовою асемблера? Навести приклади реалізації.

СПИСОК ЛІТЕРАТУРИ

  1.  

Абрайтис В.Б., Седаускас С.Ю., Пятраускас А.В. Микропроцессорный комплект БИС высокого быстродействия К1810. – М.: Радио и связь, 1986. – 184 с.

  1.  

Балашов Е.П., Григорьев В.Л., Петров Г.А. Микро- и мини-ЭВМ. Л.: Энергоатомиздат, 1984. – 376 с.

  1.  

Вуд А. Микропроцессоры в вопросах и ответах. - М.: Энергоатомиздат, 1985. – 184 с.

  1.  

Григорьев В.Л. Программирование однокристальных микропроцессоров. – М.: Энергоатомиздат, 1987. – 288 с.: ил.

  1.  

Кофрон Дж., Лонг В. Расширение микропроцессорных систем. - М.: Машиностроение, 1987. – 320 с.

  1.  

Лихтецендр Б.Я., Кузнецов В.Н. Микропроцессоры и вычислительные устройства в радиотехнике. - К: Высшая школа, 1988. – 272 с.

  1.  

Певенталь Л. Введение в микропроцессоры: программное обеспечение, аппаратные средства, программирование. - М: Энергоатомиздат, 1983. – 464 с.

  1.  

Самофолов К.Г. и др. Микропроцессоры. К: Техника, 1986. – 278 с.

(2-е изд. Переработаное и дополненное 1989. – 312 с.).

  1.  

Токхайм Р. Микропроцессоры: курс и упражнения. – М.: Энергоатомиз-дат,  1987. – 336 с.

  1.  

Щелкунов Н.Н., Дианов А.П. Микропроцессорные средства и системы. М.: Радио и свіязь, 1989. – 288 с.

 

Методичні вказівки щодо виконання лабораторних робіт з навчальної дисципліни “Мікропроцесорні пристрої” для студентів денної та заочної форм навчання зі спеціальностей: 6.092200 – "Електромеханічні системи автоматизації та електропривод" (у тому числі скорочений термін навчання), 6.092200 - “Електромеханічне обладнання енергоємних виробництв” (у тому числі скорочений термін навчання), 6.092200 – “Електричні машини і апарати”

Укладач старш. викл. М.Ю. Юхименко

Відповідальний за випуск зав. кафедри САУЕ Д.Й. Родькін

Підп. до др. ____________. Формат 6084 1/16 Папір тип. Друк ризографія

Ум. друк. акр. __________. Наклад_____прим. Зам № _____. Безкоштовно

Видавничий відділ КДПУ

39614, м. Кременчук, вул. Першотравнева, 20


 

А также другие работы, которые могут Вас заинтересовать

10230. Компоненты TStringGrid, TTreeView, TPageControl, THeaderControl и THeader 68.5 KB
  Лабораторная работа №7 Компоненты TStringGrid TTreeView TPageControl THeaderControl и THeader Цель работы: изучить часто используемые для организации вводавывода компоненты TStringGrid TTreeView TPageControl THeaderControl и THeader. TStringGrid Компонент TStringGrid представляет собой таблицу содержащую строки. Т
10231. Воспитание у древних славян 18.38 KB
  Воспитание у древних славян Воспитание детей у восточных славян при первобытнообщинном строе в период с VI в. по IX в. развивалось в той же логике и с теми же характерными особенностями что и у других первобытных народов. Первоначально процесс воспитания был неотделим от
10232. История европейского образования. Становление средневековой системы воспитания 28.34 KB
  История европейского образования. Становление средневековой системы воспитания Меньшиков В. М. Раннее Средневековье VIII век стал временем первого заметного подъема образования Западной Европы. Ведущую роль в этом процессе сыграли Карл Великий 749–814 и Алкуин 735–804 ко...
10233. Учитель вечен на Земле 26.84 KB
  Учитель вечен на Земле Цель: вызвать интерес к профессии педагога через книгу. Задачи: рассказать учащимся о развитии школы и учительства, познакомить с выдающимися писателями-педагогами, рекомендовать книги о школе и учителе. Оборудование: ПК му...
10234. Конспект и рефлексивный анализ проведенного урока музыки 73.5 KB
  Конспект и рефлексивный анализ проведенного урока музыки Учитель: Воуба В.Г. Класс: 5 в Дата: 26 ноября 2009 Время: 12:3013:10 Программа: Рачина Б.С. Тема: М.П. Мусоргский Иванова ночь на Лысой горе. Цель: познакомить детей с фантастическими образами в музыке М.П. Мус
10235. Педагогика. Введение в педагогическую деятельность 61.06 KB
  ПЕШКОВА В.Е. Педагогика. Ч.1. Введение в педагогическую деятельность Краткий конспект лекций. Лекция № 1. Своеобразие педагогической профессии и ее гуманистический характер. Лекция № 2. Профессия учителя. Лекция № 3. Творчество учителя. Лекция № 4. Педагогическая де...
10236. Объектно-ориентированное программирование. Структурный подход в программировании 111 KB
  Объектно-ориентированное программирование. Объектно-ориентированное программирование ООП является доминирующим стилем при создании больших программ. Основные этапы эволюции структурного подхода в программировании помогают лучше понять взаимосвяз...
10237. Классы в C++ 108 KB
  Лекция 2. Классы. Класс представляет собой главное инструментальное средство C для объектно-ориентированного программирования. Класс похож на структуру в которой сгруппированы элементы соответствующие данным о некотором объекте и оперирующие этими данными фун
10238. Указатели. Структуры в C++ 82 KB
  Лекция 10. Указатели. Структуры. 10.1 Указатели. Программы на C хранят переменные в памяти. Указатель представляет собой адрес памяти который указывает на определенный участок. 10.1.1 Использование указателя на символьную строку. Когда программа передает массив наприм