5.5. Как можно доработать программу из Примера 5.3, чтобы результат ее выполнения представлял собой однобайтное значение в формате TENS: UNITS, сохраняемое в регистре h’21’? Такое представление числа называется
5.6. Доработайте программу из Примера 5.3 для получения трехразрядного BCD-числа, удалив ограничение на максимальный размер исходного десятичного числа. Результат должен сохраняться в регистрах h’21’, h’22’ и h’23’ (сотни, десятки и единицы соответственно).
5.7. В качестве фрагмента процедуры тестирования памяти данных в каждый регистр диапазона h’20’…h’4F’ необходимо записать значение Ь’01010101’ (h’55’). Используя в качестве заготовки Программу 5.2, напишите эту процедуру.
5.8. Доработайте программу из Примера 5.1 таким образом, чтобы она могла декрементировать 32-битное число, расположенное в регистрах h’26’…h’29’ (первым расположен старший байт).
5.9. Данные из массива, расположенного в памяти данных по адресам h’30’…h’4F’, необходимо передать побайтно в удаленный компьютер по сети Интернет. Чтобы приемник мог проверить корректность принимаемых данных, предлагается добавлять один байт, представляющий собой дополнительный код 8-битной суммы всех переданных байтов данных. Если сложить все принятые байты данных и эту контрольную сумму, то при отсутствии ошибок сумма должна быть равна нулю. Напишите процедуру, просматривающую весь массив данных и помещающую эту контрольную сумму в регистр h’20’.
5.10. Взяв за основу программу регистратора из Примера 5.6, напишите программу, вычисляющую максимальную суточную температуру. При выходе из процедуры это значение должно находиться в регистре h’48’.
5.11. В Примере 5.6 среднее значение массива отсчетов температуры вычисляется путем суммирования всех байтов и последовательного вычитания из суммы числа 24 до тех пор, пока частное не станет меньше нуля. Доработайте программу таким образом, чтобы среднее значение округлялось до ближайшего целого, т. е. при остатке, большем 12, округление производилось бы в большую сторону.
5.12. Напишите процедуру умножения однобайтного числа, находящегося в регистре h’23’, на 13. Двухбайтное произведение следует поместить в регистры h’23’:h’24’. Распределение памяти данных для этой процедуры выглядит следующим образом:
(регистр h’21’ служит для расширения однобайтного множимого до 16 байт).
Обратите внимание, что для выполнения задачи потребуется три операции сдвига и сложения.
5.13. Одним из простейших методов шифрования данных является изменение порядка битов. Например, Ь’10111100’ — > Ь’00111101’. Напишите процедуру, выполняющую эту операцию над числом, находящимся в регистре h’20’. Зашифрованное значение должно остаться в рабочем регистре. Вы можете использовать регистр h’21’ в качестве временной переменной и W — в качестве счетчика цикла. Подсказка: используйте 8 раз команду сдвига влево и вправо.
5.14. Простейший цифровой фильтр нижних частот может быть реализован с использованием алгоритма:
где Sn — n-й отсчет 8-битного АЦП, подключенного к порту В.
Напишите процедуру, реализующую такой фильтр, при условии, что три отсчета
5.15. Некое 3-байтное число размещено в памяти данных следующим образом:
5.16. В телевизионном шоу имеется 8 участников, разделенных на две команды: А и В. У каждого участника есть кнопка, формирующая при нажатии сигнал лог. 1. Состояние всех этих кнопок можно одновременно считать с порта В микроконтроллера. Кнопки команды А подключены к младшим четырем линиям порта.
Напишите процедуру, которая будет:
• Определять момент ответа на вопрос (нажата любая из кнопок).
• Определять ответившую команду (если команда А, то регистр h’20’ обнуляется, если команда В, то в него записывается ненулевое значение).
• Определять, кто из членов команды нажал на кнопку (номер участника помещается в регистр h’21’).
5.17.