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

78K0S, Непонятки С Системой Комманд


EugenOS

Рекомендуемые сообщения

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

Имею явное непонимание, или же некоторые команды имеют недокументированные побочные действия.

func1:
mov A,#03h
f1_loop:
mov L,A ;{
mov H,#0FEh
mov A,[HL+8Ch] ; [FE00+idx] = [FE7C+idx] ^ [FE8C+idx];
mov H,#0FEh
xor A,[HL+7Ch]
mov H,#0FEh
mov [HL+00h],A
mov H,#0FEh
mov A,[HL+80h] ; [FE00+idx] = [FE80+idx]
mov H,#0FEh
mov [HL+00h],A
mov H,#0FEh ; [FE00+idx] = [FE8C+idx]
mov A,[HL+8Ch]
mov H,#0FEh
mov [HL+00h],A
mov A,L ; idx--
sub A,#01h
bnc loc_A5A ;}
pop BC
ret

В комментариях написано мое понимание того, что делают команды внутри цикла. Но это явный бред. По видимому "mov [HL+00h],A" зпихивает данные не в [FE00+idx]. Кто нибудь занимался этими процессорами. Подскажите как оно на самом деле работает.

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

ну дык...а когда еще можно заняться хоббями? днем работа...

P.S. ну привычка такая...из рассчета, что днем читать будет большинство....я чаще днем просматриваю форумы...это вопросы ночью возникают...а "доброго времени суток" как-то коробит

Изменено пользователем EugenOS
Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Лично с таким процессором не знаком, но мнемоника ассемблера смахивает на процессор Z-80. Кстати у BNC должна быть метка f1_loop, а не loc_A5A, иначе цикла не получается) Из дизассемблера кодик выдернули?)

Вижу цикл, который перебирает "опорный адрес" некий в регистре HL от FE03 до FE00, и относительно этого адреса производятся некие операции между ячейками.

Только одного не могу понять:

[FE00+idx] ТРИЖДЫ перезаписывается за одну итерацию цикла, сначала значением XOR между ячейками FE7C+idx и FE8С+idx. Затем тут же [FE00+idx] перетирается значением с ячейки FE80+idx, и далее [FE00+idx] снова перетирается значением ячейки FE8C+idx.

Может в этом и есть где то ошибка. Ведь в результате прохождения цикла только результат третьей операции остается, а остальные две тупо бесполезны, ибо затерты. Ощущение, что между этими тремя операциями с ячейками не хватает чего то.

Еще странноваты постоянные возвраты регистра H на значение FE... Как будто команды косвенного чтения ячеек сбивают содержимое H.... это странно... На мой взгляд они не нужны (приблуда компилятора? или хуже того, странности архитектуры проца?)

Ну и Вы кусок некой подпрограммы привели.... Если бы Вы разьяснили что конкретно этот код делает в предметной, понятной сознанию области, и откуда этот код, можно было бы конкретнее попытаться разобраться. А пока целевой задачи не видно, то и правильность кода оценить сложно.

P.S.

mov [hl+00h],a - должно всё адекватно работать. Проблема скорее всего в том, что оно трижды вызывается затирая предыдущий результат.

Изменено пользователем tcoder
Ссылка на комментарий
Поделиться на другие сайты

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

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

смахивает на процессор Z-80.

В Z80 практикуется LD, а не MOV.

За 78K0S не скажу, но судя по интеловскому:

func1:
mov A,#03h ; А = 03
f1_loop:
mov L,A ; L = 03
mov H,#0FEh ; H = FE
mov A,[HL+8Ch] ; A = [FE8F]
mov H,#0FEh ; H = FE Нахрена опять?
xor A,[HL+7Ch] ; А = A xor [FE7F]
mov H,#0FEh ; H = FE Опять!
mov [HL+00h],A ; [FE03] = то, что получили в предпредыдущей команде
mov H,#0FEh ; H = FE О мама, снова!
mov A,[HL+80h] ; A = [FE83]
mov H,#0FEh ; H = FE Маньяки
mov [HL+00h],A ; [FE03] = то, что получили в предпредыдущей команде
mov H,#0FEh ; уже не смешно
mov A,[HL+8Ch] ; A = [FE8F]
mov H,#0FEh ; плачу
mov [HL+00h],A ; [FE03] = то, что получили в предпредыдущей команде
mov A,L ; A = L
sub A,#01h ; A = A-1
bnc loc_A5A ; куда-то ускакали
pop BC ; вытащили из стека BC
ret ; наконец-то этот бред закончился

Изменено пользователем солар

Я не раздаю удочки. Я продаю рыбу.

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

В Z80 практикуется LD, а не MOV.

LD и MOV имеют совершенно одинаковый смысл, ежу понятно. Только этот процессор судя по всему может только по 8 бит через рег А загружать, в отличии от Z80, который может сразу 16 загрузить.

Я имел ввиду состав регистров и косвенную адресацию,сходные с Z-80: тот же A на 8 бит, и те же B C D E H L, которые могут управляться отдельно и использоваться в парах BC, DE, HL при необходимости косвенной адресации на 16 бит

куда то ускакали

Это автор наредактировал, там должен быть "ускок" на метку f1_loop, тогда алгоритм похож на цикл перебирающий адреса FE03 FE00 (если не заметили - L в каждой итерации уменьшается на 1, и следом с помощью BNC происходит переход на начало цикла до тех пор, пока не произойдет переполнения, т.е. в случае 0-1=255 - цикл выйдет на конец подпрограммы, начало которой походу не показано - не вижу PUSH BC :)

А всё остальное Вы за мной повторили - трижды перезаписывается один и тот же адрес за одну итерацию, и везде натыканы H=FE. :-)

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

да из дизасма...исходники на си, это кусок скомпилированного кода...

С интеловским и Z80 сам знаком, вот потому и вопрос. по логике должно было менять байтики (и оно их меняет) а по коду на асме выходит что все скидывается в ячейки FE00..FE03, причем перетирая ранее записаное...потому и возник этот вопрос. может команды еще и рег. L модифицируют? т.е. непонятки как раз там где [HL+0]

P.S. Ошибки нет. программа работает. но вот разобраться с этим куском кода на асме не выходит. т.е. понять не могу что куда заносится при модификации. в исходном коде

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

Изменено пользователем EugenOS
Ссылка на комментарий
Поделиться на другие сайты

По идее всё что он делает в итоге, это переносит кусок в три байта с FE8C+idx на FE00+idx. Если это не так, значит поведение этих инструкций отличается от того, что мы привыкли видеть на Z80 и на интелах 8086+ (Кстати, чем вам Intel8080 не аналог Z80 ?). Особенно настораживают постоянные возвраты FE в регистр H. По идее они не нужны там, но зачем-то стоят. Без описания инструкций не разобраться.

P.S. Еще как вариант - неверный дизассемблированный код. Скажем по ошибке разрабов дизассемблера (или по их выпендрежности чрезмерной :)), ну или при неверном выборе проца для дисазма по случайности. Но это всё вряд ли.

Можно попытаться посмотреть непосредственно коды. Но опять же без описания особо не разобраться...

P.P.S Действительно, датащит найти или сложно или невозможно. Есть только один подозрительный сайт, который не работает))) Секретный контроллер)

Изменено пользователем tcoder
Ссылка на комментарий
Поделиться на другие сайты

мнемоника ассемблера смахивает на процессор Z-80.
Я имел ввиду состав регистров и косвенную адресацию,сходные с Z-80

Вам надо как-то с терминами определиться, дружище. :king:

Для ТС: а попробовать даташит почитать?

Я не раздаю удочки. Я продаю рыбу.

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

Солар, а Вы попробовали датащит сами найти? Или у Вас времени только на придирки к словам хватает? Во всяком случае из моего текста автору вполне понятно, что я имею ввиду. Может быть в терминах Вы и разбираетесь, но даже не заметили невалидной метки у инструкции BNC (по вашему мнению она просто "куда то ускакали"), хотя там очевидно, куда она должна передать управление.

Вам советую определиться с тем, помогаете ли ТС или к моим словам придираетесь:)

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

На счет метки мой косяк. метку переименовал, а в команде перехода нет.

Описание системы комманд есть...но там ничего отличного от работы таких комманд в других процах не видно. Может быть есть какие-то отличия связанные именно со смещением 00+HL или еще чего-то...но в доступных мне документах об этом ни слова. Потому и спрашиваю...может есть кто-то, кто работал, например с uPD78F9116

P.S. Документация по NEC это вообще долгая и трудная песня...особенно по дискаунтед представителям...

P.P.S. Если у вас есть ДШ по данным прцам поделитесь пожалуйста...то что у меня есть зачитано до дыр в мониторе, но не объясняет данного феномена. Что этим хотел сказать компилятор не понятно...

Изменено пользователем EugenOS
Ссылка на комментарий
Поделиться на другие сайты

Эх, отладчик был бы. Который показывает состояние всех регистров, флагов и дамп памяти и дает возможность пошагового выполнения инструкций. Там сразу бы всё прояснилось. Вы можете показать код, из которого это скомпилировано? Может чего и прояснится.

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

Не могу. Не имею кода. Есть описание библиотеки, с заголовками функций. Есть ТЗ на программу. И есть несколько последних рабочих версий прошивки. Во всех этот участок такой же (ну только адреса разнятся)

Софтовый отладчик SM78K0S. Скачать не могу. Посылают пешим сексуальным маршрутом.

Изменено пользователем EugenOS
Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Для информации. ИДА не корректно дизассемблирует некоторые инструкции контроллеров 78K0S.От туда и такие проблемы. вот например:

1)то что дала ИДА:

ROM:0E60 main:								 ; CODE XREF: ROM:loc_DDp
ROM:0E60				 call !hwInit
ROM:0E63				 call !swInit
ROM:0E66				 call !readState
ROM:0E69				 movw HL,#0FE0Ch
ROM:0E6C				 set1 off_0.0		 ; RESET

2) то что было в исходном коде:

; hwinit()
 0D83	 22D10D	 CALL hwinit				 ; (0x0DD1)
; swinit();
 0D86	 22560E	 CALL swinit				 ; (0x0E56)
; readEslState();
 0D89	 22F30F	 CALL readState		 ; (0x0FF3)
; uartFlags.uartWaitPilotTone = 1;
 0D8C	 FC0CFE	 MOVW HL, #uartFlags ; (0xFE0C)
 0D8F	 0A0E		 SET1 [HL].0

P.S. Взято с разных версий программы. но этот код там остался неизменным, просто адреса сместились...потому адреса в дизасме и лист файле разные.

Изменено пользователем EugenOS
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...