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

3.8. Программирование операций пересылки между регистрами общего назначения

При разработке программ часто возникает необходимость в пересылке данных между регистрами общего назначения. К сожалению, такие команды в МК51 отсутствуют. Выполнить пересылку между регистрами можно двумя основными способами.

3.8.1. Первый способ

Основан на использовании аккумулятора в качестве регистра временного хранения данных. Например, необходимо переслать данные из регистра R3 в регистр R7 текущего банка РОН.

Запишите в память симулятора коды программы, выполняющую пересылку из R3 в R7:

MOV A, R3 ; Пересылка содержимого R3 в аккумулятор

MOV R7, A ; Пересылка содержимого аккумулятора в регистр R7

NOP

Выполните программу пересылки в пошаговом режиме, предварительно занеся в регистр R3 исходные данные, например, число 33H.

Программа пересылки по 1-му варианту занимает в памяти только 2 ячейки. Недостатком ее является потеря данных в аккумуляторе, для сохранения которых требуются дополнительные команды.

3.8.2. Второй способ

Основан на том, что регистры общего назначения располагаются в памяти данных МК, т.е. являются обычными ячейками ПД с определенными адресами в диапазоне 00H…1FH. Для пересылки между регистрами можно использовать команды вида

MOV add, ads ,

где обозначено ads – адрес ячейки ПД источника, add – адрес ячейки ПД приемника. Пересылка выполняется без использования аккумулятора.

Пусть, например, надо переслать данные из регистра R3 в регистр R7 банка 0. Адрес регистра R3 в 0-м банке РОН будет 03H, а регистра R7 – 07H.

Запишите в память симулятора команды

MOV 07H, 03H ; Пересылка содержимого ячейки ПД с адресом 03H (регистр R3)

 в ячейку ПД с адресом 07H (регистр R7)

NOP

Выполните команду в пошаговом режиме, предварительно занеся в регистр R3 число 03H.

Этот способ позволяет пересылать данные между регистрами, находящимися в разных регистровых банках. Пусть, например, требуется переслать данные из регистра R3 0-го банка РОН в регистр R7 3-го банка. Адрес регистра R3 в 0-м банке будет 03H, адрес регистра R7 в 3-м банке РОН будет 1FH.

Занесите в память программ симулятора команды

MOV 1FH, 03H ; Пересылка содержимого ячейки 03H в ячейку 1FH

NOP

Исследуйте работу программы в пошаговом режиме, наблюдая за изменением содержимого ячеек ПД.

Достоинствами второго способа пересылки являются то, что не используется аккумулятор, а также не требуется переключать банки РОН при пересылке. Недостатки – команда пересылки занимает в памяти 3 ячейки, требуется знать адреса регистров в каждом банке РОН.

3.9. Задания для самостоятельной работы

  1. Напишите программу перезаписи из одной области памяти данных (адресуясь через регистр R0) в другую область (адресуясь через регистр R1) в соответствии с табл. 1.

Таблица 1

Адреса исходной области

22H

24H

Адреса записываемой области

32H

34H

Проверьте правильность работы программы, предварительно записав по указанным адресам произвольные данные

  1. Напишите программу, которая заносит в ячейку внешней памяти данных с адресом 10H данные из порта P1.

  2. Напишите программу, которая пересылает содержимое ячейки внешней памяти данных с адресом 001BH в порт P2. Указание. Для адресации ячейки ВПД используйте регистр DPTR.

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