Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

188 Часть 11. Программирование микроконтроллеров АVR на ассемблере Выполнение на ассемблере типовых процедур К типовым здесь мы отнесем процедуры, которые на языках высокого уровня (ЯВУ) записываются просто и понятно, а в ассемблере требуют специальных ухищрений. Пример такой процедуры, имитирующей сложный оператор выбора CASE, мы уже встречали в этой главе чуть раньше - в разд. «Команды проверки­ пропуска» . Из предыдущего материала также понятно, как реализовать простей­ шую конструкцию типа if . . . then с помощью команд условных переходов. По­ дытожим пройденное, а также рассмотрим несколько других типовых конструкций (листинги 7 . 1 2-7 . 1 6) . if then else : cpi temp, Const_l brsh var2 varl : ; если < <код процедуры varl> ret ; выход из i f_then_else var2 : ; если >= <код процедуры var2> ret ; выход из if then else з.f temp=l then varl { процедура varl } ( else ) if temp=O then var2 ; { процедура var2 } if then else : sbrs temp, O rjmp var2 varl : ; если битО=О <код процедуры varl> ret ; выход из i f_then_else var2 : ; если битО=l <код процедуры var2> ret ; выход из i f then else if then else : cpi temp, Const_l brlo varl var2 : ; если >= <код процедуры var2> ret ; выход из i f_then_else varl : ; если < <код процедуры varl> ret ; выход из i f then e ' lse if ( temp==l } varl ; / /процедура varl ( else ) if ( temp==O } var2 ; //процедура var2 if then else : sbrc temp , O rjmp var l var2 : ; если битО=l <код процедуры var2> ret ; выход из i f_then_else varl : ; если битО=О <код процедуры varl> ret ; выход из i f then else

RkJQdWJsaXNoZXIy MTExODQxMg==