ysvl:array[0..27] of Byte=($70,$29,$72,$A4,$D0,$03,$60,$85,$1E,$00,$2B,$8A,$8F
  ,$D5,$79,$65,$F6,$1D,$0D,$D4,$07,$69,$70,$07,$88,$26,$B6,$14);
  yshf:array[0..27] of Byte=($70,$29,$72,$2E,$5F,$CE,$A8,$F9,$72,$46,$75,$72,$90
  ,$D9,$8D,$2E,$51,$29,$B0,$89,$4A,$81,$75,$92,$6F,$D5,$8D,$14);procedure TForm1.yinshenClick(Sender: TObject);  
begin
if CheckBox1.Checked then
  CopyMemory(pointer($00a48e59),@ysvl,28)
else
  CopyMemory(pointer($00a48e59),@yshf,28)
end; 请问上面这段delphi7代码该怎么用delphi7的ASM表示?

解决方案 »

  1.   

    最简单的方法运行时反汇编复制出来既然已经用delphi写了 为什么还要转成ASM呢?
      

  2.   

    Unit1.pas.33: if CheckBox1.Checked then
    0044E63B 8B83FC020000     mov eax,[ebx+$000002fc]
    0044E641 8B10             mov edx,[eax]
    0044E643 FF92C8000000     call dword ptr [edx+$000000c8]
    0044E649 84C0             test al,al
    0044E64B 7416             jz +$16
    Unit1.pas.34: CopyMemory(pointer($00a48e59),@ysvl,28)
    0044E64D BA4CFD4400       mov edx,$0044fd4c
    0044E652 B91C000000       mov ecx,$0000001c
    0044E657 B8598EA400       mov eax,$00a48e59
    0044E65C E8E37FFBFF       call -$0004801d
    0044E661 5B               pop ebx
    0044E662 C3               ret 
    Unit1.pas.36: CopyMemory(pointer($00a48e59),@yshf,28)
    0044E663 BA68FD4400       mov edx,$0044fd68
    0044E668 B91C000000       mov ecx,$0000001c
    0044E66D B8598EA400       mov eax,$00a48e59
    0044E672 E8CD7FFBFF       call -$00048033
    Unit1.pas.37: end;
      

  3.   

    楼主是不是不想用CopyMemory,想用纯汇编实现.