Объясните принцип формирование машинного кода операции LOOP (или JMP) Напримеря, я получаю: E2FE E2 - это код операции (это ясно), а вот откуда берётся FE? На порядковый номер операции (там, где метка) (06h) что-то не похож. Объясните, пожалуйста.
Это не порядковый номер операции, а смещение куда прыгать, FE (-2) значит на 2 байта назад, 7F (+127) - на 127 байт вперед
Как определяется отрицательность (что назад)? Ведь, если не проделовать соответсвующие махинации, то FE=254
FE=254 это если смотреть с беззнаковой стороны, а если с учетом знака, то байт делится на 2 (половина чисел отдается отрицательным значениям, половина - положительным) 0x00 - 0x7F (0 ... 127) 0x80 - 0xFF (-128 ... -1)
The "label" operand must be within -128 or 127 bytes of the instruction following the loop instruction. т.е. больше 07fh уже отрицательное число для loop.