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

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


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

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


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

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

Предыдущая страница Следующая страница
1 ... 73 74 75 76 77 78 79  80 81 82 83 84 85
восьми битах получено четное число  битов.  Если  флаг  PF  равен  единице
(четный паритет), то команда прибавляет к регистру  IP  значение  операнда
(относительное смещение) и выполняет  таким  образом  переход.  См.  также
команду JNP/JPO.

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

     О б ъ е к т н ы й  к о д: |01111010|--disp--|


                           JS: Переход по знаку
                          ----------------------
     О п е р а ц и я: Передает управления по определенному адресу, если  в
результате операции получен отрицательный знак. Если флаг SF равен единице
(отрицательно), то команда JS прибавляет к регистру IP  значение  операнда
(относительное смещение) и выполняет  таким  образом  переход.  См.  также
команду JNS.

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

     О б ъ е к т н ы й  к о д: |01111000|--disp--|


                    LAHF: Загрузка флагов в регистр АН
                   ------------------------------------
     О п е р а ц и я: Загружает значение флагового регистра в регистр  АН.
Данная команда обеспечивает совместимость с процессором  8080.  См.  также
команду SAHF.  Команда LAHF  заносит  правый  байт  флагового  регистра  в
регистр АН в следующем виде:

               SZ * A * P * C      (* обозначает неиспользуемые биты)

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

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


                  LDS: Загрузка регистра сегмента данных
                 ----------------------------------------
     О п е р а ц и я: Инициализирует начальный  адрес  сегмента  данных  и
адрес смещения к переменной для обеспечения доступа к  данной  переменной.
Команда LDS загружает в  необходимые  регистры  четыре  байта  из  области
памяти, содержащей относительный  адрес  и  сегментный  адрес.  Сегментный
адрес помещается в регистр DS, а относительный адрес - в  любой  из  общих
или индексных регистров или в  регистровый  указатель.  Следующая  команда
загружает относительный адрес в регистр DI:

               LDS   DI,адрес_памяти

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

     О б ъ е к т н ы й  к о д: |11000101|modregr/m|


             LES: Загрузка регистра дополнительного сегмента
            -------------------------------------------------
     О п е р а ц и я:    Инициализирует  начальный  адрес  дополнительного
сегмента и адрес смещения к переменной для .обеспечения доступа  к  данной
переменной. См. также команду LDS.

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

     О б ъ е к т н ы й  к о д: |11000100|modregr/m|


                  LOCK: Блокировка шины доступа к данным
                 ----------------------------------------
     О п е р а ц и я:   Запрещает   другим   (сопроцессорам   одновременно
изменять элементы данных.  Команда LOCK  представляет  собой  однобайтовый
префикс, который можно кодировать непосредственно  перед  любой  командой.
Данная операция посылает сигнал в другой процессор, запрещая использование
данных, пока не будет завершена следующая команда.

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

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


     LODS/LODSB/LODSW: Загрузка однобайтовой или двухбайтовой строки
    -----------------------------------------------------------------
     О п е р а ц и я: Загружает из памяти один байт в регистр AL или  одно
слово в регистр AХ.  Несмотря на то, что команда LODS выполняет  строковую
операцию, нет смысла использовать ее с  префиксом  REP.  Регистровая  пара
DS:SI адресует в памяти байт (для LODSB) или слово  (для  LODSW),  которые
загружаются в регистр AL или AХ соответственно.  Если флаг DF равен  нулю,
то операция прибавляет 1 (для байта) или 2 (для слова) к регистру SI. Если
флаг DF равен единице, то операция вычитает  1  (для  байта)  или  2  (для
слова) из регистра SI.

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

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


                                LOOP: Цикл
                               ------------
     О п е р а ц и я: Управляет  выполнением  группы  команд  определенное
число раз.  До начала цикла в регистр  CX  должно  быть  -загружено  число
выполняемых  циклов.  Команда  LOOP  находится  в  конце  цикла,  где  она
уменьшает значение в регистре СХ. на единицу.  Если значение в регистре CX
не равно нулю, то команда передает  управление  по  адресу,  указанному  в
операнде (прибавляет к регистру IP значение операнда); в противном  случае
управление передается на следующую после LOOP команду (происходит выход из
цикла).

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

     О б ъ е к т н ы й  к о д: у11100010у--disp--у


                 LOOPE/LOOPZ:  Цикл, если равно или нуль
                -----------------------------------------
     О п е р а ц и я:   Управляет выполнением группы  команд  определенное
число раз или пока установлен флаг ZF  (в  единичное  состояние).  Команды
LOOPE/LOOPZ  аналогичны  команде  LOOP,  за исключением того,  что по этим
командам цикл прекращается либо по нулевому значению в регистре  CX,  либо
по  нулевому  значению флага ZF (ненулевое состояние).  См.  также команды
LOOPNE/LOOPNZ.

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

     О б ъ е к т н ы й  к о д: |11100001|--disp--|


              LOOPNE/LOOPNZ: Цикл, если не равно или не нуль
             ------------------------------------------------
     О п е р а ц и я: Управляет  выполнением  группы  команд  определенное
число раз или  пока  сброшен  флаг  ZF  (в  нулевое  состояние).,  Команды
LOOPNE/LOOPNZ аналогичны команде LOOP за исключением  того,  что  по  этим
командам цикл прекращается либо по нулевому значению в регистре  CX,  либо
по единичному значению флага ZF (нулевое  состояние).  См.  также  команды
LOOPE/LOOPZ.

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

     О б ъ е к т н ы й  к о д: |11100000|--disp--|


                          MOV: Пересылка данных
                         -----------------------
     О п е р а ц и я: Пересылает один байт или одно слово между регистрами
или между регистром и памятью, а также передает непосредственное  значение
в регистр или в память. Команда MOV не может передавать данные между двумя
адресами памяти (для этой цели служит команда MOVS). Существует семь типов
команды MOV.

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

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

          Регистр/память в/из регистр:
               |100010dw|modregr/m|
          Непосредственное значение в регистр/память:
               |1100011w|mod000r/m|--data--|data если w=1|
          Непосредственное значение в регистр:
               |1011wreg|--data--|data если w=1|
          Память в регистр AX (AL):
               |1010000w|addr-low|addr-high|
          Регистр AX (AL) в память:
               |1010001w|addr-low|addr-high|
          Регистр/память в сегментный регистр:
               |10001110|mod0sgr/m| (sg - сегментный регистр)
          Сегментный регистр в регистр/память:
               |10001100|mod0sgr/m| (sg - сегментный регистр)


         MOVS/MOVSB/MOVSW: Пересылка строки байт или строки слов
        ---------------------------------------------------------
     О п е р а ц и я: Пересылает данные между  областями  памяти.  Команды
MOVS(B/W) обычно используются с префиксом REP.  Команда  MOVSB  пересылает
любое число байтов, а команда MOVSW - любое число слов.  Перед выполнением
команды  регистровая  пара  DS:SI  должна  адресовать  источник  пересылки
("откуда") а регистровая пара ES:DI - получатель пересылки ("куда").  Если
флаг DF  равен  нулю,  то  операция  пересылает  данные  слева  направо  и
увеличивает регистры SI и DI.  Если флаг  DF  равен  единице  то  операция
пересылает данные справа налево и уменьшает регистры SI и DI.

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

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


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

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

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


                        NEG: Изменение знака числа
                       ----------------------------
     О п е р а ц и я:    Меняет  двоичное  значение  из  положительного  в
отрицательное и из отрицательного в положительное.  Команда NEG  вычисляет
двоичное дополнение от указанного операнда: вычитает  операнд  из  нуля  и
прибавляет единицу.  Операндом может быть байт или слово в регистре или  в
памяти.  См. также команду NOT. Флаги: Команда воздействует на  флаги  AF,
CF, OF, PF, SF и ZF.

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


                            NOP: Нет операции
                           -------------------
     О п е р а ц и я: Применяется для удаления или вставки машинных  кодов
или для задержки выполнения программы. Команда NOP выполняет операцию XCHG
АХ,АХ, которая ничего не меняет.

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

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


                           NOT: Логическое НЕТ
                          ---------------------
     О п е р а ц и я:   Меняет  нулевые  биты  на  единичные  и  наоборот.
Операндом может быть байт или слово в регистре или  в  памяти.  См.  также
команду NEG.

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

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


                            OR: Логическое ИЛИ
                           --------------------
     О п е р а ц и я: Выполняет поразрядную дизъюнкцию  (ИЛИ)  над  битами
двух операндов.  Операндами являются байты или слова  в  регистрах  или  в
памяти, второй  операнд может иметь непосредственное значение.  Команда OR
обрабатывает операнды  побитово.  Если  любой  из  проверяемых  бит  равен
единице, то бит в операнде 1 становится равным единице, в противном случае
бит в операнде 1 не изменяется. См. также команды AND и XOR.

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

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

          Регистр/память с регистром:
               |000010dw|modregr/m|
          Непосредственное с аккумулятором:
               |0000110w|--data--|data если w=1|
          Непосредственное с регистром/памятью:
               |1000000w|mod001r/m|--data--|data если w=1|


                    OUT: Вывод байта или слова в порт
                   -----------------------------------
     О п е р а ц и я: Передает в выводной порт байт  из  регистра  AL  или
слово из регистра AХ.  Порт кодируется как фиксированный числовой  операнд
(OUT порт#,АХ) или как переменная в регистре DX  (OUT  DX.AX).  Процессоры
80186, 80286 и 80386 имеют, кроме того,  команду  OUTS  (Output  String  -
вывод строки). См. также команду IN.

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

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

          Переменный порт:   |1110111w|
          Фиксированный порт:|1110011w|--port--|


                      POP: Извлечение слова из стека
                     --------------------------------
     О п е р а ц и я: Передает слово (помещенное ранее в стек) в указанный
операнд.  Регистр SP указывает на текущее слово в вершине  стека.  Команда
POP извлекает слово из стека и увеличивает значение в регистре  SP  на  2.
Существует три типа команды POP в зависимости от операнда: общий  регистр,
Предыдущая страница Следующая страница
1 ... 73 74 75 76 77 78 79  80 81 82 83 84 85
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (15)

Реклама