ПК-01 ЛЬВОВ

форум о ПК-01,02 "Львов"
Текущее время: 06 мар 2021, 18:06

Forum Games WEB Tape Loader Twitter RSS

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 7 сообщений ] 
Автор Сообщение
 Заголовок сообщения: LVTtoTASM
СообщениеДобавлено: 12 янв 2021, 19:06 
Не в сети

Зарегистрирован: 18 май 2016, 19:55
Сообщения: 79
Разбираясь з темой звука скачал архив "MSPLAY.ZIP" предоставленный sadfsdfsdaf.
Увидел там исходники, и Бат-файл со строкой "tasm -85 -b msplay.asm MSPLAY.LVT".
Я в ТАСМ никогда особо не вникал. Но это меня заинтересовало, решил скачать TASM 3.2.
и расмотреть все. Далее я решил написать дискомпилятор для TASM 3.2 из LVT. Точнее "перекрутить" существующий у меня под МАДЛ на ТАСМ.
Понятное дело, что существуют там всякие IDA и т.д. но это уже отдельная история.
С "обычными" метками мой дискомпилятор работает вроде нормально (хотя еще тщательно не тестировал).
Ну тот меня "ударило в стопор" :-) дискомпиляция программы SPY.LVT.
В ней есть метки которые указывают на второй и третий байт, трехбайтовой команды, причем у той команды второй и третий байт тоже является меткой(!)
И вот я не понял, - а как такое дискомпилировать в ТАСМ ?
вот пример из SPY.LVT.
Мой МАДЛовский дископилятор дискомпилирует это так

LABELp1(L91D1);LxiDE(L0000);

Что означает установить метку L91D1 на_адрес_где_метка_плюс_один, т.е. на младший байт команды LxiDE.
Ну а как такое "разруливается" ТАСМОм ? И "разруливается" ли вообще ?

Если бы вместо метки L0000 было числовое значение, можно бы было это решить! А тут метка!

И такого в SPY.LVT немало.
Вот еще.
LABELp1(L926F);LxiDE(LA000);
и вот
LABELp1(L92AF);LxiDE(L0000);
а тут вот вообще "весело"
LABELp1(LAD16);LABELp2(LAD17);LxiDE(LAEE0); - одна метка на младший, вторая на старший байт команды LxiDE, которая в параметре содержит метку.

С метками на второй (старший байт) (LABELp2) тоже "весело"
LABELp2(LAD17);LxiDE(LAEE0);
Правда, один раз только нашел такое, но все таки.

Короче, :-) как быть и что делать в таких случаях ?
или я чего-то туплю... :-)


Вернуться к началу
 Заголовок сообщения: Re: LVTtoTASM
СообщениеДобавлено: 14 янв 2021, 11:00 
Не в сети

Зарегистрирован: 18 май 2016, 19:55
Сообщения: 79
Вложение:
Комментарий к файлу: LVTtoTASM
LVTtoTASM.7z [490.29 КБ]
7 скачиваний
В данном архиве находится по сути целая среда разработки :-)
LVTtoTASM0.exe, LVTtoTASMm.exe — декомпиляторы,
TASM.EXE, TASM85.TAB - компилятор TASM 3.2
SASEmulator - эмулятор.
Распаковываем и запускаем
TEST0.bat
TESTM.bat


Вернуться к началу
 Заголовок сообщения: Re: LVTtoTASM
СообщениеДобавлено: 14 янв 2021, 18:39 
Не в сети

Зарегистрирован: 18 май 2016, 19:55
Сообщения: 79
Хотел декомпиляторы "перекрутить" для FASM.
Вот только не знаю - как TASM85.TAB "прикрутить" (использовать) к FASM ?
Может кто подскажет.
Может sadfsdfsdaf знает, подскажи плиз ?


Вернуться к началу
 Заголовок сообщения: Re: LVTtoTASM
СообщениеДобавлено: 19 янв 2021, 16:52 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 24 июл 2008, 12:05
Сообщения: 1029
Цитата:
В ней есть метки которые указывают на второй и третий байт, трехбайтовой команды, причем у той команды второй и третий байт тоже является меткой(!)
Такое используется довольно часто. Программа динамически изменяет код. Чаще всего - это адрес перехода. Но бывает, что условный переходможет меняться на безусловный, или же меняться аругмент +1/-1 и т.д.


Вернуться к началу
 Заголовок сообщения: Re: LVTtoTASM
СообщениеДобавлено: 19 янв 2021, 17:46 
Не в сети

Зарегистрирован: 18 май 2016, 19:55
Сообщения: 79
Цитата:
Цитата:
В ней есть метки которые указывают на второй и третий байт, трехбайтовой команды, причем у той команды второй и третий байт тоже является меткой(!)
Такое используется довольно часто. Программа динамически изменяет код. Чаще всего - это адрес перехода. Но бывает, что условный переходможет меняться на безусловный, или же меняться аругмент +1/-1 и т.д.
Zelya, вопрос в том как это декомпилировать в ТАСМ? т.е. как это должно быть написано на ТАСМ ?
Вот конкретный пример:

LABELp1(L91D1);LxiDE(L0000);

Или же другими словами это так:

$91D0: LXI DE,
$91D1: L91D1: (второй байт (младший, команды LXI DE))
$91D2: (третий байт (старший, команды LXI DE))

Как всё такие такое на ТАСМе пишется ?


Вернуться к началу
 Заголовок сообщения: Re: LVTtoTASM
СообщениеДобавлено: 19 янв 2021, 19:20 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 24 июл 2008, 12:05
Сообщения: 1029
Как в тасме - не знаю. Мне было бы удобно приблизительно так:

$0010: LABEL_1: JMP LABEL_2

....

$0100: LXI HL, LABEL_3
$0103: SHLD LABEL_1 + 1


Вернуться к началу
 Заголовок сообщения: Re: LVTtoTASM
СообщениеДобавлено: 19 янв 2021, 20:34 
Не в сети

Зарегистрирован: 18 май 2016, 19:55
Сообщения: 79
Цитата:
Как в тасме - не знаю. Мне было бы удобно приблизительно так:

$0010: LABEL_1: JMP LABEL_2

....

$0100: LXI HL, LABEL_3
$0103: SHLD LABEL_1 + 1
Слушай, надо будет попробовать такое в ТАСМе (LABEL_1 + 1) может действительно работает там такое.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 7 сообщений ] 

Forum Games WEB Tape Loader Twitter RSS

Часовой пояс: UTC+03:00


Кто сейчас на конференции

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


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

Найти:
cron
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB