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 (СтБ)?
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.