- •Лекции 17 -
- •Структура машинной
- •Структура машинной команды
- •Структура машинной команды
- •Структура машинной команды
- •Структура машинной команды
- •Сочетания операндов
- •Система команд
- •Система команд
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Команды пересылки
- •Команды пересылки данных
- •Команды пересылки данных
- •Прочие команды
- •Прочие команды
- •Прочие команды
- •Команды загрузки сегментных регистров
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды ввода – вывода
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Команды обработки строк
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Арифметические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Логические команды
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды сдвигов
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды обработки бит
- •Команды работы с регистром флагов
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Команды передачи управления
- •Пример 1
- •Пример 1
- •Пример 1
- •Пример 1
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 2
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
- •Пример 3
Команды обработки строк
Команды пересылки из памяти в память:
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 |