Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

В.В. Демьянов Изучение системы команд микропроцессора серии К580 на учебно-отладочной микроЭВМ

.pdf
Скачиваний:
45
Добавлен:
19.08.2013
Размер:
329.66 Кб
Скачать

20

3) разработанные программы 3, 4 и 5 и результаты их исследования.

6. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. В чем отличие машинного цикла от машинного такта?

2.Сколько машинных циклов и тактов может длиться выполнение одно-, двух- и трехбайтной команды?

3.Какие типы машинных циклов вам известны?

4.Какие группы систем команд МП К580ВМ80 вы знаете?

5.Перечислите и запишите мнемонику команды пересылки и загрузки, команд обработки данных?

6.Какие команды обработки данных не меняют содержание регистра признаков, какие меняют только признаки Z и CY?

7.Какие способы адресации вам известны? В чем их сущность?

Лабораторная работа № 4

ОРГАНИЗАЦИЯ УСЛОВНЫХ ПЕРЕХОДОВ, ПОДПРОГРАММ И СТЕКА, МАСКИРОВАНИЕ ДАННЫХ

ЦЕЛЬ РАБОТЫ: исследование организации условных переходов, особенностей записи и обращения к подпрограммам, методов использования стека при создании программ, программных способов маскирования данных.

1. КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ

Организация условных переходов в микроЭВМ осуществляется с помощью регистра признаков МП. В МП К580ВМ80 используется 5 признаков, каждый из которых устанавливается по определенному правилу в соответствии с выполнением МП последней команды.

Признаки часто используют для вызова подпрограмм и выхода из них.

Во многих случаях при выполнении программ необходимо проверять или изменять (маскировать) состояние одного или нескольких раз-

20

21

рядов числа в аккумуляторе. Это можно осуществить с помощью следующих операций:

1) логического умножения числа в аккумуляторе и маски, которое очищает разряд числа, если в соответствующем разряде маски будет записан 0, и не изменяет его, если в разряде маски записана 1;

2)логического сложения числа в аккумуляторе и маски, которое устанавливает разряд числа в 1, если в таком же разряде маски будет записана 1, и не изменяет его, если в этом разряде записан 0;

3)логического “исключающее ИЛИ” числа в аккумуляторе и маски, которое инвертирует содержание разряда числа, если в соответствующем разряде маски записана 1, и не изменяет его, если в этом разряде записан 0.

Проведение логических операций возможно также с содержимым аккумулятора и регистрами МП. При выполнении всех логических команд задействуются разряды Z, S, Р, АС регистра признаков (в разряд СY записывается 0). Это позволяет проверять состояние любого разряда числа и выполнять условные переходы в программах.

Условные переходы организуются в программах с помощью команд условных переходов. При выполнении этих команд МП проверяет состояние соответствующего разряда регистра признаков. Если при проверке условие не подтверждается, то управление передается следующей по порядку команде, иначе - по адресу, записанному двумя байтами после кода команды условного перехода.

Ниже приведена программа (программа 1) для определения 1 в пятом разряде числа аккумулятора и занесения числа FF в десять ячеек памяти или записи в них 1, если этот разряд числа аккумулятора равен

0.

Программа 1

Адрес

 

Код

Метка

Мнемокод

Комментарий

 

команды

 

 

 

 

 

 

8200

06

0A

 

MVI B, 0A

Занести число 10 в ре-

 

 

 

 

 

гистр B

 

 

 

8202

11

0084

 

LXI D 8400

Занести

адрес

первой

 

 

 

 

 

ячейки памяти

(8400) в

 

 

 

 

 

пару DE

 

 

 

8205

E6 10

 

ANI 10

Проверка

на

1

пятого

 

 

 

 

 

разряда в аккумуляторе

21

22

 

 

 

 

Продолжение программы 1

Адрес

Код

Метка

Мнемокод

Комментарий

 

команды

 

 

 

 

8207

CA OF 82

 

JZ M1

Если в пятом разряде 0,

 

 

 

 

идти к M1

 

820A

3E FF

 

MVI A, FF

Занести FF в аккумулятор

820C

C3 1182

 

JMP M2

Идти к M2

 

820F

3E 01

M1

MVIA, 01

Занести 1 в аккумулятор

8211

12

M2

STAX D

Занести содержимое ак-

 

 

 

 

кумулятора по адресу ре-

 

 

 

 

гистров DE

 

8212

13

 

INХ D

Увеличить на 1 содержи-

 

 

 

 

мое DE

 

8213

05

 

DCR B

Уменьшить на 1 содер-

 

 

 

 

жимое B

 

8214

C2 1182

 

JNZ M2

Если B≠ 0, идти к M2

8217

E7

 

RST4

Окончить

выполнение

 

 

 

 

программы

 

В связи с тем, что память микроЭВМ ограничена, нужно делать программы как можно короче. С этой целью часть программы, которая часто используется, обычно оформляется в виде подпрограммы - последовательности команд, выполнение которых может быть выдано из программы любое количество раз. Процесс передачи управления к подпрограмме называется ее вызовом. Данные и адреса, требуемые для работы подпрограммы, называются входными параметрами. Результаты подпрограммы, передаваемые по окончании ее работы в основную программу, называются выходными параметрами.

Для вызова подпрограммы и возврата из них используют команды

CALL (A2) (A1) и RET. Команда CALL (А2)(А1) загружает в про-

граммный счетчик МП содержимое двух байтов, записанных в последующих адресах памяти после адреса, где записан код команды CALL. Содержимое байта (А2) записывается в младший байт программного счетчика РС, а третий байт (А1) команды - в старший байт РС. При этом МП автоматически сохраняет в стеке адрес основной программы, к которой произойдет обращение после выполнения подпрограммы.

22

23

Стек - специально организованная область ОЗУ, задействованная в микроЭВМ для временного хранения данных или адресов. Число, записанное в стек последним, извлекается из него первым.

Команда RET помещает в программный счетчик РС последнее записанное в данный момент в стеке число. После этого выполнение программы произойдет с этого адреса. Любая подпрограмма должна заканчиваться командой RET.

Автоматическое сохранение и восстановление адреса основной программы при выполнении подпрограмм позволяют сделать подпрограммы вложенными, т.е. осуществить вызов одной подпрограммы из другой. Уровень вложенности для данной микроЭВМ определяется лишь размером стека.

Помимо команд CALL и RET можно обмениваться информацией со стеком с помощью команд PUSH(R) и POP(R). Эти команды являются однобайтными и в них содержится указание на пару регистров МП. Кроме регистров общего назначения в стек можно загрузить содержимое счетчика РС, а также аккумулятора и регистра признаков, к которым обращаются как к регистровой паре PSW.

По команде PUSH(R) содержимое регистровой пары заносится в стек, при этом по адресу SP-1 заносится содержимое старшего регистра, а по адресу SP-2 - содержимое младшего регистра. Содержимое указателя вершины стека SР уменьшается на 2.

По команде РОР(R) содержимое адреса SP заносится в младший регистр, а содержимое адреса SP+1 - в старший регистр пары. Содержимое указателя вершины стека SР увеличивается на 2.

Таким образом, при записи данных в стек он расширяется в сторону младших адресов, а указатель SP указывает на адрес, по которому занесен последний байт.

При разработке программ необходимо первоначально назначать область стека, записывая в SP адрес с помощью команды LXI SP (A2)(A1) или команды SPHL. Все операции со стеком должны быть сбалансированы, т.е. каждая программа должна содержать равное количество команд PUSH(R) и POP(R) и оканчиваться командой RET, в противном случае выполнение команды RET приведет к записи в программный счетчик случайного числа из стека, адрес возврата в основную программу будет потерян, нарушится порядок ее выполнения.

Обычно в начале каждой подпрограммы в стек заносят для сохранения содержание тех регистров, которые будут использованы в под-

23

24

программе. В конце подпрограммы восстанавливают содержание этих регистров в обратной последовательности по отношению к их записи в стек.

Алгоритм простой программы выдержки времени приведен на рис.3.

Общее время выдержки вычисляется по формуле. TD = T1+(T2+T3+T4) N1 + T5,

где N1 - число, первоначально записанное в счетчике.

В качестве счетчика выбран регистр В, в который записывается число N1 из регистра С. Команда NOP нужна для увеличения времени выполнения цикла, а следовательно, и общей задержки. Вместо NOP может быть записана любая последовательность команд, выполнение которых не изменяет содержимое регистров В и С микропроцессора.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим пример использо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вания

подпрограммы

выдержки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

времени для организации мигания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

правого

разряда дисплея

учебной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

микроЭВМ.

Особенность

схемы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

микроЭВМ такова, что на дисплей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тупа к памяти выводится содержа-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ние ячеек с адресами 83F883FF,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

причем

правому

разряду

дисплея

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

соответствует

ячейка

83FF.

При

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

записи в ячейку 83FF нуля все сег-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

менты индикатора будут погаше-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ны, а при записи числа FF - все

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сегменты будут гореть. Ориенти-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ровочная

длительность выдержки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

времени

должна

составить

0,5с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(программа 2). Организуем 10 пе-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

риодов

мигания.

Подпрограмма

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выдержки

времени

имеет

имя

Рис. 3. Алгоритм подпрограммы

DLIT. Счетчики расположены в ре-

 

 

выдержки времени

гистрах В и С.

 

 

 

 

24

25

Программа 2

Адрес

 

Код

Метка

Мнемокод

Комментарий

 

команды

 

 

 

 

 

 

8200

06

0A

 

MVI B, 0A

Занести

количество

перио-

 

 

 

 

 

 

дов =10

 

 

8202

11

FF83

 

LXI 83FF

 

Занести адрес ячейки инди-

 

 

 

 

 

 

кации в регистры DE

8205

3E00

M1

MVI A, 00

Занести 0 в аккумулятор

8207

12

 

 

STAX

 

Занести 0 в ячейку индика-

 

 

 

 

 

 

ции

 

 

8208

CD 2082

 

CALL DLIT

Вызвать

подпрограмму за-

 

 

 

 

 

 

держки

 

 

820B

3E FF

 

MVI A, FF

Занести FF в аккумулятор

820D

12

 

 

STAX D

 

Занести FF в ячейку инди-

 

 

 

 

 

 

кации

 

 

820E

CD 2082

 

CALL DLIT

Вызвать

подпрограмму за-

 

 

 

 

 

 

держки

 

 

8211

05

 

 

DCR B

 

B-1 B

 

 

8212

C2 0582

 

JNZ M1

 

Если B0, идти к M1

 

8215

E7

 

 

RST4

 

Окончание программы

8220

C5

 

DLIT

PUSH B

 

Подпрограмма выдержки

8221

D5

 

PUSH D

 

Сохранение данных в реги-

 

 

 

 

 

 

страх B, C, D, E

 

8222

01

F8C8

 

LXI

B,

Счетчик

B=200,

счетчик

 

 

 

 

C8F8

 

С=248

 

 

8225

15

 

DLI

DCR

 

“пустой оператор”

 

8226

05

 

 

DCR B

 

B-1 B

 

 

8227

C2 2582

 

JNZ DLI

 

Выдержка 10мкс

 

822A

06 C8

 

MVI B, 01

Загрузить счетчик B=200

822C

0D

 

DCR C

 

C-1 C

 

 

822D

C2 2582

 

JNZ DLI

 

Кратные выдержки

 

8230

D1

 

POP D

 

Восстановление содержимо-

 

 

 

 

 

 

го регистровых пар

 

8231

C1

 

 

POP B

 

 

 

 

8232

C9

 

 

RET

 

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

25

26

2. ЗАДАНИЕ ДЛЯ ДОМАШНЕЙ ПОДГОТОВКИ

1. Изучите группу логических команд и команд условной передачи управления.

2.Ознакомьтесь с разрядами регистра признаков МП серии К580 и правилами записи в них единицы.

3.Ознакомьтесь с программой 1.

4.Разработайте программу занесения числа 12 по адресу 8400, если содержимое аккумулятора больше 3, но меньше 10, иначе в ячейку памяти занести нуль.

5.Видоизмените программу 1 так, чтобы микроЭВМ реагировала на нуль в пятом разряде при записанных 1 во всех остальных разрядах.

6.Вычислите временную задержку, реализованную подпрограммой DLIТ в программе 2.

7.Видоизмените программу 2 так, чтобы обеспечить выдержку времени 0,2с, если машинный такт равен 0,5 мкс.

3.ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ

3.1. Исследовать программу 1

Ввести в микроЭВМ программу 1, занести в аккумулятор число и запустить программу. Представить число в двоичном коде и проанализировать его на 1 в пятом разряде. Проанализировать содержание десяти ячеек, начиная с адреса 8400. Проанализировать содержание регистра признаков при пошаговом выполнении программы.

3.2. Исследовать программу 2

Ввести в микроЭВМ программу 2, изменить начальное значение счетчиков (регистров В и С) в командах LXI B (адрес 8222) и MOV B (адрес 822А) на 02 и исследовать выполнение программы, просматривая содержание регистра В, признака Z, указателя стека и вершины стека в пошаговом режиме. Запустить программу на выполнение в режиме прогона, предварительно установив указанные в программе 2 начальные значения счетчиков, замерить время выдержки. Установить такие значения счетчиков, чтобы выдержка времени была равной 0,2 ±

26

27

0,02с. Заменить команду POP на любую однобайтовую команду в программе 2 и проанализировать результаты выполнения программы.

4. РАБОТА НА УЧЕБНОЙ МИКРОЭВМ

Доступ к регистровым парам осуществляется по команде ADDR, X; где X - имя регистровой пары (В, D, H, S - указатель стека, P - вершина стека).

5. СОДЕРЖАНИЕ ОТЧЕТА

Отчет должен содержать:

1) перечень команд передачи управления по условию;

2)полный перечень команд вызова и возврата из подпрограммы;

3)видоизмененные программы 1 и 2 в соответствии с заданием для домашней подготовки;

4)выражение для расчета времени выдержки для программы 2;

5)перечень команд работы со стеком.

6. КОНТРОЛЬНЫЕ ВОПРОСЫ

1. При выполнении каких команд в программе 1 задействуются разряды регистра признаков МП?

2.По каким условиям записывается 1 в каждый из разрядов регистра признаков?

3.Какой разряд регистра признаков соответствует каждому из признаков?

4.Перечислите логические операции, выполняемые МП серии

К580.

5.Сколько машинных тактов нужно для выполнения команд CALL

иRET?

6.В какой последовательности происходит запись и считывание из стека по командам PUSH и POP?

7.С помощью каких команд можно обозначить область памяти, отведенную под стек?

8.С помощью каких команд сохраняется и извлекается содержимое регистровых пар МП при выполнении подпрограммы?

9.Укажите порядок выполнения команды RET.

27

28

10. Укажите область адресов, занимаемую стеком в программе 2. Какие значения принимает при этом указатель стека?

Лабораторная работа №5

ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ

ЦЕЛЬ РАБОТЫ: изучение способов организации и исследование программ выполнения арифметических операций.

1. КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ

В микроЭВМ, построенных на базе МП серии К580, наибольшее распространение получил способ определения чисел с фиксированной запятой, т.к. в этом МП отсутствуют специальные команды для работы с числами с плавающей запятой. Двоичное же восьмиразрядное число можно представить как двоичное число со знаком, имеющее значение от -128 до +127. При этом отрицательные числа представлены в дополнительном коде, а старший разряд числа используется как знаковый.

Число с фиксированной запятой можно представить двоичным числом без знака, имеющим значения от 0 до 255.

Для МП серии К580 можно представить числа без знака и в виде двоично - десятичного числа, при котором каждый байт рассматривается как два полубайта - две тетрады, каждая из которых кодирует десятичную цифру. Такое представление позволяет занести в один байт числа от 0 до 99.

Проведение арифметических операций сложения, вычитания, умножения и деления рассмотрены на примерах соответствующих программ.

Программа сложения массивов однобайтных чисел с получением двухбайтного результата MAIN - программа 1. Слагаемые должны быть расположены в последовательных адресах памяти. Входными параметрами подпрограммы ADDB являются адрес первого слагаемого, записанный в регистровой паре НL, и число слагаемых, записанное в регистре В. Выходным параметром программы MAIN является сумма, старший байт которой записан в регистре С, а младший - в аккумуляторе А. Особенность алгоритма сложения в данной программе состоит в том, что после прибавления каждого элемента массива определяется

28

29

переполнение аккумулятора (признак СY=1), и если это имеет место, то содержимое регистра С увеличивается на 1.

МикроЭВМ может проводить арифметические операции с числами с двойной или большей длиной машинного слова. Так как МП серии К580 имеет восьмиразрядное арифметическо-логическое устройство (АЛУ), то операции с числами должны производиться по байтам, начиная с младших. При этом целесообразно использовать команды ADC для сложения и SBB для вычитания, которые учитывают значение признака переноса (займа) СY.

Программа нахождения разности двух чисел, имеющих одинаковую длину, - программа 2. Входные параметры: регистр С - длина чисел (в байтах), регистровые пары Н - адрес младшего байта вычитаемого, D - адрес младшего байта уменьшаемого. Результат заносится в область памяти, отведенную под вычитаемое. В том случае, если уменьшаемое меньше вычитаемого, по адресу 8000 заносится 1.

Программа 1

Адрес

Код

Метка

Мнемокод

Комментарий

 

команды

 

 

 

 

8200

21 0084

MAIN

LXI H, 8400

Записать в

регистры HL

 

 

 

 

адрес первого слагаемого

8203

06 05

 

MVI B, 05

Загрузить в B количество

 

 

 

 

слагаемых

 

8205

CD 0982

 

CALL

Вызов программы сложе-

 

 

 

ADDB

ния

 

8208

E7

 

RST4

Прервать

выполнение

 

 

 

 

программы

8209

AF

ADD

XRA A

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

 

 

B

 

 

 

820A

4F

 

MOV C,A

Очистить

счетчик пере-

 

 

 

 

носов

 

820B

86

CNT

ADD M

Прибавить к содержимо-

 

 

 

 

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

 

 

 

 

массива слагаемых

820C

D2 1082

 

JNC TRM

Если признак C=0, идти к

 

 

 

 

TRM

 

29

Соседние файлы в предмете Автоматизация технологических процессов и производств