Програмування арифметичних завдань на Асемблері для мікропроцесора К580

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Дон ГТУ

Лабораторна робота № 3

АКГ-05

АУТПТЕК

Програмування арифметичних завдань на Асемблері для мікропроцесора К580

Мета лабораторної роботи - розглянути особливості виконання найпростіших арифметичних операцій над цілими числами без знаку на мікропроцесорних установках МІКРОЛАБ КР580ИК80 і ЕЛЕКТРОНІКА-580, познайомитися з програмуванням в машинних кодах і мнемокода, навчитися користуватися засобами управління і клавіатурою пристроїв.

1 ТЕОРЕТИЧНА ЧАСТИНА

1.1 Представлення чисел

При програмуванні мікро ЕОМ на МП БІС КР580ИК80 необхідно користуватися способом представлення чисел з фіксованою десятковою крапкою. При цьому знак числа і кількість розрядів, зайнятих дробовою частиною числа, можуть бути враховані при підготовці даних або програмним шляхом.

Слід пам'ятати, що коди команд, адреси та дані вводяться в мікро ЕОМ числами в шістнадцятковій системі числення. Деякою особливістю в лабораторних установках МІКРОЛАБ і ЕЛЕКТРОНІКА-580 є відображення чисел на дисплеї (табл. I).

Для МП БІС КР580ИК80 можна представляти дані у вигляді двійково-десяткового числа, при цьому кожен байт розглядається як дві тетради (два полубайта), а кожна тетрада кодує одну десяткову цифру.

Таке подання дозволяє закодувати в одному байті десяткові числа від 0 до 99. Зверніть увагу на те, що, використовуючи для представлення шістнадцяткову систему числення, в одному байті можна закодувати число від 0 до FF, що відповідає числах десяткової системи від 0 до 255.

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

Таблиця 1 - Представлення чисел в різних системах числення і відображення їх на дисплеї

Десяткова

система

числення

Вісімкова

система

числення

Двійкова сис-тема счісле-ня (за зошити)

Шістнадцяти-ричная система числення

Символи

на дисплеї

0

0

0000

0

0

1

1

0001

1

1

2

2

0010

2

2

3

3

0011

3

3

4

4

0100

4

4

5

5

0101

5

5

6

6

0110

6

6

7

7

0111

7

7

8

10

1000

8

8

9

11

1001

9

9

10

12

1010

А

А

11

13

1011

У

B

12

14

1100

З

З

13

15

1101

D

D

14

16

1110

Е

E

15

17

1111

F

F

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

Основний арифметичної функцією є складання двох чисел. Команда, що має мнемокод ADD R д, складає дані регістра R д і акумулятора (регістру А) і результат складання запам'ятовує в акумуляторі.

- CARRY - регістра ознак. Розряд (прапор) переносу грає велику роль при виконанні мікропроцесором арифметичних операцій і працює дев'ятий розрядом акумулятора. По прапору командами IC і INC можна здійснити перехід. Застосовується він так само при додаванні чисел довше восьми розрядів, виконуючи функції зв'язку між двома байтами запису числа.

Про стан прапора перенесення, як і інших прапорів регістра ознак у МІКРОЛАБе може повідомити комірка пам'яті з адресою 83ЕА, де прапори записуються в послідовності, наведеній на малюнку 1.1.

У «ЕЛЕКТР0НІКЕ-580» розряд З висвічується на панелі установки.



Малюнок 1.1 - Прапори № ШС КР580ІКБ0

Віднімання вмісту регістра R д з вмісту акумулятора виробляє команда SUB R д. Наприклад, команда SUB B віднімає з акумулятора дані регістра В.

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

Після виконання команди SUB R д результат залишається в акумуляторі, виклик вмісту якого на індикатор регістра даних здійснюється адресою 83ЕВ в "МІКРОЛАБе" і клавішами REC, А в "ЗЛЕКТРОНІКЕ-580".

1.3 Програма складання двох однобайтовим чисел X і У

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

Задайтеся числовими значеннями Х = 38, Y = А3 і початковим адресою програми, прийнявши його рівним 8200.

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

Увімкніть лабораторну установку і, користуючись лістингом програми, наведеним у табл. 2, запишіть у пам'ять ЕОМ за вказаними адресами коди команд.

Таблиця 1.2 - Програма PRG 1 складання двох однобайтовим чисел

Адреса

Код команди

Мітка

Мнемокод

Коментар

8200

AF

PRG 1:

Х R А А

Очистити акумулятор

8201

ЗЕ


MVI A, 3 8

Записати в акумулятор

8202

38



число X

8203

06


MVI B, A3

Записати в регістр В

8204

A3



число У

8205

80


ADD 8

Скласти X і Y

8206

E7


RST 7

Перервати виконання програми

Виконавши запис програми, встановіть початкова адреса і запустіть програму. Після її виконання на дисплеї встановиться запис: 8207 DB _ _, що показує результат обчислення DB за адресою 8207.

Для отримання різниці двох чисел X та Y можна використовувати програму PRG 1, замінивши в ній за адресою 8205 код команди 80 (ADD B) кодом 90 (SUB В) команди віднімання вмісту регістра В з вмісту акумулятора, розмістивши попередньо в регістрах В і А відповідно від'ємник і зменшуване. Різниця буде записана в акумуляторі.

1.4 Складання масиву однобайтовим чисел

Масив однобайтовим шістнадцяткових чисел, наприклад, 31, АВ, 86, розмістіть в послідовних адресах пам'яті, наприклад, 8250, 8251, 8252, 8253.

В якості вхідних параметрів для виконання програми необхідно мати адресу першого доданка, наприклад, 8250, записаний в регістрах H, L, і число доданків - в регістрі С. Вихідним параметром буде сума, старший байт якій записаний в регістрі В, а молодший байт - в акумуляторі.

Таблиця 1.3 - Програма PRG 2 складання масиву однобайтовим чисел

Адреса

Код

команди

Мітка

Мнемоніка

Коментар

8200

8201

8202

21

50

82

PRG 2:

LXI H, 8250

Завантажити в регістри HL, адресу першого доданка

8203

8204

0E

04


MVI C, 04

Завантажити в регістр З кількість доданків

8205

AF


XRA A

Очистити акумулятор

8206

47


MOV B, A

Очистити регістр У

8207

86

M1:

ADD M

Додати до вмісту акумулятора число з масиву доданків

8208

8209

820А

D2

0D

82


INC M2

Якщо переносу немає, то йти на М2

820В

820С

04

B7


INR B


ORA A

Збільшити вміст регістра В на I

Очистити прапор переносу

820 D

23

M2:

INX H

Вказати на наступну адресу доданка

820E

0D


DCR C

Зменшити вміст регістра С на I

820F

8210

8211

C2

07

82


INZ

Якщо не всі складові, то йти на MI

8212

FF


RST 7

Перервати виконання програми

Виконання програми з ім'ям PRG 2 починається з команди завантаження реєстрової пари HL, 16-бітним числом 8250 (адресу першого доданка). Після виконання другої команди (адреси 820З, 8204) в регістрі З запишеться число 4 (число доданків). Командами 8205 і 8206 виробляється обнуління регістрів А, В і регістра ознак.

Командою 8207 з міткою MI починається перший цикл етапу підсумовування. В результаті виконання цієї команди в регістр А заноситься перший доданок (число 31) за адресою 8250, записане в реєстрової парі HL.

Так як переповнення акумулятора немає, по команді 8208 здійснюється перехід на мітку М2 (адреса команди 820С), і до вмісту реєстрової пари HL додається I. Тепер тут записаний адресу 8251 другому доданку.

Після виконання команди 820Е число доданків (вміст регістра С) стає рівним 3 і по команді 820 F здійснюється перехід на MI - початок наступного циклу етапу підсумовування.

У другому циклі в регістр А записується сума DC чисел 31 і АВ, прапор переносу не встановлюється, зменшується число доданків регістра С до 2.

У третьому циклі в акумулятор записується 62 (молодший байт суми чисел DC та 86) і встановлюється прапор переносу С. За командою 8208 здійснюється перехід за адресою 820В і в регістр В записується I. Вміст реєстрової пари HL одно 8253, вміст регістра С - I.

У четвертому циклі після виконання команди 8207 в акумулятор записується 56, прапор переносу встановлено, вміст регістра У одно 2.

За командою 820 (Е) вміст регістра С стає рівним 0, і команда 820 F передає управління адресою 8212 - кінець виконання програми.

1.5 Віднімання однакових по довжині чисел

Розгляньте програму отримання різниці двох чисел X і Y, які мають однакову довжину. Лістинг програми наведено в табл. 1.4.

Вхідними параметрами програми будуть: довжина чисел у байтах, записана в регістрі В, адресу молодшого байта від'ємника - у реєстрової парі HL, адресу молодшого байта зменшуваного - у реєстрової парі DE. Результат обчислення заноситься в область пам'яті, відведену під від'ємник.

Покладемо X = А304 і Y = 7 E 2 I,

B області пам'яті записується за адресами

8250 - 04 (молодший байт зменшуваного);

8251 - A3 (старший байт зменшуваного);

8252 - 21 (молодший байт від'ємника);

8253 - 7 E (старший байт від'ємника).

У регістрі B записано 2 - довжина чисел X і Y в байтах.

Таблиця 1.4 - Програма PRG 3 віднімання чисел

Адреса

Код

команди

Мітка

Мнемоніка

Коментар

8200

8201

06

02


PRG 3:

MVI B, 02

Завантажити лічильник довжини числа

8202

8203

8204

II

50

82


LXI D, X

Завантажити в регістри D, E адресу молодшого байта зменшуваного

8205

8206

8207

21

52

C2


LXI M, V

Завантажити в регістри H, L адресу молодшого байта від'ємника

820 8

AF


XRA A

Очистити акумулятор

820 9

IA

M1:

LDAX D

Завантажити в акумулятор зменшуване

820 A

9E


SBB M

Відняти від вмісту акумулятора від'ємник

820В

77


MOV M, A

Записати різницю на місце від'ємника

820 C

I3


INX D

Вказати на наступний байт зменшуваного

820D

23


INX H

Вказати на наступний байт від'ємника

820E

05


DCR B

Зменшити вміст лічильника довжини числа

820F

8210

8211

02

09

82


INZ M1

Якщо не останній (старший) байт, то йти на MI

8212

FF


RST 7

Перервати виконання програми

Зверніть увагу на те, що за адресою 820А записана команда SBB. Вона відрізняється від аналогічної команда SUB М тим, що з вмісту акумулятора віднімається не тільки число, записане у клітинці М за адресою, що зберігається в реєстрової парі HL, а й значення позики. Підсумкове значення позики в результаті виконання операції фіксується в розряді перенесення регістра ознак.

1.6 Складання мультибайтних десяткових чисел

У табл. 1.5 наведено лістинг програми додавання чисел, що представляються в МП БІС КР580ИК80 у вигляді двійково-десяткових чисел. Так як таке подання чисел вимагає від ЕОМ перетворення даних, в програму необхідно ввести оператор DAA, який виконує корекцію результату операції за такими правилами:

якщо значення молодших 4 біт акумулятора більше дев'яти або якщо ознака додаткового перенесення АС дорівнює I, то до вмісту акумулятора додається число 6;

якщо значення старших 4 біт акумулятора більше дев'яти або якщо ознака перенесення З дорівнює I, то до вмісту старших 4 біт акумулятора додається число 6.

Зауважте, що у запропонованій програмі, як і в попередній, розглядаються числа з довжиною більше машинного слова. Тому операції з такими числами МП БІС проводять по байтах, починаючи з молодших байтів.

Розгляньте програму з ім'ям PRG 4 для доданка Х = 3045, розміщеного побайтно в елементах пам'яті 8050 і 8051, і доданка Y = 2071 - у комірки пам'яті 8052 і 8053. Результат складання розміщується в комірках, відведених для другого доданку.

Після виконання програми викличте послідовно осередки 8053 і 8052 і запишіть їх вміст. Це результат рішення. Він повинен бути рівний десятковому числу 5116.

Таблиця 1.5 - Програма PRG 4 складання двох десяткових чисел

Адреса

Код

команди

Мітка

Мнемоніка

Коментар

8200

8201

8202

21

50

82

PRG 4:

LXI H, X

Завантажити в регістри молодші два розряди числа Х

8203

8204

8205

II

52

80


LXI D, Y

Завантажити в регістри молодші два розряди числа Y

820 6

AF


XRA A

Очистити акумулятор

820 7

8208

0E

02


MVI C, 02

Завантажити лічильник числа байтів

820 9

IA

M1:

LDAX D

Завантажити в акумулятор два розряди числа Y

820 A

8E


ADC M

Додати до вмісту акумулятора два розряди числа Х з урахуванням перенесення

820В

27


DAA

Перетворити результат в десятковий код

820 C

12


STAX D

Передати результат в комірку пам'яті, що адресується реєстрової парою DE

820D

13


INX D

Вказати на адресу наступних двох розрядів числі Y

820E

23


INX H

Вказати на адресу наступних двох розрядів числі Х

820F

OD


DCR C

Зменшити вміст лічильника числа байтів

8210

8211

8212

C2

09

82


INZ M1

Якщо не останній (старший) байт, то йти на MI

8213

FF


RST 7

Перервати виконання програми

2 ЕКСПЕРИМЕНТАЛЬНА ЧАСТИНА

2.1 Виконаємо програму отримання суми двох чисел

X = A + B, що мають однакову довжину. Лістинг програми наведено в таблиці 2.1.

A = B =

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

В області пам'яті записується за адресами

8250 - 87 (молодший байт першого доданка)

8251 - 35 (старший байт першого доданка)

8252 - 87 (молодший байт другого доданка)

8253 - 02 (старший байт другого доданка)

Таблиця 2.1 - Програма складання масиву однобайтовим чисел

Адреса

Код

команди

Мітка

Мнемоніка

Коментар

8200

8201

8202

21

50

82

PRG 1:

LXI H, X

Завантажити в регістри молодші два розряди числа А

8203

8204

8205

11

52

80


LXI D, Y

Завантажити в регістри молодші два розряди числа В

820 6

AF


XRA A

Очистити акумулятор

820 7

8208

OE

02


MVI C, 02

Завантажити лічильник числа байтів

820 9

1A

M1:

LDAX D

Завантажити в акумулятор два розряди числа А

820А

8E


ADC M

Додати до вмісту акумулятора два розряди числа В з урахуванням переносу

820В

27


DAA

Перетворити результат в десятковий код

820 C

12


STAX D

Передати результат в комірку пам'яті, що адресується реєстрової парою DE

820D

13


INX D

Вказати на адресу наступних двох розрядів числа В

820E

23


INX H

Вказати на адресу наступних двох розрядів числа А

820F

OD


DCR C

Зменшити вміст лічильника числа байтів

8210

8211

8212

C2

09

82


INZ M1

Якщо не останній (старший) байт, то йти на М I

8213

E7


RST 7

Перервати виконання програми

2.2 Виконаємо програму отримання різниці двох чисел C і D

Лістинг програми наведено в таблиці 2.2.

Вхідними параметрами програми будуть: довжина чисел у байтах, записана в регістрі В, адресу молодшого байта від'ємника - у реєстрової парі HL, адресу молодшого байта зменшуваного - у реєстрової парі DE. Результат обчислення заноситься в область пам'яті, відведену під від'ємник. C = , D = . У регістрі У записано 2 - довжина чисел C і D в байтах. В області пам'яті записується за адресами

8250 - Е1 (молодший байт зменшуваного);

8251 - 37 (старший байт зменшуваного);

8252 - 75 (молодший байт від'ємника);

8253 - 08 (старший байт від'ємника);

У регістрі У записано 2 - довжина чисел C і D в байтах.

Таблиця 1.4 - Програма PRG 2 віднімання чисел

Адреса

Код

команди

Мітка

Мнемоніка

Коментар

8200

8201

06

02

PRG 2:

MVI B, 02

Завантажити лічильник довжини числа

8202

8203

8204

II

50

82


LXI D, X

Завантажити в регістри D, E адресу молодшого байта зменшуваного

8205

8206

8207

21

52

C2


LXI M, V

Завантажити в регістри H, L адресу молодшого байта від'ємника

820 8

AF


XRA A

Очистити акумулятор

820 9

IA

M1:

LDAX D

Завантажити в акумулятор зменшуване

820 A

9E


SBB M

Відняти від вмісту акумулятора від'ємник

820В

77


MOV M, A

Записати різницю на місце від'ємника

820 C

I3


INX D

Вказати на наступний байт зменшуваного

820D

23


INX H

Вказати на наступний байт від'ємника

820E

05


DCR B

Зменшити вміст лічильника довжини числа

820F

8210

8211

02

09

82


INZ M1

Якщо не останній (старший) байт, то йти на MI

8212

Е7


RST 7

Перервати виконання програми

ВИСНОВОК

У ході лабораторної роботи розглянули особливості виконання найпростіших арифметичних операцій над цілими числами без знаку на мікропроцесорних установках МІКРОЛАБ КР580ИК80 і ЕЛЕКТРОНІКА -580, познайомилися з програмуванням в машинних кодах і мнемокода, навчилися користуватися засобами управління і клавіатурою пристроїв.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Лабораторна робота
87кб. | скачати


Схожі роботи:
Програмування циклічних та типових програм на Асемблері для мікропроцесора КР580ИК80
Команда переміщення даних мікропроцесора К580
Структурне програмування на асемблері
Застосування лінійного програмування для вирішення економічних завдань оптимізація прибутку
Навчання молодших школярів складання арифметичних завдань
Методика навчання школярів прийомам рішення текстових арифметичних завдань
Програмування вирішення завдань
Програмування різних типів завдань
Навчання рішенню завдань з розділу Основи алгоритмізації та програмування
© Усі права захищені
написати до нас