我有两个向量; 其中一个(VectorA)由用户引入,另一个(VectorB)包含一堆单个数字.它们都是char矢量.这个想法是程序必须逐个比较VectorA的数量,以确保它们是有效数字,通过将它们与VectorB中的数字进行比较,VectorB包含所有可用的有效数字.
如果VectorA中的所有数字都包含在VectorB中,则程序返回0.如果VectorB中没有任何VectorA数,则程序返回1.退货登记是EAX.
这是代码,我希望它不是太乱,但请耐心等待(如果我使用错误的术语,也请原谅,因为英语不是我的母语)...
MOV edi, 5 ;VectorA is a 5 digit vector.
character_1:
mov rcx, 10 ;VectorB is a 10 digit vector.
character_2:
mov eax, [ebx+edi-1] ;ebx contains the address of VectorA
cmp eax, [VectorB+rcx-1]
je found_it
loop character_2
mov eax, 1
jmp end_comp
found_it:
dec edi
cmp edi, 0
jne character_1
mov eax, 0
end_comp:
Run Code Online (Sandbox Code Playgroud)
首先,我知道我可能不应该将其用作EAX索引,但在尝试使用其他一些注册表EAX之后,唯一一个不会让人感到YASM惊慌失措.
问题是......它似乎不起作用.第一个验证循环工作正常.如果VectorA的最后一个数字是9,它实际上转到found_it标签并执行它必须做的事情.但是,无论第二个数字是什么,它都不会在VectorB上找到它.
出于调试目的,我在mov esi, [VectorB+rcx-1]主线正上方添加了一条CMP线,其中比较了两个值.我发现他们第一次比较,ESI有正确的价值.但是,程序第二次通过该指令时,ESI返回一个14648值,这当然 …
assembly ×1