IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> из ASM в Pascal, ASM
сообщение
Сообщение #1


Гость






народ можете подсказать я дизасамблировал программу теперь надо перевести в паскаль что зто может означать

add sp, 4
call @__IOCheck$qv ; Exit if error
mov al, byte ptr [bp+var_202+1]
xor ah, ah
xor dx, dx
mov word_2364, ax
mov word_2366, dx
les di, [bp+arg_0]
push es
push di
push word_2392
push word_2390
call @Seek$qm4File7Longint ; Seek(var f; n: Longint)

 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


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

__IOCheck$qv;
word_2364 := lo(var_202[1]);
word_2366 := 0;
Seek$qm4File7Longint(arg_0,word_2392,word_2390)


Сообщение отредактировано: andriano -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(andriano @ 12.03.2008 9:00) *

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

__IOCheck$qv;
word_2364 := lo(var_202[1]);
word_2366 := 0;
Seek$qm4File7Longint(arg_0,word_2392,word_2390)



помоему так

dword_2364 := Var_202[1];
Seek(arg_0, dword_2390);



Var_202 - массив байтов.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






а это как будет на паскале

mov al, byte ptr word_2364
mov byte ptr [bp+var_202+1], al
les di, [bp+arg_0]
push es
push di
lea di, [bp+var_202+1]
push ss
push di
call @Write$qm4Filem3Any ; Write(var f: File{; buf: PByte})
add sp, 4
call @__IOCheck$qv ; Exit if error

 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






помагите перевел из асамблерного сода в паскаль правельно или нет асамблерныи код прекрепил а вот код паскаль

begin
w236C:=w2338;
w2370:=w233C;
w2374:=w2340;
w237C:=0;
w2338:=w2370;
w233C:=0;
w2340:=8;
sub_0(arg_0);
w2338:=w2370;
w2338:=8;
w2340:=8;
sub_0(arg_0);
w2384:=w2390;
if w2374 < w2376 then
w2338 := w2370;
w233C:=w2378;
w2340:=1;
sub_0(arg_0);
w2394:=1;
w2378:=w2378+1;
if w2394=0 then
w233c:=w2378;
w2340:=w2388;
w2338:=w2370;
sub_0(arg_0);
w2380:=w2390;
w2338:=w2370;
w2378:=w2378+w2388;
w233C:=w2378;
w2340:=w2384;
sub_0(arg_0);
w2378:=w2378+w2384;
w2348:=w2390+3;
if w2380>w237c then
begin
w2364:=w237c+w2348;
if w2364 < w2374 then
w234c:=w2348;
w2390:=$FFFF;
else
if w234c > 0 or w2358=0 or 2350<>0 then
w2358:=0;
else
w2358:=1;
w2350:w234c shr 3;
w2344:=0;
end;
else
begin
w2394:=w237c - w2380;
w2394:= w236c + w2394;
w2390:= w236c + w237c;
w2344:w2350 shl 3;
end;
seek(arg_0,w2396);
read(arg_0,var_202[1]);
w2364:=var_202[1];
seek(arg_0,w2392);
var_202[1]:=w2364;
write(arg_0,var_202[1]);
seek(arg_202,w2394+1);
read(arg_0,var_202[1]);
w2360:=var_202[1];
seek(arg_0,w2390+1);
var_202[1]:=w2360;
write(arg_0,var_202[1]);
seek(arg_0,w2394+2);
read(arg_0,var_202[1]);
w235c:=var_202[1];
seek(arg_0,w2390+2);
var_202[1]:=w235c;
write(arg_0,var_202[1]);
seek(arg_0,w2394+3);
read(arg_0,var_202[1]);
2358:=var_202[1];
seek(arg_0,2390+3);
var_202[1]:=w2358;
seek(arg_0,w2394+4);
read(arg_0,var_202[1]);
w2360:=var_202[1];
seek(arg_0,2390+4);
var_202[1]:=w2360;
write(arg_0,var_202[1]);
seek(arg_0,w2394+5);
read(arg_0,var_202[1]);
w235c:=var_202[1];
var_202[1]:=w235c;
seek(arg_0,w2390+5);
write(arg_0,var_202[1]);
seek(arg_0,w2394+6);
read(arg_0,var_202[1]);
w2358:=var_202[1];
var_202[1]:=w2358;
seek(arg_0,w2390+6)
write(arg_0,var_202[1]);
seek(arg_0,w2394+7);
read(arg_0,var_202[1]);
w2368:=var_202[1];
var_202[1]:=w2368;
seek(arg_0,w2390+7);
write(arg_0,var_202[1]);
w2390:=w2390+8;
w2394:=w2394+8;
w2350:=w2350-1;
w2350:=234c+7;
w2394:=w2380-w237c;
w2394:=w2394+w2344;
w2394:=w2394+w236c;
w2390:=w2344+w237c;
w2390:=w2390+w236c;
w2390:=w2390+1;
w2394:=w2394+1;
seek(arg_0,w2394-1);
read(arg_0,var_202[1]);
w2360:=var_202[1];
w2350:=w2350-1;
seek(arg_0,w2390-1);
var_202[1]:=w2360;
write(arg_0,var_202[1]);
w237c:=w2348+w237c;
else begin
w233c:=2378;
w2340:=8;
w2338:=w2370;
loc_0(arg_4);
w2378:=w2378+8;
w2380:=w236c+w237c;
w237c:=w237c+1;
var:_202[1]:=w2390;
seek(arg_0,w2382);
write(arg_0,var_202[1]);
end;
else
Close(arg_4);
end.

 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 9:05
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name