| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > Загрузчик и ядро ОС |
| Автор: Merlin27 1.10.2006, 22:13 | ||
| Здравствуйте. Вобщем в универе изучаю создание ОС. Загрузчик нам дали.... причем он взят вот отсюда http://www.codenet.ru/progr/os/step7.php Я написал ядро. Чтото типа "Hello world!". Там просто выводилась строка. Потом для следующих заданий мне понадобилось выводить строку посимвольно. Так вот применял следующие функции БИОСа: int 10h 09h int 10h 0eh int 10h 0ah Когда запускаю ядро под виндой, то все нормально. Когда задаю код символа в al вручную - тоже все выводит. Но когда пытаюсь брать код следующего символа из памяти (где хранится строка), то при загрузке такого ядра как ОС - с дискеты при помощи загрузчика - выводится какаято белиберда (причем тот же код в винде работает нормально). В итоге на экране вместо "test" выводится вот это "K!! " вобщем левые какието символы Не могу понять в чем дело. Под виндой работает. С дискеты - нет. Причем строки командами int 10h 1301h и т.п. нормально выводит. На всякий случай приведу код своего "ядра"
Бьюсь уже 2 дня. Понять не могу в чем дело. Подскажите плиз. |
| Автор: dumb 1.10.2006, 23:24 | ||
|
| Автор: Merlin27 2.10.2006, 19:07 |
| Да.. Я тоже потом додумался Эх.. че ж я раньше не додумался то |
| Автор: Merlin27 26.10.2006, 10:19 |
| dumb, Да я это и хотел сказать Просто int 10h 1301h для вывода строк использует es, а для lodsb нужен был ds |
| Автор: Dude03 26.10.2006, 13:41 |
Без сомнения, но какое это для тебя имеет значение. Ты же используешь прерывание. |
| Автор: Merlin27 26.10.2006, 18:17 |
| А очень просто |