Продвижение сайта стоимость самая доступная.
Лучшие книги интернета
Материалы предоставлены только для просмотра. Любое использование материалов в коммерческих целях запрещено

Справочник программиста на персональном компьютере фирмы IBM66



    MOV DX,OFFSET DATA_AREA
    MOV AX,SEG DATA_AREA
    MOV DS,AX
    Смещение в DX связано с установкой сегментного регистра DS. Но
    какое значение должен принимать сам DS? Программа требует абсо-
    лютный адрес, но номер параграфа, в котором будет располагаться
    DATA_AREA зависит от того, в какое место в памяти будет загружена
    программа - а это зависит от версии MS DOS, а также от того,
    какие резидентные программы будут находиться в младших адресах
    памяти. По этой причине во время компоновки программы можно толь-
    ко установить некоторые сегментные значения через смещения отно-
    сительно начала программы. Затем, когда DOS осуществляет привяз-
    ку, значение начального адреса программы прибавляется к сегмент-
    ным значениям, давая абсолютные адреса, требуемые в сегментном
    регистре. На рис. 1-6 показан процесс привязки.
    Файлы COM не нуждаются в привязке, поскольку они хранятся в
    таком виде, что не нуждаются в фиксации сегмента. Все в программе
    хранится относительно начала кодового сегмента, включая все дан-
    ные и стек. По этой причине вся программа не может превышать
    65535 байт по длине, что соответствует максимальному смещению,
    которое существует в используемой схеме адресации (поскольку
    верхняя часть этого блока занята стеком, то реальное пространство
    доступное для кода и данных немного меньше чем 65535 байт, хотя
    стековый сегмент при необходимости может быть вынесен за границу
    64K байтного блока). В файлах COM все сегментные регистры указы-
    вают на начало PSP; сравните с файлами EXE, где DS и ES инициали-
    зируются аналогичным образом, но CS указывает на первый байт

Предыдущая страница    66    Следующая страница




297669883