Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 17 - 18 - Система команд IA-32.ppt
Скачиваний:
47
Добавлен:
18.02.2023
Размер:
612.35 Кб
Скачать

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

Команды пересылки из памяти в память:

MOVS

MOVSB

MOVSW

MOVSD

Пересылка осуществляется из DS:[(E)SI] в ES:[(E)DI]. Сегмент DS может быть переопределен с помощью префикса замены.

После пересылки значения регистров (E)DI и (E)SI автоматически изменяются в зависимости от разрядности данных (1, 2 или 4 байта).

Направление изменения зависит от флага DF в регистре флагов. Если DF=0, то значения увеличиваются. Если DF=1, то значения уменьшаются.

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

Команды пересылки из памяти в регистр:

LODS

LODSB

LODSW

LODSD

Пересылка осуществляется в регистр AL, AX или EAX из памяти по адресу DS:[(E)SI]. Сегмент DS может быть переопределен с помощью префикса замены.

После пересылки значения регистра (E)SI автоматически изменяется в зависимости от разрядности данных (1, 2 или 4 байта).

Направление изменения зависит от флага DF в регистре флагов. Если DF=0, то значение увеличивается. Если DF=1, то значение уменьшается.

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

Команды пересылки из регистра в память:

STOS

STOSB

STOSW

STOSD

Пересылка осуществляется из регистра AL, AX или EAX в память по адресу ES:[(E)DI].

После пересылки значение регистра (E)DI автоматически изменяется в зависимости от разрядности данных (1, 2 или 4 байта).

Направление изменения зависит от флага DF в регистре флагов. Если DF=0, то значение увеличивается. Если DF=1, то значение уменьшается.

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

Команды сравнения строк:

CMPS

CMPSB

CMPSW

CMPSD

Осуществляется сравнение значений по адресам DS:[(E)SI] и ES:[(E)DI]. Сегмент DS может быть переопределен с помощью префикса замены.

После сравнения значения регистров (E)DI и (E)SI автоматически изменяются в зависимости от разрядности данных (1, 2 или 4 байта).

Направление изменения зависит от флага DF в регистре флагов. Если DF=0, то значения увеличиваются. Если DF=1, то значения уменьшаются.

Влияет на регистр флагов.

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

Команды сканирования строк:

SCAS

SCASB

SCASW

SCASD

Осуществляет сравнение значения регистра AL, AX или EAX и значения ячейки памяти по адресу ES:[(E)DI].

После сравнения регистр (E)DI автоматически изменяется в зависимости от разрядности данных (1, 2 или 4 байта).

Направление изменения зависит от флага DF в регистре флагов. Если DF=0, то значение увеличивается. Если DF=1, то значение уменьшается.

Влияет на регистр флагов.

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

Префиксы команд обработки строк: REP – выполнять (E)CX раз

REPE / REPZ - выполнять пока равно / ноль

( выход (E)CX = 0 или ZF = 0) REPNE / REPNZ - выполнять пока не равно / не ноль

( выход (E)CX = 1 или ZF = 1)

Примеры:

rep stosb repz scasw repne cmpsd

Арифметические команды

Команда сложения:

ADD назначение, источник Формула расчета: назначение = назначение + источник Особенности:

назначением может быть РОН или ячейка памяти,

источником может быть РОН, ячейка памяти или непосредственный операнд,

влияет на регистр флагов,

два операнда не могут быть одновременно ячейками памяти.

Примеры:

add

ax, dx

add

dword ptr ds:[edx], ecx

add

cl, 100

Арифметические команды

Команда сложения с переносом:

ADC назначение, источник

Формула расчета: назначение = назначение + источник + CF Особенности:

назначением может быть РОН или ячейка памяти,

источником может быть РОН, ячейка памяти или непосредственный операнд,

влияет на регистр флагов,

два операнда не могут быть одновременно ячейками памяти.

Примеры:

adc

eax, edx

adc

word ptr ds:[ebx], 800

adc

ah, 10

Арифметические команды

Команда вычитания:

SUB назначение, источник Формула расчета: назначение = назначение - источник Особенности:

назначением может быть РОН или ячейка памяти,

источником может быть РОН, ячейка памяти или непосредственный операнд,

влияет на регистр флагов,

два операнда не могут быть одновременно ячейками памяти.

Примеры:

sub

ecx, ebx

sub

byte ptr ds:[ebx], dh

sub

ax, 1000

Арифметические команды

Команда вычитания с заемом:

SBB назначение, источник

Формула расчета: назначение = назначение – (источник + CF) Особенности:

назначением может быть РОН или ячейка памяти,

источником может быть РОН, ячейка памяти или непосредственный операнд,

влияет на регистр флагов,

два операнда не могут быть одновременно ячейками памяти.

Примеры:

sbb

eax, edx

sbb

dword ptr ds:[edx], ecx

sbb

eax, 5000