我正在使用Microsoft Visual C++ 2010 Express執行內聯彙編代碼。將字符數組的值移動到寄存器x86內聯彙編中
我有這種類型的代碼。重點是我需要訪問一個字符數組中的每個單個字符。下面只是一個不相關的例子,當它到達字符串的末尾(終止空字符)時,它將跳轉到結束,否則它將用新行分隔字符串的每個字符。
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
操作數大小是不明確的詞也可以是零/符號擴展。這必須是gnu樣式:'movzxb'或'eax,byte ...',(或者在某些方言字節ptr中) –
MS編譯器從'line'變量的聲明中推導出操作數的大小。 – chill