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

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


examination:asm:question48

Вопрос №48. Загрузка и перенос в аккумулятор цепочек данных.

Операция-примитив загрузки элемента цепочки в аккумулятор позволяет извлечь элемент цепочки и поместить его в регистр-аккумулятор AL, AX, EAX. Эту операцию удобно использовать вместе с поиском (сканированием) с тем, чтобы, найдя нужный элемент, извлечь его. Возможный размер извлекаемого элемента определяется применяемой командой: LODS адрес_источника – загрузить элемент из цепочки (LOaD String) в регистр-аккумулятор AL, AX, EAX

LODSB – загрузить байт из цепочки в регистр AL LODSW – загрузить слово из цепочки в регистр AX LODSD – загрузить двойное слово из цепочки в регистр EAX

Команда LODS

Синтаксис: lods адрес_источника

Команда имеет один операнд, обозначающий строку в основном сегменте данных. Работа команды заключается в том, чтобы извлечь элемент из цепочки по адресу, соответствующему содержимому пары регистров DS: ESI/SI, и поместить его в регистр AL, AX, EAX. При этом содержимое ESI/SI подвергается инкременту или декременту (в зависимости от флага DF) на величину, равную размеру элемента. Эту команду удобно использовать после команды SCAS, локализирующей местоположение искомого элемента в цепочке.

Команды загрузки LODSB, LODSW, LODSD аналогичны другим цепочечным командам. Они являются вариантами команды LODS. Каждая из этих команд работает с цепочками из элементов определенного размера. Предварительно вы должны загрузить значение длины цепочки и ее адрес в регистры ECX/CX и DS:ESI/SI.

examination/asm/question48.txt · Последние изменения: 2014/01/15 12:13 (внешнее изменение)