![]() |
1 Attachment(s)
Quote:
---------- Post added at 18:24 ---------- Previous post was at 18:16 ---------- Вот стандартная тащемто детектилка проца тех времен: Code:
; 8086 CPU check |
Quote:
|
1 Attachment(s)
Quote:
Но тут вылезает какая-то другая бага, он (эмулятор) мне пишет: error at 53 generated 5750 etalon: 5700 . Фишка в том, что по этому смещению (53h) в эталонном массиве нули, да и тест не должен ничего по этому смещению писать, там тоже должны быть нули (я затираю в начале сегмент ES 16Kb нулями). Проверка между эталоном и сгенереным масивом идет командой REP CMPSB. error at берется из 159-CX, когда находит первый несовпавший байт. Соответственно generated есть ES:[DI-1], etalon DS:[SI-1]. Вообщем чето где-то тут не так работает как надо. res_add.bin - это эталонный массив в бинарном виде, удобно в hex смотреть. |
Quote:
Code:
xor di,di ; clean 16Kb ES:DI with zeros |
Quote:
|
Вот с чем сравнивается:
Code:
00000000: FF FF 00 00 FE FF FF FF 02 00 03 00 00 80 FF 7F |
со смещения 00 по смещение 4E - результаты работы ADD, INC. Потом несколько нулей (не используемых), далее со смещения 5C по 9F - флаги после результатов работы.
Но все это вообще не важно пока, потому как в эмуле пишется бред - error at 53 - то есть он нашел различие по смещению 53. Как так - я хз, в эталонном массиве там нули, в генеррируемом тоже должны быть нули, ибо 1 кб очищаем и более туда (по смещению 53) никто ничо не пишет в процессе. Предполагаю, что REP CMPSB неправильно возвращает CX (который у меня и используется для вывода смещения по которому произошло несовпадение), либо что то еще. |
По завершению repe cmpsb di=005e, cx=0042, это правильно?
---------- Post added at 16:50 ---------- Previous post was at 16:47 ---------- Вывод байта работает неверно. al=0D -> aaa -> al=03 cy=1 -> aad 11 -> al=33 Где косяк? |
Quote:
[COLOR="Silver"] Quote:
|
Quote:
---------- Post added at 17:06 ---------- Previous post was at 17:04 ---------- Я бы понял, как это работает, если бы вместо aad 11h стояло adc al,30h. Но тут? |
| All times are GMT +4. The time now is 04:56. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.