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

  • Автор темы Trishi
  • Дата начала
T

Trishi

#1
Определить неправильную команду для .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


Помогите пожалуйста разобраться, и главное, не просто ответ - а почему именно так... Спасибо!
 
M

Maxx

#2
в первом случае ошибка в строке 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