Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практичні по МПС1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5.91 Mб
Скачать

12.4 Структурна схема програми

Фрагмент коду:

Приклад: Встановлення прапорця нуля

Приклад: Прапорець нуля не встановлено

Література:

  1. Белов А. В. Самоучитель по микропроцессорной технике. СПб., Наука и техника. 2003 – 224с.

  2. Мікропроцесорна техніка. Підручник /Якименко Ю. І, Терещенко Т. О. таінші/ - 2-ге вид., переробл. та доповн. – К.: ІВЦ «Видавництво «Політехніка»», 2004. – 440 с.

  3. Микропроцессорные системы. Под ред. Д. В. Пузанкова. СПб., Политехника. 2002 – 935с.

  4. Юров В. Assembler: Практикум. — СПб.: Питер, 2001.

Техніка безпеки:

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

  1. заходити у лабораторію тільки з дозволу викладача або завідуючого лабораторією;

  2. не приносити до лабораторії легко палких та отруйних речовин;

  3. без дозволу викладача або завідуючого лабораторією не вмикати ЄОМ та інші електричні прилади;

  4. чітко та своєчасно виконувати накази викладача або завідуючого лабораторією;

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

Послідовність виконання роботи

1.Прочитати методичні вказівки, що до виконання практичної роботи.

2.Записати у зошит порядок виконання практичної роботи, наприкінці заняття записати результат та висновки практичної роботи.

3. Зробити усі частини які пропонуються в практичній роботі.

4. Відповісти на контрольні запитання викладача (або виконати тестові завдання).

Хід виконання роботи

Завантажити Emu8086 v2.57

Завдання №1 Передбачимо, що регістри AX і BX містять знакові дані, а CX і DX - беззнакові. Визначите команди CMP (де необхідно) і команди безумовного переходу для наступних перевірок:

а) значення в DX більше, ніж в CX

б) значення в BX більше, ніж в AX

в) CX містить нуль

г) чи було переповнювання

д) значення в BX рівне або менше, ніж в AX

е) значення в DX рівне або менше, ніж в CX

Завдання №2: Набрати наступний код програми. Надати коментар до кожного рядку.

Завдання №3: Набрати наступний код. За допомогою таблиць розширеного ASCII коду з’ясувати яка перевірка коду відбувається. Надати коментар до кожного рядку лістингу.

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

  1. Яка програма називається лінійною?

  2. Для чого призначена команда СМР?

  3. Для чого призначена команда TEST?

  4. Які існують типи переходів?

  5. Як визначається максимальна довжина короткого переходу7

  6. Надати описання організації безумовних переходів для знакових та без знакових виразів.

  7. Для чого використовують розширені коди ASCII клавіш?

  8. Заповнити таблицю:

Форма звіту

  1. Тема, мета роботи.

  2. Текст завдання для виконання.

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

  4. Хід виконання роботи.

  5. Висновок по роботі.

ПРАКТИЧНА РОБОТА №13

Тема: Організація циклів та підпрограм

Мета: Вивчення алгоритму побудови циклів з умовою, з лічильником, цикл з інверсною умовою; вивчення команд обробки стеку; команди організації підпрограм.

Задачі: складання підпрограм та циклічних програм.

Обладнання для виконання роботи:

  1. Методичні вказівки що до виконання лабораторної роботи;

  2. Персональний комп’ютер;

  3. Відповідне програмне забезпечення (Windows 98, Microsoft Office 2000, XP, 2003, MS Excel, емулятор типу Emu8086 v2.57).

Теоретичні основи:

Циклом називається багатократне повторення послідовності команд до настання вказаної умови.

У мовах програмування високого рівня відомо багато різновидів циклів, у тому числі:

• цикл з лічильником (цикл FOR), що повторюється заздалегідь задана кількість разів;

• цикл з умовою (цикл WHILE), що повторюється до тих пір, поки умова достеменна;

• цикл з інверсною умовою (цикл UNTIL), що повторюється до тих пір, поки умова не стане достеменною.

Цикл з лічильником за допомогою конструкцій IF і GOTO

Перше, з чим потрібно розібратися — це де розмістити змінну управління циклом, тобто лічильник. Лічильник потрібний для того, щоб цикл виконувався не нескінченно, а певна кількість разів. Команда порівняння дозволяє зберігати лічильник або в пам'яті, або в якомусь регістрі загального призначення. Як лічильник (псевдозмінній I) ми використовуватимемо регістр СХ:

LOOP — складна команда, простий запис циклу

Для організації циклу можна використовувати команду LOOP:

LOOP мітка

Подібно до команди MUL, команда LOOP працює з двома операндами. Перший операнд фіксований, і ми не можемо його вказати явно. Це значення регістра СХ. Другий — це адреса цільової мітки циклу. Інструкція LOOP зменшує значення регістра СХ на одиницю і, якщо результат не дорівнює 0, то вона переходить на вказану мітку. Мітка має бути в межах 128 байтів (короткий тип переходу).

Цикл з лічильником і додатковою умовою.

Команди LOOPZ і LOOPNZ

Команда LOOPZ дозволяє організувати цикл з перевіркою додаткової умови.

LOOPZ мітка

LOOPNZ мітка

Команда LOOPZ уточнює умову переходу таким чином: перехід на вказану мітку станеться, якщо СХ не містить нуля і в той же час прапор ZF дорівнює одиниці. Інше ім'я цієї команди — LOOPE. Команда LOOPNZ працює аналогічно, але додаткова умова протилежна: перехід буде виконаний лише якщо СХ не дорівнює 0 і в той же час ZF дорівнює 0. Інше ім'я цієї команди — LOOPNE.

Команди обробки стека

Мікропроцесор має дві команди для роботи із стеком — PUSH і POP. Команда PUSH дозволяє помістити в стек вміст будь-якого 16-регістра або елементу пам'яті. Формат команди наступний:

PUSH О1

Приклад використання:

Інша команда, POP, записує в свій операнд значення вершини стека (останнє збережене в стеку значення). Тип операнда має бути такимже, як в інструкції PUSH (іншими словами, якщо ви помістили в стек 16-розрядний регістр, витягання із стека повинне відбуватися теж в 16 розрядний регістр).

Організовуємо підпрограму

Для виклику підпрограми використовується команда CALL, а для повернення з підпрограми в основну програму — RET. Формат обох команд такий:

Команді CALL потрібно передати всього один операнд — адресу початку підпрограми. Це може бути безпосереднє значення, вміст регістра, пам'яті або мітка.

Наприклад: (Операція ADD змінює значення свого операнда, тому насамперед збережемо його в стеку)

Тепер викличемо нашу підпрограму add_it з аргументами 4 і 8 :

Викликаємо переривання

Програмні переривання породжуються по команді INT. Програмні переривання можна розглядати як «переривання на вимогу», наприклад, коли викликаємо підпрограму операційної системи для виведення рядка символів. У випадку з програмним перериванням ви самі визначаєте, яке переривання буде викликано в той або інший момент.

Команді INT потрібно передати всього один 8-бітовий операнд, який задає номер потрібного переривання.

INT ор

Апаратні переривання викликаються апаратними засобами комп'ютера, підключеними до загальної шини (ISA або PCI). Пристрій, що запрошує переривання, генерує так званий запит на переривання (IRQ, interrupt requests). Всього існує 16 апаратних запитів на переривання, оскільки лише 16 провідників в шині ISA виділено для цієї мети.

Повернення з обробника переривання здійснюється за допомогою команди IRET, яка відновлює вихідні значення ІР, CS і прапорів із стека. Формат команди:

IRET

Команду INT можна реалізувати самостійно за допомогою команд PUSHF і CALL far: