
- •1. Преобразование систем счисления чисел в двоичную систему счисления.
- •2. Преобразование результата в различные системы счисления.
- •3. Выделение старшего и младшего байта результата и представление их в различных системах счисления.
- •Задание №2. Выполнение логических операций. Наложение масок.
- •Результат вычислений представить в следующих системах счисления: двоичная, восьмеричная, шестнадцатеричная и десятичная.
- •1. Произведем преобразование систем счисления чисел в двоичную систему счисления.
- •2. Преобразование результата в различные системы счисления.
- •3. Формирование устанавливающей маски.
- •4. Формирование сбрасывающей маски.
- •5. Формирование инвертирущей маски.
- •Задание №3. Программирование микроконтроллеров. Работа с массивами.
- •Inc r0 ; увеличиваем указатель ячейки памяти на 1
- •Inc r0 ; увеличиваем указатель ячейки памяти
- •Inc r1 ; увеличиваем указатель ячейки памяти
- •Inc b ; учитываем перенос в старшем байте суммы
- •Inc r0 ; увеличиваем указатель ячейки памяти
2. Преобразование результата в различные системы счисления.
Методика преобразования из двоичной системы счисления была описана в примере выполнения задания №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.
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
Номера битов |
1 |
1 |
|
1 |
|
|
|
|
1 |
1 |
|
|
|
|
1 |
|
Биты для установки |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
Маска |
Итак, устанавливающая маска для указанных битов следующая:
1101 0000 1100 0010B = D0C2H = 160302O
Произведем наложение устанавливающей маски на результат, полученный в п. 1. Для этого требуется выполнить логическую операцию ИЛИ (OR) числа с маской.
OR |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
Число |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
Маска |
|
|
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
результат |
В результате наложения маски биты с номерами 1, 7, 12, 14, 15 установлены, остальные биты не изменили своего состояния.
4. Формирование сбрасывающей маски.
Требуется сбросить следующие биты – 2, 4, 6, 10, 12, 13. Сформируем сбрасывающую маску. Для этого запишем двоичное число, в котором эти биты равны 0, а все остальные 1.
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
Номера битов |
|
|
0 |
0 |
|
|
|
|
|
0 |
|
0 |
|
0 |
|
|
Биты для сброса |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
Маска |
Итак, устанавливающая маска для указанных битов следующая:
1100 1111 1010 1011B = CFABH = 147653O
Произведем наложение устанавливающей маски на результат, полученный в п. 1. Для этого требуется выполнить логическую операцию И (AND) числа с маской.
AND |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
Число |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
Маска |
|
|
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
результат |
В результате наложения маски были сброшены биты с номерами 4, 6, остальные не изменили состояние