Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ЭВМ и ПУ.doc
Скачиваний:
64
Добавлен:
16.03.2015
Размер:
1.16 Mб
Скачать

2.5.5.1.Команды пересылки цепочки.

Формат общей команды: MOVS цепочка-приёмник, цепочка-источник

Дополнительные команды:

MOVSB

MOVSW

MOVSD

В команде MOVS операнды нужны только для того, чтобы ассемблер узнал, что нужно пересылать байты или слова, так как смещение цепочки-приёмника предварительно должно быть загружено в регистр DI, а смещение цепочки-источника в регистр SI. Ассемблер преобразует команду MOVS в одну из команд MOVSB, MOVSW или MOVSD, следовательно, можно сразу их употреблять в программе.

Примеры:

MEMW1 DW 10 DUP (1), 5 DUP (0)

MEMW2 DW 15 DUP (?)

MOV AX, @DATA

MOV DS, AX

MOV ES, AX

CLD

MOV SI, OFFSET MEMW1

MOV DI, OFFSET MEMW2

MOV CX, 15

REP MOVS MEMW2, MEMW1;  REP MOVSW

2.5.5.2.Команды сравнения цепочек.

Формат общей команды: CMPS цепочка-приёмник, цепочка-источник

Дополнительные команды:

CMPSB

CMPSW

CMPSD

Подобна CMP, однако CMPS производит обратное по отношению с CMP вычитание, вычитает из источника приёмник, а CMP, наоборот - из приёмника источник. CMPSB и CMPSW - соответствующие версии команды сравнения строк байтов или строк слов. Если мы используем префиксы повторения REPE / REPZ или REPNE / REPNZ, то операция сравнения может завершиться в двух случаях: CX=0 или ZF=0 для REPE (ZF=1 для REPNE). Для того чтобы узнать, какая ситуация имела место, следует указать после CMPS команду условной передачи управления, прове­ряющую флаг ZF, а именно JE (JZ) или JNE (JNZ).

Пример:

CLD

MOV CX, 100

REPNE CMPS DEST, SOURCE

JNE NOT_FOUND; Переход к метке NOT_FOUND, если нет ни одной совпадающей пары.

...

NOT_FOUND:

...

2.5.5.3.Команды сканирования цепочек.

Команды сканирования цепочек позволяют осуществить поиск заданного значения в цепочке, находящейся в дополнительном сегменте. Смещение адреса первого элемента цепочки должно быть помещено в регистр DI. При сканировании цепочки байтов искомое значение должно находиться в регистре AL, при сканировании цепочки слов - в регистре AX, а при сканировании цепочки двойных слов - в регистре ЕAX.

Формат основной команды: SCAS цепочка-приёмник.

Дополнительные команды:

SCASB,

SCASW,

SCASD.

Если при сканировании обнаружен заданный элемент, то в DI смещение адреса следующего за ним элемента, а ZF = 0. С командами данной группы можно использовать префиксы REPE / REPNE.

2.5.5.4.Команды загрузки.

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

Формат основной команды: LODS цепочка-источник.

Дополнительные команды:

LODSB,

LODSW,

LODSD.

2.5.5.5.Команды сохранения цепочек.

Команда STOS пересылает цепочку байт, слов или двойных слов из регистра AL (AX или EAX) в элемент операнда цепочка-приёмник, адресуемый парой регистров ES : DI.

Формат основной команды: STOS цепочка-приемник.

Дополнительные команды:

STOSB,

STOSW,

STOSD.

С командами данной группы можно использовать префикс REP.

2.5.5.6.Команды ввода и вывода цепочек.

Обеспечивают считывание данных из входного устройства в последовательные ячейки памяти и запись данных из последовательных ячеек в выходное устройство. Они упрощают передачи больших блоков данных между памятью и внешними устройствами. INS передаёт данные из входного порта, определяемого содержимым регистра DX в байт или слово, смещение которого находится в ES:DI (ES:EDI) и производит уменьшение или увеличение DI на 1 (или 2), или EDI на 4. Аналогично OUTS передаёт байт, слово или двойное слово, смещение которого находится в DS:SI (DS:ESI), в выходной порт, адресуемый регистром DX и производит увеличение или уменьшение содержимого регистра SI на 1 (или 2) или ESI на 4. Команд INS и OUTS в 8086 нет. Дополнительные команды:

INSB,

INSW,

INSD,

OUTSB,

OUTSW,

OUTSD.

С командами данной группы можно использовать префикс REP.