> man operating_systems
Модераторы: Roman I Khimov, Wanderer, Dron
Автор Добавил
BlastBox
Четверг 28.09.2006 21:11
ID пользователя #493
Зарегистрирован: Суббота 19.11.2005 12:17
Местонахождение: Самара
Сообщений: 13
Здравствуйте! Сейчас пробую разобраться с простешим загрузчиком, пока не получается никак. В чём дело, ума не приложу .Помогите пожалуйста. Вот есть наипростейший ассемблерный файл загрузчика (из уроков #3 WYOS):

ORG 0

jmp 07c0h:start

start:

mov ax, cs
mov ds, ax
mov es, ax

reset:

mov ax,00
mov dl,0
int 13h
jc reset

read:

mov ax,1000h
mov es,ax
mov bx,0

mov ah,2
mov al,5
mov ch,0
mov cl,2
mov dh,0
mov dl,0
int 13h
jc read

jmp 1000h:0000

times 510-($-$$) db 0
dw 0aa55h


Это код загрузчика, записываемого в 1 сектор дискеты.
Также имеется файл, loadable_program.asm:


mov ah, 9
mov al, '='
mov bx, 7
mov cx, 10
int 10h

hang:
jmp hang


И файл, объединяющий загрузчик и программку Disk_image.asm:


%include 'sampleboot.asm'
%include 'loadable_program.asm'


Компилируем Disk_image.asm в Disk_image.bin и с помощью wba.com записываем его на дискету. Т.е., по идее получается первый сектор - загрузчик, второй сектор - программка, так? А код загрузчика должен читать программку, начиная со второго сектора дискеты. Но вот при перезагрузке, дискета грузится, но программка не запускается. Просто мигает курсор, хотя по идее должно быть выведено 10 знаков "=".
В чём проблема, я никак понять не могу.. а вы?
Наверх
Сайт
Hmmm
Пятница 29.09.2006 12:02

ID пользователя #719
Зарегистрирован: Среда 09.08.2006 11:29
Местонахождение: Москва
Сообщений: 108
Попробуйте, в случае ошибки, выводить на экран содержимое регистра AH, и номер прерывания которое его выдало.
И потом, может я конечно ошибаюсь, но Вы точно уверены что в начале чередуются сектора, а не головки? Был у меня опыт когда обнаружил что на дискетном имидже в начале чередовались головки, потом сектора ну и дорожки в последнюю очередь. Вообще говоря это логично, ведь переход с одной стороны на другую самый быстрый.
Наверх
Roman I Khimov
Пятница 29.09.2006 13:42

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
BlastBox написал(а) ...
Т.е., по идее получается первый сектор - загрузчик, второй сектор - программка, так? А код загрузчика должен читать программку, начиная со второго сектора дискеты.

Все верно.

Пример полностью рабочий, проверялся не раз и не два. Единственное, что мне приходит на ум, так это актуальность предупреждения в README архива:
README написал(а) ...
При использовании других компиляторов, или других версий NASM, которые не считают flat binary
формат стандартным, помните, что формат выходного файла должен быть flat binary!

Поищите что-нибудь на эту тему, попробуйте дизассемблировать полученный бинарник. Можно, в принципе, его сюда в качестве приложения положить, посмотрим. Хотя, я вот сейчас скомпилировал это дело, вроде бы все нормально.


Греби и улыбайся!
Наверх
Сайт
 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System

© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.