Born Dead #09
30 мая 1999
  Amiga  

Мир Амиги - Амига глазами RRA (часть последняя).

<b>Мир Амиги</b> - Амига глазами RRA (часть последняя).
╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟
 ╠╬╣║╞╪╡███╡╪╞║╣╬╠ МИР АМИГИ. ЧАСТЬ ПОСЛЕДНЯЯ ╠╬╣║╞╪╡███╡╪╞║╣╬╠ 
╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟╟

(C) 1999 >>RRA>>/AF/SG

(Окончание. Начало в номерах 5-8)

----------------------------------------------------------------
  ROL,ROR - ротация (без флага X)
  Синтакс    : ROd Dx,Dy
               ROd #<data>,Dy
               ROd <ea>
               ,где d - направление сдвига
  Размер     : .B,.W,.L
  Описание   : ротация DST в определенном направлении.
               Флаг X не участвует в ротации.

               Счетчик ротации может задаваться двумя методами:

               1) непосредственно от 1 до 8
               2) в регистре данных

               Команда работающая с памятью (ROd <ea>) произво-
               дит ротацию на 1 бит, размер операнда только .W
               <еа> не может иметь адресации: Dn,An

               ROL:

                      ┌──────────────┐
                      │  ┌───────┐   │
               C <────┴──┤ОПЕРАНД│<──┘
                         └───────┘

               ROR:

               ┌──────────────┐
               │   ┌───────┐  │
               └──>│ОПЕРАНД├──┴────> C
                   └───────┘

  Флаги      : X - не изменяется
               V = 0
               N,Z - изменяются в соответствии с результатом
               C - последний бит,который участвовал в ротации
----------------------------------------------------------------
  ROXL,ROXR - ротация с флагом X
  Синтакс    : ROXd Dx,Dy
               ROXd #<data>,Dy
               ROXd <ea>
               ,где d - направление сдвига
  Размер     : .B,.W,.L
  Описание   : ротация DST в определенном направлении.
               Флаг X участвует в ротации.

               Счетчик ротации может задаваться двумя методами:

               1) непосредственно от 1 до 8
               2) в регистре данных

               Команда работающая с памятью (ROXd <ea>) произ-
               водит ротацию на 1 бит, размер операнда только
               .W
               <еа> не может иметь адресации: Dn,An

               ROXL:

                      ┌───────────────────┐
                      │  ┌───────┐        │
               C <────┴──┤ОПЕРАНД│<── X <─┘
                         └───────┘

               ROR:

               ┌───────────────────┐
               │        ┌───────┐  │
               └─> X ──>│ОПЕРАНД├──┴───-> C
                        └───────┘

  Флаги      : V = 0
               N,Z - изменяются в соответствии с результатом
               X,C - последний бит,который участвовал в ротации
----------------------------------------------------------------
  RTD - возврат из подпрограммы с увеличением SP (незнаю точно
        как обозвать по другому эту команду, только она живет на
        СТАРШИХ ПРОЦЕССОРАХ)

  Операция   : PC=(SP), SP+4+disp
  Синтакс    : RTD #<disp>
  Описание   : Значение PC снимается со стека,затем к указателю
               стека прибавляется параметр #<disp>. Эта команда
               обычно используется,если при вызове подпрограммы
               несколько параметров были переданы по стеку.
  Флаги      : не изменяются
----------------------------------------------------------------
  RTM - возврат из модуля (MC68020)
  Синтакс    : RTM Rn
  Описание   : восстанавливает состояние прежде сохраненного
               модуля, затем возвращается в него.

               Ничего  толкового  по  модулям я сказать не могу,
               поскольку я даже не представляю, что такое модуль
               и  с  чем его едят. Да и знать я не хочу ничего о
               них,  ведь  кроме  как  на процессоре MC68020, их
               нигде больше нет.
----------------------------------------------------------------
  RTR - возврат с восстановлением регистра флагов.
        Не подумайте, что это наше родное Рекламное Телевидение
        России.
  Операция   : CCR=(SP), SP+2, PC=(SP), SP+4
  Синтакс    : RTR
  Описание   : Не подумайте, что это наше родное Рекламное
               Телевидение России
               Со стека снимается регистр CCR,а затем и PC.
               Часть регистра SR доступная в режиме супервизора
               не изменяется.
  Флаги      : как было уже сказано,снимаются со стека.
----------------------------------------------------------------
  RTS - возврат из подпрограммы
  Операция   : PC=(SP), SP+4
  Синтакс    : RTS
  Описание   : Самый неизвращенный возврат из подпрограммы.
               Просто снимается PC со стека и все!
  Флаги      : не изменяются
----------------------------------------------------------------
  SBCD - десятичное вычитание с учетом флага X
  Операция   : DST=DST10-SRC10-X
  Синтакс    : SBCD Dy,Dx
               SBCD -(Ay),-(Ay)
               другие адресации не возможны.
  Размер     : .B
  Описание   : Вычитает одно BCD-число из другого,и для кучи
               вычитает из всего этого флаг X.
  Флаги      : C,X - изменяются
               N,V - неопределенно
               Z   - 0,если результат не равен 0,иначе не
                     изменяется(!).Для корректного определения
                     данного флага, перед операцией его следует
                     установить.
----------------------------------------------------------------
  Scc - установить в соответствии с условием
  Синтакс    : Scc <еа>
  Размер     : .B
  Описание   : Если заданное условие верно,то в байт <еа> запи-
               шется #FF, иначе 0.
               Условия я писал уже дважды, третий раз мне просто
               в лом (смотри команды Bcc и DBcc). Хочу отметить
               команды:
               ST - условие всегда верно,поэтому результат #FF
               SF - никогда не верно,значит результат 0.

               Кстати, часто используется комбинация команд Scc
               и NEG.B. Результат такой комбинации: если условие
               верно, то результат 1, иначе 0.  Конечно  же  обе 
               эти команды должны быть произведены на одном <ea>

               Например:

               TST.L D1
               SMI   D0
               NEG.B D0

               В этом случае если D1 отрицательный,то D0=1,
               иначе D0=0.
  Флаги      : не изменяются
----------------------------------------------------------------
  SUB,SUBA,SUBI,SUBQ - вычитание
  Синтакс    : SUB <ea>,Dn
               SUB Dn,<ea>
               SUBA <ea>,An
               SUBI #<data>,<ea>
               SUBQ #<data>,<ea>
  Размер     : .B,.W,.L
               SUBA - .W,.L

  Описание   : SUB - вычесть из регистра данных операнд в <еа>,
                     или наоборот.
               SUBA - вычесть из регистра адреса операнд в <еа>
               SUBI - вычесть из операнда в <еа> любое число.
               SUBQ - вычесть из операнда в <еа> число от 1 до
                      8.
  Запрещеные адресации: An доступна только для операций .W,.L
  Флаги      : изменяются все, исключение команда SUBA, она не
               влияет на флаги.
---------------------------------------------------------------
  SUBX - вычитание с учетом флага X
  Операция   : DST=DST-SRC-X
  Синтакс    : SUBX Dy,Dx
               SUBX -(Ay),-(Ay)
               другие адресации не возможны.
  Размер     : .B,.W,.L
  Описание   : Вычитает одно число с флагом X из другого.
  Флаги      : C,X - изменяются
               N,V - неопределенно
               Z   - 0, если результат не равен 0, иначе не
                     изменяется(!). Для корректного определения
                     данного флага, перед операцией его следует
                     установить.
----------------------------------------------------------------
  SWAP - обменять половинки регистра
  Операция   : биты 31-16 <-> биты 15-0
  Синтакс    : SWAP Dn
  Описание   : Меняет местами 16-разрядные половинки регистра.
               Например:

              было : 00000000000000001111111111111111 #0000FFFF
              стало: 11111111111111110000000000000000 #FFFF0000

  Флаги      : X - не изменяется
               V,C = 0
               N,Z - изменяются
----------------------------------------------------------------
  TAS - тест и установка операнда
  Синтакс    : TAS <еа>
  Размер     : .B
  Описание   : Тестирует операнд адресуемый полем <еа>, затем
               устанавливает его 7-ой бит.
  Запрещенные адресации : An
  Флаги      : X - не изменяется
               V,C = 0
               N,Z - изменяются
----------------------------------------------------------------
  TRAP - вызов исключения TRAP
  Операции   : бит S регистра SR=1, то бишь режим супервизора
               SSP-2, (SSP)=FORMAT/OFFSET (*)
               SSP-4, (SSP)=PC, SSP-2, (SSP)=SR
               PC=адрес вектора

               (*) данная строчка не работает на MC68000

  Синтакс    : TRAP #<вектор>
  Описание   : Эта команда впринципе является аналогом писишной
               команды INT #N. Она вызывает исключение TRAP
               (вектора #20-#2F, 32-47). Номер вектора вычис-
               ляется просто: параметр #<вектор>+32. Этот
               параметр может иметь значение от 0 до 15.
               Принцип исключений и прерываний я опишу очень
               скоро, а пока забивать этим текст я не хочу...
  Флаги      : не изменяются
----------------------------------------------------------------
  TRAPcc - TRAP по условию (СТАРШИЕ ПРОЦ.)
  Синтакс    : TRAPcc
               TRAPcc.W #<data>
               TRAPcc.L #<data>
  Описание   : Если заданное условие верно, то вызывается иск-
               лючение TRAPcc (вектор 7),иначе прога выполняет-
               ся дальше.
               А вот для чего нужен параметр #<data> я так и не
               вкурил. Когда допрет скажу.
  Флаги      : не изменяются.
----------------------------------------------------------------
  TRAPV - TRAP при переполнении
  Синтакс    : TRAPV
  Описание   : эту команду всегда рассматривают отдельно от
               команд TRAPcc, потому что в отличии от TRAPcc
               команда TRAPV есть на всех процессорах семейства
               M680x0. А так, функция одна и та же.
----------------------------------------------------------------
  TST - тест операнда
  Синтакс    : TST <ea>
  Размер     : .B,.W,.L
  Описание   : Сравнивает операнд с нулем.
  Запрещеные адресации : An и с регистром PC не доступны
                         на MC68000, на остальных пожалуйста.
  Флаги      : X - не изменяется
               V,C = 0
               N,Z - изменяются
---------------------------------------------------------------
  UNLK - убить стековый фрейм
  Операция   : SP=An, An=(SP), SP+4
  Синтакс    : UNLK An
  Описание   : Убивает стековый фрейм организованный командой
               LINK. А делает он это так: приравнивает SP к
               заданному регистру адреса. Затем снимает со стека 
               сохраненное значение этого же регистра.
               И усе в порядке. _ЗАПОМНИТЕ!_ Как и цикл FOR не
               может жить без NEXT, так и LINK помрет без UNLK. 
               Другими  словами  если  LINK был сделан в подпро-
               грамме и вы перед выходом не сделали UNLK,то куда 
               вернется ваша процедура можно лишь догадываться.
  Флаги      : не изменяются
---------------------------------------------------------------

  UNPK - распаковать BCD-число (СТАРШИЕ ПРОЦЕССОРЫ)
  Синтакс    : UNPK -(Ax),-(Ay),#<adjustment>
               UNPK Dx,Dy,#<adjustment>
  Описание   : Распаковка производится таким макаром:
               биты 0-3 и 4-7 операнда-источника (пакованное
               BCD-число) переносятся в биты 0-3 и 8-11 соот-
               ветственно операнда приемника (получается
               распакованное BCD-число),биты 4-7 и 12-15 запол-
               няются нулями. И чтобы до конца добить весь этот
               процесс к результату прибавляется параметр
                                                  #<adjustment>.

               Если используется предекрементная адресация,то
               считывается один байт, а записывается два.
               Почему,я объяснять не буду,сами поймете.
               И вообще пора закругляться. Спать хочу!
                                              Завтра на работу!

  Флаги      : не изменяются,какими были такими и остались!



Другие статьи номера:

Coding - Проигрыватель музыкальных сэмплов: 101 градация громкости.

Games - Описание игры Sherwood.

Вступление - Тяжелые невзгоды наступающего лета.

Голос из могилы - Фирменное железо: электронные часы, Interface I, ZX и другие.

Злоба дня - Commandore и человек: хроника перехода на другую платформу.

Мир Амиги - Амига глазами RRA (часть последняя).

Новости - ProTracker'а 3.4, First Association, подведение результатов Complex Compo, приостановке работ над ЧВ-2.

Обзор - Обзор новинок: Awaken demo version, Pussy demo version, Wacky Races, Best View v2.8, Hobby #1, Amazing #2.

Приложение - Spectrum JPG decoder.

Реклама - Новая версия CD-ROM'а от MMA, The High Voltage C64 CD


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Вести - Компания Zilog представила 28 января ядро новой операционной системы реального времени RZK.
От автора - В школе каникулы...
График - "гродненская сетка кажется начала развиватся на полной скорости!"
Презент - о приложении газеты.
Обзор - обзор демок с Doxycon'98: Fear Zone, Circlelusions, Last 48, Higher State.

В этот день...   21 ноября