ОБСУЖДЕНИЕ

Правильные и неправильные команды (ассемблер)

1 ответов 4,4 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Определить неправильную команду для .386p
1. xor eax,[ebx]
2. mov dword ptr [ebx],1
3. mov [esi+di+2],bl
4. xor [ebx+2],esi

Определить неправильную команду для .486p
1. xor eax,ebx
2. mov dword ptr [ebx],1
3. mov [esi+2],bx
4. xor [ebx+2],0ffffh


Помогите пожалуйста разобраться, и главное, не просто ответ - а почему именно так... Спасибо!
 
в первом случае ошибка в строке 3 - mov [esi+di+2],bl
ошибка из-за того, что процессор не поддерживает такой режим адресации, правильно будет mov [esi+edi+2],bl

во втором случае ошибка в строке 4 - xor [ebx+2],0ffffh
ошибка в том, что ассемблер не может решить, к памяти какого размера по адресу [ebx+2] обращаться
надо явно указать размер операнда - xor word ptr [ebx+2],0ffffh или xor dword ptr [ebx+2],0ffffh