- •Лабораторная работа № 8 Логические команды
- •Цель работы
- •2.Основные теоретические сведения
- •3. Порядок выполнения работы
- •3.1. Исследование логических команд
- •3.1.1. Команды логического умножения
- •3.1.2 Команды логического сложения
- •3.1.3. Команды Исключающего или
- •3.1.4. Команды инверсии, обмена тетрад и сброса аккумулятора
- •3.1.5. Применение логических команд для переключения банков регистров
- •3.1.6. Задания для самостоятельной работы
- •4.Содержание отчета
- •Контрольные вопросы
3.1.3. Команды Исключающего или
1. Запишите в память симулятора коды программы, реализующей операцию
(A) = (A) (R3) (36H) (TL0) AAH.
Текст программы
XRL A, R3 ; (A) (A) (R3)
MOV R0, #36H ; (R0) #36H - адрес ячейки ПД
XRL A, @R0 ; (A) ((R0))
XRL A, TL0 ; (A) (TL0)
XRL A, #0AAH ; (A) #AAH
NOP
Занесите в регистры и ячейку памяти следующие исходные данные (A) = 55H, (R3) = FFH, (36H) = 0FH, (TL0) = 25H. Выполните программу в пошаговом режиме, наблюдая за содержимым регистров и ячейки памяти, а также флагами МК. Запишите содержимое аккумулятора – результата выполнения программы.
Выполните проверку правильности работы программы «вручную», произведя логические операции над исходными данными по правилам алгебры логики.
2. Запишите в память симулятора программу, инвертирующую младшую тетраду байта, находящегося в регистре R6.
Текст программы
MOV A, R6 ; Пересылка (A) (R6)
XRL A, #00001111B ; Искл. ИЛИ с маской 00001111B = 0FH
MOV R6, A ; Пересылка (R6) (A)
NOP
Выполните программу в пошаговом режиме, предварительно записав в регистр R6 исходные данные в соответствии с табл. 4.
Таблица 4
-
Исходные значения
Результат
Получено практически
Получено теоретически
FFH
0FH
Проверьте правильность работы программы «вручную», результаты проверки занесите в табл. 4.
3.1.4. Команды инверсии, обмена тетрад и сброса аккумулятора
Занесите в память симулятора текст программы
CPL A ; (A) (/A) - инвертировать аккумулятор
SWAP A ; Обменять тетрады в аккумуляторе
CLR A ; Очистить аккумулятор
NOP
Задав исходные данные (A) = A5H, выполните программу в пошаговом режиме, наблюдая за содержимым аккумулятора. Проверьте, правильно ли выполнена программа
3.1.5. Применение логических команд для переключения банков регистров
В микроконтроллерах семейства МК51 в памяти данных имеется 4 банка регистров общего назначения (РОН), расположенных в ячейках с адресами 00H…1FH. Выбор рабочего банка регистров выполняется программно с помощью битов (флагов) RS0 и RS1, расположенных в регистре состояния PSW в 3-м и 4-м разрядах (PSW.3 и PSW.4):
-
RS1
RS0
Банк
Границы
(PSW.4)
(PSW.3)
адресов
0
0
0
00H…07H
0
1
1
08H…0FH
1
0
2
10H…1FH
1
1
3
18H…1FH
После сброса МК (начальной установки) автоматически выбирается 0-й банк РОН. Для переключения банков регистров в программе удобно использовать логические команды, которые изменяют только биты PSW.3 и PSW.4 в регистре состояния PSW, а остальные биты остаются неизменными.
Запишите в память симулятора текст программы, которая переключает банки регистров РОН после сброса МК
MOV R1, #11H ; Загрузить в регистр R1 число 11H
NOP
ORL PSW, #00001000B ; Установить PSW.3 = RS0 = 1 (Выбор 1-го банка РОН)
MOV R1, #22H ; Загрузить в регистр R1 число 22H
NOP
ORL PSW, # 00010000B ; Установить PSW.4 = RS1 = 1
ANL PSW, # 11110111B ; Установить PSW.3 = RS0 = 0 (Выбор 2-го банка РОН)
MOV R1, #33H ; Загрузить в регистр R1 число 33H
NOP
ORL PSW, #00001000B ; Установить PSW.3 = RS0 = 1 (Выбор 3-го банка РОН)
MOV R1, #44H ; Загрузить в регистр R1 число 44H
NOP
ANL PSW, #11100111B ; Установить PSW.4 = RS1 = 0, PSW.3 = RS0 = 0
; (Выбор 0-го банка РОН)
MOV R1, #11H ; Загрузить в регистр R1 число 11H
NOP
Исследуйте работу программы в пошаговом режиме. Наблюдайте за изменением содержимого регистра R1 и ячеек ПД, соответствующих этому регистру в различных банках. Выбранный (текущий, рабочий) банк отображается в симуляторе комбинацией битов в переменной RB: 00 – 0-й, 01 – 1-й, 10 – 2-й, 11 – 3-й банк.