
15.06.2008, 01:23
|
|
Members of Antichat - Level 5
Регистрация: 23.08.2007
Сообщений: 417
Провел на форуме: 14324684
Репутация:
3908
|
|
Объясните мне плиз, что делает этот кусок кода посредине программы на паскале)
Чем подробнее, тем лучше, желательно каждую строчку)
PHP код:
Procedure Rotate(D:integer; Var X,Y:integer);
Var C,S:integer;
X1,Y1:longint;
begin
if ((X=0) and (Y=0)) or (D=0) then exit;
asm
mov AX,D
mov BX,360
xor CX,CX
@m1:sub AX,BX
cmp AX,CX
jnl @m1
@m2:add AX,BX
cmp AX,CX
jl @m2
mov BX,90
@m3:cmp AX,BX
jl @m4
sub AX,BX
inc CX
jmp @m3
@m4:sub BX,AX
shl AX,1
shl BX,1
Test CL,1
jz @m5
xchg AX,BX
@m5:mov SI,AX
mov AX,word PTR TableCos[SI]
mov C,AX
mov AX,word PTR TableCos[BX]
mov S,AX
cmp CL,1
jl @ex
jg @m6
@m7:neg C
jmp @ex
@m6:neg S
cmp CL,3
jl @m7
@ex:end;
X1:=longint(X);
Y1:=longint(Y);
X:=(X1*C-Y1*S) shr 14;
Y:=(X1*S+Y1*C) shr 14;
end;
|
|
|