Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 68
от 11.06.2005, 21:20

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 4


Вопрос № 21857: Здравствуйте, эксперты! В приложении прога создающая бинарник (?) для загрузочного сектора. Участок написанный на асме не совсем верен. Что надо исправить? Спасибо....

Вопрос № 21.857
Здравствуйте, эксперты!
В приложении прога создающая бинарник (?) для загрузочного сектора. Участок написанный на асме не совсем верен. Что надо исправить?
Спасибо.

Приложение:

Отправлен: 06.06.2005, 21:10
Вопрос задал: 3BEPEK (статус: 3-ий класс)
Всего ответов отправлено: 4

Отвечает: DSota
Здравствуйте, 3BEPEK!
Команда "lea bx,buffer" тут не подходит, так как в прерывании используеться регистр ES вместо DS. И его придется устанавливать вручную...
И еще подводный камень - если программа рабочая - то с дискеты она может и не работать - адрес запуска другой.

Приложение:

---------
Открыть глаза навстречу солнцу.

Ответ отправил: DSota (статус: Практикант)
Отправлен: 07.06.2005, 08:33

Отвечает: sir henry
Здравствуйте, 3BEPEK!
Не сильно разбираюсь в ассемблере, но в регистр BX Вы заносите смещение, а база должна находиться в регистре ES. Его не нужно явно задавать?
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 07.06.2005, 10:14

Отвечает: Ayl
Здравствуйте, 3BEPEK!
Адрес буфера должен задаваться с помощью регистров ES:BX. При работе с Паскалем значение регистра ES не устанавливается на сегмент данных. Туда указывает только регистр DS. Поэтому перед вызовом 13-го прерывания нужно выполнить установку регистра ES:
push ds
pop es
Старое значение регистра ES можно сохранить перед изменением, а после вызова int 13h восстановить.

---------
Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 07.06.2005, 11:29

Отвечает: Котиев Зураб
Здравствуйте, 3BEPEK!
в es не загружен сегмент buffer .под pascal давно не программил попробуй вместо
lea bx,buffer использовать les bx,buffer
и еще прога для загруз. сектора должна сама настраивать сегменты данных и стека и груз-ся по адресу 7C00h такчто обычный com не подойдет
Ответ отправил: Котиев Зураб (статус: 5-ый класс)
Отправлен: 07.06.2005, 12:01


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться
Вспомнить пароль

В избранное