Практические работы для 10 класса (по учебнику К.Ю. Полякова, Е.А. Еремина)



Практическая работа № 11
«Логические операции и сдвиги»




Логические операции и сдвиги


Знакомство с программой «ЛамПанель»


В программе «ЛамПанель» можно использовать логические операции «НЕ» (уже знакомая нам команда NOT), «И» (команда AND), «ИЛИ» (команда OR) и «исключающее ИЛИ» (команда XOR). В последних трех командах после названия команды сначала указывается маска, а затем через запятую – регистр, к которому применяется логическая операция.

Например, команда

AND FF,R0

обнуляет старшие 8 бит (старший байт) регистра R0. Маска может находиться в регистре, например, последовательность команд

MOV FF,R1

OR R1,R0

устанавливает в единицу 8 младших бит регистра R0, а остальные оставляет без изменений.

Для выполнения сдвигов используются следующие команды

SHL 1,R0	; логический сдвиг влево на 1 бит
SHR 2,R0	; логический сдвиг вправо на 2 бита
SAR 1,R0	; арифметический сдвиг вправо на 1 бит
ROL 2,R0	; циклический сдвиг влево на 2 бита
ROR 3,R0	; циклический сдвиг вправо на 3 бита

Конечно, сдвиг может применяться к любому регистру общего назначения, а не только к R0.

Задание на практическую работу


1. Запустите тренажер «ЛамПанель». Напишите программу, которая решает следующую задачу, используя логические операции:

В регистрах R1, R2 и R3 записаны коды трех десятичных цифр, составляющих трехзначное число (соответственно сотни, десятки и единицы). Построить в регистре R0 это число. Например, если R1=3116, R2=3216 и R3=3316, в регистре R0 должно получиться десятичное число 123.

Программа:

2. Используя программу «ЛамПанель», определите и запишите в таблицу значения регистра R0 после выполнения каждой из следующих команд:

Ответьте на вопросы:

• как изменится результат выполнения программы, если в команде 1 записать в R0 другое число?

• как изменится результат выполнения программы, если в командах 2 и 3 заменить маску на другую, например, на CB2416?

• как изменится результат выполнения программы, если маску в команде 2 изменить, а маску в команде 3 не менять?

3. Запишите в таблицу десятичные числа, которые будут получены в регистре R0 после выполнения каждой команды этой программы при разных начальных значениях R0 (две команды выполняются последовательно одна за другой):

Замечание: не забудьте перевести числа в шестнадцатеричную систему!

Когда последовательное выполнение этих двух команд не изменяет данные?

4. Напишите программу, которая решает следующую задачу, используя логические операции и сдвиги:

При кодирование цвета используются 4-битные значения составляющих R (красная), G (зеленая) и B (синяя). Коды этих составляющих записаны в регистрах R1, R2 и R3.

Построить в регистре R0 полный код цвета. Например, если R1=A16, R2=B16 и R3=C16, в регистре R0 должно получиться число ABC16.

Программа:

5. Напишите программу, которая умножает число в регистре R0 на 10, не применяя команду умножения. Используйте арифметические операции и сдвиги.

Программа:







Наверх