Главная · Поиск книг · Поступления книг · 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 ... 75 76 77 78 79 80 81  82 83 84 85
                    ---------------------------------
     О п е р а ц и я:   Разрешает  маскируемые  внешние  прерывания  после
выполнения следующей команды и устанавливает значения флага прерывания  IF
в 1. См. также команду CLI.

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

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


      STOS/STOSB/STOSW: Запись однобайтовой или двухбайтовой строки
     ---------------------------------------------------------------
     О п е р а ц и я: Сохраняет байт или слово в памяти. При использовании
префикса REP операция дублирует  значение  байта  или  слова  определенное
число раз, что делает ее удобной для очистки областей памяти.  Для команды
STOSB необходимый байт загружается в  регистр  AL,  а  для  команды  STOSW
необходимое  слово  загружается  в  регистр  АХ.  Регистровая  пара  ES:DI
указывает область памяти, куда должен быть записан байт  или  слово.  Если
флаг DF равен нулю, то  операция  записывает  в  память  слева  направо  и
увеличивает регистр DI. Если флаг DF равен единице, то операция записывает
в память справа налево и уменьшает значение в регистре DI.

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

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


                      SUB: Вычитание двоичных чисел
                     -------------------------------
     О п е р а ц и я: Вычитает байт  или  слово  в  регистре,  памяти  или
непосредственное значение из регистра;  или  вычитает  байт  или  слово  в
регистре или непосредственное значение из памяти. См. также команду SBB.

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

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

          Регистр из регистра или памяти:
               |001010dw|modregr/m|
          Непосредственное значение из регистра АХ (AL):
               |0010110w|--data--|data, если w=1|
          Непосредственное значение из регистра или памяти:
               |100000sw|mod101r/m|--data--|data, если sw=01|


                           TEST: Проверка битов
                          ----------------------
     О п е р а ц и я:  Команда  выполняет  проверку  байта  или  слова  на
определенную битовую комбинацию. Команда TEST действует аналогично команде
AND,  но  не  изменяет  результирующий  операнд.  Операнды  могут    иметь
однобайтовые  или  двухбайтовые  значения.  Второй  операнд  может   иметь
непосредственное значение.  Команда  выставляет  флаги  в  соответствии  с
логической функцией И.

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

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

          Регистр или память И регистр:
               |1000010w|modregr/m|
          Непосредственное значение И регистр АХ (AL):
               |1010100w|--data--|data, если w=1|
          Непосредственное значение И регистр или память:
               y1111011w|mod000r/m|--data--|data, если w=1|


             WAIT: Установка процессора в состояние ожидания
            -------------------------------------------------
     О п е р а ц и я:   Позволяет  процессору   оставаться   в   состоянии
ожидания,  пока  не  произойдет  внешнее  прерывание.   Данная    операция
необходима для обеспечения синхронизации процессора с внешним  устройством
или с сопроцессором.  Процессор  ожидает,  пока  внешнее  устройство  (или
сопроцессор) не закончит выполнение операции и на входной  линии  TEST  не
появится сигнал (активный уровень).

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

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


                            XCHG: Перестановка
                           --------------------
     О п е р а ц и я: Переставляет два байта или  два  слова  между  двумя
регистрами (например, XCHG AH,BL) или между регистром и памятью (например,
XCHG CX,word).

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

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

          Регистр и аккумулятор:    |10010reg|
          Регистр/память и регистр: |1000011w|modregr/m|


                           XLAT: Перекодировка
                          ---------------------
     О п е р а ц и я: Транслирует байты  в  другой  формат,  например  при
переводе нижнего регистра в верхний или  при  перекодировке  ASCII-кода  в
EBCDIC-код.  Для выполнения данной команды необходимо  определить  таблицу
преобразования байт и загрузить ее адрес в регистр ВХ.  Регистр AL  должен
содержать  байт,  который  будет  преобразован  с  помощью  команды  XLAT.
Операция использует  значение  в  регистре  AL  как  смещение  в  таблице,
выбирает байт по этому смещению и помещает его в регистр AL.

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

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


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

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

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

          Регистр/память с регистром:
               |001100dw|modregr/m|
          Непосредственное с регистром AX (AL):
               |0011010w|--data--|data если w=1|
          Непосредственное с регистром/памятью:
               |1000000w|mod110r/m|--data--|data если w=1|



ПРИЛОЖЕНИЯ
__________________________________________________________________________


     ПРИЛОЖЕНИЕ 1:                                Коды ASCII-символов
     ________________________________________________________________

     Ниже представлены первые 128 символов ASCII-кода.  В  руководстве  по
языку BASIC приведены остальные  128  символов.  На  помним,  что  шест.20
представляет стандартный символ пробела.


                    Таблица A-1. Набор ASCII символов
__________________________________________________________________________

Дес  Шест Симв              Дес  Шест Симв  Дес  Шест Симв  Дес  Шест Симв

000  00h  Нуль              032  20h  sp    064  40h   @    096  60h   `
001  01h  Начало заголовка  033  21h   !    065  41h   A    097  61h   a
002  02h  Начало текста     034  22h   "    066  42h   B    098  62h   b
003  03h  Конец текста      035  23h   #    067  43h   C    099  63h   c
004  04h  Конец передачи    036  24h   $    068  44h   D    100  64h   d
005  05h  КТМ               037  25h   %    069  45h   E    101  65h   e
006  06h  Да                038  26h   &    070  46h   F    102  66h   f
007  07h  Звонок            039  27h   '    071  47h   G    103  67h   g
008  08h  Возврат на шаг    040  28h   (    072  48h   H    104  68h   h
009  09h  Гориз.табуляция   041  29h   )    073  49h   I    105  69h   i
010  0Ah  Перевод строки    042  2Ah   *    074  4Ah   J    106  6Ah   j
011  0Bh  Верт.табуляция    043  2Bh   +    075  4Bh   K    107  6Bh   k
012  0Ch  Перевод страницы  044  2Ch   ,    076  4Ch   L    108  6Ch   l
013  0Dh  Возврат каретки   045  2Dh   -    077  4Dh   M    109  6Dh   m
014  0Eh  Shift out         046  2Eh   .    078  4Eh   N    110  6Eh   n
015  0Fh  Shift in          047  2Fh   /    079  4Fh   O    111  6Fh   o
016  10h  Data line esc     048  30h   0    080  50h   P    112  70h   p
017  11h  Управление 1      049  31h   1    081  51h   Q    113  71h   q
018  12h  Управление 2      050  32h   2    082  52h   R    114  72h   r
019  13h  Управление 3      051  33h   3    083  53h   S    115  73h   s
020  14h  Управление 4      052  34h   4    084  54h   T    116  74h   t
021  15h  Нет               053  35h   5    085  55h   U    117  75h   u
022  16h  Синхронизация     054  36h   6    086  56h   V    118  76h   v
023  17h  Конец блока       055  37h   7    087  57h   W    119  77h   w
024  18h  Анулирование      056  38h   8    088  58h   X    120  78h   x
025  19h  End of medium     057  39h   9    089  59h   Y    121  79h   y
026  1Ah  Замена            058  3Ah   :    090  5Ah   Z    122  7Ah   z
027  1Bh  Escape            059  3Bh   ;    091  5Bh   [    123  7Bh   {
028  1Ch  Раздел.файла      060  3Ch   <    092  5Ch   \    124  7Ch   |
029  1Dh  Раздел.группы     061  3Dh   =    093  5Dh        125  7Dh   }
030  1Eh  Раздел.записи     062  3Eh   >    094  5Eh   ^    126  7Eh   ~
031  1Fh  Раздел.единицы    063  3Fh   ?    095  5Fh   _    127  7Fh Забой


     ПРИЛОЖЕНИЕ 2:         Шестнадцатерично-десятичные преобразования
     ________________________________________________________________

     В  данном  приложении  представлены  приемы   преобразования    между
шестнадцатеричным и десятичным форматами.  В первом разделе показан пример
преобразования шест.  A7B8 в десятичное 42936, а во втором - 42936 обратно
в шест. A7B8.


          Преобразование шестнадцатеричного формата в десятичный
         --------------------------------------------------------
     Для  перевода  шест.   A7B8    в    десятичное    число    необходимо
последовательно, начиная с самой левой шест. цифры (A), умножать на  16  и
складывать со следующей цифрой.  Так как операции выполняются в десятичном
формате, то шест. числа от A до F необходимо преобразовать в десятичные от
10 до 15.

               Первая цифра: A (10)                  10
               Умножить на 16                       х16
                                                    ---
                                                    160
               Прибавить следующую цифру, 7          +7
                                                    ---
                                                    167
               Умножить на 16                       х16
                                                   ----
                                                   2672
               Прибавить следующую цифру, B (11)    +11
                                                   ----
                                                   2683
               Умножить на 16                       х16
                                                  -----
                                                  42928
               Прибавить следующую цифру, 8          +8
                                                  -----
               Десятичное значение                42936

     Можно использовать также таблицу преобразования. Для шест. числа A7B8
представим правую цифру (8) как позицию 1, следующую влево цифру  (B)  как
позицию 2, следующую цифру (7) как позицию 3 и самую левую цифру  (A)  как
позицию 4. Из таблицы B-1 выберем значения для каждой шест. цифры:

               Для позиции 1 (8), столбец 1           8
               Для позиции 1 (8), столбец 1         176
               Для позиции 1 (8), столбец 1        1792
               Для позиции 1 (8), столбец 1       40960
                                                  -----
                        Десятичное значение       42936


          Преобразование десятичного формата в шестнадцатеричный
        ---------------------------------------------------------
     Для преобразования десятичного числа 42936 в шестнадцатеричный формат
необходимо  сначала  исходное  число  42936  разделить  на   16;    число,
получившееся в остатке, (6)  является  младшей  шестнадцатеричной  цифрой.
Затем полученное частное необходимо снова разделить  на  16  и  полученный
остаток (11 или B) дает следующую влево шестнадцатеричную цифру. Продолжая
таким образом деления до тех пор, пока в частном не получится  0,  получим
из остатков все необходимые шестнадцатеричные цифры.
Предыдущая страница Следующая страница
1 ... 75 76 77 78 79 80 81  82 83 84 85
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (15)

Реклама