我有一个由char * list表示的字符串,字符串大小是count,我想通过移动两个位置来更改字母,并检查它是否是字母A.我有这样的代码
mov esi, list;
xor ecx, ecx;
loop:
mov ebx, [esi + ecx];
inc ecx;
add ebx, 2; //character shifts two positions
cmp ebx, 0x41;
je end;
cmp ecx, count;
jl loop;
end:
我也试试
mov al, byte[ebx];
cmp al, 0x41;
但它也不起作用。我想知道如何比较这些字母。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
如果您将EBX更改为BL,您的代码将会正常工作。字符大小为1字节。
就像现在写的那样,无法查看是否找到了字母A.这两种情况都可以使用 end:标签。
LATE CATCH
add ebx, 2; //character shifts two positions
通常对换档的理解不是你对这个加法所做的! 如果你真的意味着添加,那么为什么不比较值(0x41 - 2)?
另一方面,如果移位实际意味着移位(SHL或SHR),那么呈现的代码(并通过使用BL进行纠正)将永远不会产生字母" A"。这是因为" A"的位模式这是0100_0001b根本无法通过转移2个位置来获得它是左侧还是右侧。