На макроассемблере ms-dos


Скачать 0.6 Mb.
Название На макроассемблере ms-dos
страница 6/11
Тип Реферат
rykovodstvo.ru > Инструкция по эксплуатации > Реферат
1   2   3   4   5   6   7   8   9   10   11

5. Инструкции обработки строк

5.1. Общие положения


Пять базовых строковых операций, называемых примитивами, позволяют оперировать со строками байтов или слов по одному элементу (байту или слову) за раз. Эти операции могут обрабатывать строки длиной до 64К. Операции со строками обеспечивают пересылку, сравнение, сканирование строк по значению, а также пересылку элементов строки в аккумулятор или из него. Этим базовыми инструкциям может предшествовать однобайтный префикс, наличие которого обеспечивает многократное повторение инструкции аппаратным способом, что гарантирует более высокое быстродействие, чем в случае программного цикла. Процесс повторения может быть прекращён при возникновении различных ситуаций, а сама повторяемая операция может быть как прервана, так и возобновлена.

Строковые инструкции во многом похожи друг на друга. Они могут иметь операнд-приёмник, операнд-источник или оба эти операнда. Аппаратно предполагается, что исходная строка размещена в текущем сегменте данных (для её адресации используется регистр DS); для изменения этого допущения может использоваться однобайтный префикс изменения сегмента. Строка-приёмник должна размещаться в текущем дополнительном сегменте (для её адресации используется регистр ES). Для проверки того, что является элементом строки (байт или слово), ассемблер проверяет атрибуты операндов инструкции. Однако в действительности эти операнды для адресации строк не используются. Для адресации используются регистр SI, который предполагается загруженным значением смещения строки-источника относительно содержимого DS, и DI, содержимое которого трактуется как смещение строки-приёмника относительно содержимого ES (табл. 5.1). Все эти регистры должны быть загружены требуемыми значениями до выполнения строковой операции, для чего могут использоваться инструкции LDS, LES и LEA (п. 2.3).

Строковые инструкции автоматически модифицируют содержимое регистров SI и/или DI для обеспечения возможности обработки следующего элемента строки. Значение флага направления DF определяет, будут ли эти индексные регистры автоматически уве­ли­чи­вать­ся (DF=0) или автоматически уменьшаться (DF=1) при переходе к следующему эле­мен­ту строки. При обработке строк байтов содержимое SI и/или DI изменяется на 1; в случае строк слов – на 2.

Таблица 5.1. Использование регистров и флагов
строковыми инструкциями


Объект

Назначение

SI

смещение строки-источника

DI

смещение строки-приёмника

CX

счётчик повторений

AL/AX

– значение сканирования
– приёмник для LODS
– источник для STOS

DF

0 – автоматическое увеличение SI, DI
1 – автоматическое уменьшение SI, DI

ZF

признак прекращения сканирования/сравнения

При использовании префикса повторений содержимое регистра CX уменьшается на 1 после каждого повторения строковой инструкции. Регистр CX должен быть загружен требуемым числом повторений до выполнений строковой операции. Если CX содержит 0, строковая операция не выполняется, и управление передаётся следующей инструкции.

REP/REPE/REPZ/REPNE/REPNZ ПРЕФИКСЫ ПОВТОРЕНИЯ


Эти ключевые слова представляют собой 5 мнемоник 2-х форм однобайтного префикса, управляющего повторением непосредственно следующей за ним строковой инструкции. Различные мнемоники введены для удобства про­грам­ми­ро­ва­ния. Наличие префикса на состояния флагов не влияет.

REP используется в сочетании с инструкциями MOVS и STOS и интерпретируется как «повторение пока не конец строки» (в CX не 0). REPE и REPZ работают так же и физически являются тем же префиксом, что и REP. REPE и REPZ ис­поль­зу­ют­ся в сочетании с инструкциями CMPS и SCAS и требуют, чтобы флаг ZF, используемый этими инструкциями, был установлен в 1 до ини­ци­ал­и­за­ции следующего повторения.

REPNE и REPNZ представляют собой 2 мнемоники одного префикса и функционируют также, как REPE и REPF, но флаг ZF должен быть установлен в 0, или повторение прекратится. Заметим, что устанавливать флаг ZF перед выполнением повторяемой строковой инструкции необязательно.

Повторяемая строковая инструкция может быть прервана (на обработку системных прерываний это не распостраняется). Процессор распознаёт это прерывание до обработки очередного элемента строки. После возврата из прерывания повторяемая операция возобновляется с точки прерывания. Заметим, однако, что выполнение не возобновится правильно, если в дополнение к префиксу повторения был специфицирован 2-й или 3-й префикс (например, переключения сегмента или LOCK). В момент прерывания процессор «запоминает» только один префикс, причём тот, который при кодировании операции непосредственно предшествовал строковой инструкции. После возврата из прерывания остальные префиксы действовать не будут. Если всё же необходимо воздействие более, чем одного, префикса, прерывания на время работы строковой операции следует запретить инструкцией CLI (п. 7.1). Это, однако, не поможет при появлении немаскируемого прерывания. Кроме того, при обработке длинных строк может недопустимо возрасти время, в течение которого система не сможет отвечать на прерывания.

5.2. Пересылка строк

MOVS приёмник, источник ПЕРЕСЫЛКА СТРОКИ БАЙТОВ ИЛИ СЛОВ


Эта инструкция пересылает байт или слово источника, адресуемого регистром SI, в строку-приёмник, адресуемую регистром DI, и модифицирует содержимое регистров SI и DI таким образом, чтобы они указывали на следующие элементы строк. Величина элементов строк и соответственно тип пересылки (байт или слово) определяется ассемблером путем анализа атрибутов операндов инструкции. При использовании префикса REP инструкция MOVS может пересылать блоки памяти.

MOVSB/MOVSW ПЕРЕСЫЛКА СТРОКИ БАЙТОВ ИЛИ СЛОВ


Эти инструкции обеспечивают пересылку байта (MOVSB) или слова (MOVSW) из элемента строки-источника, адресуемого регистром SI, в элемент строки-приёмника, адресуемого регистром DI. Содержимое регистров SI и DI изменяется (уменьшается или увеличивается в соответствии со значением флага DF) на 1 для MOVSB или на 2 для MOVSW с тем, чтобы они указывали на следующие элементы строк. Использование этих инструкций полезно в том случае, когда ассемблер не может определить атрибуты строк, например, при пересылке участка программного кода. Эти инструкции могут повторяться при использовании соответствующих префиксов.

LODS источник ЗАГРУЗКА СТРОКИ БАЙТОВ ИЛИ СЛОВ


Инструкция LODS загружает элемент строки-источника (байт или слово в зависимости от типа операнда), адресуемый регистром SI, в регистр AL или AX соответственно и устанавливает SI указывающим на следующий элемент строки. Обычно эта инструкция не повторяется, т. к. каждое повторение замещало бы содержимое регистров AL или AX, и сохранялось бы только последнее значение. Однако инструкция LODS весьма полезна в программных циклах как часть более сложной строковой операции.

LODSB/LODSW ЗАГРУЗКА СТРОКИ БАЙТОВ ИЛИ СЛОВ


Работа этих инструкций аналогична LODS с той лишь разницей, что здесь длина элемента строки задана явно: 1 байт для LODSB и 2 байта для LODSW.

STOS приемник СОХРАНЕНИЕ СТРОКИ БАЙТОВ ИЛИ СЛОВ


Инструкция STOS помещает содержимое регистров AL или AX (в зависимости от типа операнда) в элемент строки-приёмника, адресуемый регистром DI, и устанавливает регистр DI указывающим на следующий элемент строки. Как повторяемая инструкция STOS является традиционным средством для заполнения строки каким-либо значением.

STOSB/STOSW СОХРАНЕНИЕ СТРОКИ БАЙТОВ ИЛИ СЛОВ


Работа этих инструкций аналогична STOS с той лишь разницей, что здесь длина элемента строки задана явно: 1 байт для STOSB и 2 байта для STOSW.

5.3. Сравнение строк

CMPS приемник,источник СРАВНЕНИЕ СТРОКИ БАЙТОВ ИЛИ СЛОВ


Инструкция CMPS вычитает байт или слово строки-приёмника, адресуемые регистром DI, из байта или слова строки-источника, адресуемых регистром SI. Величина элементов строк определяется ассемблером путем анализа атрибутов операндов инструкции. CMPS не изменяет содержимое самих строк, но устанавливает флаги AF, CF, OF, PF, SF и ZF таким образом, что они отражают отношение элемента строки-приёмника к элементу строки-источника. Если инструкция CMPS использована с префиксом REPE или REPZ, выполняется операция «сравнение до конца строки (пока в CX не 0) и пока строки равны (ZF=1)». Если CMPS использована с префиксом REPNE или REPNZ, выполняется операция «сравнение до конца строки (пока в CX не 0) и пока строки не равны (ZF=0)». Таким образом, инструкция CMPS может применяться для поиска совпадающих или несовпадающих элементов строк.

CMPSB/CMPSW СРАВНЕНИЕ СТРОКИ БАЙТОВ ИЛИ СЛОВ


Работа этих инструкций аналогична CMPS с той лишь разницей, что здесь длина элемента строк задана явно: 1 байт для CMPSB и 2 байта для CMPSW.

5.4. Сканирование

SCAS приемник СКАНИРОВАНИЕ СТРОКИ БАЙТОВ ИЛИ СЛОВ


Инструкция SCAS вычитает элемент строки-приёмника (байт или слово в зависимости от типа операнда), адресуемый регистром DI, из содержимого регистра AL или AX соответственно и модифицирует флаги, но не меняет ни строку, ни содержимое аккумулятора. После SCAS регистр DI указывает на следующий элемент строки, а флаги AF, CF, OF, PF, SF и ZF отражают отношение содержимого аккумулятора к элементу строки. Если присутствует префикс REPE или REPZ, выполняется операция «сканирование до конца строки (пока в CX не 0) и пока элемент строки равен содержимому аккумулятора (ZF=1)». Если присутствует префикс REPNE или REPNZ, выполняется операция «сканирование до конца строки (пока в CX не 0) и пока элемент строки не равен содержимому аккумулятора (ZF=0)». Этот способ может использоваться для поиска значения в строке.

SCASB/SCASW СКАНИРОВАНИЕ СТРОКИ БАЙТОВ ИЛИ СЛОВ


Работа этих инструкций аналогична SCAS с той лишь разницей, что здесь длина элемента строки задана явно: 1 байт для SCASB и 2 байта для SCASW.
1   2   3   4   5   6   7   8   9   10   11

Похожие:

На макроассемблере ms-dos icon Программный модуль Сбербанка России для обслуживания банковских карт на ккм под управлением dos
Интегрируемый программный модуль sb pilot exe используется совместно с программным обеспечением контрольно-кассовых машин для проведения...
На макроассемблере ms-dos icon Это один из самых простых языков, но далеко не один из самых слабых....
Программы на Turbo Pascal пишутся только для платформы ms-dos, но никак не зависят от конфигурации компьютера. Главным требованием...
На макроассемблере ms-dos icon Отчет по курсу "Корпоративные информационные системы" Тема: "Корпоративные...
Тема: "Корпоративные информационные системы (кис): Галактика, Microsoft Dynamics ax, Эталон (dos-версия), sap r/3"
На макроассемблере ms-dos icon Лабораторная работа №1 «Применение средств операционных систем и...

На макроассемблере ms-dos icon Лабораторная работа №1 «Применение средств операционных систем и...

На макроассемблере ms-dos icon Руководство пользователя бортовая диагностика для операционных систем ms-dos
...
На макроассемблере ms-dos icon Требования к продукции
Персональный компьютер Lenovo ThinkCentre Tiny M700 I5 6400T 4Gb 500gb 7200 Intel hd nodvd wi-Fi usb kb&Mouse dos (10HY003tru) или...
На макроассемблере ms-dos icon Содержание
ОС, — невозможность работы с графикой, «объемными» программами и однозадачность. Под dos было написано великое множество программ,...
На макроассемблере ms-dos icon Библиотека системного программиста
В книге приведено описание методик программирования аппаратуры персональных компьютеров, выполненных с применением процессоров Intel,...
На макроассемблере ms-dos icon Программирование под Windows
Программная организация Windows: модули kernel, use, gdi. Отличия Windows от dos. Многозадачность и единый интерфейс. Гибкое управление...
На макроассемблере ms-dos icon Современные операционные системы
Работа, написана так, что в ней последовательно изложен материал, начиная от Windows 95 кончая новейшей операционной системой Windows...
На макроассемблере ms-dos icon Руководство оператора по кад400
Кад400 (далее – комплекс), владеющих базовыми знаниями и навыками работы на персональном компьютере типа ibm pc в операционных системах...
На макроассемблере ms-dos icon Первым делом запустите команду
Первым делом запустите команду cmd (в Windows 8 запускать от имени администратора), чтобы открыть окно сеанса dos, в котором будут...

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск