Мнемоника команд обработки строк
⇐ ПредыдущаяСтр 8 из 8
Команды пересылки строк пересылают байт или слово из строки-источника в строку-приемник и имеют следующий формат в мнемонике ассемблера: 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 Префиксы повторения
Префиксы повторения имеют следующий формат машинного кода.
Префиксы REP, REPE и REPZ транслируются в машинный формат с z = 1, а префиксы REPNE и REPNZ – в машинный формат с z = 0. Примеры применения префиксов:
Команда CLD сбрасывает, а команда STD устанавливает флаг направления флаг направления. У этих команд нет операндов и они имеет следующие форматы машинного кода.
СОДЕРЖАНИЕ РАБОТЫ 1. Ознакомиться с теоретическим материалом. 2. С помощью программы debug исследовать выполнение всех арифметических команд с любым возможным типом их операндов. 3. В соответствии со своим вариантом решить поставленные задачи и с помощью DEBUG установить правильность их решения.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|