![]() ![]() ![]() ![]() ![]()
Раздел: Документация
0 ... 53 54 55 56 57 58 59 ... 195 вместо числовых значений номеров битов можно будет указывать их символические имена. Следует помнить, что в командах CBR и SBR операндом является битовая маска, а не номер бита. Для получения битовой маски из номера бита следует воспользоваться ассемблерным оператором «сдвиг влево» («<<»), как показано в следующем примере: sbr rl6; (1«SE) + (1«SM) out MCUCR,г16; Установить флаги SE и SM регистра MCUCR Всем командам данной группы требуется один такт для выполнения, за исключением случаев, когда в результате проверки происходит пропуск команды. В этом случае команда выполняется за 2 или 3 такта, в зависимости от пропускаемой команды. 3.3.4.Команды пересылки данных Команды этой группы предназначены для пересылки содержимого ячеек, находящихся в адресном пространстве памяти данных. Разделение адресного пространства на три части (РОН, РВВ, ОЗУ) предопределило разнообразие команд данной группы. Пересылка данных, выполняемая командами группы, может производиться в следующих направлениях: •РОН<>РОН; •РОН РВВ; •РОН <=> память данных. Также к данной группе можно отнести стековые команды PUSH и POP, позволяющие сохранять в стеке и восстанавливать из стека содержимое РОН. На выполнение команд данной группы требуется от одного до трех тактов, в зависимости от команды. 3.3.5.Команды передачи управления В эту группу входят команды перехода, вызова подпрограмм и возврата из них и команды типа «проверка/пропуск», пропускающие следующую за ними команду при выполнении некоторого условия. Также к этой группе относятся команды сравнения, формирующие флаги регистра SREG и предназначенные, как правило, для работы совместно с командами условного перехода. В системе команд микроконтроллеров семейства имеются команды как безусловного, так и условного перехода. Команды относительного (rjmp), косвенного (IJMP, eijmp) и абсолютного (jmp) безусловного перехода являются самыми простыми в этой группе. Их функция заключается только в записи нового адреса в счетчик команд. Команды условного перехода также изменяют содержимое счетчика команд, однако это изменение происходит только при выполнении некоторого условия или, точнее, при определенном состоянии различных флагов регистра SREG. Все команды условного перехода можно разбить на две подгруппы. Первая подгруппа — команды условного перехода общего назначения. В эту подгруппу входят две команды — BRBS s, к и BRBC s, к, в которых явно задается номер тестируемого флага регистра SREG. Соответственно, переход осуществляется при SREG.s = О (BRBC) или SREG.s = 1 (BRBS). Другую подгруппу составляют 18 специализированных команд, каждая из которых выполняет переход по какому-либо конкретному условию («равно», «больше или равно», «был перенос» и т. п.). Причем одни команды используются после сравнения беззнаковых чисел, другие — после сравнения чисел со знаком. Возможные проверяемые условия, а также соответствующие им команды условного перехода приведены в Табл. 3.2. Таблица 3.2. Сводная таблица команд условного перехода
Вообще говоря, команды, указанные в Табл. 3.2, являются всего лишь эквивалентными мнемоническими обозначениями команд BRBS s,k и BRBC s, к с определенными значениями операнда s. Команда BREQ к имеет, например, такой же код операции, что и команда BRBS 1, к, а команда BRGE k — BRBC 4 , к. Команды вызова подпрограммы (RCALL, ICALL, EI CALL и CALL) работают практически так же, как и команды безусловного перехода. Отличие заключается в том, что, перед тем как выполнить переход, значение счетчика команд сохраняется в стеке. Кроме того, подпрограмма должна заканчиваться командой возврата RET, как показано в следующем примере: rcall sp test ; Вызов подпрограммы «sp test» ; Текст основной программы sp test; Метка подпрограммы push г2; Сохранить г2 в стеке ; Выполнение подпрограммы pop г2; Восстановить г2 из стека ret; Возврат из подпрограммы В приведенном выше примере команда RET заменяет адрес, находящийся в счетчике команд, адресом команды, следующей за командой CALL. Очевидно, что команды передачи управления нарушают нормальное (линейное) выполнение основной программы. Поэтому при каждом выполнении команды этой группы (кроме команд сравнения) нормальное функционирование конвейера нарушается. Перед загрузкой в конвейер нового адреса производится остановка и очистка выполняемой последовательности команд. В результате на выполнение команд затрачивается больше одного такта. Чтобы получить более точную информацию, обратитесь к таблицам, приведенным в разделе 3.4. 3.3.6. Команды управления системой В эту группу входят всего 4 команды: •NOP — пустая команда; •SLEEP — перевод микроконтроллера в режим пониженного энергопотребления; •WDR — сброс сторожевого таймера; •BREAK — команда, используемая внутрисхемным отадчиком. Все команды этой группы, кроме последней, выполняются за один такт. 0 ... 53 54 55 56 57 58 59 ... 195 |