Команды условного перехода
Таблица 7.2. Окончание команд условного перехода
Окончание |
Значение |
Окончание |
Значение |
a |
выше (для беззнаковых значений) |
p |
паритет |
b |
ниже (для беззнаковых значений) |
pe |
паритет четный |
c |
перенос |
po |
паритет нечетный |
e |
равно |
s |
знак |
g |
больше (для значений со знаком) |
z |
нуль |
l |
меньше (для значений со знаком) |
n |
отрицание |
o |
переполнение |
|
|
Команды управления процессором
Группа команд управления процессором представлена в табл. 7.3. Эта группа делится на три части.
Таблица 7.3. Команды управления процессором
Мнемокод / Операнды |
Описание |
Команды флагов |
|
clc |
сброс флага переноса |
cld |
сброс флага направления |
cli |
сброс флага прерывания |
cmc |
переключение флага переноса |
stc |
установка флага переноса |
std |
установка флага направления |
sti |
установка флага прерывания |
Команды внешней синхронизации |
|
esc |
переключение на сопроцессор |
hlt |
остановка процессора |
lock |
блокировка шины доступа к памяти |
wait |
установка процессора в состояние ожидания |
Прочие команды |
|
nop |
нет операции |
Пример 7.6. Использование команды test.
test di,08h ;проверить 3-й бит
jz m1 ;если =0, то перейти на метку m1
stc ;иначе установить флаг переноса
Команды для работ со строками
Группа команд для работ со строками представлена в табл. 7.4. Эта группа делится на три части.
Таблица 7.4. Команды обработки строк
Мнемокод / Операнды |
Описание |
Команды пересылки строк |
|
lods источник |
загрузка строки байтов или строки слов |
lodsb |
загрузка строки байтов |
lodsw |
загрузка строки слов |
movs назначение, источник |
пересылка строки байтов или строки слов |
movsb |
пересылка строки байтов |
movsw |
пересылка строки слов |
stos назначение |
запись строки байтов или строки слов |
stosb |
запись строки байтов |
stows |
запись строки слов |
Команды проверки строк |
|
cmps назначение, источник |
сравнение строк по байтам или словам |
cmpsb |
сравнение строк по байтам |
cmpsw |
сравнение строк по словам |
scas назначение |
поиск байта или слова в строке |
scasb |
поиск байта в строке |
scasw |
поиск слова в строке |
Команды префикса повторения |
|
rep |
повтор |
repe/repz |
повтор, пока равно 0 |
repne/repnz |
повтор, пока не равно 0 |
Все строковые команды используют для выполнения своих функций определенные регистры. В отличие от других команд, для которых вы сами выбираете используемые регистры, строковые команды требовательнее и всегда работают с одними и теми же комбинациями регистров – ds:si и es:di – с индексными регистрами строки-источника и строки-назначения, которые определяют смещения в данных и сегментах.
При операциях с байтами происходит вычитание или добавление 1 к регистру si и/или di; при операциях со словами добавляется или вычитается 2. Флаг направления df определяет, должна ли строковая команда приводить к уменьшению или увеличению si и di. Если df=1, тогда индексы изменяются в сторону меньших адресов. Если df=0, тогда индексы изменяются в сторону более высоких адресов. Для очистки флага df применяется команда cld (см. табл. 7.3.). Использование std (см. табл. 7.3.) приводит к установке флага df и автоматическому уменьшению si и di в сторону меньших адресов.
Пример 7.7. Использование команды movsb без префикса повторения.
cld ;автоувеличение si и di
mov cx, 100 ;использование сх в качестве счетчика
Repeat: movsb ;переслать 1 байт [es:di] [ds:si]
dec cx ;счетчик цикла
jnz Repeat ;повторять цикл, пока cx<>0
Пример 7.8. Использование команды movsb с префиксом повторения rep.
cld ;автоувеличение si и di
mov cx, 100 ;использование сх в качестве счетчика
rep movsb ;переслать 100 байт [es:di] [ds:si]