Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 1_6.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
69.59 Кб
Скачать

6.3. Програмування простих задач

Виконання команд проводиться згідно з логікою роботи процесора. Мікропроцесор може виконувати і логічні операції АБО,  І,  НЕ. Розглянемо різницю між традиційними логічними пристроями і “запрограмованими”.  Нехай,  МП повинен виконати логічну функцію  “І”.

Схема  “І”, основана на МП, вимагає наявності вхідного порту для виходів схеми. МП, виконуючі логічні команди, що зберігаються в пам’яті, виконує функцію “І”. Для одного виходу схеми “І” треба тільки  1 розряд  у вихідному порті. Програма, що реалізує функцію “І” складається з наступних команд: по кроках: див. рис.5.1.

Крок  1. Зчитати дані з вхідного порту;

Крок  2. Перейти на крок 5, якщо всі входи мають високий рівень,  якщо не мають  –  продовжити виконання;

Крок  3. Встановити низький рівень на виході;

Крок  4. Перейти на крок  1;

Крок  5. Встановити високий рівень на виході;

Крок  6. Перейти на крок  1.

Спочатку зчитуються дані з порту входу. Потім ці дані перевіряються на високий рівень. Якщо на всіх входах рівень високий  (1), на виході встановлюється також “1”, інакше “0”, коли програма закінчується, виконується цикл з початком на кроці 1. При цьому зміни на входах постійно відображуються на виході.

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

 

 

6.4. Визначення модуля числа

Як відомо, знак числа, кодом якого є 0 чи 1, знаходиться в знаковому розряді, це – найстарший біт числа. Але визначити модуль числа простим відкиданням знакового розряду неможливо, бо від'ємні числа представляються доповняльним або оберненим кодом двійкового числа.

Розглянемо алгоритм і програму знаходження модуля за умови, що від'ємні числа представляються доповняльним кодом. На рис.7.3 зображена блок-схема алгоритму визначення модуля числа, яке знаходиться в регістрі Е. Алгоритм задає послідовність елементарних дій, зображених в кожній фігурі, яким відповідають окремі команди, що полегшує складання програми. Програма визначення модуля числа наведена в табл. 7.4, і складена вона як послідовність команд в блок-схемі алгоритму.

Таблиця 7.4

 

Адреса

16-й код

Мітка

Мнемокод

Пояснення

 

 

0100

 

 

 

 

МОV А,Е

 

Перенесення в акуму-лятор вмісту регістру Е

 

 

0101

В7

 

ОRА А

Логічне додавання

 

 

0102

 

F20801

 

 

 

JР М2

 

Умовний перехід на М2,

якщо результат додатний

 

 

0105

 

2F

 

 

 

СМА

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

 

 

 

 

 

0106

 

 

 

 

INR А

 

Інкремент вмісту

акумулятора

 

 

0107

5F

 

МОV Е,А

Пересилання з А в Е

 

 

0108

76

М2

НLТ

Зупинка

 

 

Оскільки логічні і арифметичні операції мікропроцесор виконує з участю акумулятора, то для визначення знака число першою командою програми із регістру Е пересилається в акумулятор і наступною командою логічно додається само із собою для заповнення знакового S-біта регістру ознак, який заповниться вмістом найстаршого (знакового) біта акумулятора. Наступна команда умовного переходу контролює знак числа і здійснює розгалуження в програмі. Якщо число від'ємне (умова S=1 виконується), то наступними двома командами утворюється модуль числа: команда СМА порозрядно інвертує число, а ІNR А додає одиницю до наймолодшого розряду. Після цього модуль числа пересилається з акумулятора в регістр Е. Якщо число додатне, то воно вже і є модулем, і цих дій робити не потрібно. Тому при S= 0 команда умовного переходу обминає команди інверсії, інкременту і пересилання, тобто вміст регістру не змінюється.