Основные команды языка ASSEMBLER
### Префиксы повторения ###################################################
### REP
используется с командами MOVS и STOS, обеспечивая повторение пока
не достигнут конец цепочки, т.е. пока содержимое регистра CX не
достигнет нуля. После каждого повторения производится декремент CX,
поэтому его необходимо инициализировать на требуемое число.
REPE и REPZ
используются с командами CMPS и SCAS, обеспечивая повторение пока
содержимое флажка ZF = 1 или пока содержимое регистра СХ не
достигнет нуля. Состояние ZF определяется результатом выполнения
команд. После каждого повторения производится декремент CX,
поэтому его необходимо инициализировать на требуемое число.
REPNE и REPNZ
используются с командами CMPS и SCAS, обеспечивая повторение, пока
содержимое флажка ZF = 0 или пока содержимое регистра СХ не
достигнет нуля. Состояние ZF определяется результатом выполнения
команд. После каждого повторения производится декремент CX,
поэтому его необходимо инициализировать на требуемое число.
### Регистр флажков не модифицируется.
### Форматы префиксов:
7 0
+-------------------------+ +----------------+
¦ REP (MOVS или STOS) ¦ l = 1 байт ¦ 11110011 ¦
¦ REPE (CMPS или SCAS) ¦ префикса +----------------+
¦ REPZ (CMPS или SCAS) ¦
+-------------------------+
7 0
+-------------------------+ +----------------+
¦ REPNE (MOVS или STOS) ¦ l = 1 байт ¦ 11110010 ¦
¦ REPNZ (CMPS или SCAS) ¦ префикса +----------------+
+-------------------------+
### Примечание:
При обработке строк микропроцессор реагирует на прерывание до
обработки следующего элемента строки. После возврата из прерывания
операция возобновляется с точки прерывания. Однако возобновление операции
будет неправильным, если, кроме префикса повторения, определены еще один
или два префикса (замены сегмента, блокировки). Во время обработки
прерывания микропроцессор помнит действие только одного непосредственно
предшествующего команде префикса. После возврата из прерывания, любые
дополнительные префиксы не действуют.
### Команда MOVS / MOVSB / MOVSW ##########################################
### Передает байт (слово), адресуемое парой регистров DS:SI, в байт
(слово), на которое указывает пара регистров ES:DI. После пересылки
автоматически производится декремент (при DF = 1) или инкремент (при
DF = 0) содержимого регистров SI и DI. Если команда оперирует байтами,
индексные регистры изменяются на 1, если словами - на 2.
С префиксом REP команда используется для пересылки строки байт (слов)
из одной области памяти в другую. При этом, после каждого выполнения
команды производится автоматическое уменьшение регистра СХ на 1, поэтому
его необходимо инициализировать на требуемое число повторений.
Операнды команды (в формате MOVS) используются не для адресации, а для
определения типа передаваемой информации: байт или слово.
### Регистр флажков не модифицируется.
### Форматы команды:
7 0
+-------------------------+ l = 1 байт +----------------+
¦ MOVSB (MOVSW) ¦ t = 18 тактов(без REP) ¦ 1010010 w ¦
+-------------------------+ +----------------+
Тип передаваемой информации определяется
по мнемонике команды: символ B означает
передачу байта, а W - передачу слова.
+-------------------------+ l = 1 байт
¦ MOVS Память, Память ¦ t = 18 тактов(без REP)
+-------------------------+
Тип передаваемой информации определяется
по атрибутам операндов команды.
### Команда CMPS / CMPSB / CMPSW ##########################################
### Сравнивает байт (слово), адресуемое парой регистров DS:SI с байтом
(словом), на который указывает пара регистров ES:DI. После сравнения
автоматически производится декремент (при DF = 1) или инкремент (при
DF = 0) содержимого регистров DI и SI. Если команда оперирует байтами,
индексные регистры изменяются на 1, если словами - на 2.
С префиксами REPE и REPZ команда используется для поиска отличающихся
элементов строк; с префиксами REPNE и REPNZ команда используется для
поиска одинаковых элементов строк. При наличии префикса после каждого
выполнения команды производится автоматическое уменьшение регистра СХ на 1,
поэтому его необходимо инициализировать на требуемое число повторений.
Операнды команды (в формате CMPS) используются не для адресации, а для
определения типа сравниваемой информации: байт или слово.
### Флажки устанавливаются в соответствии с результатом операции.
### Форматы команды:
7 0
+-------------------------+ l = 1 байт +----------------+
¦ CMPSB (CMPSW) ¦ t = 22 тактов (без ¦ 1010011 w ¦
+-------------------------+ REPNE или REPNZ) +----------------+
Тип сравниваемой информации определяется
по мнемонике команды: символ B означает
сравнение байтов, а W - сравнение слов.
+-------------------------+ l = 1 байт
¦ CMPS Память, Память ¦ t = 22 тактов (без
+-------------------------+ REPNE или REPNZ)
Тип сравниваемой информации определяется
по атрибутам операндов команды.
### Команда SCAS / SCASB / SCASW ##########################################
### Сравнивает значение в регистре AL (AX) с байтом (словом), на который
указывает пара регистров ES: DI. После сравнения автоматически
производится декремент (при DF = 1) или инкремент (при DF = 0)
содержимого регистра DI. Если команда оперирует байтами, индексный
регистр изменяется на 1, если словами - на 2.
С префиксами REPE и REPZ команда используется для поиска элемента
строки, отличающегося от заданного значения; с префиксами REPNE и REPNZ
команда используется для поиска элемента строки со значением равным
заданному. При наличии префикса после каждого выполнения команды
производится автоматическое уменьшение регистра СХ на 1, поэтому его
необходимо инициализировать на требуемое число повторений.
Операнд команды (в формате SCAS) используются не для адресации, а для
определения типа сравниваемой информации: байт или слово.
### Флажки устанавливаются в соответствии с полученным результатом.
### Форматы команды:
7 0
+-------------------------+ l = 1 байт +----------------+
¦ SCASB (SCASW) ¦ t = 15 тактов (без ¦ 1010111 w ¦
+-------------------------+ REPNE или REPNZ) +----------------+
Тип сравниваемой информации определяется
по мнемонике команды: символ B означает
сравнение байтов, а W - сравнение слов.
+-------------------------+ l = 1 байт
¦ SCAS Память ¦ t = 15 тактов (без
+-------------------------+ REPNE или REPNZ)
Тип сравниваемой информации определяется
по атрибуту операнда команды.
### Команда LODS / LODSB / LODSW ##########################################
### Загружает байт (слово), на который указывает пара регистров DS:SI, в
аккумулятор AL (AX). После выполнения загрузки автоматически производится
декремент (при DF = 1) или инкремент (при DF = 0) содержимого регистра SI.
Если команда оперирует байтами, индексный регистр изменяется на 1, если
словами - на 2.
Команда используется без префиксов.
Операнд команды (в формате LODS) используются не для адресации, а для
определения типа загружаемой информации: байт или слово.
### Регистр флажков не модифицируется.
### Форматы команды:
7 0
+-------------------------+ l = 1 байт +----------------+
¦ LODSB (LODSW) ¦ t = 12 тактов ¦ 1010110 w ¦
+-------------------------+ +----------------+
Тип загружаемой информации определяется
по мнемонике команды: символ B означает
загрузку байт, а W - загрузку слова.
+-------------------------+ l = 1 байт
¦ LODS Память ¦ t = 12 тактов
+-------------------------+
Тип загружаемой информации определяется
по атрибуту операнда команды.
### Команда STOS / STOSB / STOSW ##########################################
### Записывает содержимое регистра AL (AX) в байт (слово), на который
указывает пара регистров ES:DI. После выполнения записи автоматически
производится декремент (при DF = 1) или инкремент (при DF = 0) содержимого
регистра DI. Если команда оперирует байтами, индексный регистр изменяется
на 1, если словами - на 2.
С префиксом REP команда используется для заполнения строки
фиксированным значением. При наличии префикса после каждого выполнения
команды производится автоматическое уменьшение регистра СХ на 1, поэтому
его необходимо инициализировать на требуемое число повторений.
Операнд команды (в формате STOS) используются не для адресации, а для
определения типа записываемой информации: байт или слово.
### Регистр флажков не модифицируется.
### Форматы команды:
7 0
+-------------------------+ l = 1 байт +----------------+
¦ STOSB (STOSW) ¦ t = 11 тактов ¦ 1010101 w ¦
+-------------------------+ (без префикса) +----------------+
Тип записываемой информации определяется
по мнемонике команды: символ B означает
запись байта, а W - запись слова.
+-------------------------+ l = 1 байт
¦ STOS ¦ t = 11 тактов
+-------------------------+ (без префикса)
Тип записываемой информации определяется
по атрибуту операнда команды.
[ ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ ]
|