Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Программирование -> Assembler -> Основные команды языка ASSEMBLER


Основные команды языка 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 тактов
    +-------------------------+     (без префикса)
     Тип записываемой информации определяется
     по атрибуту операнда команды.

[   ВЕРНУТЬСЯ К ОГЛАВЛЕНИЮ   ]

 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.