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

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


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

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

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

Выпуск № 366
от 08.02.2006, 23:09

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


Вопрос № 34679: Прет...в чем разница ы коде программы для создания .com и .exe Понятно, что строку org 100h мы убираем...надо ещё дабавить куда-то сегмент стека??? И вообще какие ещё различия...именно в коде. Возьмем например вот эту программку...как она дол...

Вопрос № 34.679
Прет...в чем разница ы коде программы для создания .com и .exe
Понятно, что строку org 100h мы убираем...надо ещё дабавить куда-то сегмент стека??? И вообще какие ещё различия...именно в коде.
Возьмем например вот эту программку...как она должна выглядеть чтобы мы на выходе получили .exe ?

Приложение:

Отправлен: 03.02.2006, 16:18
Вопрос задал: Denton (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Ayl
Здравствуйте, Denton!

При запуске EXE-программы регистр DS указывает на PSP, то есть вначале нужно явно установить его на сегмент данных. Нужно определить сегмент стека.
Больше никаких различий, если не считать того, что EXE может быть любого размера, а COM - не больше 64К.
Ну и завершать EXE-программу лучше через функцию 4Ch прерывания 21h, а не через int 20h или команду ret, как COM-программу.
В приложении - код для EXE.

Приложение:

---------
Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени

Ответ отправил: Ayl (статус: Академик)
Отправлен: 03.02.2006, 18:26

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Denton!
Не с той стороны заходишь :)
Чтобы продемонстрировать это, отвечу на последний вопрос:
программка может оставаться как есть...Надо только слинкировать без параметра /t.
В результате получишь exe!
Так вот - тебе надо разобраться в таких вещах, как сегменты, модели памяти,
как происходит загрузка COM и EXE файлов, а также нелишним будет знание того,
что хранится в заголовке EXE файла.
Тогда, кстати, станет понятно для чего для COM-а обязательно ORG 100h и точка входа тоже равная 100h, а для EXE не важно.
Станет понятно, что COM не может быть по размеру большим 64к
Станет понятно, что если в программе есть несколько сегментов, включая стек,
то программа может быть только EXE

---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Студент)
Отправлен: 03.02.2006, 18:39

Отвечает: Sager
Здравствуйте, Denton!
Не только сегмент стека, но и данных(для переменных), а также модель памяти, кот будет использоваться, кстати вместо int 20h нужно использовать int 21h:

model small ; модель памяти, используемая для ЕХЕ(также можно
;использовать compact, medium, large и huge)
stack 100h
.data
Mes db "Hello!!!$"
.code
Start:
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset Mes
int 21h
mov ax,4C00h
int 21h ; функция DOS "завершить программу"

end Start
Ответ отправил: Sager (статус: Практикант)
Отправлен: 03.02.2006, 18:45


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.13 от 07.02.2006
Яндекс Rambler's Top100

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

В избранное