![](/user_photo/2706_HbeT2.jpg)
- •Лабораторная работа № 10 Команды операций с битами
- •Цель работы
- •2.Основные теоретические сведения
- •3. Порядок выполнения работы
- •3.1. Управление отдельными битами ячеек пд и регистров специальных функций
- •3.2. Использование команд операций с битами для переключения регистровых банков
- •3.3. Вычисление логических функций с помощью команд операций с битами
- •Задания для самостоятельной работы
- •4.Содержание отчета
- •Контрольные вопросы
3. Порядок выполнения работы
3.1. Управление отдельными битами ячеек пд и регистров специальных функций
Запишите в память симулятора AVSIM51 коды команд
SETB ACC.7
CLR ACC.7
CPL ACC.7
NOP
SETB C
CLR C
CPL C
NOP
CLR PI.0
SETB P1.0
CPL P1.0
NOP
SETB 22H.0
CLR 22H.0
CPL 22H.0
NOP
Выполните программу в пошаговом режиме, наблюдая за содержимым указанных в командах регистрах, флагах, портов и ячеек памяти. Сделайте выводы о действиях команд.
3.2. Использование команд операций с битами для переключения регистровых банков
Выбор рабочего банка регистров осуществляется 3-м и 4-м битами регистра состояния PSW (биты PSW.3 и PSW.4), которые имеют собственные символические имена RS0 и RS1 соответственно. Распределение банков регистров общего назначения в МК51 приведено в табл. 1.
Таблица 1
Распределение банков МК51
RS1 |
RS0 |
Номер банка |
0 |
0 |
Банк 0 |
0 |
1 |
Банк 1 |
1 |
0 |
Банк 2 |
1 |
1 |
Банк 3 |
Во избежание нежелательного изменения других битов регистра PSW рекомендуется производить модификацию номера банка с использованием команд операций с битами. Напоминаем, что после сброса МК51 (обычно при включении электропитания) автоматически выбирается банк 0, при этом биты RS1 = RS0 = 0.
Запишите в память симулятора AVSIM51 следующие коды
MOV R0, #10H
SETB RS1
SETB RS0 ; Выбор банка 3 РОН
MOV R0, #33H
CLR RS0 ; Выбор банка 2 РОН
MOV R0, #22H
CLR RS1 ; Выбор банка 0
MOV R0, #0FFH
NOP
Выполните программу в пошаговом режиме, наблюдая за переключением банков РОН по изменению ячеек памяти данных, где располагаются РОН.
3.3. Вычисление логических функций с помощью команд операций с битами
Необходимо вычислить логическую (булеву) функцию трех переменных
Y = X Z W ( X Z ).
Переменные X, Z, W поступают на линии 2, 1 и 0 порта P1. Результат Y нужно вывести на линию 7 порта P1.
Программа вычисления логической функции имеет вид
W: REG P1.0 ; Спецификация бит порта P1
Z: REG P1.1
X: REG P1.2
Y: REG P1.7
MOV C, X ; Пересылка X в С
ANL C,/Z ; Операция X AND NOT(Z)
MOV F0, C ; Запоминания результата в бите F0
MOV C, X ; Пересылка X в C
ORL C, Z ; Операция X OR Z
ANL C, W ; Операция W AND (X OR Z)
ORL C, F0 ; Операция OR, результат во флаге C
MOV Y, C ; Вывод результата Y
END
Задание. В своей папке создайте файл с именем log.asm. Запишите в него программу вычисления логической функции. Получите файлы log.obj и log.hex. Исследуйте работу программы в пошаговом режиме, задавая значения переменных на соответствующих линиях порта P1 из табл. 2.
Таблица 2
Результаты исследования программы вычисления функции
Входные значения |
Получено |
|||
Практически |
Теоретически |
|||
X (P1.2) |
Z (P1.1) |
W (P1.0) |
Y (P1.7) |
Y |
1 |
1 |
1 |
|
|
1 |
1 |
0 |
|
|
1 |
0 |
0 |
|
|
Проверьте результаты работы программы «вручную», произведя вычисления по правилам алгебры логики.