Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы СПО / Команды Intel 80х86.doc
Скачиваний:
37
Добавлен:
12.04.2015
Размер:
304.64 Кб
Скачать

Команды обработки строк

Последняя буква мнемоники команды определяет размер обрабатываемых данных: B – 1 байт, W – 2 байта, D – 4 байта.

Работа команд зависит от флага DF: когда DF=0, обработка строк ведется от младших адресов к старшим,

когда DF=1 – обработка ведется от старших адресов к младшим. Изменение флага DF – см. команды CLD, STD.

Строковые команды без префиксов REP, REPZ, REPNZ обрабатывают за-раз один элемент строки.

Команда

Комбинации операндов P1,P2,P3

Действие

Какие флаги меняет

Какие процес-соры

Расшифровка мнемоники команды

MOVSB,

MOVSW,

MOVSD,

пересылка 1 элемента строки:

DS:[(E)SI]  ES:[(E)DI],

(E)SI(E)SI 1/2/4,

(E)DI(E)DI 1/2/4

все

все

386 >

Move String of Byte / Word / Double Word

LODSB,

LODSW,

LODSD

Сохранение 1 элемента строки в аккумуляторе:

DS:[(E)SI]  AL/ AX/ EAX,

(E)SI(E)SI 1/2/4

все

все

386 >

Store String of Byte / Word / Double Word

STOSB,

STOSW,

STOSD

Запись 1 элемента строки из аккумулятора:

AL/ AX/ EAX  ES:[(E)DI],

(E)DI(E)DI 1/2/4

все

все

386 >

Load String of Byte / Word / Double Word

SCASB,

SCASW,

SCASD

Сравнение 1 элемента строки с аккумулятором:

(ES:[(E)DI] – {AL/AX/EAX}),

(E)DI  (E)DI 1/2/4

SF,ZF,PF,CF,AF,OF

все

все

386 >

Scan String of Byte

/ Word / Double Word

CMPSB,

CMPSW,

CMPSD

сравнение элементов строк

( DS:[(E)SI] – ES:[(E)DI] ),

(E)SI (E)SI 1/2/4,

(E)DI (E)DI 1/2/4

SF,ZF,PF,CF,AF,OF

все

все

386 >

Compare String of Byte / Word / Double Word

INSB,

INSW,

INSD

чтение элемента строки из порта c номером DX:

ES:[(E)DI]  port[DX],

(E)DI (E)DI 1/2/4

286 >

286 >

386 >

IN String of Byte / Word / Double Word

OUTSB,

OUTSW,

OUTSD

запись элемента строки в порт c номером DX:

port[DX]  DS:[(E)SI],

(E)SI (E)SI 1/2/4

286 >

286 >

386 >

OUT String of Byte / Word / Double Word

префикс REP …

Повторение следующей команды EСХ раз

ZF

все

Repeat

префикс REPZ

REPE

Повторение команды EСХ раз и пока ZF=1

ZF

все

Repeat if Zero / Equal

префикс REPNZ

REPNE

Повторение команды EСХ раз и пока ZF=0

ZF

все

Repeat if Zero / Equal

Соседние файлы в папке Лабы СПО