Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Aliens Vs Predator |#1| To freedom!
Aliens Vs Predator |#10| Human company final
Aliens Vs Predator |#9| Unidentified xenomorph
Aliens Vs Predator |#8| Tequila Rescue

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Питер Абель Весь текст 992.61 Kb

Ассемблер и программирование для IBM PC

Предыдущая страница Следующая страница
1 ... 71 72 73 74 75 76 77  78 79 80 81 82 83 84 85

          Регистр И регистр или память:
               |001000dw|modregr/m|
          Регистр AX (AL) И непосредственное значение:
               |0010010w|--data--|data, если w=1|
          Регистр или память И непосредственное значение:
               |1010000w|modl00r/m|--data--|data, если w=1|


                          CALL: Вызов процедуры
                         -----------------------
     О п е р а ц и я: Выполняет короткий или длинный вызов  процедуры  для
связи подпрограмм.  Для возврата из процедуры  используется  команда  RET.
Команда CALL уменьшает содержимое SP на 2 и заносит в стек адрес следующей
команды (из IP), а затем устанавливает в регистре IP  относительный  адрес
процедуры.  Впоследствии команда  RET  использует  значение  в  стеке  для
возврата. Существует четыре типа команды CALL для вызова внутри сегмента и
между сегментами.  Команда межсегментного  вызова  сначала  уменьшает  SP,
заносит  в  стек  адрес  из  регистра  CS,  а  затем  загружает  в    стек
внутрисегментный указатель.

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д (четыре формата):

          Прямая адресация в сегменте:
               |11101000|disp-low|diep-high|
          Косвенная адресация в сегменте:
               |11111111|mod010r/m|
          Косвенная адресация между сегментами:
               |11111111|mod011r/m|
          Прямая адресация между сегментами:
               |10011010|offset-low|offset-high|seg-low|seg-high|


                    CBW: Преобразование байта в слово
                   -----------------------------------
     О п е р а ц и я: Расширяет  однобайтовое  арифметическое  значение  в
регистре AL до размеров слова.  Команда CBW размножает знаковый бит (7)  в
регистре AL по всем Битам регистра АН. См также команду CWD.

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д: 10011000 (без операндов).


                        CLC: Сброс флага переноса
                       ---------------------------
     О п е р а ц и я: Устанавливает значение флага переноса, равное 0, так
что, например, команда ADC не прибавляет единичный  бит.  Команда  CLC  не
имеет операндов. См. также команду STD.

     Ф л а г и: Команда воздействует на флаг CF (устанавливается в 0).

     О б ъ е к т н ы й  к о д: 11111000.


                      CLD: Сброс  флага направления
                     -------------------------------
     О п е р а ц и я: Устанавливает значение флага направления, равное  0.
В результате такие строковые операции,  как  CMPS  или  MOVS  обрабатывают
данные слева направо. См. также команду STD.

     Ф л а г и: Команда воздействует на флаг DF (устанавливается в 0).

     О б ъ е к т н ы й  к о д: 11111100 (без операндов).


                       CLI: Сброс флага прерывания
                      -----------------------------
     О п е р а ц и я:   Запрещает  маскируемые   внешние   прерывания   по
процессорной шине INTR посредством установки значения флага прерывания  IF
в 0. См. также команду STI.

     Ф л а г и: Команда воздействует на флаг IF (устанавливается в 0).

     О б ъ е к т н ы й  к о д: 11111010 (без операндов).


                     CMC: Переключение флага переноса
                    ----------------------------------
     О п е р а ц и я:   Инвертирует  флаг  CF,  т.е.  преобразует  нулевое
значение флага CF в единичное и наоборот.

     Ф л а г и: Команда воздействует на флаг CF (инвертируется).

     О б ъ е к т н ы й  к о д: 11110101 (без операндов).


                              CMP: Сравнение
                             ----------------
     О п е р а ц и я: Сравнивает содержимое двух полей данных.  Фактически
команда CMP вычитает второй операнд из первого,  но  содержимое  полей  не
изменяет.  Операнды должны иметь одинаковую длину: байт или слово. Команда
CMP может сравнивать  содержимое  регистра,  памяти  или  непосредственное
значение  с  содержимым  регистра;    или    содержимое    регистра    или
непосредственное значение с содержимым памяти. См. также команду CMPS.

     Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF, SF и ZF.

     О б ъ е к т н ы й  к о д (три формата):

          Регистр или память с регистром:
               |001110dw|modregr/m|
          Непосредственное значение с регистром AX (AL):
               |0011110w|--data--|data, если w=1|
          Непосредственное значение с регистром или памятью:
               |100000sw|mod111r/m|--data--|data, если sw=0|


                    CMPS/CMPSB/CMPSW: Сравнение строк
                   -----------------------------------
     О п е р а ц и я: Сравнивают строки любой длины.  Этим командам обычно
предшествует префикс REPn, например REPE CMPSB.  Команда CMPSB  сравнивает
память по байтам, а команда CMPSW - по словам.  Первый операнд этих команд
адресуется регистровой парой DS:SI, а второй -  регистровой  парой  ES:DI.
Если флаг DF установлен  в  0,  то  сравнение  происходит  слева  направо,
регистры SI и DI при этом увеличиваются после каждого сравнения. Если флаг
DF установлен в 1, то сравнение происходит справа налево, а регистры SI  и
DI при этом уменьшаются после каждого сравнения.

     Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF, SF и ZF.

     О б ъ е к т н ы й  к о д: 1010011w.


                CWD: Преобразование слова в двойное слово
               -------------------------------------------
     О п е р а ц и я: Расширяет арифметическое значение в регистре  АХ  до
размеров двойного слова  в  регистровой  паре  DX:AX,  дублируя  при  этом
знаковый  бит  (15-й  бит  в  регистре  АХ)  через  регистр  DX.    Обычно
используется для получения 32-битового делимого. См. также команду CBW.

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д: 10011001 (без операндов).


                  DAA: Десятичная коррекция для сложения
                 ----------------------------------------
     О п е р а ц и я: Корректирует результат сложения двух BCD (десятичных
упакованных) элементов в  регистре  AL.  Если  четыре  правых  бита  имеют
значение больше 9 или флаг AF установлен в 1, то команда DAA прибавляет  6
к регистру AL и устанавливает флаг AF.  Если регистр AL содержит  значение
больше, чем 9F, или флаг CF установлен в 1, то команда DAA прибавляет  60Н
к регистру AL и устанавливает флаг CF. См. также команду DAS.

     Ф л а г и: Команда воздействует на флаги AF. CF, PF, SF и 2F (флаг OF
неопределен).

     О б ъ е к т н ы й  к о д: 00100111 (без операндов).


                 DAS: Десятичная коррекция для вычитания
                -----------------------------------------
     О п е р а ц и я:    Корректирует   результат   вычитания   двух   BCD
(десятичных упакованных) чисел в регистре  AL.  Если  четыре  правых  бита
имеют значение больше 9 или  флаг  AF  установлен  в  1,  то  команда  DAS
вычитает 60Н из регистра AL и устанавливает флаг  CF.  См.  также  команду
DAA.

     Ф л а г и: Команда воздействует на флаги AF, CF, PF, SF и ZF.

     О б ъ е к т н ы й  к о д: 00101111 (без операндов).


                              DEC: Декремент
                             ----------------
     О п е р а ц и я: Вычитает 1 из байта  или  слова  в  регистре  или  в
памяти например DEC СХ. См. также команду INC.

     Ф л а г и: Команда воздействует на флаги AF, OF, PF, SF и ZF.

     О б ъ е к т н ы й  к о д (два формата):

          Регистр:            |01001reg|
          Регистр или память: |1111111w|mod001r/m|


                               DIV: Деление
                              --------------
     О п е р а ц и я: Выполняет деление беззнакового делимого (16  или  32
бит)  на  беззнаковый  делитель  (8  или  16  бит).  Левый  единичный  бит
рассматривается как бит данных, а не как минус  для  отрицательных  чисел.
Для 16-битового  деления  делимое  должно  находиться  в  регистре  АХ,  а
8-битовый делитель возможен в регистре или  в  памяти,  например  DIV  BH.
Частное от деления получается в регистре AL, а остаток -  в  регистре  AН.
Для 32-битового деления делимое должно находиться в регистровой паре DX:AX
а 16-битовый делитель возможен в регистре или в памяти,  например DIV  СХ.
Частное  от  деления получается в регистре AХ,  а остаток - в регистре DX.
См. также команду IDIV.

     Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF SF и ZF  (все
не определены).

     О б ъ е к т н ы й  к о д: |1111011w|mod110r/m|


                     ESC: Переключение на сопроцессор
                    ----------------------------------
     О п е р а ц и я:    Обеспечивает   использование   сопроцессора   для
выполнения специальных операций.  Для выполнения  арифметических  операций
над числами с плавающей запятой используются сопроцессоры 8087 или  80287.
Команда ESC передает в сопроцессор инструкцию  и  операнд  для  выполнения
необходимой операции.

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д: |11011xxx|modxxxr/m| (x - любое знач.).


                       HLT: Останов микропроцессора
                      ------------------------------
     О п е р а ц и я: Приводит процессор в состояние останова,  в  котором
происходит ожидание прерывания.  При завершении команды HLT регистры CS:IP
указывают на следующую команду.  При  возникновении  прерывания  процессор
записывает в стек регистры CS и  IP  и  выполняет  подпрограмму  обработки
прерывания.  При возврате из  подпрограммы  команда  IRET  восстанавливает
регистры CS и IP из стека и управление передается на команду, следующую за
командой HLT.

     Ф л а г и: Не меняются.

     О б ъ е к т н ы й  к о д: 11110100 (без операндов).


                   IDIV: Целое деление знаковых величин
                  --------------------------------------
     О п е р а ц и я: Выполняет деление знакового делимого (16 или 32 бит)
на знаковый делитель (8 или 16 бит).  Левый единичный бит  рассматривается
как знак минус для отрицательных чисел.  Для 16-битового  деления  делимое
должно находиться в регистре АХ, a 8-битовый делитель возможен в  регистре
или в памяти, например IDIV DL.  Частное от деления получается в  регистре
AL, а остаток - в регистре АН.  Для  32-битового  деления  делимое  должно
находиться в регистровой паре DX:AX,  а  16-битовый  делитель  возможен  в
регистре или в памяти, например IDIV BX.  Частное от деления получается  в
регистре АХ, а остаток -  в  регистре  DX.  См.  команды  CBW  и  CWD  для
расширения знакового делимого, а также команду DIV.

     Ф л а г и: Команда воздействует на флаги AF, CF, OF, PF, SF и ZF.

     О б ъ е к т н ы й  к о д: |1111011w|mod111r/m|


                  IMUL: Целое умножение знаковых величин
                 ----------------------------------------
     О п е р а ц и я: Выполняет умножение на знаковый множитель (8 или  16
бит). Левый единичный бит рассматривается как знак минус для отрицательных
чисел.  Для 8-битового умножения множимое должно находиться в регистре AL,
а  множитель  возможен  в  регистре  или  в  памяти,  например  IMUL   BL.
Произведение получается в регистре АХ.  Для 16-битового умножения множимое
должно находиться в регистре АХ, а множитель возможен  в  регистре  или  в
памяти, например IMUL  BX.  Произведение  получается  в  регистровой  паре
DX:AX. См. также команду MUL.

     Ф л а г и: Команда воздействует на флаги CF и OF (флаги AF PF SF и ZF
не определены).

     О б ъ е к т н ы й  к о д: |1111011w|mod101r/m|


                    IN: Ввод байта или слова из порта
                   -----------------------------------
     О п е р а ц и я: Передает из вводного порта один байт  в  регистр  AL
или два байта в регистр АХ).  Порт кодируется как  фиксированный  числовой
операнд (IN АХ,порт#)  или  как  переменная  в  регистре  DX  (IN  AX,DX).
Процессоры 80186, 80286 и 80386 имеют,  кроме  того,  команду  INS  (Input
Предыдущая страница Следующая страница
1 ... 71 72 73 74 75 76 77  78 79 80 81 82 83 84 85
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (15)

Реклама