Методика преобразования из двоичной системы счисления была описана в примере выполнения задания №1. Поэтому приведем только результаты преобразований.
В шестнадцатеричной системе:
123H XOR 321O OR 25D AND 1001110100B = 0470H
В восьмеричной:
123H XOR 321O OR 25D AND 1001110100B = 2160O
В десятичной:
123H XOR 321O OR 25D AND 1001110100B = 1136D
3. Формирование устанавливающей маски.
Требуется установить следующие биты – 1, 6, 7, 12, 14, 15. Сформируем устанавливающую маску. Для этого запишем двоичное число, в котором эти биты равны 1, а все остальные 0.
Номера битов
Биты для установки
Маска
Итак, устанавливающая маска для указанных битов следующая:
1101 0000 1100 0010B = D0C2H = 160302O
Произведем наложение устанавливающей маски на результат, полученный в п. 1. Для этого требуется выполнить логическую операцию ИЛИ (OR) числа с маской.
OR
Число
Маска
результат
В результате наложения маски биты с номерами 1, 7, 12, 14, 15 установлены, остальные биты не изменили своего состояния.
4. Формирование сбрасывающей маски.
Требуется сбросить следующие биты – 2, 4, 6, 10, 12, 13. Сформируем сбрасывающую маску. Для этого запишем двоичное число, в котором эти биты равны 0, а все остальные 1.
Номера битов
Биты для сброса
Маска
Итак, устанавливающая маска для указанных битов следующая:
1100 1111 1010 1011B = CFABH = 147653O
Произведем наложение устанавливающей маски на результат, полученный в п. 1. Для этого требуется выполнить логическую операцию И (AND) числа с маской.
AND
Число
Маска
результат
В результате наложения маски были сброшены биты с номерами 4, 6, остальные не изменили состояние
5. Формирование инвертирущей маски.
Требуется инвертировать следующие биты – 0, 4, 8, 9, 12, 15. Сформируем инвертирующую маску. Для этого запишем двоичное число, в котором эти биты равны 1, а все остальные 0.
Номера битов
Биты для сброса
Маска
Итак, устанавливающая маска для указанных битов следующая:
1001 0011 0001 0001B = 4311H = 111421O
Произведем наложение инвертирующей маски на результат, полученный в п. 1. Для этого требуется выполнить логическую операцию Исключающее ИЛИ (XOR) числа с маской.
XOR
Число
Маска
результат
В результате наложения маски биты с номерами 0, 4, 8, 9, 12, 15 инвертированы, остальные биты не изменили своего состояния.
Задание №3. Программирование микроконтроллеров. Работа с массивами.
Разработать программы, выполняющие следующие задачи (для каждой задачи, разрабатывается отдельная программа):
1. Имеется массив элементов размером байт. Массив начинается с адреса ADDR1. Количество элементов массива N. Требуется заполнить элементы массива в соответствии со способом, указанным в варианте задания.
2. Имеется два массива элементов размером байт. Количество элементов для обоих массивов N. Первый массив находится с адреса ADDR1, второй – с адреса ADDR2. Требуется переслать элементы первого массива во второй массив.
3. Требуется произвести сложение всех элементов массива, начинающегося с адреса ADDR2. Сложение производит с удвоенной точностью (два байта).
Значения ADDR1, ADDR2, N и способ заполнения массива выбирается из таблицы 3.1 для требуемого варианта.
Требования по оформлению программ
- привести алгоритм (блок-схему) для каждой, разработанной программы
- текст программы с подробными комментариями.
Таблица 3.1. Варианты для задания №3
Номер варианта
ADDR1
Адрес первого массива
ADDR2
Адрес второго массива
N количество элементов массива
Действие при заполнении массива
20H
30H
Начать с числа 000H, увеличивать число на 1 для каждой новой ячейки
28H
30H
30H
40H
38H
40H
40H
50H
20H
30H
Начать с числа 0FFH, уменьшать число на 1 для каждой новой ячейки
28H
30H
30H
40H
38H
40H
40H
50H
20H
30H
Начать с числа 000H, увеличивать число на 2 для каждой новой ячейки
28H
30H
30H
40H
38H
40H
40H
50H
20H
30H
Начать с числа 0FFH, уменьшать число на 2 для каждой новой ячейки
28H
30H
30H
40H
38H
40H
40H
50H
Пример выполнения задания №3
1. Программа, заполняющая массив из 8 элементов, начиная с адреса 50H, числа в ячейках начинаются с 000H, и для каждой новой ячейки увеличиваются на 1.