Пытаюсь поковырять дизассемблированный MBR так, чтобы при сборке обратно в бинарник он в точности совпадал с оригиналом. В некоторых местах не вполне очевидно, как это делать.
К примеру, имеем такую инструкцию:
mov si,sp
В справочнике указаны два вот таких варианта опкода:
89 /r | MOV r/m16,r16
8B /r | MOV r16,r/m16
В данном случае подходят оба варианта, т.к. оба аргумента - регистры, но в оригинале используется второй вариант, а NASM выдаёт мне первый. Есть ли способ мягко (т.е. без костылей типа ручного задания машинного кода через db) намекнуть NASM-у, что здесь нужно использовать второй опкод?