МИКРОКОНТРОЛЛЕР AVR - Страница 90

МИКРОКОНТРОЛЛЕР AVR - МИКРОКОНТРОЛЛЕР AVR

можно представить в следующем виде:

if (В >= А) // Сравнить переменные А и В, находящиеся в РОН,

goto Label // Перейти на метку Label, если А <= В

что после компиляции дает такой код:

ср В, А

brge Label

Я использую команду «brge» (переход, если больше или равно) вместо «brpl» (переход, если знак плюс), так как эта команда учитывает значение флага S в регистре SREG. Как уже отмечалось в предыдущем разделе, данный флаг учитывает переполнение при сравнении чисел со знаком. Команда «brpl» учитывает только флаг N, который может быть неправильно установлен в случае переполнения.

Последний класс команд ветвления или изменения последовательности выполнения программы — это команды пропуска. После проверки указанного условия, данные команды либо выполняют следующую команду, либо пропускают ее.

При взгляде на описание команд можно увидеть, что команды пропуска могут выполняться за один, два или даже три такта. Впервые увидев это, вы, так же, как и я, можете подумать, что это просто чья-то ошибка. На самом деле это не так. Команды пропуска реализуются следующим образом:

Go to Top