Есть ли код операции x86 для перемещения непосредственного байта в прямую ячейку памяти (без использования регистров)? Есть ли способ "переместить конкретный размер числа байтов в прямую ячейку памяти? То есть. MOV 10h,ffffh записать значение 16 в адрес памяти 65535? Если да, то какой код операции это, или мне нужно сначала сохранить адрес памяти в регистр? Ответ 1 Да. Код операции C6. Вы должны скачать копию документов Intel ISA, которые свободно доступны. К вашему следующему вопросу: полная кодировка вашего примера: c6 04 25 ff ff 00 00 10 opcode modr/m sib address immediate Ответ 2 Справочник по набору инструкций Intel Manual Volume 2 - 325383-056US сентябрь 2015 г. Раздел 3.2 "MOV-Move" имеет таблицу, содержащую: Opcode Instruction ---------------- ---------------- C6 /0 ib MOV r/m8, imm8 C7 /0 iw MOV r/m16, imm16 C7 /0 id MOV r/m32, imm32 REX.W + C7 /0 io MOV r/m64, imm32 Затем вы должны знать, что: r/m означает регистр или расположение памяти imm означает немедленный Итак, это те кодировки, которые вы ищете. Более эмпирически вы могли бы просто попробовать и декомпилировать: mov byte [0x1234678], 0x9A Тогда: as --32 -o a.o a.S nasm -felf32 -o a.o a.asm дает: 00000000 <.text>: 0: c6 05 78 56 34 12 9a movb $0x9a,0x12345678 Итак, мы заключаем, что c6 - это код операции с ModR/M 05 и следующий результат.
Ответ 1 Да. Код операции C6. Вы должны скачать копию документов Intel ISA, которые свободно доступны. К вашему следующему вопросу: полная кодировка вашего примера: c6 04 25 ff ff 00 00 10 opcode modr/m sib address immediate
Ответ 2 Справочник по набору инструкций Intel Manual Volume 2 - 325383-056US сентябрь 2015 г. Раздел 3.2 "MOV-Move" имеет таблицу, содержащую: Opcode Instruction ---------------- ---------------- C6 /0 ib MOV r/m8, imm8 C7 /0 iw MOV r/m16, imm16 C7 /0 id MOV r/m32, imm32 REX.W + C7 /0 io MOV r/m64, imm32 Затем вы должны знать, что: r/m означает регистр или расположение памяти imm означает немедленный Итак, это те кодировки, которые вы ищете. Более эмпирически вы могли бы просто попробовать и декомпилировать: mov byte [0x1234678], 0x9A Тогда: as --32 -o a.o a.S nasm -felf32 -o a.o a.asm дает: 00000000 <.text>: 0: c6 05 78 56 34 12 9a movb $0x9a,0x12345678 Итак, мы заключаем, что c6 - это код операции с ModR/M 05 и следующий результат.