如何在汇编语言中将一个数组与另一个数组进行比较



我试图将 array1 与 array2 进行比较。这是我代码的一部分,但它不起作用。

mov si, 00
mov di, 00    
Compare:
cmp array1[si], array2[di]
je checking
jmp compare    

我正在做一个汇编程序,要求用户输入字符串。 第一个字符串标记为输入。 第二个字符串是旧字符序列。第三个字符串是新替换的字符序列。


样本:

输入:哈塔塔特

旧字符串:在

替换为:eh

输出:

嘿嘿嘿

该指令cmp,因为大多数 x86 指令不能同时处理两个内存位置。您需要在寄存器中加载其中一个参数。例如:

mov   al, [Array1+si]
cmp   al, [Array2+di]

也许,有一组指令可以同时处理两个内存参数 - 字符串指令作为lods, stos, cmps, movs, ...这些指令始终适用于 [si] 和/或 [di] 中的内存指针(32 位模式下的 esi 和 edi(,并且不接受常量偏移。

mov   si, Array1
mov   di, Array2
cld              
cmpsb  ; compares two bytes - from [si] and [di] and then increments si and di by 1

请阅读说明参考手册以获取更详细的说明。

注意:只要您没有提供有关首选程序集语法的信息,我就会在示例中使用 FASM 语法。如果您使用的是其他汇编程序,则可能应该根据其语法编辑代码。

相关内容

  • 没有找到相关文章

最新更新