jmp в E9 как определить операнд машинного кода ? Например jmp на позицию 0248 кодируется как " e9 45 01 " Как можно самому расчитать операнд , если я знаю что например нужно прыгнуть на 300h ?
допустим текущая позиция ip = 100h , нужно прыгнуть на 300 h ...относительно текущей позиции какая будет команда ? e9 .... и ....как рассчитать ?
ну и считаете : 5 байт на jmp, то есть 300h - 5 = 2FBh и записываете в обратном порядке байты: E9 FB 02 00 00
ruzmaz Судя по чему ? Les555 Вы что не знаете какой режим у камня ? Добавление префиксов на формулу не повлияет, так же как и мод.
Я изучаю 16 разрядный ассемблер, а о том что на режим компиляции среда может повлиять (сколлько вычитать ) я воще не знал. Спасибо за помосчь!
Les555 Такое кстати не только с 0xE9, но и много других к примеру 0xE8, jnX \ jX переходы, но на них уже не 5 вычитать нужно, а двойку! Логика тут проста нужно учитывать размер самой инструкции
EvilsInterrupt а можно не морочить начинающим голову циферками и сказать, что операнд = адрес назначения - адрес следующей инструкции