User Tag List

Страница 16 из 20 ПерваяПервая ... 121314151617181920 ПоследняяПоследняя
Показано с 151 по 160 из 193

Тема: [Поиск 1] Эмуляция

  1. #151

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    А можно по шагам расписать, как работает этот код? Каким образом получается +7 для чисел, больших 9?
    Честно - я его откуда-то скопипастил в лихих 90стых, поэтому не вникал. Но много где его юзал в своих програмульках, они работали нормально. Поэтому объяснить как это работает затрудняюсь, но это точно работает на реалах.

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

  3. #152

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Видимо, я не совсем понимаю, как работает aad

  4. #153

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    AAD : AL = AH*x + AL ;AH = 0
    И все флаги от результата AX- (SF, ZF, PF, OF, CF, AF)

  5. #154

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хорошо, флаги я забыл сделать, но AL=AH*x+AL именно так я и сделал. Разве что старший байт после умножения я отбросил, но ты пишешь AH=0...

    ---------- Post added at 17:21 ---------- Previous post was at 17:20 ----------

    Есть такой вот тест, но он явно не пройдёт у меня

  6. #155

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну я не знаю как так может быть. Вот в тесте печатает hex числа от 0 до FE.
    Некоторые сорцы из эмулей:

    Код:
                            case 0xD5: /*AAD*/
                            tempws=FETCH();
                            AL=(AH*tempws)+AL;
                            AH=0;
                            setznp16(AX);
                            cycles-=60;
                            break;
    Код:
    /* OP D5: AAD imm8 */
    static
    unsigned op_d5 (e8086_t *c)
    {
    	unsigned short s1, s2, d;
    	unsigned short mul;
    
    	mul = c->pq[1];
    
    	s1 = e86_get_ah (c);
    	s2 = e86_get_al (c);
    
    	d = mul * s1 + s2;
    
    	e86_set_ax (c, d & 0xff);
    	e86_set_flg_szp_16 (c, d);
    	e86_set_clk (c, 60);
    
    	return (2);
    }
    Код:
    					case 0xD5:	/* D5 AAD I0 */
    						oper1 = getmem8 (segregs[regcs], ip);
    						StepIP (1);
    						regs.byteregs[regal] = (regs.byteregs[regah] * oper1 + regs.byteregs[regal]) & 255;
    						regs.byteregs[regah] = 0;
    						flag_szp16 (regs.byteregs[regah] * oper1 + regs.byteregs[regal]);
    						sf = 0;
    						break;
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	0-ff.jpg 
Просмотров:	251 
Размер:	20.4 Кб 
ID:	44565  
    Вложения Вложения
    • Тип файла: rar 0-ff.rar (531 байт, Просмотров: 138)

  7. #156

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проблема оказалась в команде aaa, забыл ah обновить. Теперь пишет как и положено - 005D.
    Обновил эмулятор.
    Последний раз редактировалось b2m; 17.12.2013 в 17:25.

  8. #157

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Гуд, будем копать дальше На всякий случай собрал тест AAD, должен выводить 3FFF. DosBox кстати неправильно работает -)
    Ваш эмуль тоже не проходит тест. PCem так же не проходит. На моем Поиске выдает 3FFF, как и положено.
    Вложения Вложения
    • Тип файла: rar aad.rar (2.5 Кб, Просмотров: 127)
    Последний раз редактировалось Tronix; 17.12.2013 в 17:38.

  9. #158

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Также не учитывается еще одна особенность 8088/86, а именно:
    Код:
    	push	sp			; save SP on stack to look at
    	pop	bx			; get SP saved on stack
    	cmp	bx,sp			; if 8086/8088, these values will differ
    	jz	short @Not_8086 	; nope, must be other CPU type
    ret
    @Not_8086:
    Уйдет на выполнение @Not_8086. Разница в том, что 86 в стек записывает уже отнятое значение сегмента стека SP-2, а 286 и дальше - нет:
    Код:
    ; 8086/80186		80286+
    ; {			{
    ;   SP	  = SP - 2	  TEMP	= SP
    ;   SS:SP = SP		  SP	= SP - 2
    ; }			  SS:SP = TEMP
    ;			}
    Из-за этого вполне может не выдавать Info о системе pctools, например...

  10. #159

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так же интересно, почему если в качестве биос подсунуть некий тест, эмуль вообще падает по ексепшену. Тест div.bin, там устанавливается вектор прерывания int 00h, далее в коде происходит деление на ноль. Должно сгенерироваться int 0, но где-то тут наверно происходит крах системы -) В то же время, подобный тест sub.bin отрабатывает без ошибок. Правда в нем нет никаких обработчиков прерываний. Файлы res_div.bin и res_sub.bin содержат эталонные значения, с которыми можно сравнить содержимое памяти начиная с 0000:0000. В случае sub.bin все верно, ну кроме старших бит во флагах, но это так и должно быть. А вот с div.bin непонятно, так как эмуль падает.
    Вложения Вложения

  11. #160

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С умножением похоже нелады во флагах после операций. И это не только старшие биты. Запускать вместо BIOS, потом сравнить память с res_mul.bin Флаги это важно, возможно checkit из-за этого падает с math-error
    Вложения Вложения
    • Тип файла: rar mul.rar (1.2 Кб, Просмотров: 122)

Страница 16 из 20 ПерваяПервая ... 121314151617181920 ПоследняяПоследняя

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

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

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

Похожие темы

  1. [Поиск 1] поиск информации по модулям
    от Daniil Chislov 86 в разделе Поиск
    Ответов: 7
    Последнее: 25.12.2023, 16:54
  2. [Поиск 3] Восстановление
    от Filin в разделе Поиск
    Ответов: 71
    Последнее: 13.12.2020, 16:23
  3. [Поиск 1] Tandy Sound эмуляция
    от Tronix в разделе Поиск
    Ответов: 2
    Последнее: 21.03.2019, 18:40
  4. [Поиск 2] Поиск информации
    от dk_spb в разделе Поиск
    Ответов: 17
    Последнее: 02.10.2017, 09:00
  5. Эмуляция AY/YM
    от mungo в разделе Эмуляторы
    Ответов: 18
    Последнее: 22.03.2013, 06:14

Ваши права

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