если я прав, то у нас есть: неизвестное число, у которого мы можем узнать 10й и 12й биты, и операции инкремента и декремента этого числа. вопрос: как с помощью всего этого узнать о числе побольше?
если я прав, то у нас есть: неизвестное число, у которого мы можем узнать 10й и 12й биты, и операции инкремента и декремента этого числа. вопрос: как с помощью всего этого узнать о числе побольше?
Вообще-то есть немного больше: мы же знаем, откуда оно устанавливается. Вот только хранить теперь придется не 1 только старший байт, а уже оба.
Логика становится более понятной, регистр действительно 1 как и указано на схемах (принципиальных). Все просто замечательно!
итак, зная два бита (из BIT n,(HL)) и отслеживая заем при вычитании (командой CPD), можно запросто найти 4 возможных значения memptr, одно из которых - верное. пример на C:
иначе говоря, нам известны 14 бит.Код:unsigned short mask=0x2800; /*известные нам биты*/ digit=значение_memptr_которое_мы_угадываем; for(m=0; 1 ;m++) { if(!(digit & mask)) { digit--; if((digit & mask) == mask) { printf("одно из возможных значений memptr=%04X\n", (int)m); } } else digit--; if(m==0xFFFF) break; }
А ТЕПЕРЬ
задачка для вундеркиндов: есть ли способ отсеять лишние варианты (найти оставшиеся биты)?![]()
Последний раз редактировалось boo_boo; 21.03.2006 в 19:36.
Я чего не понял?
1+1=10
11+1=100
111+1=1000
1....11+1=11...11
Положить число (FFFFh & not 800h) и прибавить 1 или число (FFFFh & not 2000h) и прибавить 1? Или в чем вопрос?
с помощью битовых "окошек" (BIT (HL)) и декремента (CPD) можно однозначно узнать 14 младших бит memptr в общем случае. это уже здорово. вопрос -- можно ли выяснить, что в двух старших битах? там никаких "окошек" нет, поэтому определить из какого бита был заем, и, таким образом, включен он или выключен, так просто не выходит...Сообщение от Vladimir Kladov
подозреваю, невозможно это узнать -- тк мы этих старших бит не видим, их все равно, что нет.
Последний раз редактировалось boo_boo; 21.03.2006 в 21:28.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
по большому счету незачем. хотя утверждать на 100%, что не влияют, нельзя.... ладно, 2 бита мелочь, и так будет видно, что к чему. если вся эта затея прокатит (под эмулятором уже работает, а вот что будет на реале?), не удивлюсь, если окажется, что после тех команд, которые "обнуляют" мемптр, в младшем байте остается какая-то мутьСообщение от Vladimir Kladov
![]()
это дегко проверяется CPDR (кажется). 0-1=11111...11111. Если после обнудения memptr=memptr-1 дает оба бита установленные, то младший обнуляется.
ничего-ничего, если только CPD действительно декремент memptr, нормально все проверим, по 14и битамСообщение от Vladimir Kladov
![]()
итак, поэма о memptr -- читаем!
на этой бодрой ноте дело о BIT n,(HL) предлагаю считать закрытым
спасибо огромное всем участникам исследований
ЗЫ. надо бы еще на английский перевести -- поделиться с буржуямиможет, возьмется кто-нибудь? могу и я, но позориться неохота -- выйдет в стилистике "ай хаве зе вери гуд фемили"...
Последний раз редактировалось boo_boo; 29.03.2006 в 02:23.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)