Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Лер в большинстве случаев не сможет правильно оттранслировать





Эту команду. Например, не зная, в каком программном сегменте бу-

Дет описано это имя, ассемблер не может определить, по какому

Сегментному регистру надо сегментировать имя, и потому не может

Определить, надо или нет размещать перед соответствующей ма-

Шинной командой префикс замены сегмента и, если надо, то какой

Именно.

В подобной ситуации ассемблер действует следующим образом:

•если в команде встретилась ссылка вперед, то он делает неко-

Торое предположение относительно этого имени и уже на ос-

Нове этого предположения формирует машинную команду;

•если затем (когда встретится описание имени) окажется, что

Данное предположение было неверным, тогда ассемблер пыта-

Ется исправить сформированную ранее машинную команду.

Однако это не всегда удается: если правильная машинная ко-

Манда должна занимать больше места, чем машинная коман-

Да, построенная на основе предположения (например, перед

Командой надо на самом деле вставить префикс замены сег-

Мента), тогда ассемблер фиксирует ошибку (как правило, это

ошибка номер 6: Phase error between passes).

Какие же предположения делает ассемблер, встречая ссылку

вперед?

Во всех командах, кроме команд перехода, ассемблер предпола-

Гает, что имя будет описано в сегменте данных и потому сегменти-

Руется по регистру DS. Это следует учитывать при составлении про-

граммы: если в команде встречается ссылка вперед на имя, которое

Описано в сегменте, на начало которого указывает сегментный ре-

Гистр, отличный от DS, то перед таким именем автор программы

должен написать соответствующий префикс. Пример:

CODE SEGMENT

ASSUME CS:CODE

X DW?

BEG: MOV AX,X /здесь вместо CS:X можно записать просто

X

MOV CS:Y,AX /здесь обязательно надо записать CS:Y

Y DW?

CODE ENDS







Date: 2015-11-13; view: 684; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию