Сделал DAD по аналогии с ADD, DSUB по аналогии с SUB. Флаг V в DSUB совпадает, а в DAD нет. Загадка.
Сделал DAD по аналогии с ADD, DSUB по аналогии с SUB. Флаг V в DSUB совпадает, а в DAD нет. Загадка.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
b2m, наверно лишний вопрос, но ты эту инфу (там и другие статьи есть по этой теме) читал?
Вот исходник на случай сомнений в корректности теста. Если там вдруг ошибки - надо конечно исправить.
Здрасьте. Какие такие ошибки могут быть в программе, если она по разному отрабатывает на реале и в моём эмуле? Тут может быть только неточность эмуляции, в противном случае (если эмуляция точная) результат просто обязан совпадать.
---------- Post added at 19:35 ---------- Previous post was at 19:32 ----------
Маловероятно. PSW - битовое поле, оно же используется и при рассчёте K. Как-то неправильно пихать в стек весь байт - практически невозможно.
---------- Post added at 19:39 ---------- Previous post was at 19:35 ----------
Кстати, я заметил, что для команды dad флаг AC тестируется неполно. У меня был вариант, когда в dad этот флаг был просто равен нулю - КС тоже совпадала. Нужно добавить данные, когда есть перенос из 11-того бита в 12-тый.
У меня еще есть такое глупое предположение - флаг V для dad считаешь правильно, флаг K на его основе - правильно, а вот в PSW пишешь K правильный, а V - левый.
Наверно я тупой. Запустил emu c конфигом pk6128c. Складываю в dad b 7000h+7000h - флаг V не устанавливается (странно). В VV тоже самое - устанавливается.
no offense, но ты мне напомнил одну из моих бабушек
---------- Post added at 20:57 ---------- Previous post was at 20:44 ----------
Такие данные там тестируются во втором проходе.
а как ты флаги АС, Р в DSUB считаеш?
Здесь можно скачать актуальные версии Virtual Vector (VV)
Я, подумав немного, сделал DSUB при помощи 2-х вызовов 8-ми битного АЛУ, сначала для младших байт, потом для старших. И числа совпали. Т.е. флаги считаются для старшего байта. Теперь вот думаю, правильно ли в этом случае считается Z. Но ведь паритет и доп. перенос совпали...
А вот когда я сделал то-же самое для DAD, то числа стали отличаться. Поэтому пришлось обновлять флаги частично, только CY и V.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)