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

Формат общей команды: 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:

...