Assembly 这是正确的装配吗?

Assembly 这是正确的装配吗?,assembly,x86-16,Assembly,X86 16,我正在尝试编写比较两个字符串的代码。 假设string1由SI引用,string2由DI引用,每个字符串长度为50 这是正确的吗 Mov SI,2000H Mov DI,3000H Mov CX,50H CLD REPNE CMPSW 一些问题: 50小时是80十进制 通过使用CMPSW指令,您可以有效地比较字(16位),即160字节 我想您应该使用REPE前缀,只要比较的元素相等,它就会重复指令。当然,在CX中进行比较的次数之前 如果你确定你的字符串的长度总是2 CMPSW的倍数,那么你

我正在尝试编写比较两个字符串的代码。 假设string1由SI引用,string2由DI引用,每个字符串长度为50

这是正确的吗

Mov SI,2000H
Mov DI,3000H
Mov CX,50H
CLD
REPNE CMPSW
一些问题:

  • 50小时是80十进制
  • 通过使用CMPSW指令,您可以有效地比较字(16位),即160字节
  • 我想您应该使用REPE前缀,只要比较的元素相等,它就会重复指令。当然,在CX中进行比较的次数之前

如果你确定你的字符串的长度总是2 CMPSW的倍数,那么你的速度会更快。你只需要调整CX的内容

我写了一篇雷恩CMPSW,为什么你要把它改成CMPSWenter???!!!!!我刚刚纠正了它。但检查编辑历史记录,您将看到您最初编写了CMPSWenter。@Max:REPNE=如果不相等,则重复;如果相等,则重复。如果SI和DI当前指向的两个字节相等,则需要继续比较,因此需要重复。