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

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 15.06.2024

Просмотров: 71

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

31

 

 

 

 

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

Адрес

Код

Метка

Мнемокод

Комментарий

 

команды

 

 

 

 

820D

D2 1582

 

JNC M1

Если нет займа (результат

 

 

 

 

положительный), идти к

 

 

 

 

M1

 

8210

AF

 

XRA

 

 

8211

3C

 

INR A

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

8212

32 00 80

 

STA 8000

Занести 1 по адресу 8200

8215

E7

 

RST4

Прервать

выполнение

 

 

 

 

программы

 

Существует несколько алгоритмов умножения чисел. Наиболее распространенный из них - алгоритм умножения в столбец, например:

При вычислении результата по этому алгоритму необходимо осуществить многократное суммирование со сдвигом влево множимого при одновременной проверке содержимого разрядов множителя, начиная со стороны его младшего разряда. При этом, если в очередном разряде множителя записана 1, то множимое прибавляется к сумме и сдвигается влево на 1 разряд, а если в разряде записан 0, то произойдет только сдвиг множимого. Сдвиг множимого влево можно заменить сдвигом суммы вправо. По этому

алгоритму работает программа умножения двух однобайтных чисел с получением двухбайтного результата (программа 3). В регистре D содержится множимое, в регистре Е - множитель. Результат записывается в регистры В и С.

Программа 3

Адрес

Код

Метка

Мнемокод

Комментарий

 

команды

 

 

 

8200

01 0000

MPL

LXI B, 0000

Очистить регистры B, C

8203

3E 01

 

MVI A,01

Загрузить в аккумулятор

 

 

 

 

указатель разряда

8205

A7

 

ANA A

Очистить признак C

31


32

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

Адрес

Код

Метка

Мнемокод

Комментарий

 

команды

 

 

 

 

8206

F5

MPL1

PUSH PSW

Сохранить указатель раз-

 

 

 

 

ряда в стеке

8207

A3

 

ANA E

Проверить

содержимое

 

 

 

 

очередного разряда мно-

 

 

 

 

жителя

 

8208

78

 

MOV A,B

Загрузить

в аккумулятор

 

 

 

 

старший байт суммы

8209

CA 0D 82

 

JZ MPL2

Если в очередном поряд-

 

 

 

 

ке записан 0, идти к

 

 

 

 

MPL2

 

820C

82

 

ADD D

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

 

 

 

 

сумме

 

820D

1F

MPL2

RAR

Сдвинуть

сумму вправо

 

 

 

 

(младший байтC)

820E

47

 

MOV B,A

Сохранить

содержимое

 

 

 

 

аккумулятора в регистре

 

 

 

 

B

 

820F

79

 

MOV A,C

Загрузить

в аккумулятор

 

 

 

 

младший байт суммы

8210

1F

 

RAR

Сдвинуть число в акку-

 

 

 

 

муляторе вправо (Cв

 

 

 

 

старший байт)

8211

4F

 

MOV C,A

Сохранить

содержимое

 

 

 

 

аккумулятора в регистре

 

 

 

 

C

 

8212

F1

 

POP PSW

Получить из стека указа-

 

 

 

 

тель разряда

8213

17

 

RAL

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

 

 

 

 

разряд

 

8214

D2 0682

 

JNC MPL1

Если разряд не послед-

 

 

 

 

ний, идти к MPL1

8217

E7

 

RST4

Прервать

выполнение

 

 

 

 

программы

32


33

Деление двоичных чисел основывается на последовательном вычитании делителя из делимого и остатков от деления. Использование в двоичном коде только двух цифр (0 и 1) исключает в каждом цикле деления необходимость определения числа делителей, содержащихся в текущем значении делимого или остатка (достаточно только сравнить их). Основанная на этом алгоритме программа 1 производит деление однобайтных чисел. Делимое содержится в регистре Е, делитель - в регистре D, частное - в регистре Н, остаток - в регистре С.

Для вычисления специальных функций (SIN X, COS X, LN X и т.п.) применяются алгоритмы, основанные на разложении этих функций в соответствующие ряды. Это занимает длительное время и обеспечивает невысокую точность, т.к. у МП серии К580 сравнительно небольшая длина машинного слова и невысокая производительность. Поэтому, когда ставятся жесткие требования по точности и быстродействию, функции задаются в виде таблиц. Однако такое представление требует значительно большего объема памяти, чем при их вычислении.

Программа 4

Адрес

Код

Метка

Мнемокод

Комментарий

 

команды

 

 

 

8200

21 0800

DIVB

LXI B, 0008

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

 

 

 

 

в регистр L и очистить

 

 

 

 

регистр H

8203

0E 00

 

MVI C,00

Очистить регистр проме-

 

 

 

 

жуточного делимого

8205

7B

MXT

MOV A,E

Загрузить делимое в ак-

 

 

B

 

кумулятор

8206

17

 

RAL

Сдвинуть старший байт в

 

 

 

 

признак C

8207

5F

 

MOV E,A

Возвратить делимое в ре-

 

 

 

 

гистр E

8208

79

 

MOV A,C

Загрузить в аккумулятор

 

 

 

 

промежуточное делимое

 

 

 

 

из регистра C

8209

17

 

RAL

Сдвинуть признак C в

 

 

 

 

младший байт

33


34

 

 

 

 

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

Адрес

Код

Метка

Мнемокод

Комментарий

 

команды

 

 

 

 

820A

92

 

SUB D

Вычесть из модифициро-

 

 

 

 

ванного промежуточного

 

 

 

 

делимого делитель

820B

D2 0F82

 

JNC N0ADD

Если признак C=1, вос-

 

 

 

 

становить

содержимое

 

 

 

 

аккумулятора

820E

82

 

ADD D

 

 

820F

4F

N0AD

MOV C,A

Возвратить

промежуточ-

 

 

D

 

ные данные в регистр C

8210

3F

 

CMC

Инвертировать признак C

8211

7C

 

MOV A,H

Загрузить частное в ак-

 

 

 

 

кумулятор

 

8212

17

 

RAL

Сдвинуть

признак C в

 

 

 

 

младший разряд частного

8213

67

 

MOV H,A

Сохранить частное в ре-

 

 

 

 

гистре H

 

8214

2D

 

DCR L

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

 

 

 

 

жимое счетчика битов L

8215

C2 0582

 

JNZ MXTB

Если проверены 8 разря-

 

 

 

 

дов, то останов, иначе

 

 

 

 

идти к MXTB

8218

E7

 

RST4

Прервать

выполнение

 

 

 

 

программы

 

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

1. Изучите группу арифметических команд МП серии К580.

2.Изучите программы 1-4, приведенные выше. Рассмотрите алгоритмы их работы. Рассмотрите результат выполнения каждой программы на конкретных числовых примерах.

3.Произведите оценку времени выполнения программ умножения

иделения восьмиразрядных двоичных чисел.

34


35

4.Составьте программы исследования результатов перемножения и деления чисел, приняв программы 3 и 4 в качестве подпрограмм.

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

сполучением результата в двоично-десятичном коде (результат должен быть записан по адресам 8000 и 8001).

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

3.1. Исследовать программу сложения однобайтных чисел с получением двухбайтного результата.

Ввести в микроЭВМ программу 1. Записать в микроЭВМ последовательность из пяти чисел, начиная с адреса 8400. Запустить программу на счет и проверить ее выполнение по данным, записанным в регистре С и аккумуляторе МП. Изменить программу 1 так, чтобы результат ее выполнения записывался по адресам 8000 и 8001. Изменить в программе количество слагаемых и выполнить счет заново.

3.2.Исследовать программу вычитания двух чисел, имеющих одинаковую длину.

Ввести программу 2 в микроЭВМ. Занести в регистровые пары DЕ

иHL начальные адреса младших байтов уменьшаемого и вычитаемого (используйте область памяти 8400-87FF), а в регистр С - длину числа в байтах (для первого случая длина равна 1). Записать по адресам, указанным в регистровых парах DЕ и HL, уменьшаемое и вычитаемое (выбрать уменьшаемое больше, чем вычитаемое). Запустить программу на счет и исследовать результат ее выполнения по числу, записанному по адресу, где находится вычитаемое, и по адресу 8000. Изменить числа, записанные по адресам, занесенным в регистровые пары DЕ и HL так, чтобы вычитаемое было больше уменьшаемого, запустить программу на счет и проанализировать результат. Исследовать в аналогичной последовательности результаты вычитания двухбайтных чисел.

3.3.Исследовать программу умножения двух восьмиразрядных чисел с получением шестнадцатиразрядного результата.

Ввести в микроЭВМ программу умножения, разработанную самостоятельно на основе программы 3. Осуществить пуск программы и проверить результат умножения двух чисел по числу, записанному в регистрах В, С.

35

36

3.4. Исследовать программу деления двух восьмиразрядных чисел. Ввести в микроЭВМ программу 4. Занести в регистры Е и D делимое и делитель. Запустить программу и проверить результат деления по

содержимому регистров H и C.

3.5.Исследовать программу сложения двух восьмиразрядных чисел

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

Ввести в микроЭВМ программу, разработанную при выполнении п.5 задания для домашней подготовки. Проверить результаты выполнения программы при сложении следующих чисел 33+25; 38+25; 98+25. Заменить в разработанной программе операцию сложения на операцию вычитания и проверить, возможно ли осуществить десятичную коррекцию числа аккумулятора после команды вычитания.

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

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

1) перечень арифметических команд МП серии К580;

2)алгоритмы сложения, умножения и деления;

3)разработанные на основании п.4 и 5 задания для домашней подготовки программы;

4)расчет времени выполнения программ умножения и деления восьмиразрядных чисел.

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

1. Какие команды арифметических операций может выполнять МП К580?

2.Сформулируйте правило выполнения МП команды DAA.

3.После каких команд можно осуществлять десятичную коррекцию числа аккумулятора (выполнять команду DAA)?

4.Как оценить максимальное время выполнения подпрограммы умножения двух чисел (программа 3)?

5.Можно ли непосредственно исследовать перемножения двух чисел по подпрограмме 3?

6.На чем основаны алгоритмы работы подпрограмм умножения и деления чисел?

36