Формула верна, предполагая, что инструкция перехода имеет ровно 5 байтов, а FROM
является адресом этой инструкции перехода. Если длина не 5 или FROM
не там, где находится jmp, это неверно.
С этим вы получаете по модулю 2 32 арифметика:
2980000H- (6259326BH + 5) = 0A03ECD90H.
Если вы не понимаете, как 2980000H - 62593270H равно 0A03ECD90H в 32 битах, представьте на мгновение, что вы вычитаете из 102980000H вместо 2980000H, то есть у вас установлен 33-й бит. Тогда у вас есть 102980000H - 62593270H = 0A03ECD90H. И вы можете проверить, что 102980000H = 62593270H + 0A03ECD90H. Но поскольку у вас есть только 32 бита для вычисления, этот 33-й бит, каким бы он ни был, не повлияет на сумму и разницу. Таким образом, вы просто вычитаете два числа как 32-разрядные числа и берете менее значимые 32-разрядные значения результата, игнорируя любые выдающиеся заимствования из битов, выходящих за пределы 32-го числа.
И 0A03ECD90H должен быть закодирован в инструкции jmp от младшего байта до старшего байта, поэтому вы получите следующую последовательность байтов, кодирующую инструкцию:
E9, 90, CD, 3E, A0.
A аналогичный вопрос задавался ранее.