Команды пересылки данных
Как было рассмотрено ранее, арифметические и логические команды могут быть выполнены только над содержимым регистра аккумулятора, поэтому исключительно важное значение в системе команд приобретают команды пересылки данных. С помощью этих команд можно скопировать содержимое любой ячейки памяти в регистр-аккумулятор или наоборот скопировать содержимое аккумулятора в любую ячейку памяти. Так как в микроконтроллере присутствует три независимых области памяти, то для обращения к ним введены различные команды:
- обмен данными во внутреннем ОЗУ: , XCH
- обмен данными из внешней памяти данных:
- копирование данных из памяти программ:
- обмен данными параллельных портов , ,
Примеры использования команд пересылки данных:
Любая ячейка 256- байтового блока внутреннего ОЗУ данных может быть выбрана с использованием косвенно-регистровой адресации через регистры указатели R0 и R1 (выбранного банка рабочих регистров):
;Скопировать число из ячейки памяти с адресом, хранящемся в R0, в аккумулятор ;Скопировать число из аккумулятора, в ячейку памяти с адресом, хранящемся в R1Таблицы символов (кодов), записанные в ПЗУ программы могут быть скопированы в аккумулятор с помощью команд передачи данных с :
;Скопировать символ из текущей страницы памяти программ в аккумулятор ;Скопировать символ из третьей страницы памяти программ в аккумуляторЯчейка адресного пространства 256 байт внешнего ОЗУ также может быть выбрана с использованием адресации через регистры R0 или R1:
;Скопировать число из внешней ячейки памяти с адресом,;хранящемся в R0, в аккумулятор ;Скопировать число из аккумулятора, в ячейку памяти с адресом, хранящемся в R1Содержимое аккумулятора может быть обменено с содержимым рабочих регистров выбранного банка:
XCH A, R0.Для работы с параллельными портами используется отдельные команды пересылки данных IN и OUTL:
;Скопировать число из порта P0, в аккумулятор ;Скопировать число из аккумулятора, в порт P1