Я хотел ещё тогда написать автору, но увидел, что автор приложил исходники, и вполне можно разобраться самому.Lavr wrote: А вот DB8085 disassembler, что я брал вот здесь: Dick's Web Page (W3SYY),
меня немного подвёл. Он неверно декомпилирует инструкцию CNZ (код 0С4Н).
Но руки как-то не дотянулись...

Дизассемблеров много есть разных, но этот интересен тем, что прикладывает к полученному исходнику
оригинальный код в виде комментария, что очень удобно в дальнейшей работе, ну и так хорошо у него получается,
что даже необработанный вариант обычно сразу легко компилируется обратно в оригинал.
Жаль только форматирует он текст ассемблера табуляцией - это не во всех редакторах одинаково
хорошо выглядит... (На удивление хорошо в MS Word выглядит, и там многие косяки легко поправить!

В итоге сразу получается текст примерно вот такой красивости:
Code: Select all
LF95A:
LXI H,L0000 ;F95A 21 00 00
LF95D:
LDAX D ;F95D 1A
INX D ;F95E 13
CPI 0DH ;F95F FE 0D
JZ LF98E ;F961 CA 8E F9
CPI 2CH ;F964 FE 2C
RZ ;F966 C8
CPI 20H ;F967 FE 20
JZ LF95D ;F969 CA 5D F9
SUI 30H ;F96C D6 30
JM LFAAE ;F96E FA AE FA
CPI 0AH ;F971 FE 0A
JM LF982 ;F973 FA 82 F9
CPI 11H ;F976 FE 11
JM LFAAE ;F978 FA AE FA
CPI 17H ;F97B FE 17
JP LFAAE ;F97D F2 AE FA
SUI 07H ;F980 D6 07
Всё оказалось довольно просто: инструкцию CNZ (код 0С4Н) он распознаёт, но в таблице размера
инструкций автор ошибочно проставил, что CNZ - инструкция однобайтная, типа RNZ, что и даёт сбой.
Не критично - но неприятно...

В общем, я один байт подправил в исходнике и в ЕХЕ-шнике, и всё вроде как заработало правильно: