Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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; Нарушение авторских прав |