Важная информация

User Tag List

Страница 14 из 18 ПерваяПервая ... 101112131415161718 ПоследняяПоследняя
Показано с 131 по 140 из 174

Тема: команда BIT n,(HL)

  1. #131

    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question

    если я прав, то у нас есть: неизвестное число, у которого мы можем узнать 10й и 12й биты, и операции инкремента и декремента этого числа. вопрос: как с помощью всего этого узнать о числе побольше?

  2. #132

    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вообще-то есть немного больше: мы же знаем, откуда оно устанавливается. Вот только хранить теперь придется не 1 только старший байт, а уже оба.

    Логика становится более понятной, регистр действительно 1 как и указано на схемах (принципиальных). Все просто замечательно!
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  3. #133

    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    итак, зная два бита (из BIT n,(HL)) и отслеживая заем при вычитании (командой CPD), можно запросто найти 4 возможных значения memptr, одно из которых - верное. пример на C:
    Код:
    	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;
    	
    	}
    иначе говоря, нам известны 14 бит.

    А ТЕПЕРЬ
    задачка для вундеркиндов: есть ли способ отсеять лишние варианты (найти оставшиеся биты)?
    Последний раз редактировалось boo_boo; 21.03.2006 в 19:36.

  4. #134

    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я чего не понял?
    1+1=10
    11+1=100
    111+1=1000
    1....11+1=11...11
    Положить число (FFFFh & not 800h) и прибавить 1 или число (FFFFh & not 2000h) и прибавить 1? Или в чем вопрос?
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  5. #135

    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    Я чего не понял?
    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 в общем случае. это уже здорово. вопрос -- можно ли выяснить, что в двух старших битах? там никаких "окошек" нет, поэтому определить из какого бита был заем, и, таким образом, включен он или выключен, так просто не выходит...

    подозреваю, невозможно это узнать -- тк мы этих старших бит не видим, их все равно, что нет.
    Последний раз редактировалось boo_boo; 21.03.2006 в 21:28.

  6. #136

    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    опять непонятно: если они ни на что не влияют, то зачем про них что-то узнавать?
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  7. #136
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #137

    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    опять непонятно: если они ни на что не влияют, то зачем про них что-то узнавать?
    по большому счету незачем. хотя утверждать на 100%, что не влияют, нельзя.... ладно, 2 бита мелочь, и так будет видно, что к чему. если вся эта затея прокатит (под эмулятором уже работает, а вот что будет на реале?), не удивлюсь, если окажется, что после тех команд, которые "обнуляют" мемптр, в младшем байте остается какая-то муть

  9. #138

    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    это дегко проверяется CPDR (кажется). 0-1=11111...11111. Если после обнудения memptr=memptr-1 дает оба бита установленные, то младший обнуляется.
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  10. #139

    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    это дегко проверяется CPDR (кажется). 0-1=11111...11111. Если после обнудения memptr=memptr-1 дает оба бита установленные, то младший обнуляется.
    ничего-ничего, если только CPD действительно декремент memptr, нормально все проверим, по 14и битам

  11. #140

    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb

    итак, поэма о memptr -- читаем!
    на этой бодрой ноте дело о BIT n,(HL) предлагаю считать закрытым
    спасибо огромное всем участникам исследований

    ЗЫ. надо бы еще на английский перевести -- поделиться с буржуями может, возьмется кто-нибудь? могу и я, но позориться неохота -- выйдет в стилистике "ай хаве зе вери гуд фемили"...
    Вложения Вложения
    Последний раз редактировалось boo_boo; 29.03.2006 в 02:23.

Страница 14 из 18 ПерваяПервая ... 101112131415161718 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Команда Outland corp
    от nyuk в разделе Люди
    Ответов: 12
    Последнее: 10.11.2006, 10:16

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •