Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке

Команда пересылки строк. Использование регистра флагов для определения направления. Префиксы повторения

Архитектура ЭВМ 22.11.2019 0 1871 Автор Нашли ошибку? Ссылка по ГОСТ

Операция пересылки цепочек (строк). Команды, реализующие эту операцию-примитив, производят копирование элементов из одной области памяти (цепочки) в другую. Размер элемента определяется применяемой командой.

Реклама
Помощь в написании работы

movs адрес_приемника,адрес_источника (MOVe String) — переслать цепочку;

movsb (MOVe String Byte) — переслать цепочку байт;

movsw (MOVe String Word) — переслать цепочку слов;

movsd (MOVe String Double word) — переслать цепочку двойных слов.

Команда movs: movs адрес_приемника,адрес_источника

Команда копирует байт, слово или двойное слово из цепочки, адресуемой операндом адрес_источника, в цепочку, адресуемую операндом адрес_приемника.

Размер пересылаемых элементов ассемблер определяет, исходя из атрибутов идентификаторов, указывающих на области памяти приемника и источника.

Ранее уже было отмечено, что для цепочечных команд с операндами, к которым относится и команда пересылки movs адрес_приемника,адрес_источника, не существует машинного аналога.

При трансляции в зависимости от типа операндов транслятор преобразует ее в одну из трех машинных команд:

movsb, movsw или movsd.

Сама по себе команда movs пересылает только один элемент, исходя из его типа, и модифицирует значения регистров si и di. Если перед командой написать префикс rep, то одной командой можно переслать до 64 Кбайт данных (если размер адреса в сегменте 16 бит — use16) .

Число пересылаемых элементов должно быть загружено в счетчик — регистр cx

Перечислим набор действий, которые нужно выполнить в программе для того, чтобы выполнить пересылку последовательности элементов из одной области памяти в другую с помощью команды movs.

В общем случае этот набор действий можно рассматривать как типовой для выполнения любой цепочечной команды:

Установить значение флага df в зависимости от того, в каком направлении будут обрабатываться элементы цепочки — в направлении возрастания(в этом случае нужно сбросить флаги CLD) или убывания адресов.

Загрузить указатели на адреса цепочек в памяти в пары регистров ds:si и es: di.

Загрузить в регистр cx количество элементов, подлежащих обработке.

Выдать команду movs с префиксом rep.

Префиксы повторения имеют свои мнемонические обозначения:

rep ,repe или repz, repne или repnz

Эти префиксы повторения указываются перед нужной цепочечной командой в поле метки.

Цепочечная команда без префикса выполняется один раз. Размещение префикса перед цепочечной командой заставляет ее выполняться в цикле.

Отличия приведенных префиксов в том, на каком основании принимается решение о циклическом выполнении цепочечной команды: по состоянию регистра ecx/cx или по флагу нуля zf:

префикс повторения rep (REPeat). Этот префикс используется с командами, реализующими операции-примитивы пересылки и сохранения элементов цепочек — соответственно, movs и stos.

Префикс rep заставляет данные команды выполняться, пока содержимое в ecx/cx не станет равным 0.

При этом цепочечная команда, перед которой стоит префикс, автоматически уменьшает содержимое ecx/cx на единицу. Та же команда, но без префикса, этого не делает;

префиксы повторения repe или repz (REPeat while Equal or Zero). Эти префиксы являются абсолютными синонимами.

Они заставляют цепочечную команду выполняться до тех пор, пока содержимое ecx/cx не равно нулю или флаг zf равен 1.

Как только одно из этих условий нарушается, управление передается следующей команде программы. Благодаря возможности анализа флага zf, наиболее эффективно эти префиксы можно использовать с командами cmps и scas для поиска отличающихся элементов цепочек.

Нашли ошибку? Выделите текст и нажмите CRTL + Enter
Аватар
Филипп Х.
Редактор.
Копирайтер, коммерческий автор, писатель, сценарист и автор-универсал в широком смысле.

Средняя оценка 0 / 5. Количество оценок: 0

Поставьте вашу оценку

Сожалеем, что вы поставили низкую оценку!

Позвольте нам стать лучше!

Расскажите, как нам стать лучше?

1871
Закажите помощь с работой

Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке

Реклама
Реклама

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *