Считывание и запись битов регистров
Команда MOVE также может использоваться для непосредственного чтения и записи любых восьми младших бит периферийных регистров модулей 0h-5h или системных регистров модуля 8h. При изменении младших восьми бит любого 16- разрядного регистра изменения старших восьми бит этого регистра не происходит. Если команда установки или очистки битов указывает в качестве получателя регистр, который не поддерживает этот тип операции, то в старшие биты регистра будут записаны данные из префиксного регистра, а младшие биты будут записаны по маске.
Биты регистров могут быть установлены или сброшены индивидуально при помощи команды MOVE.
move IGE, #1 ; установка бита IGE
move APC.6, #0 ; очистка бита IDS (APC.6)
|
Как и для других команд, для выбора регистров с индексами больше 07h потребуется префиксная операция.
Также команда MOVE может использоваться для передачи любого бита из младших 8 бит регистра источника или для передачи любого бита аккумулятора в качестве значения флага переноса. Для команды 'MOVE C, src.bit' нет никаких ограничений для регистра источника.
move C, IIR.3 ; копирование бита IIR.3 в бит переноса
move C, Acc.7 ; копирование бита Acc.7 в бит переноса
|
При выборе регистра источника с индексом более 15h потребуется префиксная операция.
Использование арифметическо-логического устройства
Микроконтроллеры семейства MAXQ имеют 8- разрядное (MAXQ10) или 16- разрядное (MAXQ20) арифметическо-логическое устройство, которое позволяет выполнять действия между активным аккумулятором и любым другим регистром. По умолчанию арифметическо-логическое устройство имеет восемь аккумуляторов, которые являются или 8- разрядными (MAXQ10) или 16- разрядными (MAXQ20), при этом любой аккумулятор может быть выбран как активный аккумулятор. Многие микроконтроллеры семейства MAXQ будут содержать по 16 рабочих аккумуляторов.
Выбор активного аккумулятора
Любой из этих 16 аккумуляторов А[0] - А[15] может быть выбран как активный аккумулятор путем установки четырех битов регистра указателя аккумулятора (АР):
move AP, #01h ; выбор аккумулятора A[1] в качестве активного аккумулятора
move AP, #0Fh ; выбор аккумулятора A[15] в качестве активного аккумулятора
|
Доступ к текущему активному аккумулятору может быть осуществлен как доступ к регистру Асс, который также используется в качестве неявного получателя при всех арифметических и логических операциях.
move A[0], #55h ; установка A[0] = 55 hex (для MAXQ10)
; установка A[0] = 0055 hex (для MAXQ20)
move AP, #00h ; выбор аккумулятора A[0] в качестве активного аккумулятора
move Acc, #55h ; установка A[0] = 55 hex (для MAXQ10)
; установка A[0] = 0055 hex (для MAXQ20)
|
|