
- •Основные непривилегированные команды процессоров Intel 80х86
- •Команды пересылки и загрузки
- •Целочисленная арифметика
- •Логические команды
- •Команды побитовой обработки
- •Команды передачи управления
- •Команды обработки строк
- •Команды двоично-десятичной арифметики
- •Команды работы с флагами, команды управления процессором
Команды обработки строк
Последняя буква мнемоники команды определяет размер обрабатываемых данных: 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 |