Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Мнемоника команд обработки строк
Команды пересылки строк пересылают байт или слово из строки-источника в строку-приемник и имеют следующий формат в мнемонике ассемблера: MOVSB, MOVSW. Вне зависимости от применяемой команды, строка-приемник располагается в дополнительном сегменте данных и адресуется косвенным образом через регистр DI (ES: DI), а строка-источник располагается в сегменте данных и адресуется через регистр SI (DS: SI). Команда MOVSB пересылает один байт из строки-источника в строку-приемник и изменяет содержимое регистров SI и DI на единицу. Команда MOVSW пересылает слово из строки-источника в строку-приемник и изменяет содержимое регистров SI и DI на два. При выполнении команды пересылки строк содержимое индексных регистров может как увеличиваться, так и уменьшаться. На это влияет состояние флага направления (DF). Если DF = 0, то содержимое индексных регистров увеличивается на 1 или на 2, в зависимости от пересылаемых данных. Если DF = 1, то содержимое индексных регистров уменьшается. Команды пересылки строк имеют следующий формат машинного кода.
Если поле w равно 0, то пересылаются байты (команда MOVSB). Если поле w равно 1, то пересылаются слова (команда MOVSW). Примеры использования команд пересылки строк:
Команды загрузки из строки пересылают байт или слово из строки-источника в аккумулятор и имеют следующий формат в мнемонике ассемблера: LODSB LODSW Как и в командах пересылки строк, строка-источник располагается в сегменте данных и адресуется через регистр SI (DS: SI). Команда LODSB пересылает один байт из строки-источника в регистр AL и инкрементирует SI, если флаг направления сброшен, или декрементирует SI, если флаг направления установлен. Команда LODSW пересылает слово из строки-источника в регистр AX и увеличивает содержимое регистра SI на два, если DF = 0, или уменьшает содержимое SI на два, если DF = 1. Команды загрузки аккумулятора из строки имеют следующий формат машинного кода.
Если поле w = 0, то загружается байт (команда LODSB). Если поле w = 1, то загружается слово (команда LODSW). Примеры использования команд загрузки из строки:
Команды записи в строку пересылают байт или слово из аккумулятора в строку-приемник и имеют следующий формат в мнемонике ассемблера: STOSB STOSW Как и в командах пересылки строк, строка-приемник располагается в дополнительном сегменте данных и адресуется через регистр DI (ES: DI). Команда STOSB пересылает один байт из AL в строку-приемник и инкрементирует DI, если флаг направления сброшен, или декрементирует DI, если флаг направления установлен. Команда STOSW пересылает слово из AX в строку-приемник и увеличивает содержимое регистра DI на два, если DF = 0, или уменьшает содержимое DI на два, если DF = 1. Команды записи содержимого аккумулятора в строку имеют следующий формат машинного кода.
Если поле w = 0, то записывается байт (команда STOSB). Если поле w = 1, то записывается слово (команда STOSW). Примеры использования команд записи в строку:
Команды сравнения строк сравнивают байты или слова из строки-источника и строки-приемника и имеют следующий формат в мнемонике ассемблера: CMPSB CMPSW Вне зависимости от применяемой команды, строка-приемник располагается в сегменте данных и адресуется через регистр SI (DS: SI), а строка-источник располагается в дополнительном сегменте данных и адресуется косвенным образом через регистр DI (ES: DI). Команда CMPSB осуществляет сравнение байт из строки-приемника и строки-источника (вычитает байт строки источника из байта строки приемника, результат ни куда не помещает, но изменяет флаги AF, CF, PF, SF и ZF) и инкрементирует индексные регистры, если DF = 0, или декрементирует индексные регистры, если DF = 1. Команда CMPSW сравнивает слова из строки-источника и строки-приемника (аналогично команде CMPSB) и увеличивает содержимое индексных регистров на два, если DF = 0, или уменьшает содержимое индексных регистров на два, если DF = 1. Команды сравнения строк имеют следующий формат машинного кода.
Если поле w = 0, то сравниваются байты (команда CMPSB). Если поле w = 1, то сравниваются слова (команда CMPSW). Примеры использования команд сравнения строк:
Команды сканирования строки сравнивают байт или слово из аккумулятора с байтом или словом из строки-приемника и имеют следующий формат в мнемонике ассемблера: SCASB SCASW Как и в командах пересылки строк, строка-приемник располагается в дополнительном сегменте данных и адресуется через регистр DI (ES: DI). Команда SCASB сравнивает содержимое AL с байтом из строки-приемника (аналогично команде CMPSB) и инкрементирует DI, если флаг направления сброшен, или декрементирует DI, если флаг направления установлен. Команда SCASW сравнивает содержимое AX со словом из строки-приемника и увеличивает содержимое регистра DI на два, если DF = 0, или уменьшает содержимое DI на два, если DF = 1. Команды сканирования строки имеют следующий формат машинного кода.
Если поле w = 0, то сравниваются байты (команда SCASB). Если поле w = 1, то сравниваются слова (команда SCASW). Примеры использования команд сканирования строки:
Префиксы повторения используются для повторного выполнения следующей за префиксом команды обработки строк и имеют следующие мнемонические обозначения на языке ассемблера: REP REPE REPZ REPNE REPNZ Количество повторений задается предварительно в регистре CX. При каждом повторении команды работы со строками, снабженной одним из этих префиксов, происходит декрементирование регистра CX. Повторение прекращается в зависимости от условия, определяемого смыслом префикса. Условия прекращения повторений приведены в табл. 8.2. Таблица 8.2
|