потому что нет такого покода
Но метка то есть и как такое получилось?
так эт на jmp ошибка? или на 66 строку
На jmp такое пишет
Походу это уже эмулятор глючит, я такое замечал кстати )))
попробуй near jmp ....
Вообще ошибка
глючит, у мя норм компиляция прошла
У тебя Windows 32 бита
И как ты запустил этот код?
16-ти битный код совместим с x32 и x64
я его не запускал
Ну приложение не запуститься
Запустится, просто нужно структуру PE собрать для него.
format PE
не тем путем ведешь. он com делает. пусть в досе запускает.
Только что хотел написать, что работать всё равно не будет. Там вывод для DOS используется, нужно тогда переписать на WinAPI
Да в том то и дело сначала дос нужно освоить
Ну тогда ставьте DOS себе полноценно на ПК, и там пишите и запускайте и отлаживайте. А так костыли одни..
Да я нашел просто среду для изучения ассемблера вот и разбираюсь а если что то более новое то там уже будет сложнее да и ide хорошей с отладчиком не знаю
кстати, только щас понял, у тя там все работает, только медленно. запусти на выполнение и смотри резульатт
А медленно почему?
потому что emu
А почему в консоли вывод есть а в компилированном нету 😕?
у тебя какого-то фига ассемблер вставил 32ух битный джамп вместо 16ти битного
дело не в компиляции просто эмулятор не знает что за опкод 66h, и если это эмулятор 8086 то и не должен, этот опкод только в 386ых появился, что переключать режимы инструкций между 32мя и 16тью битами
А как такое могло быть то?
не запустится, поскольку код расчитан на com, такой только под виртуалкой запустить
это косяк ассемблера, либо надо ему просто сказать что ассемблируешь под чистый 8086, а не под 386
С чего это не запустится? Всё там запустится, опять же, единственное что работать вывод и остальные используемые прерывания не будут.
И как такое сделать?
код вообще не будет работать корректно, у тебя сегментные регистры будут как селекторы работать
Там они вообще не используются. Там регистры только
это надо документацию на твои инструменты читать
Честное слово документации везде скудная такая ну и плюс всё прочитать не успеваю
в любом случае, код должен быть рассчитан на работу в 16ти битном защищённом режиме, ни в коем случае не в реальном
Не понимаю о чём речь, но я не говорил, что любой код можно запустить, просто добавив PE структуру. Понятное дело, нужно будет кое-что подправить или переписать. Но конкретно в этом случае там очень мало переписывать, а сами регистры и большинство инструкций совместимы.
у тебя x1 dw, а inc dword[x1], поэтому ассемблер вставил 66, которого эмулятор очевидно не знает.
Обсуждают сегодня