Перейти к содержанию

    

Дизассемблер для STC12C5A60S2

Добрый всем день.

возникла необходимость восстановить программу по HEX-файлу.

Использую d52.exe, но результат неприемлемый.

На выходе нечто похожее на программу, но в изобилии команды вида

 

movx @dptr,a

 

которые смысла не имеют при отсутствии внешней памяти (а ее нет в исходном устройстве).

Есть ли вероятность получить работоспособный код, или лучше выбросить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Есть ли вероятность получить работоспособный код, или лучше выбросить?

Чтобы получить "исходники" из hex, дизассемблеру нужны подсказки от человека. Получение хороших "исходников" - итерационный процесс: подсказки человека несколько раз уточняются. Лучше (удобнее) вносить уточнения в интерактивном режиме. Лучший интерактивный дизассемблер - IDA.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо

Я лет 20 назад пользовался DASM51, там было легко и просто. Правда, контроллеры были Intel

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А не понятные команды, это могут быть какие нибудь таблицы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А не понятные команды, это могут быть какие нибудь таблицы

Да, таблицы там есть. Но все равно в теле программы "левые"команды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Но все равно в теле программы "левые"команды.

Большинство дисассемблеров не могут разделить команды и "константы" в памяти программ. "Константами" могут выступать, например, строки текста, выдаваемые программой на дисплей/терминал. Тогда команде "movx @dptr,a" соответствует байт со значением F0, что, вероятно, соответствует какой-то букве кириллицы (в некоторых кодировках - буква "р").

В некоторых дизассемблерах человек может подсказать, например: "с адреса ХХХХ лежит строка символов, которая заканчивается нулевым символом"... Естественно, подсказки - некие специфические команды, уникальные для каждого дизассемблера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
"Константами" могут выступать, например, строки текста, выдаваемые программой на дисплей/терминал. Тогда команде "movx @dptr,a" соответствует байт со значением F0, что, вероятно, соответствует какой-то букве кириллицы (в некоторых кодировках - буква "р").

 

Вот тут полезно дамп памяти в двоичном представлении иметь: текстовые строчки сразу видны будут

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация