Я пытаюсь написать простой цикл в ASM. Мне нужно получить доступ два массива, которые написаны за пределами фрагмента кода в 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
}
строки с ошибками на уже комментировали выше.
В двух словах, почему не будет это работа для меня:
- мов temporary_char, BX // temp_char = OChars [я];
- mov EncrChars [ebx], tempor_char // EncrChars [ebx] = tempor_char;
Вы уверены, что 'mov bx, word ptr [ebx + OrigChars]' не работает? Он выглядит как единственный правильный в списке маркеров проблемных insns. (Btw, см. [X86 tag wiki] (http://stackoverflow.com/tags/x86/info) для большого количества полезных ссылок. –