Как ориентироваться в машинном языке 1969 г.

Биты - команды работы с битами. Установка и сброс. Сдвиги.


                   УСТАНОВКА И СБРОС БИТОВ

         До  сих  пор  все  команды,  с которыми мы работали,
включали  обработку  8-битовых  или  16-битовых чисел. Группа
"установка   и   сброс   битов"  позволяет  нам  обрабатывать
отдельные  пальцы на руке ЦП (отдельные биты регистров) и/или
содержимое  ячеек  памяти.  Из-за очень трудоемкого характера
работы  с  отдельными битами это не очень широко используемая
группа  команд. Более того, как правило, установка отдельного
бита  в  регистре или ячейке памяти занимает даже больше, чем
изменение  или  чтение  всех  8  битов этой ячейки памяти или
регистра.  Тем  не менее, есть ситуации, когда вам необходимо
знать  установлен  или сброшен бит в середине байта, или даже
установить  бит.  Обратите  внимание,  что  установка и сброс
битов может выполняться с помощью логических операторов. 
         Группа  команд  "установки и сброса битов" позволяет
"включить"  или  "выключить" по желанию произвольный бит, или
даже  просто  посмотреть  на заданный бит, чтобы проверить, в
каком он состоянии. 
         Давайте посмотрим на первый набор команд: 

                   SET N,R
                   SET N,(HL)
                   SET N,(IX + Д)
                   SET N,(IY + Д)

Команда  SET  включает бит с номером N (в обозначениях 0-7) в
регистре  R  или  заданной  ячейке  памяти.  Никакие флаги не
изменяются. 
         Группа  команд  RESET  действует на ту же в точности
группу  регистров или ячеек памяти, но вместо включения битов
она их выключает. 
         Команду   BIT  на  самом  деле  нужно  читать  BIT?,
поскольку функция этой команды состоит в проверке содержимого
указанного  бита.Никаких  изменений  в регистры или память не
вносится, но флаг нуля изменяется в соответствии с состоянием
проверяемого бита. 
         Если БИТ = 0, то флаг нуля устанавливается (=1).
         Если БИТ = 1, то флаг нуля сбрасывается (=0).
         Это на первый взгляд может показаться запутанным, но
нужно  посмотреть  на  это  следующим образом: если бит равен
нулю,  то  устанавливается флаг нуля; если бит установлен, то
флаг нуля подниматься не будет. 

                 СДВИГИ И ЦИКЛИЧЕСКИЕ СДВИГИ

         Вы  можете  сдвигать  регистры  влево,  вправо,  как
захотите.  Сложность состоит в том, чтобы различать различные
сдвиги и циклические сдвиги с тем, чтобы знать, какие и когда
нужно  использовать,  и помнить, что бит переноса часто можно
рассматривать  в  качестве  9-го  бита  регистров  (т.е.  бит
переноса является восьмым битом, если биты пронумерованы от 0
до  7.  Некоторые команды циклического сдвига захватывают бит
переноса  (в  качестве  девятого  бита),  так что циклический
сдвиг в целом составляет цикл из 9 битов. 
         Например,  давайте  рассмотрим  команду  RLA  (смысл
каждой команды будет объяснен ниже). 
         Другие   циклические   сдвиги   захватывают   только
8-битовый  цикл, хотя флаг переноса изменяется в соответствии
со  значением  бита, которому приходится "проделывать кружной
путь". Примером может служить команда RLCA. 
         Это  означает, что при циклическом сдвиге влево, как
показано выше, содержимое бита 0 перемещается в бит 1, бита 1
-  в бит 2 и т.д., а содержимое бита 7 перемещается и в бит 0
и  в  бит  переноса.  Сравните  это с командой RLA, описанной
выше, где бит 7 перемещается в бит переноса, а бит переноса -
в бит 0. 

                   ЦИКЛИЧЕСКИЕ СДВИГИ ВЛЕВО

         В  основном есть два типа циклических сдвигов влево:
Циклический  сдвиг  влево  регистров (циклический сдвиг влево
круговой  - "круговой" означает, что цикл охватывает только 8
битов,  как  в  команде  RLC, описанной выше) - это 9-битовый
сдвиг влево, аналогичный показанному выше для RL A. 

  RL  A        - "циклический сдвиг влево накопителя"; 
  RL  R        - "циклический сдвиг влево регистра R". 
  RLC A        - циклический сдвиг влево круговой регистра A
  RLC R        - циклический сдвиг влево круговой регистра R
  RLC (HL)     - циклический сдвиг влево круговой (HL)
  RLC (IX + Д) - циклический сдвиг влево круговой (IX + Д)
  RLC (IY + Д) - циклический сдвиг влево круговой (IY + Д)

         Помимо  этих  двух  команд циклического сдвига влево
есть  еще  команда  сдвига  влево,  но она может обрабатывать
только регистр A. 

                  SL A - сдвиг накопителя влево

         Отличие  этой  команды состоит в том, что содержимое
бита  переноса  теряется,  а  нулевой  бит заполняется нулем.
По-существу,  это  сводится  к  умножению  A  на 2, поскольку
ничего  в накопитель не переносится. Обдумайте работу команды
SL A в случае A =80H. 

                  ЦИКЛИЧЕСКИЕ СДВИГИ ВПРАВО

         Вновь у нас два основных режима циклического сдвига,
но  на  этот  раз  вправо.  Вращение вправо охватывает тот же
диапазон  допустимых  ячеек памяти и вращений, что и вращения
влево. 

 RR  A        - циклический сдвиг накопителя вправо
 RR  R        - циклический сдыиг регистра вправо
 RRC A        - циклический сдвиг вправо круговой регистра A
 RRC R        - циклический сдвиг вправо круговой регистра R
 RRC (HL)     - циклический сдвиг вправо круговой (HL)
 RRC (IX + Д) - циклический сдвиг вправо круговой (IX + Д)
 RRC (IY + Д) - циклический сдвиг вправо круговой (IY + Д)

         Имеется сдвиг вправо, аналогичный сдвигу влево. 

      SRL R - логический сдвиг вправо регистра R

         В  данном  случае,  это чистое деление на 2, если мы
используем  числа  без знака (т.е. диапазон чисел, которые мы
хотим представлять, составляет 0 - 255). 
         Поскольку   в   некоторых   прикладных   задачах  мы
применяем  соглашение  о  том,  что для задания отрицательных
чисел  бит  7 устанавливается равным 1 (что дает нам диапазон
от  -128  до  +127),  имеется  дополнительная  команда сдвига
вправо. 

      SRA R - арифметический сдвиг вправо регистра R

         Как  видите, это тоже деление на 2, но оно сохраняет
бит знака. 




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
WANTED - Розыск программ...
От редакции - Новые рубрики ?..
Wanted - Список Заслуженных Пользователей AC Edit.
Интерфейс - "за базар ответишь!" русский язык настолько "велик и могуч", что грамотно пользоваться им, к сожалению, дано далеко не всем.
Этюды - Атрибутная бегущая строка. "Гасилка" экрана. Упрощенный вариант процедуры "Занавес". Процедура гащения картинки. Процедура проявления картинки по точкам.

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