我正在使用MASM。
我想检查程序集中字符串的第二个(和第三个)字符。
我试过了:
; String is in DWORD operandA
mov eax, OFFSET operandA+1
cmp eax, '!'
je Fact
这不起作用。有什么建议吗?
答案 0 :(得分:2)
你需要取消引用指针以获取实际字符:
mov eax, OFFSET operandA+1
mov cl,byte ptr [eax]
cmp cl,'!'
或
mov eax, OFFSET operandA
mov cl,byte ptr [eax + 1]
cmp cl,'!'
这会保留eax,因此您可以使用以下方法比较第二个字符:
inc eax
mov cl,byte ptr [eax]
cmp cl,'?'
或
mov cl,byte ptr [eax + 2]
cmp cl,'?'
答案 1 :(得分:1)
为什么不需要的电影?你可以这样做:
;szSomeString BYTE "?!@ABC", 0
mov eax, offset szSomeString
xor ebx, ebx
inc ebx
cmp byte ptr [eax + 1 * ebx], "!"
je Yes
jmp @F
; Second char no match
Yes:
; Second char match
或
mov eax, offset szSomeString
inc eax
cmp byte ptr [eax], "!"
je Yes
jmp @F