PC-01 Lviv

It is currently 29 Mar 2024, 02:31

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 8 posts ] 
Author Message
 Post subject: LVTtoTASM
PostPosted: 12 Jan 2021, 19:06 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Разбираясь з темой звука скачал архив "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);
Правда, один раз только нашел такое, но все таки.

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


Top
   
 Post subject: Re: LVTtoTASM
PostPosted: 14 Jan 2021, 11:00 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Attachment:
File comment: LVTtoTASM
LVTtoTASM.7z [490.29 KiB]
Downloaded 3366 times
В данном архиве находится по сути целая среда разработки :-)
LVTtoTASM0.exe, LVTtoTASMm.exe — декомпиляторы,
TASM.EXE, TASM85.TAB - компилятор TASM 3.2
SASEmulator - эмулятор.
Распаковываем и запускаем
TEST0.bat
TESTM.bat


Top
   
 Post subject: Re: LVTtoTASM
PostPosted: 14 Jan 2021, 18:39 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Хотел декомпиляторы "перекрутить" для FASM.
Вот только не знаю - как TASM85.TAB "прикрутить" (использовать) к FASM ?
Может кто подскажет.
Может sadfsdfsdaf знает, подскажи плиз ?


Top
   
 Post subject: Re: LVTtoTASM
PostPosted: 19 Jan 2021, 16:52 
Offline
Site Admin
User avatar

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


Top
   
 Post subject: Re: LVTtoTASM
PostPosted: 19 Jan 2021, 17:46 
Offline

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

LABELp1(L91D1);LxiDE(L0000);

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

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

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


Top
   
 Post subject: Re: LVTtoTASM
PostPosted: 19 Jan 2021, 19:20 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Как в тасме - не знаю. Мне было бы удобно приблизительно так:

$0010: LABEL_1: JMP LABEL_2

....

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


Top
   
 Post subject: Re: LVTtoTASM
PostPosted: 19 Jan 2021, 20:34 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Quote:
Как в тасме - не знаю. Мне было бы удобно приблизительно так:

$0010: LABEL_1: JMP LABEL_2

....

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


Top
   
 Post subject: Re: LVTtoTASM
PostPosted: 17 Feb 2023, 19:09 
Offline

Joined: 18 May 2016, 19:55
Posts: 425
Дивно, що я не виложив сюди LVTtoTASM2 (з "примочкою" HOFAF.exe).
Attachment:
210423_LVTtoTASM2.7z [537.82 KiB]
Downloaded 3159 times


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 8 posts ] 

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
cron
Powered by phpBB® Forum Software © phpBB Limited