Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
tze electronika ta mpt mv rgr.doc
Скачиваний:
25
Добавлен:
16.02.2016
Размер:
8.57 Mб
Скачать

Способи адресації

Для зберігання багатобайтних даних (команд і операндів) в МП КР580 ВМ80 є такі способи адресації даних в пам’яті або регістрах:

1 – пряма - другий і третій байти команди містять точну адресу комірки пам’яті, в якій зберігаються дані. Молодші біти адреси зберігаються в другому байті, старші - в третьому;

2 – регістрова - команда вказує регістр або пару регістрів, де зберігаються дані;

3 – уявна регістрація - команда вказує пару регістрів, в яких містяться адреси комірки пам’яті, де розміщені потрібні дані;

4 – безпосередня - в команді вбудовані дані.

Команда переходу визначає адресу наступної команди, яку треба виконати або прямо через другий і третій байти, де вказується адреса команди, яку треба виконати безпосередньо після переходу; - або уявно регістрово, де вказується пара регістрів, в яких і знаходиться адреса наступної команди, що буде виконуватися.

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

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

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

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

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

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

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

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

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

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

Для програмування інтерфейсу як - порт С - порт вводу, а порт В – порт виводу в акумулятор необхідно послати число 81. В інших режимах портів це число буде інакше.

Рис.5.1. Блок схема алгоритму функції “І”

Прапорці

В МП КР580 ИК80 є прапорці:

Z – нуля, S – знаку, P – парності, CY – переносу, AC – допоміжного переносу. Прапорець встановлюється, якщо біт в прапорцевому регістрі рівний логічній 1 і прапорець скинуто, якщо біт рівний нулю.

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

147(10) 1001 0011(2)

+ 170(10) + 0010 1010(2)

317(10) 10011 1101

В найстаршому значущому розряді появилась 1, для обліку цієї одиниці при виконанні операції додавання в процесорі і передбачено прапорець переносу С. Цей прапорець може бути перевірений командами переходів (JC, - перехід, якщо є перенос), або JCN (перехід якщо немає переносу), якщо результат менший за 256 (переносу нема) програма рахує, якщо результат ≥256, необхідно зафіксувати "1" дев'ятого знакового розряду і перейти до виконання програми, що йде за адресами команди переходу.

Розглянемо процес складання простих програм на мові Асемблер, використовуючи систему команд процесора КР 580, при цьому вказується також, для якої команди необхідно враховувати наявність і значення прапорців.

Задача 1.Скласти фрагмент програми на мові Асемблер та в машинних кодах процесора КР 580 для виконання операції зміни вмісту комірок з адресами А012 і А1F2. Для ознайомлення можна допустити, що всі команди однобайтні.

Рішення: 1) Завантажимо адресу А012 (два байти в двобайтний регістр М:

LXI H

Команда завантаження

12

A0

Адреса

MOV B,M

Пересилаємо вміст регістру М в регістр В

LDA

Команда завантажування акумулятора прямо

F2

A1

Адреса

MOV M, A

Пересилаємо з акумулятора в регістр М

MOV A,B

Пересилаємо з регістра В в акумулятор

і накінець напряму завантажимо комірку з адресою А0 F2 даними з акумулятора:

STA

Команда

F2

A0

Адреса

Завдання виконано.

2. Приклад.Які операції буде виконувати МП по реалізації фрагменту програми ?

MVI A

14

SUI

2D

Рішення: по команді MVI A, 14 проходить завантаження в акумулятор числа 14(16)=00010100(2), по команді SUI 2D проходить операція віднімання від 14(16) числа 2D(16), що в двійковому коді реалізується як

00010100

00101101

знак (-) 11100111(2)= -Е7(16)

В мікропроцесорі ця операція реалізується шляхом додавання числа 14(16) і числа 2D(16) записаного в додатковому коді (див. тему 3).

3. Приклад. Проаналізувати фрагмент програми, вибрати комірки адресного поля ОЗП, куди записати програму. Записати коментарі до виконання команд:

MVI A

OE

ADO L

JNZ

  • адреса повернення наступної операції

MOV A, C

INR, A

MOV C, A

4. Приклад.Проаналізувати фрагмент програми. Скласти блок схему фрагменту і записати цей фрагмент програми в машинних кодах процесора КР 580.

Рішення: Записуємо всі команди і константи в адресне поле ОЗП, починаючи з А005, див. табл.

Адреса комірки

Мнемокод

Машинний код

Коментарі

. . .

. .

….

…..

А005

MVI, A

3F

А ← < B2>

06

OE

OE

07

ADDL

85

08

JNZ

C2

A ← (A)+(L)

09

OC

0A

}

Перехід до АООС, якщо (А) ≠ 0

адреса переходу

А0

MOV A, C

79

A ← (C)

INR, A

3C

A ← (A)+1

0D

MOV C, A

4F

(C) ← (A)

Блок-схему алгоритму пропонуємо скласти самостійно.

Приклад 5. Скласти програму для обчислення величини у за залежністю у= (37-30/2):2+11. Для множення та ділення використати операції зсуву.

Рішення: Всі операнди переводимо в 16–кову систему числення, для операції множення і ділення на 2, 4, 8 використовуємо команди RAR

Записуємо програму на мові Асемблер:

MVI A

25

MOV B, A

1E

RAR

MOV C, A

MOV A, B

SUB C

RAR

ADI

OB

HLT

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

Приклад 6.Скласти програму для обчислення величини

число х надходить через умовний порт 05, число у – через умовний порт 08, число z повинно зберігатись у комірці під адресою А 233.

x,y, z- цілі числа, що знаходяться в межах від –127...0…+127.

Рішення:

Команда SUI - D6 команда безпосереднього віднімання 2 байту операнда, що йде за командою від вмісту акумулятора, результат – в А інші команди знайомі по попередніх прикладах. Пропонуємо це рішення продовжити самостійно.

А000

IN

А001

08

A002

MOV B, A

A003

IN

A004

05

A005

MOV C, A

A006

SUI

A007

08

A008

TP

A009

11

A00A

AO

A00B

MOV A, C

A00C

ADO B

A00D

STA

A00E

33

A00F

AO

A010

HLT

A011

MOV A, C

A012

SUB B

A013

STA

A014

33

A015

AO

A016

HLT

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]