Вопрос про дизассемблирование кода КР580ВМ80

ЭВМ и ПЭВМ, производившиеся в СССР и странах СЭВ
Mildi
Advanced Member
Сообщения: 981
Зарегистрирован: 03.09.2016,21:03
Откуда: Мончегорск

Вопрос про дизассемблирование кода КР580ВМ80

Сообщение Mildi » 01.09.2022,19:11



1141: 3A 48 3E LDA V_3E48
1144: C3 92 20 JMP LBL450
1147: 00 NOP
1148: 3E 05 MVI A,05H ; 5
114A: D3 F3 OUT 0F3H ; 243
114C: C3 07 20 JMP LBL439

114F: 79 LBL237: MOV A,C ; [3]
1150: E6 24 ANI 24H ; 36 '$'
вот еще странный кусочек попался... Я так понимаю в таком виде он исполняться не будет, стоит после JMP и через JMP выход и на него нет ниоткуда перехода. То есть получается или это блок данных, или где то из за блока данных воспринятых неправильно потерялся переход сюда, или переход со внешнего адреса (последние 4кб сменные ПЗУ с разной адресацией и в коде предусмотрены входы на них и возвраты ).... Видимо надо и дальше идти пошагово и все проверять попутно разбираясь какой код где что делает и подправлять.
Ищу SRAM 16кб х 4бит DIP-24 например 7C166-15(20) и подобные.

Аватара пользователя
size_t
Advanced Member
Сообщения: 672
Зарегистрирован: 20.02.2019,14:28
Откуда: Санкт-Петербург
Контактная информация:

Вклад в сообщество

Вопрос про дизассемблирование кода КР580ВМ80

Сообщение size_t » 01.09.2022,21:02

Mildi писал(а): 01.09.2022,19:11 на него нет ниоткуда перехода
Адрес может вычисляться динамически.

Mildi
Advanced Member
Сообщения: 981
Зарегистрирован: 03.09.2016,21:03
Откуда: Мончегорск

Вопрос про дизассемблирование кода КР580ВМ80

Сообщение Mildi » 01.09.2022,22:31

Да тоже верно... В любом случае с точки входа все пройтись будет надежнее тем более так и так проходить чтоб разобраться в работе.
Ищу SRAM 16кб х 4бит DIP-24 например 7C166-15(20) и подобные.

Mildi
Advanced Member
Сообщения: 981
Зарегистрирован: 03.09.2016,21:03
Откуда: Мончегорск

Вопрос про дизассемблирование кода КР580ВМ80

Сообщение Mildi » 02.09.2022,19:55

Sinus,
Подскажите пожалуйста насчет этой подпрограммы.
Это что то типа задержки реализовано? В BC загружено 6432H перед ее вызовом.

Код: Выделить всё

0F12:	C5		SUB45:	PUSH	B		; [2]
0F13:	C5		LBL215:	PUSH	B
0F14:	C1			POP	B
0F15:	D5			PUSH	D
0F16:	D1			POP	D
0F17:	E5			PUSH	H
0F18:	E1			POP	H
0F19:	F5			PUSH	PSW
0F1A:	F1			POP	PSW
0F1B:	05			DCR	B
0F1C:	C2 13 0F		JNZ	LBL215
0F1F:	C1			POP	B
0F20:	0D			DCR	C
0F21:	C2 12 0F		JNZ	SUB45
0F24:	C9			RET
Ищу SRAM 16кб х 4бит DIP-24 например 7C166-15(20) и подобные.

great coder
Advanced Member
Сообщения: 340
Зарегистрирован: 20.06.2020,22:40
Откуда: msk.ru

Вопрос про дизассемблирование кода КР580ВМ80

Сообщение great coder » 03.09.2022,00:51

Да тут даже нечетность push/pop вызывает вопросы. Это точно написанный хумансом код или могут быть выкрутасы транслятора? Потому что если это создано вручную, возникают сомнения в адекватности автора.

Bobo
Advanced Member
Сообщения: 9537
Зарегистрирован: 16.08.2007,11:42
Откуда: СПб

Вклад в сообщество

Вопрос про дизассемблирование кода КР580ВМ80

Сообщение Bobo » 03.09.2022,00:57

great coder писал(а): 03.09.2022,00:51 Это точно написанный хумансом код
больше на какие-то данные похоже
c1c5
d1d5
e1e5
f1f5
Xeon E5-2670v2/32 Gb, Amiga А4000Т

great coder
Advanced Member
Сообщения: 340
Зарегистрирован: 20.06.2020,22:40
Откуда: msk.ru

Вопрос про дизассемблирование кода КР580ВМ80

Сообщение great coder » 03.09.2022,01:01

Bobo писал(а): 03.09.2022,00:57данные похоже
Такой вариант остается всегда и не рассматривается как тривиальный.

Sinus
Full Member
Сообщения: 229
Зарегистрирован: 07.08.2016,17:30
Откуда: СПб

Вклад в сообщество

Вопрос про дизассемблирование кода КР580ВМ80

Сообщение Sinus » 03.09.2022,01:29

Mildi, да, правильно, очень похоже на задержку.

great coder, с чётностью push/pop всё в порядке. Там цикл в цикле:

Во внешнем цикле сначала ВС кладётся в стек. Затем во внутреннем цикле ВС кладётся в стек и берётся из стека, декрементируется В, и после выхода по условию В=0 из внутреннего цикла заложенное в стек первоначальное значение ВС забирается из стека. (Затем декрементируется С, и если С не обратилось в ноль, то идём в начало внешнего цикла: ВС снова кладётся в стек - начинается следующий проход внешнего цикла. Если же С=0, то - выход из подпрограммы. Таким образом, количество push и pop получается одинаковым.)

Mildi
Advanced Member
Сообщения: 981
Зарегистрирован: 03.09.2016,21:03
Откуда: Мончегорск

Вопрос про дизассемблирование кода КР580ВМ80

Сообщение Mildi » 03.09.2022,03:01

great coder, Этот код не ошибка, так и есть.

Sinus, Спасибо. Я так и предположил. Меня просто удивило зачем там данные через стек гоняются... DE и HL тем более в них в данный момент нет полезной информации... Решил на всякий случай уточнить.
Ищу SRAM 16кб х 4бит DIP-24 например 7C166-15(20) и подобные.

Mildi
Advanced Member
Сообщения: 981
Зарегистрирован: 03.09.2016,21:03
Откуда: Мончегорск

Вопрос про дизассемблирование кода КР580ВМ80

Сообщение Mildi » 03.09.2022,16:19

Прошивка полностью без ошибок считана, так что одной заботой меньше.
Дошел до подсчета контрольных сумм, и нашел адрес где они хранятся, посчитал в редакторе, все блоки по 512 байт соответствуют.

А вот контрольные суммы Дизассемблер воспринял не как константы, а как команды, но думаю это логично.. так как адреса в программе вычисляются динамически, хотя на первый байт КС он метку сделал, а ведь этот адрес сначала засылается в стек, потом идут вычисления, потом из стека извлекается в регистровую пару и только потом идет чтения по адресу в регистровой паре...

Так что пока полет нормальный, будем дальше в ручную "парсить" и анализировать...

Но кодер который писал я его ...(дальше следует не переводимый народный фольклор)...
Вызываем подпрограмму, сразу по jmp скачем на другой адрес черт знает где, там делаем 3 команды и опять по jmp прыгаем туда откуда делали первый прыжок и продолжаем....


Если возникнут вопросы буду тут спрашивать, надеюсь на ваши подсказки...
Ищу SRAM 16кб х 4бит DIP-24 например 7C166-15(20) и подобные.

Ответить