Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_8.doc
Скачиваний:
2
Добавлен:
27.09.2019
Размер:
122.37 Кб
Скачать

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-й банк.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]