|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.01.2012, 03:45 | #1 |
Форумчанин
Регистрация: 15.03.2011
Сообщений: 272
|
Загрузка второй программы(дискета)
Всем привет!
Есть программа, которая грузится с дискеты Код:
Вторая программа: Код:
ЗЫ запускаю так: nasm -fbin -o <файл> <файл> второй так же dd if=/dev/zero of=disk.img bs=1024 count=1440 dd if=<файл1> of=disk.img conv=notrunc dd if=<файл2> of=disk.img conv=notrunc seek=1 qemu disk.img Последний раз редактировалось Sna1L; 25.01.2012 в 03:55. |
25.01.2012, 08:39 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
1)кто будет расширять первый сектор до 512 байт?(а то пишите второй подрят за первым)
2)кто будет ставить в нем загрузочную метку. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
30.01.2012, 14:43 | #3 |
Форумчанин
Регистрация: 15.03.2011
Сообщений: 272
|
Извиняюсь за задержку.
С размерами программы всё нормально. До 510 байта заполняется нулями, и последние 2 специальные. Т.е. вместо загрузки с дискеты можно вывести хелло ворлд и всё будет работать. |
30.01.2012, 15:17 | #4 |
Пользователь
Регистрация: 27.01.2012
Сообщений: 37
|
Код:
2. MOV AX, 0x7E00 затирает al ... 3. cs в первой проге равен 0? если нет то во второй org 7e00 неправильно удачи |
04.02.2012, 16:43 | #5 |
Форумчанин
Регистрация: 15.03.2011
Сообщений: 272
|
2alexey2, ошибку с АХом исправил.
dl в ноль установил. Не заработало Не могли бы Вы поподробнее рассказать, про третий пункт? И зачем обнулять dl я тоже не понял |
04.02.2012, 16:49 | #6 |
Форумчанин
Регистрация: 15.03.2011
Сообщений: 272
|
cmp ax,0 дает единичку
|
04.02.2012, 17:16 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
cmp не меняет регистр.
нужно mov ax,7E01h уж тогда. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
06.02.2012, 01:29 | #8 | |
Форумчанин
Регистрация: 15.03.2011
Сообщений: 272
|
Вы не поняли. Я отвечал посту выше.
Цитата:
mov ax,cs cmp ax,0 дает тру. зф=1 |
|
06.02.2012, 09:56 | #9 |
Пользователь
Регистрация: 27.01.2012
Сообщений: 37
|
dl в 0 - означает что выполнять чтение с дискеты! :-)
про cs я просто спросил, вдруг переустанавливал, по умолчанию он и должен быть в 0. Так что тут все ок. У меня сомнения по поводу print-а. Можно попробовать напечатать символ по месту, для проверки что вторая прога вообще загружается и запускается. Во второй файл попробуй Код:
И еще, при чтении дискет неплохо бы проверять статус операции (в cf). При ошибках делают ресет (функция 0, 13h) и повтор чтения |
06.02.2012, 12:04 | #10 |
Пользователь
Регистрация: 27.01.2012
Сообщений: 37
|
Код:
загрузка будет произведена по адресу 7E00:0, а нужно по 0:7E00, т.е. по 7E0:0. Вот |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Второй блок программы Delphi | Начинающий програм | Помощь студентам | 0 | 09.12.2011 15:17 |
Запретить второй запуск программы. Приложение без окон | Lauri | Общие вопросы Delphi | 18 | 05.07.2011 15:48 |
Загрузочная дискета ??? | spamer | Общие вопросы Delphi | 14 | 08.02.2009 22:07 |
Lingvo 11. Установочная дискета. Возаращаемся в 20-й век ))) | Altera | Свободное общение | 8 | 06.08.2008 21:11 |