Что-то потеряли? Заходите, будем искать, что ж поделать...
Ответить

Re: Нормальный дизассемблер для i8035 (i8051)

Пт апр 27, 2018 20:39:05

Второй банк не используется, да и из первого только аккумулятор и 4 первых РОНа, остальное под ОЗУ.

Изголяжа много, очень, как раз походу - что-б менее понятно было, но мы несдаЁмся :kill:

Просто от вида XOR ов у меня случается переклин в собственной памяти.

Похоже это ограничения на нижнее значение аргумента в 2, то есть не 0 и не 1, а про то что флага Z нет это оригинально - а то я смотрел по результатам операций класса INC @R1 - то есть инкремент ячейки, но думаю... а анализирует если аккумулятор - то это результат совсем другой.

А перенос откуда берется ?

Re: Нормальный дизассемблер для i8035 (i8051)

Сб апр 28, 2018 10:32:43

Собственно флага Z нет и у 51й...
8)
Насчет переноса - так их два...
Собственно Cy - перенос из a.7 и десятичный...
Вспоминать ВЛОМ ибо мне с того НИКАКОГО ИНТЕРЕСУ ни в отношении дизассемблера (мозгоразвитие) ни в отношении материальна интересу...
:cry:

Re: Нормальный дизассемблер для i8035 (i8051)

Сб апр 28, 2018 10:54:00

Судя по документации - только один флаг.

Просто есть команды JC/JNC и JZ/JNZ а остальные или по 1 битным входам Т0/Т1 или по битам F0/F1 , которые могут меняться только командами CLR Fx / CPL Fx


ЗЫЖ Лучше-б кто сказал, как правильно выполнять вычитание на 8035


Какая-то противоестественная структура программы - как я понимаю условные переходы за границы 256 байтных блоков невозможно, только JMP и CALL (ну или переход на следующую инструкцию). Из-за этого програмистам того времени приходилось знатно извращаться.


ЗЫЖ - Нашли в схемах блока много ЗНААТНЫХ "очепяток" но на первый взгляд совершенно неочевидных

Re: Нормальный дизассемблер для i8035 (i8051)

Сб апр 28, 2018 11:10:22

Изврат касается только MCS48 - в иных случаях размер сегмента больше.
8)
Остальное осуждать без конкретики БЕСПОЛЕЗНО.
:(

Re: Нормальный дизассемблер для i8035 (i8051)

Сб апр 28, 2018 15:30:12

Так 8035 это тот-же 8048 только без набортного ПЗУ.

А касаемо конкретики - как в ассемблерных командах 8035 вычесть из аккумулятора регистр R1 с получением разности в аккумуляторе и знака любым образом. Оба числа 8 бит оба считаются положительными ?

Re: Нормальный дизассемблер для i8035 (i8051)

Вс апр 29, 2018 05:30:28

:shock:
Это же азы двоичной (и не только) математики - работа с отрицательными числами...
:facepalm:
приводим вычитаемое к "дополнению до 2" и далее сложение
5-3=2 равноценно 5+(-3)=2
если результат положительный оставляем без изменений, если отрицательный - при необходимости приводим к положительному числу (ибо в таком случае у нас действительно отрицательное значение к примеру 4-9=-5)
8)
Вот в сундучке КОТА весьма полное описание и системы команд и аппаратных "мелочей" для MCS48:
https://sunduk.radiokot.ru/loadfile/?load_id=1287668569
:beer:

Re: Нормальный дизассемблер для i8035 (i8051)

Вс апр 29, 2018 17:09:48

" вы рукой покажите..." (с) не моё

Можно в ассемблерной мнемонике. А то ну не понимать моя. ГлЮпый аднакЪ :(

Ознакомился с книгой - неплохо, но с нее начинать для вспоминания надо было. Уже успел с её англоязычным прототипом ознакомиться (кроме системы управления лампочками в авто, это видимо авторское достижение).

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

В принципе разбирается потихоньку - откровенных косяков почти нет, тоесть переходы со смешением на 1 можно списать на ошибку переноса таблицы программирования на документ. Только пока вопрос про одну из частей программы гле в завистмости от значения регистра (его младших 4 бит) нужно выбрать 1 из 16 переходов. Моло того что адреса указывают на пустой участой памяти в 32 байтах от искомого, так еще и идут с шагом 1, а умножить значение на 2 и использовать другую маску (и все вроде работает) как-то нету... И вставить эту команду на получится - некуда. Значит что-то не то и мне непонятно.


ЗЫЖ - не богат-ли кто хорошим качественным описанием 588ВГ6 (а то нетуть в конторской библиотеке а гугль(тьфу...прощай родимый :cry: )...яндекс ничего путного не кажет) ?
ЗЫЖ2 - Эмулятор ПЗУ (8192х8 не менее, будет актуален) - если кто где видел ?

Re: Нормальный дизассемблер для i8035 (i8051)

Вс апр 29, 2018 17:55:46

Вы ж писали, что с ассемблером для АВР знакомы?
:dont_know:
Дык.. там подобная проблема только наоборот - нет команд прямого вычитания константы.
И решение зеркально.
Насчет того как в ассемблерных командах представить - зависит от фантазии и настроения - вариантов есть множество и у инверсии и у сложения с 1.
А мне , как уже было выше сказано вспоминать систему команд 48го ВЛООММ!!! (и так по склерозной памяти отвечаю).
:sleep:
Другое дело mcs51, ПИКушки или АВР...
:roll:
Эмулятор ПЗУ можно и на SST39SF010 соорудить или по полной схеме самому... однако там загрузчик нужно в старой конструкции менять.
Прототип под старый вариант загрузки с компа (можно схемотехнику взять за основу, а прожку адаптировать от КОТУИНКО)
http://img.radiokot.ru/files/20529/1kke51kkpv.GIF
http://img.radiokot.ru/files/20529/1kke54yfix.GIF
Возьмите КОТУИНКО из "винной" (https://radiokot.ru/forum/viewtopic.php ... 7#p3167597) и доработайте... Загрузчик там современный, а периферия зависит от того, кто ее и сопровождающее ПО сам напишет/соберет.
:write:
Литературу/справочники ищемс в СУНДУКЕ КОТА и в этих хранилищах:
http://elektromehanika.org
http://publ.lib.ru/publib.html
:beer:

Re: Нормальный дизассемблер для i8035 (i8051)

Вс апр 29, 2018 19:41:16

В AVR есть вычитание регистров и флаг отрицательного результата. И Умножение 8х8 в серии MEGA

Что-то мне подсказывает, что есть типовое решение для данной операции. Давным давно - лет так 20 назад - была хорошая книжка у меня в руках, правда по 8051 ядру. Вот там было множество примеров именно математики, причем включая возведение в нецелую степень и тригонометрию. Именно на примерах разобранного ассемблера. Вот как звалась....

Увы не у одного вас склероз.... просто я про него уже начал забывать :lol:


Касаемо эмуляторов - сложные решения, хотя конечно не лишенные своих плюсов.

Осоновная задача проверить работу алгоритмов для переноса их в более современный кристалл. Но без реального процессора это сложно. Будет верно делаться макет с урезанной ПО для проверки отдельных блоков.

Наверно с чем-то вроде этого https://www.qrz.ru/schemes/contribute/c ... /pzu.shtml

А уж параллельных программаторов в конторе кучи.

Ну или ОЗУ, как внешняя память более знакомой AVR с переключением коммутаторами в секцию с 8035. Буду после праздников думать.

Re: Нормальный дизассемблер для i8035 (i8051)

Вс апр 29, 2018 19:47:38

У 8035/48 флаг Су ИМЕЕТСЯ!
Чего зря "бочка катить?
8)
И самое главное -
алгоритм вылизанный для одного типа/семейства МК (и для одной конкретной схемотехнической реализации) может быть абсолютно не оптимален на другом семействе из-за различий ядра и системы команд.
Важен САМ АЛГОРИТМ а не его конкретная реализация.
Так что НЕ НАДЕЙТЕСЬ НА ПРИМИТИВ-ПЕРЕНОС
ВСЕ РАВНО ПРИДЕТСЯ ПРОГРАММУ С НУЛЯ ПИСАТЬ!

:twisted:

Re: Нормальный дизассемблер для i8035 (i8051)

Вс апр 29, 2018 22:13:14

Это флаг переполнения при любой операции, а не флаг отрицательного результата, коего ни одна штатная команда не может дать. (DEC не в счет).

Перенести 1:1 на другой процессор естественно не выйдет - архитектура другая, хотя если на 8051 ядро - может и выгорело-бы, а вот поднять сам алгоритм - это и есть основная задача.

Re: Нормальный дизассемблер для i8035 (i8051)

Вт май 01, 2018 07:57:27

"Флаг отрицательного результата"...
:shock:
Есть признак отрицательного содержимого байта, слова (и прочей размерности) - единица в старшем ЗНАКОВОМ разряде.
Но в общем-то это условность, оговоренная принятыми к применению стандартами и правилами двоичной математики.
Обычно используется ВСЕГДА в комплекте с флагом Су. (А иногда и с дополнительным анализом других флагов PSW).
У Z80 вроде еще был флаг N - признак того, что была выполнена операция вычитания (и то для работы с DAA).
Ну и НЕ ИСКЛЮЧЕНИЕ использование самим программистом всяческих собственных приемов для конкретного случая (флаги, неявные подстановки и корректирующие операции).
:dont_know:

Re: Нормальный дизассемблер для i8035 (i8051)

Ср авг 25, 2021 23:02:42

:dont_know:

Здравствуйте.
Так как ЛС закрыты для всех пользователей напишу Вам тут.
Можете ли Вы дзасемблировать код на intel 8051, не бесплатно. Или переделать прошивку под заказ?

Re: Нормальный дизассемблер для i8035 (i8051)

Чт авг 26, 2021 11:25:21

"под заказ" обычно тут размещают:
https://radiokot.ru/forum/viewforum.php?f=53
кто свободен/заинтересован там быстрее откликнутся.
Я практическую помощ могу только в Донецке (ДНР) оказать,
"за пределами" исключительно консультации в рамках сайта.
8)
Личка вполне себе работает, ежли активирована.
:dont_know:
Ответить