Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите с загрузчиком

1.8K
29 сентября 2007 года
Evgeni
188 / / 14.06.2006
Пишу простой загрузчик, но столкунулся с такой проблемой, как вывести символы

IDEAL
model tiny

codeseg
start:
xor ax,ax
cli
mov ax,cs
mov ss,ax
mov ds,ax
lea sp,[start]
sti

mov si,offset msg
mov ah,0eh
lodsb ;здесь должны
int 10h ;были вывестись
lodsb ;три символа
int 10h ;
lodsb ;
int 10h ;

cli
hlt

msg:
db 'abs'
end start

но почему он выводит вообще другую инфу
Страницы:
261
11 ноября 2007 года
ahilles
1.5K / / 03.11.2005
СТОЙ!
зачем все эти извращения с созданием дескрипторов?
 
Код:
align 8
GDT:
    NULL_descr  db      8 dup(0)
    CODE_descr  db      0FFh,0FFh,00h,00h,00h,10011010b,11001111b,00h
    DATA_descr  db      0FFh,0FFh,00h,00h,00h,10010010b,11001111b,00h
    VIDEO_descr db      0FFh,0FFh,00h,80h,0Bh,10010010b,01000000b,00h
    GDT_size    equ     $-GDT

и больше ничего не надо! селектор для данных является одновременно селектором для стека.
1.8K
11 ноября 2007 года
Evgeni
188 / / 14.06.2006
Я вот только не пойму как вы формируете значение поля адрес в дескрипторе, вот вообще не догоняю. Мне намного проще понять когда я формирую дескриптор динамически.
349
12 ноября 2007 года
Phantom-84
656 / / 27.10.2005
А я не доганяю, почему ты можешь сформировать дескриптор динамически, но не можешь его прописать статически! Динамически нужно формировать дескрипторы только при необходимости. В данной ситуации такой необходимости нет. Я использовал макрос desc только потому, что мне так удобнее - не нужно обращаться к документации за тем, чтобы узнать, какой бит за что отвечает. Этот макрос формирует дескриптор по тем же самым правилам, что и программный код. Можно все записать явно - я показывал вариант из Линукса, ahilles только что показал тебе еще один вариант.

Бинарник в виде образа дискеты запустить в боксе элементарно. Берешь имеющийся конфиг-файл и изменяешь в нем след параметры:

boot: floppy
floppya: 1_44="имя файла с образом дискеты в кавычках", status=inserted

после чего запускаешь бокс с этим конфиг-фалом.
349
12 ноября 2007 года
Phantom-84
656 / / 27.10.2005
Цитата:
селектор для данных является одновременно селектором для стека.

Лучше, чтобы и видеобуфер находился в том же сегменте, что и данные. А про 16-разрядные и к тому же маленькие сегменты в PM лучше забыть.

Evgeni, насчет функции, формирующей дескриптор, - в данном случае, повторяю, она тебе совершенно не нужна. К тому же ты задаешь базу сегментов защищенного режима на основе значения cs. Так поступают опять-таки только тогда, когда не знают этого значения. В твоем случае база должна быть равна нулю, т.к. дополнительной директивы org я нигде не увидел. Я в начале тебе уже показывал, как можно располагать сегменты (столь титанический труд так и остался не востребованным :-) ). В твоей ситуации проще использовать FLAT-модель. Короче, вот работающий исходник, написанный на основе твоего кода, - можешь использовать...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог