我试图将array1与array2进行比较。这是我的代码的一部分,但它不起作用。
mov si, 00
mov di, 00
Compare:
cmp array1[si], array2[di]
je checking
jmp compare
我正在做一个汇编程序,要求用户输入字符串。第一个字符串被标记为输入。第二个字符串是旧的字符序列。第三个字符串是新替换的字符序列。
样本:
输入:hatatat
旧字符串:在
替换为:嗯
输出:呵呵
大多数 x86指令cmp
不能同时处理两个内存位置。您需要在寄存器中加载其中一个参数。例如:
mov al, [Array1+si]
cmp al, [Array2+di]
也许,有一组指令可以同时处理两个内存参数 - 字符串指令 aslods, stos, cmps, movs, ...
这些指令始终与 [si] 和/或 [di] 中的内存指针一起使用(esi 和 edi 在 32 位模式下)并且不接受常量抵消。
mov si, Array1
mov di, Array2
cld
cmpsb ; compares two bytes - from [si] and [di] and then increments si and di by 1
请阅读说明参考手册以获得更详细的说明。
注意:只要您没有提供有关首选汇编语法的信息,我将在示例中使用 FASM 语法。如果您使用另一个汇编程序,您可能应该根据其语法编辑代码。