|
|
  |
Флаги в регистрах (установка-сброс) |
|
|
|
Aug 14 2009, 19:25
|

Участник

Группа: Участник
Сообщений: 52
Регистрация: 6-05-09
Из: Москва
Пользователь №: 48 733

|
Подскажите идиоту пожалуйста, под ночь туплю. Как бы красивее ставить-скидывать всякие флаги в регистрах? Я пишу в лоб: Код IN ACC, MCUCR ;Скинем два младших бита ANDI ACC, 0b11111100 ;Ставим нужные флаги ORI ACC, 0b00000010 ;по спаду! OUT MCUCR, ACC Здесь ACC - определение для регистра (типа аккумулятор). Я знаю, можно заранее записать в регистр общий байт - сразу все флаги. А как быть, если их надо по одному во время работы программы скидывать-ставить? Научите, как делать грамотно и аккуратно (чтобы хороший стиль написания был)
|
|
|
|
|
Aug 14 2009, 20:18
|

Местный
  
Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836

|
Цитата(C.S. @ Aug 14 2009, 23:25)  пишу в лоб: Код IN ACC, MCUCR ;Скинем два младших бита ANDI ACC, 0b11111100 ;Ставим нужные флаги ORI ACC, 0b00000010;по спаду! OUT MCUCR, ACC Можно так: Код IN ACC, MCUCR cbr ACC,(1<<0)|(1<<1) OUT MCUCR, ACC или так: Код IN ACC, MCUCR sbr ACC,(1<<0)|(1<<1) OUT MCUCR, ACC
|
|
|
|
|
Aug 14 2009, 20:24
|

Участник

Группа: Участник
Сообщений: 52
Регистрация: 6-05-09
Из: Москва
Пользователь №: 48 733

|
Цитата(adc @ Aug 15 2009, 00:18)  Можно так: Код IN ACC, MCUCR cbr ACC,(1<<0)|(1<<1) OUT MCUCR, ACC или так: Код IN ACC, MCUCR sbr ACC,(1<<0)|(1<<1) OUT MCUCR, ACC О! Большой респект) проглядел команды! Так нагляднее (если имена битов использовать)! Спасибо вам!
|
|
|
|
|
Aug 16 2009, 22:53
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(C.S. @ Aug 14 2009, 22:25)  если их надо по одному во время работы программы скидывать-ставить? Есть еще чудесные команды BST - загрузка любого бита регистра фо флаг T BLD - запись флага T в бит регистра. BRTS переход если T установлен BRTC переход если T сброшен. ну и SET установка T CLT сброс флага T непосредственно. пример IN R16, PINB BST R16, PB0 BRTS <Label_PB0_установлен> Понимаю что это не совсем то о чем Вы спрашивали, но тем не менее эти команды часто дают очень большой выигрыш в битовых операциях. Особенно при организации программных флагов.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|