Помощь - Поиск - Пользователи - Календарь
Полная версия: из ASM в Pascal
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ассемблер
AET
народ можете подсказать я дизасамблировал программу теперь надо перевести в паскаль что зто может означать

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)

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

__IOCheck$qv;
word_2364 := lo(var_202[1]);
word_2366 := 0;
Seek$qm4File7Longint(arg_0,word_2392,word_2390)
Гость
Цитата(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 - массив байтов.
Гость
а это как будет на паскале

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

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

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.

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.