Инструменты пользователя

Инструменты сайта


examination:asm:question45

Вопрос №45. Пересылка цепочек данных

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

MOVS адрес_источника, адрес_приемника – переслать цепочку байтов MOVSB – переслать цепочку байтов MOVSW – переслать цепочку слов MOVSD – переслать цепочку двойных слов

Команда MOVS

Синтаксис команды: MOVS адрес_источника, адрес_приемника

Команда копирует байт, слово или двойное слово из цепочки, адресуемой операндом адрес_источника, в цепочку, адресуемую операндом адрес_приемника. Размер пересылаемых элементов определяется директивами DB, DD – пересылаются байты, пересылаются двойные слова. Сама по себе команда MOVS пересылает только один элемент, исходя из его типа, и модифицирует значения регистров ESI/SI и EDI/DI. Число пересылаемых элементов должно быть загружено в счетчик – регистр CX/ECX.

Последовательность работы с MOVS:

  1. установить значение флага DF в зависимости от того, в каком направлении будут обрабатываться элементы цепочки – в направлении убывания или возрастания адресов
  2. загрузить указатели на адреса цепочек в памяти в пары регистров DS:ESI/SI ES:EDI/DI
  3. загрузить в регистр ECX/CX количество обрабатываемых элементов
  4. выдать команду MOVS с префиксом REP
examination/asm/question45.txt · Последние изменения: 2014/01/15 08:13 (внешнее изменение)