2

我正在使用 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

4

2 回答 2

1

" eax" 描述 32 位寄存器a

寄存器的低 8 位aal. 这将移动 8 位:

mov  al, line[ebx]
于 2012-11-24T19:52:41.840 回答
0

使用零扩展字节加载 insn movzx

  movzx  eax, line[ebx]
于 2012-11-24T19:52:58.060 回答