http://www.forum.getchip.net/

Помогите разобраться с флагами
http://www.forum.getchip.net/viewtopic.php?f=16&t=185
Страница 1 из 1

Автор:  xfly [ 27 фев 2012, 02:40 ]
Заголовок сообщения:  Помогите разобраться с флагами

В часности интересуют флаги Н и С.
В доках сказанно:
Н - Флаг половинного переноса. Этот флаг устанавливается в «1», если произошел
перенос из младшей половины байта (из 3-го разряда в 4-й) или заем из старшей
половины байта при выполнении некоторых арифметических операций
С - Флаг переноса. Этот флаг устанавливается в «1», если в результате выполнения
операции произошел выход за границы байта
Вот я и не могу понять почему эти флаги устанавливаються в 1 если эти события
не возникают, а когда возникают эти события флаги устанавливаються в 0?
По идее все должно быть наоборот, или я чего не понимаю?

Автор:  GetChiper [ 27 фев 2012, 23:01 ]
Заголовок сообщения:  Re: Помогите разобраться с флагами

Это от большего ума АБ :) sshot-1.png
sshot-1.png [ 1.5 КБ | Просмотров: 7175 ]

А если серьезно, AVR не умеет ПРИБАВЛЯТЬ к регистру константу. Умеет только отнимать (команда ассемблера SUBI), поэтому и строится такая конструкция!
Если нужно такое действие как на картинке замените r20+1 на r20++

Автор:  xfly [ 28 фев 2012, 00:03 ]
Заголовок сообщения:  Re: Помогите разобраться с флагами

Спасибо! Прикольно... а что делать то? Как правильно нужно записывать, чтоб эти флаги правильно работали? Вот пока писал, уже ответ пришел. Но R++ не влияет на флаг Н! Вроде понял... надо тогда просто регистры складывать, надеюсь это он умеет делать.
Сейчас проверил, вот так флаги действительно правильно устанавливаються
^R20
1 -> R21
R20+R21

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/