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


Полезное:

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


Категории:

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






Мнемоника команд обработки строк





Обозначение Выполняемая функция
MOVSB/MOVSW Пересылка строк
LODSB/LODSW Загрузка из строки
STOSB/STOSW Запись в строку
CMPSB/CMPSW Сравнение строк
SCASB/SCASW Сканирование строки
REP/REPE/REPZ/REPNE/REPNZ Префиксы повторения
CLD Сброс флага направления
STD Установка флага направления

Команды пересылки строк пересылают байт или слово из строки-источника в строку-приемник и имеют следующий формат в мнемонике ассемблера:

MOVSB,

MOVSW.

Вне зависимости от применяемой команды, строка-приемник располагается в дополнительном сегменте данных и адресуется косвенным образом через регистр DI (ES: DI), а строка-источник располагается в сегменте данных и адресуется через регистр SI (DS: SI).

Команда MOVSB пересылает один байт из строки-источника в строку-приемник и изменяет содержимое регистров SI и DI на единицу.

Команда MOVSW пересылает слово из строки-источника в строку-приемник и изменяет содержимое регистров SI и DI на два.

При выполнении команды пересылки строк содержимое индексных регистров может как увеличиваться, так и уменьшаться. На это влияет состояние флага направления (DF). Если DF = 0, то содержимое индексных регистров увеличивается на 1 или на 2, в зависимости от пересылаемых данных. Если DF = 1, то содержимое индексных регистров уменьшается.

Команды пересылки строк имеют следующий формат машинного кода.

1010010 w

Если поле w равно 0, то пересылаются байты (команда MOVSB). Если поле w равно 1, то пересылаются слова (команда MOVSW).

Примеры использования команд пересылки строк:

LES DI,[D4] ; загрузить ES: DI адресом строки-приемника
LDS SI,[D8] ; загрузить DS:SI адресом строки-источника
CLD ; сбросить флаг направления ; (увеличение индексных регистров)
MOVSB ; переслать байт из строки-источника в строку-приемник; (при этом инкрементируются SI и DI)
MOWSW ; переслать слово из строки-источника в приемник; (при этом содержимое SI и DI увеличится на 2)

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

LODSB

LODSW

Как и в командах пересылки строк, строка-источник располагается в сегменте данных и адресуется через регистр SI (DS: SI).

Команда LODSB пересылает один байт из строки-источника в регистр AL и инкрементирует SI, если флаг направления сброшен, или декрементирует SI, если флаг направления установлен.

Команда LODSW пересылает слово из строки-источника в регистр AX и увеличивает содержимое регистра SI на два, если DF = 0, или уменьшает содержимое SI на два, если DF = 1.

Команды загрузки аккумулятора из строки имеют следующий формат машинного кода.

1010011 w

Если поле w = 0, то загружается байт (команда LODSB). Если поле w = 1, то загружается слово (команда LODSW).

Примеры использования команд загрузки из строки:

LDS SI,[0BD8] ; загрузить DS: SI адресом строки-источника
CLD ; сбросить флаг направления ; (увеличение индексных регистров)
LODSB ; переслать байт из строки-источника в AL ; (при этом инкрементируются SI)
LODSW ; переслать слово из строки-источника в AX ; (при этом содержимое SI увеличится на 2)

Команды записи в строку пересылают байт или слово из аккумулятора в строку-приемник и имеют следующий формат в мнемонике ассемблера:

STOSB

STOSW

Как и в командах пересылки строк, строка-приемник располагается в дополнительном сегменте данных и адресуется через регистр DI (ES: DI).

Команда STOSB пересылает один байт из AL в строку-приемник и инкрементирует DI, если флаг направления сброшен, или декрементирует DI, если флаг направления установлен.

Команда STOSW пересылает слово из AX в строку-приемник и увеличивает содержимое регистра DI на два, если DF = 0, или уменьшает содержимое DI на два, если DF = 1.

Команды записи содержимого аккумулятора в строку имеют следующий формат машинного кода.

1010101 w

Если поле w = 0, то записывается байт (команда STOSB). Если поле w = 1, то записывается слово (команда STOSW).


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

LES DI,[0BD8] ; загрузить ES: DI адресом строки-приемника
CLD ; сбросить флаг направления ; (увеличение индексных регистров)
STOSB ; переслать байт из AL в строку-приемник ; (при этом инкрементируются DI)
STOSW ; переслать слово из AX в строку-приемник ; (при этом содержимое DI увеличится на 2)

Команды сравнения строк сравнивают байты или слова из строки-источника и строки-приемника и имеют следующий формат в мнемонике ассемблера:

CMPSB

CMPSW

Вне зависимости от применяемой команды, строка-приемник располагается в сегменте данных и адресуется через регистр SI (DS: SI), а строка-источник располагается в дополнительном сегменте данных и адресуется косвенным образом через регистр DI (ES: DI).

Команда CMPSB осуществляет сравнение байт из строки-приемника и строки-источника (вычитает байт строки источника из байта строки приемника, результат ни куда не помещает, но изменяет флаги AF, CF, PF, SF и ZF) и инкрементирует индексные регистры, если DF = 0, или декрементирует индексные регистры, если DF = 1.

Команда CMPSW сравнивает слова из строки-источника и строки-приемника (аналогично команде CMPSB) и увеличивает содержимое индексных регистров на два, если DF = 0, или уменьшает содержимое индексных регистров на два, если DF = 1.

Команды сравнения строк имеют следующий формат машинного кода.

1010011 w

Если поле w = 0, то сравниваются байты (команда CMPSB). Если поле w = 1, то сравниваются слова (команда CMPSW).

Примеры использования команд сравнения строк:

LES DI,[0BD4] ; загрузить ES: DI адресом ; строки-источника
LDS SI,[0BD8] ; загрузить DS: SI адресом ; строки-приемника
CLD ; сбросить флаг направления ; (увеличение индексных регистров)
CMPSB ; сравнить байты из строки-источника ; и строки-приемника ; (при этом инкрементируются SI и DI)
CMPSW ; сравнить слова из строки-источника ; и строки-приемника (при этом ; содержимое SI и DI увеличится на 2)

Команды сканирования строки сравнивают байт или слово из аккумулятора с байтом или словом из строки-приемника и имеют следующий формат в мнемонике ассемблера:

SCASB

SCASW

Как и в командах пересылки строк, строка-приемник располагается в дополнительном сегменте данных и адресуется через регистр DI (ES: DI).

Команда SCASB сравнивает содержимое AL с байтом из строки-приемника (аналогично команде CMPSB) и инкрементирует DI, если флаг направления сброшен, или декрементирует DI, если флаг направления установлен.

Команда SCASW сравнивает содержимое AX со словом из строки-приемника и увеличивает содержимое регистра DI на два, если DF = 0, или уменьшает содержимое DI на два, если DF = 1.

Команды сканирования строки имеют следующий формат машинного кода.

1010111 w

Если поле w = 0, то сравниваются байты (команда SCASB). Если поле w = 1, то сравниваются слова (команда SCASW).

Примеры использования команд сканирования строки:

LES DI,[0BD8] ; загрузить ES: DI адресом строки-приемника
CLD ; сбросить флаг направления ; (увеличение индексных регистров)
SCASB ; сравнить байты из AL и строки-приемника ; (при этом инкрементируются DI)
SCASW ; сравнить слова из AX и строки-приемника ; (при этом содержимое DI увеличится на 2)

Префиксы повторения используются для повторного выполнения следующей за префиксом команды обработки строк и имеют следующие мнемонические обозначения на языке ассемблера:

REP

REPE

REPZ

REPNE

REPNZ

Количество повторений задается предварительно в регистре CX. При каждом повторении команды работы со строками, снабженной одним из этих префиксов, происходит декрементирование регистра CX. Повторение прекращается в зависимости от условия, определяемого смыслом префикса. Условия прекращения повторений приведены в табл. 8.2.

Таблица 8.2

Date: 2015-05-23; view: 580; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



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