2011-04-29 85 views
0

我正在尝试编写比较2个字符串的代码。 假设string1被SI引用,string2被DI引用,并且每个字符串的长度都是50.这是正确的程序集吗?

这是正确的吗?

Mov SI,2000H 
Mov DI,3000H 
Mov CX,50H 
CLD 
REPNE CMPSW 
+0

我写了REPNE CMPSW 为什么你做CMPSWenter ??? !!!!! – Max 2011-04-29 15:50:30

+0

我刚刚纠正它。但检查编辑历史记录,你会发现你最初编写了CMPSWenter。 – fvu 2011-04-29 15:53:06

回答

2

一些问题:

  • 50H是80十进制
  • 你 - 通过使用CMPSW指令 - 有效比较字(16位),即160字节
  • 我想你想要使用REPE前缀,只要被比较的元素相等就重复该指令。或者直到CX中的比较次数被执行为止。

请注意放入CX的方式:如果您确定字符串的长度总是2的倍数,CMPSW会更快。你只需要调整内容CX

+0

你说REPNE是错误的?如果是,那么为什么? – Max 2011-04-29 15:53:16

+0

@Max:REPNE =重复,如果不相等,REPE =重复,如果相等。您希望继续比较SI和DI当前指向的两个字节是否相等,因此REPE。 – 2011-04-29 16:46:10