Цифровые устройства и микропроцессорные системы. Задачи и упражнения: Учебное пособие (Представление чисел и арифметические операции в цифровых устройствах. Микропроцессорные устройства и системы на базе МП КР580ВМ80), страница 56

б) (А) = 0А, t = 123,5 мкс;

в) (А) = FF, t = 2,812 мс;

г) (Порт 05) = 77, t = 74 мкс;

д) Программа содержит два цикла: внешний (ячейки 0107…0110) и внутренний (ячейки 0109…010С); первый выполняется 64(16) = 100 раз, второй FA(16) = 250 раз;

(Порт 05) = 01; t = 0,5(10 + 7 + (7 + (5 + 10)×250 + 5 + 10)×100 + 10) = 0,5×377227 » 0,1886 с.

Р6.33.  LDA

C1

FD

MOV B, A

LDA

C2

FD

ADD B

STA

C1

FD

Р6.34.  0000    LDA

01    01

02    1F

03    MOV B, A

04    LDA

05    02

06    1F

07    MOV C, A

08    SUB B

09    JP

0A   10

0B   00

0C   MOV A, B

0D   OUT

0E    FF

0F    HLT

10    MOV A, C

11    OUT

12    FF

13    HLT

Р6.35. а) Все операнды переводим в 16-ричную систему счисления, для умножения и деления на 2, 4, 8 используем операции сдвига:

а)         MVI A

25

MOV B, A

MVI A

1E

RAR

MOV C, A

MOV A, B

SUB C

RAR

ADI

0B

HLT

Р6.36.

а)         IN

05

ADD A

INR A

STA

33

22

HLT

д)         0000    IN

01    08

02    MOV B, A

03    IN

04    05

05    MOV C, A

06    SUI

07    08

08    JP

09    11

0A   00

0B   MOV A, C

0C   ADD B

0D   STA

0E    33

0F    22

10    HLT

11    MOV A, C

12    SUB B

13    STA

14    33

15    22

16    HLT

Р6.37. С помощью команды CALL осуществляется вызов подпрограммы вычисления величины p = log2x; во время выполнения подпрограммы адрес возврата 0007 запоминается в стеке; подпрограмма заканчивается командой RET, после которой выполняется очередная команда программы INR A: (порт 06) = 1 + log2(2a – 1).

Р6.38.  0000    IN

01    05

02    MOV B, A

03    CALL

04    00

05    11

06    INR A

07    MOV C, A

08    MOV A, B

09    ADD A

0A   CALL

0B   00

0C   11

0D   ADD C

0E    OUT

0F    06

10    HLT

Вызов подпрограммы p = cosx осуществляется с помощью команды CALL дважды.

Р6.39.  0000    IN

01    11

02    MOV D, A

03    MOV E, A

04    MOV C, A

05    MVI B

06    00

07    CALL

08    00

09    20

0A   ADD E

0B   MOV C, A

0C   INR B

0D   MOV A, B

0E    SUI

0F    05

10    JM

11    07

12    00

13    MOV A, C

14    STA

15    00

16    30

17    HLT

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

Промежуточные результаты суммирования хранятся в регистре С. Счет циклов проводится в регистре В.

Р6.40. а) используем для загрузки константы 100 = 64(16) регистр В.

MVI    B, 64H;

MET:   DCR    B         ;

JNZ     MET    ;

б) Поскольку константу 1000 = 3Е8(16) нельзя разместить в одном регистре, используем регистровую пару ВС. Один из вариантов программы следующий:

LXI      B,03E8H         ;Загрузка регистровой пары ВС константой

MT:     DCX    B                     ;Декремент регистровой пары ВС

MOV   A,C                  ;Пересылка (А)¬(С)

ORA    B                     ;Логическое сложение (А)¬(А)Ú(B)

JNZ     MT                  ;Условный переход по ненулевому результату

При выполнении операции DCX признаки результата не формируются, поэтому для проверки содержимого регистровой пары ВС приходится предварительно выполнять логическое сложение содержимого В и С. Очевидно, что (В)Ú(С) = 0 только при (В) = (С) = 0.

Р6.41. Вычисление произведения двух 8-разрядных положительных двоичных чисел П = M×N с помощью МП КР580, в системе команд которого команды умножения нет, может быть организовано в виде циклической процедуры, каждый цикл которой содержит команды проверки очередного разряда множителя суммирования и сдвига. Для вычисления произведения П к накапливающейся сумме частичных произведений Пi (i = 8,…, 1) добавляется множимое М, если очередной разряд множителя Ni = 1, после чего осуществляется сдвиг; при Ni = 0 для единообразия циклов к Пiприбавляется 0 и также осуществляется сдвиг. Число циклов определяется числом разрядов множителя N, т.е. равно 8. Анализ Ni можно начинать со старших разрядов (i = 8) и сдвигать накапливающуюся сумму влево, либо с младших разрядов (i = 1) и сдвигать ее вправо. Схема алгоритма, соответствующая первому варианту, представлена на рис. Р6.1. Отметим, что поскольку произведение двух 8-разрядных двоичных чисел сожержит 16 разрядов, для хранения накапливающейся суммы частичных произведений Пi и результата П требуется пара РОНов МП.