奢侈品购物网站排名,微分销手机网站制作,淘宝客返利网站开发,沈阳网站建设团队这段代码是将两个字符串对象进行比较#xff0c;忽略大小写#xff0c;两个字符串缓冲区地址利用EAX和EDX两个寄存器传给该函数#xff0c;字符串的长度用4个字节保存在缓冲区的前面#xff0c;函数用EAX返回比较结果#xff0c;结果为0表示相同。function CompareText(co… 这段代码是将两个字符串对象进行比较忽略大小写两个字符串缓冲区地址利用EAX和EDX两个寄存器传给该函数字符串的长度用4个字节保存在缓冲区的前面函数用EAX返回比较结果结果为0表示相同。 function CompareText(const S1, S2: string): Integer; assembler; asm PUSH ESI ; 保存寄存器 PUSH EDI PUSH EBX MOV ESI,EAX ; EAX、EDX的值给ESI、EDI MOV EDI,EDX OR EAX,EAX ; 如果EAX不为0则将EAX-4地址中的值给EAX JE 0 MOV EAX,[EAX-4] 0: OR EDX,EDX ; 如果EDX不为0则将EDX-4地址中的值给EDX JE 1 MOV EDX,[EDX-4] 1: MOV ECX,EAX ; 将EAX的值给ECX CMP ECX,EDX ; 将EAX和EDX中较小者给ECX无符号数 JBE 2 MOV ECX,EDX 2: CMP ECX,ECX 3: REPE CMPSB ; 按字节比较ESI、EDI指向的内存中的数据比较的字节数为ECX遇到不同的数据则停止比较 JE 6 ; 如果两者相同则跳转到6标号处 MOV BL,BYTE PTR [ESI-1] ; 取不同数据其中的一个给BL CMP BL,a ; 如果BL是将小写字母则转换为大写字母 JB 4 CMP BL,z JA 4 SUB BL,20H 4: MOV BH,BYTE PTR [EDI-1] ; 取不同数据中的另一个给BH CMP BH,a ; 如果BH是将小写字母则转换为大写字母 JB 5 CMP BH,z JA 5 SUB BH,20H 5: CMP BL,BH ; 如果BL与BH相同则继续前面的比较 JE 3 MOVZX EAX,BL ; 将BL、BH的值给EAX、EDX MOVZX EDX,BH 6: SUB EAX,EDX ; 用EAX减去EDX POP EBX ; 恢复寄存器 POP EDI POP ESI end;