Здравствуйте! У меня такой вопросик: Есть некая программка в машинных кодах, расположенная ниже. :0001.0100 50 push ax :0001.0101 51 push cx :0001.0102 B0B6 mov al, B6 :0001.0104 E643 out 43, al :0001.0106 B000 mov al, 00 :0001.0108 E642 out 42, al :0001.010A B00A mov al, 0A :0001.010C E642 out 42, al :0001.010E E461 in al, 61 :0001.0110 50 push ax :0001.0111 0C03 or al, 03 :0001.0113 E661 out 61, al :0001.0115 B90400 mov cx, 0004 :0001.0118 E2FE loop 0118 :0001.011A 58 pop ax :0001.011B E661 out 61, al :0001.011D 59 pop cx :0001.011E 58 pop ax :0001.011F B8004C mov ax, 4C00 :0001.0122 CD21 int 21 По адресу 0001.0118 находится код E2FE. Он соответствует команде loop 0118. Понятно, что в цикле loop 0118, 0118 получается складыванием FE c 11A, т.е. 00FE+011A. А как вычислить, что должно быть написано вместо FE в коде E2FE, чтобы выполнялась команда loop 0110, вместо loop 0118? Заранее благодарю!
) ну спросил, если ты понял, что FE+11A=118 (на калькуляторе это лучше посчитать, всключив Byte размер и сложив FE и 1A, т.е. берем только байт от слова 011A, чтобы знаковое сложение было), то в чем сложность обратного расчета? если нужно на 110, а не на 118, то что нужно прибавить к 11A чтобы получить 110? : 10-1A=F6 (адрес_куда_нужно_прыгнуть-адрес_следующей_за_loop_команды) т.е. получается E2F6. проверка: 11A+F6=110...