- •Цель работы
- •3.1. Исследование команд пересылки, использующих внешнюю память данных
- •3.1.1. Запишите в память симулятора текст программы
- •3.2. Исследование команд обмена
- •3.7. Исследование команд чтения из памяти программ
- •3.8. Программирование операций пересылки между регистрами общего назначения
- •3.8.1. Первый способ
- •3.8.2. Второй способ
- •3.9. Задания для самостоятельной работы
- •4.Содержание отчета
- •Контрольные вопросы
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. Задания для самостоятельной работы
Напишите программу перезаписи из одной области памяти данных (адресуясь через регистр R0) в другую область (адресуясь через регистр R1) в соответствии с табл. 1.
Таблица 1
-
Адреса исходной области
22H
24H
Адреса записываемой области
32H
34H
Проверьте правильность работы программы, предварительно записав по указанным адресам произвольные данные
Напишите программу, которая заносит в ячейку внешней памяти данных с адресом 10H данные из порта P1.
Напишите программу, которая пересылает содержимое ячейки внешней памяти данных с адресом 001BH в порт P2. Указание. Для адресации ячейки ВПД используйте регистр DPTR.