誰幫我把這段Delphi(sysUtils.pas)中的asm語句詳細的解釋一下。
// 函數中的參數在程序中是怎麼調用的(Str)
// 返回值是什麼
// 等等......
function StrLen(const Str: PChar): Cardinal; assembler;
asm
        MOV     EDX,EDI
        MOV     EDI,EAX
        MOV     ECX,0FFFFFFFFH
        XOR     AL,AL
        REPNE   SCASB
        MOV     EAX,0FFFFFFFEH
        SUB     EAX,ECX
        MOV     EDI,EDX
end;

解决方案 »

  1.   

    MOV     EDX,EDI      -----EDX:=EDI;
            MOV     EDI,EAX      -----EDI:=EAX;
            MOV     ECX,0FFFFFFFFH   -----ECX:=0FFFFFFFFH;
            XOR     AL,AL         -----AL XOR AL (ALAL的异或运算)
            REPNE   SCASB    -----指令 REPNE SCASB 进行比较  
            MOV     EAX,0FFFFFFFEH    ----EAX:=0FFFFFFFEH;
            SUB     EAX,ECX   ------EAX:=EAX-ECX;
            MOV     EDI,EDX   ------EDI:=EDX;
      

  2.   

    MOV EDX, EDI
    MOV EDI, EAX             //DI 是源变址寄存器
    MOV ECX, 0FFFFFFFFH      //CX 是计数器
    XOR AL,AL               //将AL的内容置空 00H
    REPNE SCASB              //串扫描指令我的理解是做了一个循环比较找出某个值那个FFFFFFF?
      

  3.   

    我需要的是 function StrLen(const Str: PChar): Cardinal; assembler; 中的
     const Str:Pchar 在程序中是怎麼調用的
     Result 又是通過什麼返回的。