Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Asm: Общие вопросы > Команда JMP не компилируется TASM |
Автор: iff 25.11.2010, 23:32 |
У меня в коде нужно поставить инструкцию JMP 0F80H:100H, но TASM выдает ошибку при ее компиляции. почему? как грамотно эту инструкцию записать в исходнике? Я нашел только один выход: вместо JMP 0F80H:100H написать DB 0EAH,00H,01H,80H,0FH (маш. код) |
Автор: 500mhz 26.11.2010, 00:51 |
не помню точно но по моему в тасме что то типа FAR нада было указывать |
Автор: spin2 26.11.2010, 12:40 |
iff, а что именно тебе пишут? Может просто слишком далеко прыгаешь? |
Автор: iff 26.11.2010, 14:20 |
JMP не может слишком далеко прыгать. Вот инструкции JE, JNE, JA и т.п. - да, они поддерживают только близкие переходы, а JMP может прыгать от 0000:0000 до FFFF:FFFF. Во всяком случае программа debug нормально транслирует эти инструкции (я ведь машинный код DB 0EAH,00H,01H,80H,0FH при помощи debug нашел, и он работает). 500mhz, указывал far, всеравно пишет Illegal immediate. Добавлено через 2 минуты и 4 секунды Illegal immediate значит Недопустим непосредственный операнд, т.е. нужно указывать адрес через память или регистр. странно, ведь debug нормально транслирует непосредственный операнд, может быть использовать дириктиву процессора... |
Автор: 500mhz 26.11.2010, 15:36 |
))) push push ret ну если че ))) |
Автор: iff 26.11.2010, 17:25 | ||
500mhz, пишу загрузочный сектор для диска (512 байт), поэтому не хочу применять громосткие решения. Да и просто хочу, что бы в том месте где нужно инструкция JMP была инструкция JMP Остановился пока что на том, чтобы использовать всавку машинного кода:
|
Автор: 500mhz 26.11.2010, 18:05 |
а таки надо прям на тасме это делать? |
Автор: Logree 27.11.2010, 11:59 |
fasm создан для того чтобы писать загрузочные сектора |
Автор: 500mhz 27.11.2010, 14:22 |
вот именно ))) в фасме jmp 0000:0000 компилится на ура |
Автор: newsoft 5.1.2012, 09:06 |
jmp far ptr 0f80h:100h |
Автор: iff 13.12.2016, 19:06 |
Спасибо |