小编use*_*787的帖子

比较装配中的向量

我有两个向量; 其中一个(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

6
推荐指数
1
解决办法
3271
查看次数

标签 统计

assembly ×1