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

Ассемблер? Это просто! Учимся программировать


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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 502
от 29.07.2006, 14:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 331, Экспертов: 24
В номере:Вопросов: 1, Ответов: 3


Вопрос № 50046: Приветствую вас, уважаемые эксперты и читатели. Вопрос чисто теоретического плана. В COM-файлах задается смещение командой ORG 100h, верно? Для сей команды не генерируется машинного кода, так? Следует вопрос - как shell определяет, что необх...

Вопрос № 50.046
Приветствую вас, уважаемые эксперты и читатели.

Вопрос чисто теоретического плана. В COM-файлах задается смещение командой ORG 100h, верно? Для сей команды не генерируется машинного кода, так? Следует вопрос - как shell определяет, что необходимо установить значение счетчика команд равное 100h? Только по расширению com в имени файла?

Второй момент, используется ли ORG в EXE-файлах? Генерируются ли машинные коды или команда подменяется каким-либо набором инструкций?

И третий момент. Инструкция end start. Как оболочка получает адрес начала программы (равно главной функции)? Должна ли главная функция быть первой в листинге на asm или она помещается на нужное место линкером? Как вообще это выглядит?
Отправлен: 24.07.2006, 14:21
Вопрос задал: Uranium (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: EPDSota
Здравствуйте, Uranium!

1. Shell определяет по содержанию и расширению - если файл имеет EXЕ заголовок - стартовый адрес берется из заголовка, если нет - то он считается COM- файлом и ему даеться стартовый адрес 100.
2. Используется. Машинных кодов нет. Просто в заголовке ЕХЕ пишеться, что файл стартует с данного адреса.
3. В листинге быть первой необязательно. Адрес начала программы пишется в заголовке файла.
---------
Открыть глаза навстречу солнцу
Ответ отправил: EPDSota (статус: Специалист)
Ответ отправлен: 24.07.2006, 14:34
Оценка за ответ: 5
Комментарий оценки:
Спасибо за ответ и указание направления :-)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Uranium!
Вот тут найдешь ответы на многие вопросы
http://www.megalib.com/books/189/formats.pdf
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Студент)
Ответ отправлен: 24.07.2006, 15:24
Оценка за ответ: 5
Комментарий оценки:
Что и было мне необходимо.Благодарю

Отвечает: Волков Павел Юрьевич
Здравствуйте, Uranium!
Формат .com возник во времена DOS, досовский загрузчик файлов размещал с 0h адреса PSP заголовок, а код программы по адресу 100h. Виндовый загрузчик загружает .com файл (в системе загрузочные файлы могут иметь расширение .exe, .com, .bat, .cpl, .scr, .cmd ), определив его причастность к DOS программам загружает ntvdm.exe, который обеспечивает работу программы(режим совместимый с MSDOS), в целях совместимости загружает по родному 100h. .COM программа состоит из одного сегмента в 64KB, размещая в нем код, данные и стек. org 100h - директива линкеру, пофиксить адреса (смещения) в программе на начинающиеся со смещения 100h для создания .com файла. Код соответственно, для org 100h, не генерится и в .exe файлах она не используется. end start указывает на точку входа программы(По end start определяется точка входа), при этом start может быть как меткой, так и названием функции. У .сом программы нет главной функции, программа должна начинаться с точки входа (org 100h), при необходим ости можеш расположить начальный код ниже, но должен передать управлени через jmp startcode. PS:о запуске программ в Windows написано у Соломона, Руссиновича"Внутреннее устройство Windows" Успехов.
---------
Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: 3-ий класс)
Ответ отправлен: 24.07.2006, 20:49
Оценка за ответ: 5
Комментарий оценки:
Благодарю за развернутый ответ и участие :)


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное