Как вариант:
Код:xor a sbc hl,de jr z,exit rlc h sbc a,a or 1 exit:
Как вариант:
Код:xor a sbc hl,de jr z,exit rlc h sbc a,a or 1 exit:
Последний раз редактировалось Destr; 04.09.2015 в 22:52.
rlc h -> ld a,h:rla
Ещё тогда (05.09.2015) насторожило.
И жило где-то внутри, грызло - чёрт, где-то я это видел...
И вот на днях штудируя и упорядочивая прессу - наткнулся:
" Работая на ассемблере уже несколько лет, я долгое время так и не знал
принципа работы (стыдобушка!) команды DAA (#27). Но вот недавно, загрузив
непревзойденный STS, я наконец детально разобрался в алгоритме работы этой
операции, чем и делюсь с теми, кто по каким-то причинам до сих пор этого не
сделал.
На работу команды влияют флаги C,H,N, а также содержимое регистра A.
Алгоритм:
1. Если флаг N выключен (равен 0), то в последующих шагах выполняется операция
сложения. Если же включен (равен 1), то операция вычитания.
2. Если аккумулятор больше #90 или флаг C включен, то к аккумулятору
прибавляется (вычитается) #60. Здесь не случайно написано "или". Если и
A>#90, и CF=1, то сложение (вычитание) #60 происходит всего лишь один раз.
3. Если младший полубайт больше #9 или флаг H включен, то аналогично п.2 к
аккумулятору прибавляется (вычитается) #06. Здесь также работает принцип
OR."
Пруф: http://zxpress.ru/book_articles.php?id=671
От себя могу добавить следующее:
1. Уже в те времена не знать как работает DAA считалось неприличным ("стыдобушка")
2. Уже сейчас только krt17, "Никогда не использовал daa, заставило разобраться как именно она работает.
3. Я лично так и не прочувствовал все тонкости работы этой команды.
Вывод неутешителен (для меня), надеюсь я один такой тормоз.
За сим откланиваюсь, до новых встреч други, надеюсь скоро снова будем грызть-оптимизировать какой-нибудь интересный этюд.
Но они видимо предвидели (читай "предполагали") будущее.
Когда преобразования встанут ребром.
Я счаз работаю с ПЛК, там порой нужно привести сигнал из аналогового уровня к процентному (например. или к примеру дольному)
Ну и как этот IEEE (скажем 4.0073+e004) превратить в вид для человеков?
Вот и вспомнил DAA (не помогло сразу, но ведь есть TRUNC) !
![]()
ладно, уговорил
"старший полубайт" значит.
ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.
Я как закоренелый читер частенько натыкаюсь на DAA когда выцепляю всякие вывод жизней и прочее на экран. Так что для ассемблера DAA тоже не редкость. Даже в своей проге как-то юзал. Но не прочухал до конца, как она работает. Вот-бы схему увидеть (логическую) как оно устроено...
Есть у нас умельцы нарисовать? (или готовая у кого завалялась?)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)