Форум: "Основная";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];
ВнизКОД из ASM в Delphi Найти похожие ветки
← →
Fman (2007-05-28 20:38) [0]Уважаемые кодеры, помагите переписать в функцию следующий asm-код
Входные данные
AL (word)
CL (байт)
строка 24 байта
MOV CX,WORD PTR DS:[EAX+1]
MOV DL,BYTE PTR DS:[EAX]
ADD CX,3
INC DL
PUSH ECX
PUSH EDX
LEA ESI,DWORD PTR SS:[ESP+10] // Както сюда нужно передать строку [x24 байт]
MOV EDI,1B
L002:
MOV DL,BYTE PTR DS:[ESI]
ADD DL,CL
XOR DL,AL
MOV BYTE PTR DS:[ESI],DL
INC ESI
DEC EDI
JNZ L002
На выходе функция должна выдать ESI
← →
Anatoly Podgoretsky © (2007-05-28 20:49) [1]> Fman (28.05.2007 20:38:00) [0]
В таком случае не возможно, правила использования АСМ требуют что бы содержимое ESI осталось неизменным.
← →
Fman (2007-05-28 20:54) [2]Хм... а можно этот алгоритм как-нибудь на дельфи изобразить?
← →
Anatoly Podgoretsky © (2007-05-28 20:59) [3]> Fman (28.05.2007 20:54:02) [2]
Конечно можно,
1. убрать использование сегментных регистров
2. сохранить при входе EDI/ESI - восстановить при выходе
3. результат вернуть через EAX
И конечно надо определить функцию, пока здесь просто кусок кода.
← →
Сергей М. © (2007-05-29 08:21) [4]
> AL (word)
???????
> MOV CX,WORD PTR DS:[EAX+1]
Это никак не вяжется со входными условиями "AL (word)"
Ну и еще куча других нестыковок.
Это что, реализация алгоритма шифрования или где ?
Опиши детально конечную задачу ..
← →
MBo © (2007-05-29 10:53) [5]>помагите переписать в функцию следующий asm-код
Наверно, проще сказать, что должна делать функция, и сразу написать ее на Дельфи
← →
oxffff © (2007-05-29 12:00) [6]const EncryptedSize=$1B;
type
EncryptedData=array[1..EncryptedSize] of byte;
procedure EnCrypt(var data:EncryptedData;Adder,Xorer:byte);
var i:integer;
begin
for i:=1 to length(data) do
begin
data[i]:=data[i]+Adder;
data[i]:=data[i] xor Xorer;
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.08.05;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.048 c