|
Листинг 2-5, полу-
ченный из программного файла .EXE стандартного типа, показывает
ссылку на сегмент данных, используемую для загрузки регистра сег-
мента данных. Листинг 2-6 показывает эквивалентную программу, по-
лученную с помощью макроассемблера MASM.
Листинг 2-5. |
panda activescan |
|
|
Исходный код для заголовка программы .EXE
-----------------------------------------------------------------
data_seg SEGMENT ; определение сегмента данных
... ; значения и области данных
data_seg ENDS
code_seg SEGMENT ; определение кодового сегмента
ASSUME cs:code_seg
ASSUME ds:data_seg
main PROC FAR ; точка входа в программу
start:
mov ax,data_seg ; передача адреса сегмента данных
mov ds,ax ; ... |
avast 4 home |
| |
| 
asplinux deluxe, перевод с английского на русский, русско английский словарь, win zip, антивирусные программы, .
програмное обеспечение
|
При загрузке программы в память
MS-DOS читает схему настройки и изменяет значения тех ссылок, ко-
торые содержат адреса сегментов. Для программистов важно заме-
тить, что MS-DOS не расширяет это правило для стандартных значе-
ний данных, и загрузка одного из регистров сегмента константой
это не то же самое, что использование имени сегмента или имени
процедуры far (далекий).
Переместимый код
Макроассемблер MASM и компоновщик LINK обычно вырабатывают
перемещаемые программы. Т.е. при нормальном использовании они
создают такие программы, которые могут быть перемещены в памяти с
помощью MS-DOS, и при этом правильно функционировать. Изменится
только содержимое регистров сегментов. Это свойство используется
множеством прикладных программ. Одни программы могут загружать
другие программы, используя функцию 4Вh (полезную для оверлейных
- перекрываемых программ). Несколько программ могут быть загруже-
ны в память одновременно (полезно для мультизадачных систем или
программ резидентной памяти, таких как, например, программы пред-
варительной подкачки данных для печати).
Как уже указывалось, MS-DOS выполняет эту возможность путем
изменения только значений регистров и таких мест в программе, ко-
торые ссылаются на имя сегмента или имя процедуры far (далекий).
Можно также расширить эти концепции гибкости на области данных,
используемые программой. Обычно перемещаемые программы содержат и
перемещаемые области данных. Когда загрузчик MS-DOS помещает
программу в память, он назначает значения для всех ссылок на сег-
менты раньше ссылок на программные сегменты.
|
|
|