русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Различия между программами в ЕХЕ - и СОМ - файлах


Дата добавления: 2014-11-28; просмотров: 2911; Нарушение авторских прав


Несмотря на то, что существуют служебные программы, например EXE2BIN, которые преобразует ЕХЕ -файл в СОМ -файл, однако нужно знать определенные различия между программой, выполняемой как ЕХЕ -файл и программой, выполняемой как СОМ-файл.

1. Размер программы.

Программа в формате ЕХЕ может иметь любой размер, в то время как СОМ-файл ограничен размером одного сегмента и не превышает 64 К. Размер СОМ-файла всегда меньше, чем размер соответствующего ЕХЕ-файла; одна из причин этого - отсутствие в СОМ-файле 512-байтового заголовка ЕХЕ-файла (префикса программного сегмента, PSP).

2. Сегмент стека.

В ЕХЕ-программе определяется сегмент стека, в то время как СОМ-программа генерирует стек автоматически. Таким образом, при создании ассемблерной программы, которая будет преобразована в СОМ-файл, стек должен быть опущен.

3. Сегмент данных.

В ЕХЕ- программе обычно определяется сегмент данных, а регистр DS инициализируется адресом этого сегмента. В СОM-программе все данные должны быть определены в сегменте кода.

4. Инициализация.

В ЕХЕ-программе выполняются запись нулевого слова в стек и инициализация регистра DS. Так как в СОМ-программе стек и сегмент данных не определены, то эти шаги отсутствуют. Когда СОМ-программа начинает работать, все сегментные регистры содержат адрес префикса программного сегмента (PSP) - 256-байтовый (100Н) блок, который резервируется операционной системой DOS непосредственно перед СОМ- или ЕХЕ-программой в памяти. Так как адресация начинается со смещения 100Н от начала PSP, то в программе после оператора SEGMENT кодируется директива ORG 100Н.

5. Обработка.

Для программ в ЕХЕ- и СОМ-форматах выполняются:

a) ассемблирование для получения OBJ-файла:

Для TASM:

tasm /z /zi /l prog.asm

кроме файла: prog.obj дополнительно создается:

файл.lst (листинг программы (опция /l);



выводится исходный текст вместе с сообщением об ошибках (опция /z);

дополнительная информация для дебагера(опция /zi).

b) компоновка для получения ЕХЕ-файла:

Для TLINK:

tlink /v prog.obj

Создает:

файлы: prog.exe и prog.map

дополнительную информацию для дебагера (опция /v).

Если программа создается для выполнения как ЕХЕ-файл, то ее уже можно выполнить.

Если же программа создается для выполнения как СОМ-файл, то компоновщиком будет выдано сообщение:

Warning: No STACK Segment*

Это сообщение можно игнорировать, так как определение стека в программе не предполагалось.

Пример программы типа СОМ

Программа PROG, приведенная на рис.6.16, написана согласно требованиям СОМ-формата. Обратите внимание на следующие особенности в этой СОМ-программе:

• Сегмент стека и сегмент данных отсутствуют.

• Директива ORG служит для резервирования 100H байт от начального адреса под PSP.

• Директива ORG 100H устанавливает относительный адрес для начала выполнения программы. Программный загрузчик устанавливает этот адрес в командном указателе.

• Команда JMP служит для обхода данных, определенных в программе.

Размеры ЕХЕ- и СОМ-программ - 788 и 20 байт соответственно. Учитывая такую эффективность СОМ-файлов, рекомендуется все небольшие программы создавать в СОМ-формате.

Некоторые программисты кодируют элементы данных после команд так, что первая команда JMP не требуется. Кодирование элементов данных перед командами позволяет ускорить процесс ассемблирования и является хорошим стилем, рекомендуемым в руководствах по ассемблеру.

;Программа Prog

;Программа складывает два числа и завершается

.MODEL TINY ; модель памяти, используемая для СОМ .CODE [SEGMENT] ; начало сегмента кода ORG 100H ; начальное значение счетчика - 100h, конец PSP

BEGIN: JMP START ;обход через данные

FLDA DW 0F77Fh ;определение данных

FLDB DW 03219h

FLDC DW ?

START PROC NEAR

MOV AX,FLDA ;Переслать 1-е число в AX

ADС AX,FLDB ;Прибавить 2-е число к AX

MOV FLDC,AX ;Записать сумму в FLDC

RET ;Вернуться в DOS

ENDP

END BEGIN

Рис. 6.16. Пример СОМ-программы

 



<== предыдущая лекция | следующая лекция ==>
Подпрограммы | Стек для СОМ-программы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.152 сек.