我正在使用Microsoft Visual C ++ 2010 Express进行内联汇编编码。
我有这种代码。重点是我需要访问一个字符数组的每个单个字符。下面只是一个不相关的例子,当它到达字符串的末尾(终止空字符)时,它将跳转到完成,否则它将用新行分隔字符串的每个字符。
line[10] = "I am Kevin";
format[] = "%c\n";
_asm {
mov ebx,0
loop:
cmp line[ebx],0
jz finish
mov eax, line[ebx]
push eax
lea eax, format
push eax
call printf
jmp loop
finish:
....
}
不知怎的,我一直有这条线的错误:
mov eax, line[ebx]
继续说error C2443: operand size conflict
答案 0 :(得分:1)
“eax
”描述了32位寄存器a
。
寄存器a
的低8位为al
。这将移动8位:
mov al, line[ebx]
答案 1 :(得分:0)
使用零扩展字节加载insn movzx
:
movzx eax, line[ebx]