Var
string strTest;
...If CompareStr(strTest, 'abc')=0 Then
...If strTest='abc' Then//哪个比较有效率些?
string strTest;
...If CompareStr(strTest, 'abc')=0 Then
...If strTest='abc' Then//哪个比较有效率些?
解决方案 »
- 主程序如何知道系统单击鼠标事件?(下面程序如何修改)
- 菜鸟问个UDP安全通讯的思路问题,不知道对不对,高手指点!!!hohoho.......
- 图片的合并!
- 哪个控件可以不创建文件数据库,而可以生成临时数据库?
- 请教SQL 语句。
- 请教高手一个问题,在执行一个文件时,出现如下错误信息,undeclared identifier:'customersearchform',应该怎么办,谢谢!在线等待,非
- 如何取文件名 如c:\d\pp.cc 分析出pp.cc,在线,马上结
- 一个ADOQUERY多表查询的问题?!
- 为什么ADOTable控件的Active一设为True就报错?
- 如何得到一个文件的修改时间??
- 是真的很奇怪!
- 很着急的问题!请各位高手速回答!!!!!!!!
asm
PUSH ESI
PUSH EDI
MOV ESI,EAX
MOV EDI,EDX
OR EAX,EAX
JE @@1
MOV EAX,[EAX-4]
@@1: OR EDX,EDX
JE @@2
MOV EDX,[EDX-4]
@@2: MOV ECX,EAX
CMP ECX,EDX
JBE @@3
MOV ECX,EDX
@@3: CMP ECX,ECX
REPE CMPSB
JE @@4
MOVZX EAX,BYTE PTR [ESI-1]
MOVZX EDX,BYTE PTR [EDI-1]
@@4: SUB EAX,EDX
POP EDI
POP ESI
end;
PUSH ESI ,ESI压入堆栈指针寄存器
PUSH EDI ,same
MOV ESI,EAX ,将EAX的内容复制到入ESI
MOV EDI,EDX ,same
OR EAX,EAX ,不懂
JE @@1 ,jump?
MOV EAX,[EAX-4]
@@1: OR EDX,EDX
JE @@2
MOV EDX,[EDX-4]
@@2: MOV ECX,EAX
CMP ECX,EDX ,比较
JBE @@3
MOV ECX,EDX
@@3: CMP ECX,ECX
REPE CMPSB ,不懂
JE @@4
MOVZX EAX,BYTE PTR [ESI-1] ,不懂
MOVZX EDX,BYTE PTR [EDI-1]
@@4: SUB EAX,EDX
POP EDI ,出栈
POP ESI
end;
我才学汇编,请高手纠正和继续解释
JE @@1 ,为0则跳转(ZF=1)
MOV EAX,[EAX-4]//取S1长度到EAX
asm
PUSH ESI //ESI压栈
PUSH EDI //EDI压栈
MOV ESI,EAX
MOV EDI,EDX
//========= 取S1长度到EAX =====================
OR EAX,EAX //EAX是否为0 (空字符串)
JE @@1 //为0则跳转(ZF=1)
MOV EAX,[EAX-4]//取S1长度到EAX
//========= 取S2长度到EDX =====================
@@1: OR EDX,EDX //EDX是否为0
JE @@2 //为0则跳转(ZF=1)
MOV EDX,[EDX-4]//取S2长度到EDX
//========= ECX存放最小长度 =====================
@@2: MOV ECX,EAX
CMP ECX,EDX //比较ECX,EDX
JBE @@3 //小于等于则跳转(CF=1 or ZF=1)
MOV ECX,EDX //ECX存放最小长度
//========= 开始比较 =====================
@@3: CMP ECX,ECX //ZF:=1 ?? CLD //DF:=0 need?
REPE CMPSB //相等则重复取
JE @@4 //CX计数用完了仍然相等
MOVZX EAX,BYTE PTR [ESI-1] //= xor EAX, EAX ; MOV EAX,BYTE PTR [ESI-1] 清0以后MOV //源串的当前字符进EAX
MOVZX EDX,BYTE PTR [EDI-1] //目标串的当前字符进EDX
@@4: SUB EAX,EDX //如果字符串前面都相同的话返回长度差,否则返回第一个不同的字符的差
POP EDI //EDI出栈
POP ESI //ESI出栈
end;这个是对齐的问题..如果数据采用的是对齐的方式的话是有利于计算机加快处理的.
String类型在内存中的确切格式如下:
(4字节)分配大小+(4字节)引用计数+(4字节)字串长度+(不定长)字符数组+(1字节)$0结束字符