Показать сообщение отдельно

  #334  
Старый 15.06.2008, 01:23
Ded MustD!e
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=0then 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*Sshr 14;
  
Y:=(X1*S+Y1*Cshr 14;
end
 
Ответить с цитированием