誰幫我把這段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;
// 函數中的參數在程序中是怎麼調用的(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;
解决方案 »
- 程序共享tsocketconnection连接
- 急!急,ocx问题
- MDI子窗体的工具栏为什么不能覆盖主窗体的工具栏?急...
- 怎么用table组件向数据库中增加一条记录
- 请大家讲讲窗体的最小化
- 怎么样在delphi程序中中止另一个程序。最好有代码!
- 编程序写个程序集成编辑器, 如何做程序单步运行类似效果的调试窗口?如: tc, etc
- 在同一个DataModule中,有两个DataSet,其中都用同一个DataSet的数据来建立Lookup Field?
- 各位大G大J:UDP广播方式可以通过路由器吗?怎样通过?
- 为什么不能使用rollback?
- 难:如何导出DLL中的Form?
- 各位大虾能告诉我类似Tquery倥件的params属性是怎么做的吗
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;
MOV EDI, EAX //DI 是源变址寄存器
MOV ECX, 0FFFFFFFFH //CX 是计数器
XOR AL,AL //将AL的内容置空 00H
REPNE SCASB //串扫描指令我的理解是做了一个循环比较找出某个值那个FFFFFFF?
const Str:Pchar 在程序中是怎麼調用的
Result 又是通過什麼返回的。