Однокристальные микроконтроллеры семейства MCS-51. Арифметические команды. Операции сложения и вычитания с 8-разрядными операндами, страница 7

3.8. Задания для самостоятельной работы

1.  Разработайте подпрограмму сложения трехбайтных целых двоичных чисел. Первое число находится в памяти данных в ячейках 20H (младший байт - МлБ), 21H (средний байт – СрБ) и 22H (старший байт – СтБ). Второе число находится в регистрах R3 (МлБ), R4 (СрБ) и R5 (СтБ). Результат сложения поместите в ячейки ПД с адресами 30H (МлБ), 31H (СрБ), 32H (СтБ). Разработайте 2 варианта программы:

А) с использование прямой адресации ячеек ПД;

Б) с использованием косвенной адресации ячеек ПД.

Программы разместите в файлах с именами, например, sum_1.asm и sum_2.asm. Получите файлы с расширением .obj и .hex. Проверьте работу программ с помощью симулятора. Результаты работы программ занесите в таблицы по форме табл. 4.3. Проверьте правильность работы программ «вручную» или с помощью калькулятора.

2.  Разработайте подпрограмму вычитания трехбайтных целых двоичных чисел. Первое число (уменьшаемое) находится в регистрах R5 (МлБ), R6 (СрБ) и R7 (СтБ). Второе число (вычитаемое) находится в ячейках памяти данных с адресами 38H (МлБ), 39H (СрБ) и 3AH (СтБ). Результат вычитания поместите в регистры DPTR (СрБ и МлБ) и B (СтБ). Разработайте 2 варианта программы:

А) с использованием прямой адресации ячеек ПД;

Б) с использованием косвенной адресации ячеек ПД.

Программы разместите в файлах с именами, например, sub_1.asm и sub_2.asm. Получите файлы с расширением .obj и .hex. Проверьте работу программ с помощью симулятора. Результаты работы программ занесите в таблицы по форме табл. 4.5. Проверьте правильность работы программ «вручную» или с помощью калькулятора.

3.  Разработайте подпрограмму умножения двухбайтного целого числа на однобайтное с помощью команды  MUL  AB. Двухбайтное число располагается в памяти данных в ячейках 30H (МлБ) и 31H (СтБ), а однобайтное находится в регистре R2. Результат (трехбайтное число) разместите следующим образом: младший и средний байты – в регистре DPTR, а старший байт – в регистре R7.

Для разработки программы используйте алгоритм умножения «столбиком» чисел в десятичной системе, например:

5 8        - множимое

*    7        - множитель

--------------------------------------   

5 6        - 1-е частичное произведение

+                                                                                                                         

3 5           - 2-е частичное произведение

----------------------------------------------------4 0 6        - результат

Подпрограмму с именем  MUL разместите в файле mul.asm. Получите файлы mul.obj и mul.hex. Исследуйте работу подпрограммы при различных значениях исходных данных (входных параметрах). Результаты разместите в табл. 4.9.

Таблица  4.9

Исходные значения

Получено

Число  1

Число  2

Практически

Теоретически

FFFFH

FFH

FEFF01H

F000H

0FH

0E1000H

5555H

AAH

38AA72H

Теоретические значения результатов умножения получены с помощью калькулятора.

                                                           4.Содержание отчета

Наименование и цель работы. Краткое описание арифметических команд МК51. Исследуемые программы и заполненные таблицы. Разработанные программы из заданий для самостоятельной работы с результатами их проверки.

                                                           Контрольные вопросы

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

2.  В каких случаях используется команда сложения с учетом переноса?

3.  Как выполняется команда вычитания в МК51?

4.  При выполнении вычитания содержимого регистра R3 из регистра R7 установился флаг C. О чем это говорит?

5.  Для каких целей используется команда десятичной коррекции аккумулятора?

6.  Как можно выполнить декремент регистра DPTR?

7.  Как можно выполнить инкремент двухбайтного числа, расположенного в ячейках памяти данных с адресами 30H (МлБ) и 31H (СтБ)?