Главная страница

ПРАКТИКУМ ПО ОМПТ. Практикум по основам микропроцессорной техники Саранск 2003 удк 004. 384 378. 146147


Скачать 0.74 Mb.
НазваниеПрактикум по основам микропроцессорной техники Саранск 2003 удк 004. 384 378. 146147
АнкорПРАКТИКУМ ПО ОМПТ
Дата29.05.2022
Размер0.74 Mb.
Формат файлаdoc
Имя файлаПРАКТИКУМ ПО ОМПТ.doc
ТипПрактикум
#555855
страница16 из 18
1   ...   10   11   12   13   14   15   16   17   18

4.7. Рекомендации по построению программы к лабораторной работе № 3


Структура программы, совмещающей функции двух ранее разработанных программ с выводом значений X, Y и Z на индикацию, представлена на рис. 12.



Рис. 12. Структура программы к лабораторной работе № 3

Для реализации однотипных действий по выводу байта данных на индикацию здесь предусмотрено использование подпрограммы DIGIT, текст которой на языке ассемблера приведен ниже. Подпрограмма имеет два входа – DIGIT1 для вывода в виде шестнадцатеричного символа старшей тетрады байта, помещенного в аккумулятор, и DIGIT2 – для вывода младшей тетрады байта. Соответствующий значению тетрады адрес таблицы семисегментных кодов формируется в регистровой паре HL. Адрес нужной ячейки буфера индикации перед обращением к подпрограмме должен быть помещен в регистровую пару BC. Длина подпрограммы – 14 байт.

DIGIT1: RRC ; перемещение

RRC ; старшей тетрады

RRC ; в байте на место

RRC ; младшей тетрады

DIGIT2: ANI 0FH ; обнуление старшей тетрады

ADI B3H ; получение младшего байта адреса

MOV L, A ; таблицы семисегментных кодов

MVI H, 02H ; загрузка старшего байта адреса

MOV A, M ; загрузка кода символа из таблицы

STAX B ; вывод символа на индикатор

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

Например, для вывода с помощью подпрограммы DIGIT на индикаторы 3 и 4 значения X, считываемого из ячейки памяти 8300H, может быть использован следующий фрагмент программы.

LXI B, 83FAH ; загрузка адреса индикатора 3

LDA 8300H ; загрузка числа X

MOV D, A ; дублирование X в регистре D

CALL DIGIT1 ; вывод старшей цифры X

INX B ; получение адреса индикатора 4

MOV A, D ; восстановление X в аккумуляторе

CALL DIGIT2 ; вывод младшей цифры X

Аналогичным образом могут быть выведены на индикацию значения Y и Z. Общая длина программы к лабораторной работе № 3 получится при этом около 130 - 140 байт (28 байт – пример программы 1, 51 байт – пример программы 2, 14 байт – подпрограмма DIGIT плюс дополнительные команды по выводу X, Y и Z на индикацию).

4.8. Пример программы к лабораторной работе №4


Ниже в качестве примера приведена подпрограмма умножения двух однобайтных целых чисел без знака MUL88. Она реализует алгоритм умножения “младшими разрядами вперед со сдвигом частичной суммы”. Множимое помещается в регистр D, множитель в регистр С, произведение – двухбайтное число - образуется в регистрах В и С. При выполнении умножения последовательно анализируются биты множителя, начиная с младшего, помещаемые по команде RAR (циклический сдвиг вправо через перенос) в разряд переноса CY. Если очередной бит множителя ненулевой, то множимое добавляется к старшему байту частичной суммы, находящемуся в регистре B. Далее выполняется сдвиг этого байта вправо (вторая команда RAR), при этом его младший бит вытесняется в разряд переноса CY. При сдвиге в следующем цикле содержимого регистра C значение CY заносится в его старший бит, а в CY помещается очередной бит множителя. Таким образом в регистре C множитель постепенно вытесняется младшим байтом частичной суммы, которая после выполнения восьми циклов дает результат умножения. Длина описанной программы - 19 байт.

MUL88: MVI B, 00H ; сброс старшего байта произведения

MVI E, 08H ; установка числа бит

NXBIT: MOV A, C ; множитель занести в аккумулятор

RAR ; очередной бит во флажке “СY”

MOV C, A ; возвращение множителя

DCR E ; декремент счетчика бит

RM ; умножение закончено?

MOV A, B ; старший байт произведения

JNC NOADD ; бит множителя равен нулю

ADD D ; суммирование множимого

NOADD: RAR ; сдвиг частичной суммы

MOV B, A ; возвращение старшего байта

JMP NXBIT ; умножение на следующий бит

5. ЗАДАНИЯ ДЛЯ КОНТРОЛЬНЫХ РАБОТ

5.1. Контрольная работа №1. Системы счисления и коды


Даны два десятичных числа A и B (варианты исходных данных представлены в табл. 13). Представить, как будут выглядеть эти числа в двоичной системе счисления в дополнительном коде в 8-битном микропроцессоре. Выполнить над полученными числами в двоичной системе счисления следующие арифметические, логические и сдвиговые операции:

а) A + B; б) A - B; в) A * 3;

г) ИЛИ; д) И; е) ИСКЛЮЧАЮЩЕЕ ИЛИ;

ж) логический сдвиг A влево;

з) циклический сдвиг B вправо.

Представить полученные результаты в десятичной системе счисления. Представить исходные числа и полученные результаты в шестнадцатеричной системе счисления. Представить число A в двоично-десятичном коде.
Таблица 13. Варианты исходных данных к контрольной работе №1

Вар.

A

B

Вар.

A

B

1

17

98

16

41

73

2

23

84

17

30

77

3

38

70

18

22

86

4

42

81

19

14

96

5

34

93

20

27

91

6

29

89

21

36

88

7

18

76

22

20

72

8

26

87

23

15

78

9

31

90

24

25

83

10

40

82

25

33

92

11

35

79

26

24

95

12

21

85

27

34

71

13

19

97

28

13

94

14

28

99

29

37

75

15

39

80

30

16

74


Все полученные в ходе выполнения контрольной работы значения (в десятичном, двоичном и шестнадцатеричном виде, а число A, кроме того, и в двоично-десятичном коде), а также действия над операндами в двоичной системе счисления свести в таблицу (табл. 14).

Операцию A – B можно выполнить двумя способами – по правилам операции вычитания или путем сложения с дополнением к вычитаемому, как это реально делает микропроцессор. Операцию А * 3 необходимо выполнить именно по правилам операции умножения, а не путем тройного сложения. Все полученные результаты в десятичной системе счисления необходимо интерпретировать как числа со знаком.
Таблица 14. Форма для выполнения контрольной работы №1

Значения

Десятичное

Двоичное

16-ричное

Дв.-дес.

A













B



В этом столбце








A + B




необходимо







A - B




показать, как







A * 3




микропроцессор







A  B




выполняет







A  B




действия над







A  B




двоичными







лог. cдвиг A ←




операндами







цикл. сдвиг B →















1   ...   10   11   12   13   14   15   16   17   18


написать администратору сайта