Скачиваний:
63
Добавлен:
21.02.2014
Размер:
130.05 Кб
Скачать

БАЛАКОВСКИЙ ИНСТИТУТ ТЕХНИКИ, ТЕХНОЛОГИИ И УПРАВЛЕНИЯ

ФАКУЛЬТЕТ ИНЖЕНЕРНО-СТРОИТЕЛЬНЫЙ

КАФЕДРА УПРАВЛЕНИЕ И ИНФОРМАТИКА В ТЕХНИЧЕСКИХ СИСТЕМАХ

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

по дисциплине:

МИКРОПРОЦЕССОРНЫЕ УСТРОЙСТВА СИСТЕМ УПРАВЛЕНИЯ

Выполнение арифметических операций

Выполнили: ст. гр. УИТ-51

Гродсков С.В.

Заикин А.С..

Мосницкий В.В.

Гусинцев В.А.

Кравчук С.Н.

Принял:

Мефедова Ю.А._________

«___»________________2005 г.

2005

Цель работы: изучение способов оРеганизации и исследование программ сложения и вычитания.

1 Перечень команд сложения и вычитания МП КР580ИК80:

Мнемокод

Наименование

команды

Описание

операций

ADD R

Сложение содержимого регистра и А-регистра.

(A) ← (A) + (R)

ADD М

Сложение содержимого ячейки памяти и А-регистра.

(A) ← (A) + ((HL))

ADI B2

Сложение непосредственных данных и содержимого А-регистра.

(A) ← (A) + (В2)

ADC R

Сложение содержимого регистра и А-регистра с переносом.

(A) ← (A) + (R) + (CY)

ADC М

Сложение содержимого ячейки памяти и А-регистра с переносом.

(A) ← (A) + ((HL)) + +(CY)

ACI B2

Сложение непосредственных данных и содержимого А-регистра с переносом.

(A) ← (A) + (В2) +(CY)

SUB R

Вычитание содержимого регистра из А-регистра.

(A) ← (A) – (R)

SUB M

Вычитание содержимого ячейки памяти из А-регистра.

(A) ← (A) – ((HL))

SUI B2

Вычитание непосредственных данных из содержимого А-регистра.

(A) ← (A) – (В2)

SBB R

Вычитание содержимого регистра из А-регистра с заемом.

(A) ← (A) – (R) – (CY)

SBB M

Вычитание содержимого ячейки памяти из А-регистра с заемом.

(A) ← (A) – ((HL)) – (CY)

SBI B2

Вычитание непосредственных данных из содержимого А-регистра с заемом.

(A) ← (A) – (В2) – (CY)

2 Программа сложения массива однобайтных чисел с получением двухбайтного результата. Слагаемые должны быть расположены в последовательных адресах памяти. Входные параметры: адрес первого слагаемого, записанный в регистрах Н, L, и число слагаемых, записанное в регистр В. Выходные параметры: сумма, старший байт записан в регистре С, а младший – в аккумуляторе А.

Адрес

Машинный код

Метка

Мнемокод

Комментарий

0800

21 00 0В

MAIN

LXI Н,0В00

Записать в Рег. H, L адрес первого слагаемого

0803

06 05

MVI B, 03

Записать в Рег В кол-во слагаемых

0805

CD 0908

CALL ADDB

Вызвать подпрограмму сложения

0808

CF

RST 1

Прервать выполнение программы

0809

AF

ADDB

XRA A

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

080A

4F

MOV C, A

Очистить счетчик переносов

080B

86

CNT

ADD M

Прибавить к содержимому аккумулятора число из массива слагаемых

080C

D2 1008

JNC TRM

Если переноса нет, то идти на TRM

080F

0C

INR C

Увеличить содержимое Рег С на 1

0810

23

TRM

INX H

Указать на следующий адрес слагаемого

0811

05

DCR B

Уменьшить содержимое счетчика слагаемых

0812

C2 0B 08

JNZ CNT

Если не все слагаемые, то идти на CNT

0815

C9

RET

Рисунок 1 – Схема алгоритма подпрограммы сложения

В результате сложения чисел 2,1 и 4, записанных соответственно в 0В00, 0В01и 0В02 получили следующий результат: в регистре С – 00, в регистре А – 07.

3 Программа сложения двух многобайтных чисел, представляет собой модель математического сопроцессора, выполняющего операции с многобайтными числами. Перед выполнением два многобайтных числа должны быть записаны по адресам 0В00-0В02 и 0В04-0В06. В регистр С заносится число байт обоих чисел. Результат –начиная с 0В00-0В03.

Адрес

Машинный код

Метка

Мнемокод

Комментарий

0800

21 00 0B

MAIN

LXI H, 0B00

Запись в Рег H, L адреса младшего байта первого слагаемого

0803

0E 02

MVI C, 03

Записать в Рег С кол-во байт слагаемых

0805

A7

ANA A

Сброс флага СF

0806

11 04 0B

LXI D, 0B04

Запись в Рег D, E адреса младшего байта второго слагаемого

0809

AF

XRA A

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

080A

47

MOV B, A

Очистить Рег B

080B

7E

SUM

MOV A,M

Косвенная загрузка аккумулятора по регистровой паре HL

080C

47

MOV B,A

Пересылка значения аккумулятора в Рег В

080D

1A

LDAX D

Косвенная загрузка аккумулятора по регистровой паре DE

080E

88

ADC B

Сложение с учетом флага переноса

080F

77

MOV M,A

Запись в память

0810

23

INX H

Инкремент адреса байта первого слагаемого

0811

13

INX D

Инкремент адреса байта второго слагаемого

0812

0D

DCR C

Уменьшение числа слагаемых

0813

C2 0B 08

JNZ SUM

Переход, если не 0

0814

CF

RST

Конец

В результат сложения чисел 2A411116 и F4FB0216, записанных соответственно в 0В00-0В02 и 0В04-0В06 получили следующий результат: в 0В00 –0В4 – 002D3D05.

Рисунок 2 – Блок-схема алгоритма программы сложения двух многобайтных чисел.

4 Программа нахождения разности чисел, имеющих одинаковую длину. Входные параметры: регистр С – длина чисел, регистры H, L – адрес младшего байта вычитаемого, регистры D, E – уменьшаемого. Числа записываются в последовательных адресах памяти. Результат заносится на место вычитаемого.

Адрес

Машинный код

Метка

Мнемокод

Комментарий

0800

21

MAIN

LXI H, 0B00

Запись в Рег H, L адреса младшего байта вычитаемого

0801

00

0802

0B

0803

11

LXI D, 0B30

Запись в Рег D, E адреса младшего байта уменьшаемого

0804

30

0805

0B

0806

0E

MVI C,02

Загрузить в Рег С кол-во байт

0807

05

0808

CD

CALL SUBB

Вызов подпрограммы вычитания

0809

0C

080A

08

080B

CF

RST1

080C

A7

SUBB

ANA A

Сброс флага С

080D

7E

LABEL

MOV A,M

Косвенная загрузка аккумулятора по регистровой паре HL

080E

47

MOV B,A

Пересылка значения аккумулятора в Рег В

080F

1A

LDAX D

Косвенная загрузка аккумулятора по регистровой паре DE

0810

98

SBB B

Вычитание с переносом

0811

77

MOV M,A

Запись в память

0812

23

INX H

Следующий байт вычитаемого

0813

13

INX D

Следующий байт уменьшаемого

0814

0D

DCR C

0815

C2

JNZ LABEL

0816

0D

0817

08

0818

C9

RET

Рисунок 3 – Блок-схема алгоритма программы нахождения разности чисел, имеющих одинаковую длину.

Уменьшаемое – 389316 (в 0В30-0В31), вычитаемое – 25D6 (в 0В00-0В01), результат – 12BD (в 0В00-0В01).

Соседние файлы в папке лабораторные работы