Например TDA7294

Форум РадиоКот • Просмотр темы - Нормальный дизассемблер для i8035 (i8051)
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 17, 2024 02:52:15

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 34 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Пн апр 23, 2018 15:48:43 
Друг Кота

Карма: 14
Рейтинг сообщений: 372
Зарегистрирован: Вс фев 15, 2009 01:04:58
Сообщений: 5069
Откуда: Kaluga
Рейтинг сообщения: 0
Ищу нормальный дизассемблер, желательно с оболочкой под i8035 (ну или 8051) - а то к такой древности :-) С возможностью дизасемблировать с указанного адреса (то есть программа изначально с многочисленными .org xxxx причем не путем написания командных строк на 2000 символов), расставлять метки, корректно обзывать регистры ВВ работать под виндою а не требовать себе MSDOS 2.0 и 8086 с 512 кБ и не килобайтом более) - штук пять скачал - хоть и говорят что под 8051, но от последовательности E5h, C5h почему-то входят в ступор (типа не знают такой команды), дизассемблируют в неведомых мнемониках (хоть и заявлен 8051) или вообще вешаются.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Пн апр 23, 2018 16:46:18 
Друг Кота
Аватар пользователя

Карма: 129
Рейтинг сообщений: 2968
Зарегистрирован: Вт дек 20, 2011 12:46:51
Сообщений: 73623
Откуда: Петроград
Рейтинг сообщения: 0
пробовал?:
DIS8051 кросс-дизассемблер, руководство по использованию
http://microsin.net/programming/MSC51/d ... mbler.html

_________________
https://www.int-s.spb.ru
" Можно я лягу?"(C)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Вт апр 24, 2018 06:22:07 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Wladimir_TS
А НА КОЙ???
:shock:
Именно дизассемблер - ведь коды для MCS51 можно просто по распечатке с карандашиком в руке и картой команд перед носом расписать??
:dont_know:
Другое дело ассемблер и дебаггер-отладчик - дык и то добро ВАЛОМ имеется.
Заглянь сюда
viewtopic.php?f=62&t=59015
и сюда
viewtopic.php?f=62&t=94201
ежли чего не найдеш/не разбереш - пиши в личку или в "винной"
:beer:


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8048
СообщениеДобавлено: Вт апр 24, 2018 07:29:51 
Друг Кота

Карма: 14
Рейтинг сообщений: 372
Зарегистрирован: Вс фев 15, 2009 01:04:58
Сообщений: 5069
Откуда: Kaluga
Рейтинг сообщения: 0
пробовал?:
DIS8051 кросс-дизассемблер, руководство по использованию
http://microsin.net/programming/MSC51/d ... mbler.html


АгасчаЗЗЗЗ - 8035(8048) и 8051 эттта не одно и тоже посему нужен именно для 8048 дизассемблер


To Moderator: Поправьте в заголовке темы i8051 на i8048


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Вт апр 24, 2018 11:34:37 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
То же самое, что и по MCS51 относится и к 8035(8048) /касательно распечатки на листочке и карандашика + карта команд/.
Есть и симулятор для ПК (работает в DOS-окне под ХР).
8)


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Вт апр 24, 2018 12:12:43 
Друг Кота

Карма: 14
Рейтинг сообщений: 372
Зарегистрирован: Вс фев 15, 2009 01:04:58
Сообщений: 5069
Откуда: Kaluga
Рейтинг сообщения: 0
Тяжко на листочке - кода много, причем код х....ый - много брошеных участков, к которым нет обращений некоторые места непонятны

А есть какие-то симуляторы ? Только для работы программы требуется отработка INT0 с определенной частотой и фазой относительно сигнала на T0 (точнее наоборот - согнал на T0 появляется с некоторой задержкой относительно INT0, основная-ж программа в глухом цикле.

Подобрал более-менее дизассемблер - анализирую код - подскажите (лет 15 лет с 8051 ядром не работал - все забыл)

org 008Eh
MOV R0,#37h
MOV A,@R0
ORL A,#0F0h
JMPP @A

Куда будут переходы

00F0-00FF ?

Там код

d2 d6 da de e2 e6 fe ea e8 ec e4 e0 dc d8 d4 d0

И как это понимать ?


Последний раз редактировалось Wladimir_TS Вт апр 24, 2018 13:21:44, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Вт апр 24, 2018 13:14:15 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Симулятор есть, но старообразный - воздействия на внешнелапы надо вручную кнопами на клаве отрабатывать при пошаговом прогоне.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Вт апр 24, 2018 13:20:49 
Друг Кота

Карма: 14
Рейтинг сообщений: 372
Зарегистрирован: Вс фев 15, 2009 01:04:58
Сообщений: 5069
Откуда: Kaluga
Рейтинг сообщения: 0
Вот я того и боюсь - что только в железе - там динамически только работоспособно. Гляньте код выше - я не понимаю, как это работает ???

В ячейке 37 некий счетчик.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Вт апр 24, 2018 14:36:31 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Воть книжа по 48-й
https://sunduk.radiokot.ru/loadfile/?load_id=1431792142
воть табличка
Вложение:
Mcs48tbl.pdf [1.58 MiB]
Скачиваний: 304

JMPP @A - переход в пределах текущей страницы памяти программ (надо знать точный адрес кодов самой команды)
http://img.radiokot.ru/files/20529/1keqbopmd6.GIF
воть как-то так...
:roll:
Воть добавкой архивчик с симулятором
Вложение:
Новая папка.zip [22.27 KiB]
Скачиваний: 299

:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Вт апр 24, 2018 14:57:50 
Друг Кота

Карма: 14
Рейтинг сообщений: 372
Зарегистрирован: Вс фев 15, 2009 01:04:58
Сообщений: 5069
Откуда: Kaluga
Рейтинг сообщения: 0
Сама инструкция JMPP по адресу 00A0h, но согласно приложеному файлу переход вроде абсолютный, если старшие 4 бита в "1" ....

Просто значений в 37 ячейке может быть 0-15, она даже на 2 не множится нигде.

А в ячейках 00F0 - 00FF бред содержится, тогда как в 00D0-00EE содержится 15 JMPов с шагом в 2 адреса.


Вложения:
jmpp.PNG [63.86 KiB]
Скачиваний: 632
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Вт апр 24, 2018 15:33:46 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Ежли 0х00A0 то прыгнет на 0х00(содержимое аккумулятора)
т.е адрес страницы + содержимое аккумулятора (не суммируется, а замещает младший байт!!)
находимся на странице 0 - 0х0000 и допустим в аккумуляторе 0х55
прыгаем на 0х0055
А что на момент выполнения того JMP смотреть самому...
:tea:
Возможно задан условный переход по таблице - как раз двухбайтовое значение.
А само условие загружается в аккумулятор и после некотора шаманизму дает смещение на нужный указатель вектора перехода.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Ср апр 25, 2018 12:05:23 
Друг Кота

Карма: 14
Рейтинг сообщений: 372
Зарегистрирован: Вс фев 15, 2009 01:04:58
Сообщений: 5069
Откуда: Kaluga
Рейтинг сообщения: 0
Почему - команда ORL A,#0F0h установит старшие 4 бита в "1"

В ячейке 37 счетчик без ограничения - считает 00h-FFh по кольцу

Вообще программа странная - куски осмысленного кода на которые нет переходов и переходы на куски бессмысленного кода.

ЗЫЖ - программа с бумажной распечатки лохматого года (цифровая версия не сохранилась) а вот теперь изделие возрождаем, а программа зашитая не работает.

Создается ощущение, что фейковая или какая-то промежуточная версия. Среди всего этого главное найти участок основного алгоритма (все-равно в другой процессор пойдет на 8051 ядре), а пока он не найден :cry:

Осталось 20% неразобранного когда, остальное таблицы или мусор.

Вот что делает код:

CPL A
MOV R2, А
MOV R0, #3Bh
MOV R1, #39h
CALL M0

M0:
MOV A, @R0
CPL A
ADD A, R2
JC M1
CPL A
MOV @R1, A
RET
M1:
MOV @R1, #0
RET


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Ср апр 25, 2018 13:42:24 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Я по памяти пример дал - главное там ПРОСТАЯ ПОДСТАНОВКА, а не "считать в А данные из ячейки в РС+А и прыгнуть" (на что намекают двойные скобки возле А).
Если "всегда 0хFy" то искомая точка в области 0x00F0 - 0x00FF.
Касательно всяческих восстановлений - проще заново прожку написать под "черный ящик с указанными параметрами", нежли старое раскапывать.
Тем более, что для дизассемблера точное положение команд относительно адреса(а в Ваших фрагментах этого нету) играет весьма немаловажную роль.
Т.е. распечатка должна иметь следующие обязательные поля:
Код:
адрес | код | метка | мнемоника | комментарий
xxxx  | xx  | ..... |...........|....................

и таких строчек в пустографке столько, сколько байт в ПЗУ.
А уж затем те строчки заполняем сначала кодами в соответствии адресу и далее начинаем мозготреп со карандашиком.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Ср апр 25, 2018 15:17:23 
Друг Кота

Карма: 14
Рейтинг сообщений: 372
Зарегистрирован: Вс фев 15, 2009 01:04:58
Сообщений: 5069
Откуда: Kaluga
Рейтинг сообщения: 0
Задача стоит выдернуть очень "хитрый" алгоритм, суть ноу-хау

Эмулятор вами данный посмотрел - сложно с ним - глючит и машину вешает ... видать "быстрая" слишком :-)

Хотчется подыскать какой-нибудь симулятор что-б прогонять куски кода.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Ср апр 25, 2018 16:40:29 
Друг Кота
Аватар пользователя

Карма: 123
Рейтинг сообщений: 7955
Зарегистрирован: Сб сен 13, 2014 16:27:32
Сообщений: 39199
Откуда: СпиртоГонск созвездия Омега
Рейтинг сообщения: 0
ТАК СТОП КРАН ПРИДЕЛАЙ МНОЖИТЕЛЬ СНИЗЬ У ПРОЦИКА

_________________
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Чт апр 26, 2018 12:19:12 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
На основе 8035/8048 никаких особо хитрых алгоритмов соорудить НЕ ПОЛУЧИТСЯ.
Разве что вариации на тему программно-аппаратной сцепки под конкретный тип кристалла в качестве кодера/декодера - но такой примитив весьма легко раскрывается ибо и структура кристалла ИЗВЕСТНА и система команд СТАНДАРТНА.
Тем более при всего-то 2048 строк с байтовой начинкой (выше нельзя - будет задействовано ВНЕШНЕЕ ПЗУ программ).
8)
С 48-м я под эмулятором не работал (просто там нечего эмулировать при "прожке на листочках" и макете) - а вот аналогия такового под 51-й вполне прекрасно в DOS окне под ХР работает.
:beer:

Да... Ешшо когда-то было в моде IDA PRO - может где инет подскажет или местны ХАКЕРЫ.
:wink:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Чт апр 26, 2018 22:11:14 
Друг Кота

Карма: 14
Рейтинг сообщений: 372
Зарегистрирован: Вс фев 15, 2009 01:04:58
Сообщений: 5069
Откуда: Kaluga
Рейтинг сообщения: 0
Это требуется установить - есть-ли алгоритмы, какие и насколь они хитры.

Дизассемблировано 100% обработано уже более 80%.

Программа занимает в общей сложности 8192 байта естественно во внешнем ПЗУ (I8035 (1816ВЕ35) не имеет встроенного ПЗУ). Страницы переключаются старшими битами порта 2. ОЗУ только внутреннее 60 байт не считая пространства RONов (используются только R0-R3 первого набора и аккумулятор). Примерно 40% таблицы и много табличных вычислений.

Сейчас уже полностью разграничил зоны данных и зоны программы, все метки обработаны. Уже 6 или 7 явных ошибок с формированием адресов для чтения памяти программ - ошибка на "1" бит всегда...

Начал делать таблицы переменных с диапазонами возможных значений.

Хреново что совсем нет контроля выхода переменных за пределы - только образка ANDами (может это и ускоряет - но сложно установить пределы возможного изменения переменных для проверки отдельных участков кода)

Самая проблема в полнейшем непонимании работы многих кусков кода связанных с математикой.

Найден неплохой эмулятор, но на нем опять-же не отработать переферию. Но это я пока не знаю как вообще без полноценного внутрисхемника, который позволяет ставить аппаратные точки останова, а лучше вести лог состояний регистров без замедления работы процессора, как старый ICE4000

ЗЫЖ - привязка к адресам ЖЕСТОЧАЙШАЯ - вставить в код 1 команду и все развалится - данные (таблицы) плотно перемежаются с программым кодом и обращение к их адресам вычисляемо из других таблиц. Да уж - собирали программу явно на бумажках.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Пт апр 27, 2018 09:59:59 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Как я понял у Вас ни опыта работы с ассемблером ни опыта дешифровок поготовому изделию...
8)
Внешняя память программ для 8035 и открыта для доступа и садомазохизм.
Разве что изврат с перебором адресов (аналогия мозготрепа для дешифровки времен Z80/I8080) здесь оправдан.
Ошибок там никаких нету - просто есть разница между обработкой смещения для машинного компилятора и для "ручной" компиляции для "коротких" переходов
Вложение:
Rel_map.pdf [376.28 KiB]
Скачиваний: 268

и "особое ограничение" по области раздела страниц (исключительно особенности 8035) для участков программ, расположенных в пределах нескольких страниц (начало на одной с продолжением на следующей).
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Пт апр 27, 2018 17:59:01 
Друг Кота

Карма: 14
Рейтинг сообщений: 372
Зарегистрирован: Вс фев 15, 2009 01:04:58
Сообщений: 5069
Откуда: Kaluga
Рейтинг сообщения: 0
Как я понял у Вас ни опыта работы с ассемблером ни опыта дешифровок поготовому изделию...


Писал для 8051 на ассемблере когда-то и под 8080 а вот 8035 не трогал Опыт дизассемблирования имеется, а вот структуру и особенности работы 8035 - увы.... Давно это было. Пишу под AVR немного (ассемблер)

Код полностью дизассемблирован разделен на данные и собственно программу, контрольно ассемблирован с полным совпадением.

Уже 1 ошибка 100% - переход на середину команды причем на код недопустимой операции. -1 к адресу перехода потребно

SCM Truncated 1.38 некорректно отрабатывает команду JMPP @А- вне зависимости от содержимого аккумулятора - переход на адрес 0 :evil:

Частично уже откоментировано и разобрано. Примерно для 30% переменных установлено их назначение и диапазоны изменения. Потихоньку движусь.

Нужен симулятор i8035, корректно отрабатывающий JMPP @A и MOVP A,@A

Следующий вопрос - как это работает :

MOV R0,#33h
MOV A,@R0 ; В ячейке указатель на ячейку таблицы 03-EF
JZ NEK_M1
XRL A,#1 ; A = A XOR 1
JZ NEK_M1 ; При каких значениях в А установиться флаг Z ?????
MOV A,@R0
Далее процедура чтения из памяти программ 2х последовательных байт

В приведенной таблице (из PDF) не совсем ничего не понял :cry:


ЗЫЖ Как тут более 1 пробела вставить ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нормальный дизассемблер для i8035 (i8051)
СообщениеДобавлено: Пт апр 27, 2018 19:27:08 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14053
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Корректнее чем то, что я выложил вряд-ли найти удастся.
Литература по 48-м лежит в сундуке КОТА там весьма путево расписано
https://sunduk.radiokot.ru/loadfile/?load_id=1431792682
...
и по другим библиотекам - прочитайте/обновите в памяти.
Мне 35/48 вспоминать смысла нет - давно исчезнувшая и весьма жестко-неудобная мелкосхема.
Далее кой-чего от них к ПИКам среднемладшим перекочевало (относительно сегментации памяти), благо там этот вопрос несколько по-другому решен.

Код:
MOV   R0,#33h ; загрузить в указатель адрес точки назначения
MOV   A,@R0   ; (В ячейке указатель на ячейку таблицы 03-EF) считать в аккумулятор содержимое из ячейки ОЗУ с адресом 0х33
JZ   NEK_M1 ; если А=0 идем на метку
XRL   A,#1 ; (A = A XOR 1) по другому "инверсия содержимого бита 1 аккумулятора"
JZ   NEK_M1   ; (При каких значениях в А установиться флаг Z ?????) если результат = 0 идем на метку
MOV   A,@R0 ; иначе повторяем загрузку аккумулятора содержимым ОЗУ из ячейки 33

Кстати...
У 35/48 ФИЗИЧЕСКОГО флага Z НЕТУ - оценивается текущее содержимое аккумулятора.
Какой реальный физический адрес у того R0 (0х00 или 0х17) зависит от текущего регистрового банка.
Это касается режима косвенной загрузки указателей при работе из другого банка РОН (один из множества спецприемов для изголяжа над любителями дармовщинки и хитрых ветвлений с извратом).
:tea:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 34 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y