2

Microsoft Visual C ++2010Expressを使用してインラインアセンブリコーディングを行っています。

私はこの種のコードを持っています。重要な点は、文字の配列の各単一文字にアクセスする必要があるということです。以下は、それほど関連性のない例です。文字列の最後(終了するヌル文字)に達すると、ジャンプして終了するか、文字列の各文字を改行で区切ります。

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ビットaはですal。これにより、8ビットが移動します。

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

ゼロ拡張バイトロードinsnを使用しますmovzx

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