我正在嘗試在ASM中編寫一個簡單的for循環。我需要訪問兩個陣列,其是用C代碼段的外++(爲OrigChars和EncrChars)C++/ASM - 「操作數大小衝突」,「不正確的操作數類型」
char temporary_char;
__asm {
xor ebx, ebx
jmp checkend
loopfor: inc ebx
checkend: cmp ebx, len
jge endfor1
mov bx, word ptr[ebx + OrigChars]
mov temporary_char, bx //error - "operand size conflict"
push eax
push ecx
movzx ecx, temporary_char
lea eax, EKey
push eax
push ecx
call encrypt1
add esp, 8
mov temporary_char, al
pop ecx
pop eax
mov EncrChars[ebx], temporary_char //error - "improper operand type"
jmp loopfor
}
與上面已經評論錯誤的行。
概括地說,爲什麼不這些工作對我來說:
- MOV temporary_char,BX // temp_char = OChars [I]
- mov EncrChars [ebx],temporary_char // EncrChars [ebx] = temporary_char;
您確定'mov bx,word ptr [ebx + OrigChars]'不起作用嗎?它看起來像問題insn的子彈點列表中唯一正確的。 (順便說一句,請參閱[x86標籤wiki](http://stackoverflow.com/tags/x86/info)瞭解大量有用的鏈接。 –