Speccy #05
30 апреля 1996

Программирование - Основные устройства ZX-Spectrum.

<b>Программирование</b> - Основные устройства ZX-Spectrum.
╒══════════════════════════════╕
│░░░░░░ ПРОГРАММИРОВАНИЕ ░░░░░░│
╘══════════════════════════════╛

 По многочисленным просьбам  чи-
тателей журнала,в данном разделе
мы осветим некоторые моменты,ко-
торые вызывают наибольшую  труд-
ность в понимании  у  начинающих
программировать на ассемблере.
 Имеющаяся литература, посвящен-
ная программированию  в машинных
кодах,в большинстве случаев рас-
считана на подготовленных  чита-
телей.  Как  выяснилось,  многие
владельцы компьютера столкнулись
с  проблемой    терминов.  Такие
понятия как байт,  бит,  регистр
и т.д. Естественно, без освоения
этих понятий делать попытки  пи-
сать программы бесполезно.
     ОЧЕНЬ ПРОСТО О СЛОЖНОМ

 Не вдаваясь детально  в  струк-
турную схему компьютера мы  рас-
смотрим его основные устройства.

 Центральный процессор  (ЦП).  В
компьютере  ZX-Spectrum  ЦП-Z80.
ЦП имеет возможность читать дан-
ные из постоянного запоминающего
устройства (ПЗУ),читать данные и
засылать  данные  в  оперативное
запоминающее устройство  (ОЗУ) и
читать данные, засылать  данные,
производить с ними  арифметичес-
кие  и   логические  действия  в
регистрах процессора.

 Регистры   процессора,   ячейки
памяти ОЗУ и ПЗУ  можно предста-
вить в виде своеобразных домиков
- байтов  в  которых  имеется  8
квартир - битов. В каждой  квар-
тире, которые имеют нумерацию от
0 до 7 может находиться  либо 1,
либо  0. Хотя каждый  бит  имеет
только два состояния  1  или  0,
вес   каждого  бита  различен  в
зависимости от номера (разряда).
 Так 1 расположенная  в  нулевом
разряде имеет число 1, в  первом
разряде - 2, во 2 - 4,  в 3 - 8,
в 4 - 16, в  5 - 32 , в  6 - 64,
в 7 - 128. Число, которое разме-
щается в байте можно  определить
просуммировав все биты  содержа-
щие 1 с учетом их разрядов.
 Пример:

   7  6  5  4  3  2  1  0 разряд
  128 64 32 16 8  4  2  1 вес

   0  0  1  0  0  1  1  0 байт
         32   +   4 +2    = 38

 Рассмотрим  сначала  городок из
регистров,  который   расположен
непосредственно в процессоре.
Домики (регистры) в этом городке
пронумерованы буквами латинского
алфавита и располагаются парами.
Функции каждого регистра различ-
ны.

 Регистр А - аккумулятор. С этим
регистром связано наибольшее ко-
личество арифметических и  логи-
ческих команд.

 Рядом с регистром А  расположен
регистр F - флаговый регистр,ко-
торый может образовывать пару  с
регистром  А.  После  выполнения
некоторых команд в  соответствии
с результатом операции изменяют-
ся  соответствующие  биты  этого
регистра.  Биты  этого  регистра
называются флагами. Если бит со-
держит единицу, то флаг установ-
лен, если 0 - сброшен.

 Регистр флагов F

┌─┬─┬─┬─┬─┬─┬─┬─┐
│S│Z│ │H│ │V│N│C│
└─┴─┴─┴─┴─┴─┴─┴─┘
 │ │ │ │ │ │ │ └─ флаг переноса
 │ │ │ │ │ │ └─── флаг  отрица-
 │ │ │ │ │ │      тельного  ре-
 │ │ │ │ │ │      зультата
 │ │ │ │ │ └───── флаг четности
 │ │ │ │ │        переполнения
 │ │ │ │ └───── не используется
 │ │ │ └───────── флаг  вспомо-
 │ │ │              гательного
 │ │ │               переноса
 │ │ └───────── не используется
 │ └───────────── флаг нуля
 └─────────────── флаг  вычита-
                  ния

 При  программировании  флаговый
регистр  играет  очень   большую
роль,т.к. просматривая изменения
флагов этого регистра можно  де-
лать ветвления программы, преоб-
разовывать  числа,  выходить  из
подпрограммы  или  программы при
выполнении требуемого условия  и
т.д.

 Регистры общего назначения:

B,C,D,E,H,L - хотя с этими реги-
страми можно проводить и  одина-
ковые операции,существует доста-
точно   много   команд,  которые
присущи только отдельным регист-
рам этого набора.

 В одном отдельно взятом регист-
ре можно хранить число от  0  до
255. Для хранения чисел в диопа-
зоне от 0 до  65535  применяются
два регистра.Регистры могут объ-
единяться только в  определенные
пары BC,DE,HL, причем первый ре-
гистр является старшим, а второй
младшим. Старшим регистр называ-
ется потому, что при  превышении
в  младшем  регистре  числа  255
старший регистр увеличивается на
единицу.

 Кроме основного набора  регист-
ров в  процессоре  Z-80  имеется
еще один набор таких  регистров,
который называется  альтернатив-
ным. Альтернативный набор регис-
тров имеет следующее обозначение
A'F',B'C',D'E',H'L'.

   Индексные регистры IX,IY
Особенностью  данных   регистров
является то, что при  помощи  их
процессор  может   обращаться  к
ячейкам памяти, указывая их сме-
щение -128 или +127 относительно
адреса установленного в этом ре-
гистре.

      Указатель стека SP
При составлении программы  прог-
раммист указывает область опера-
тивной памяти (стек),где процес-
сор в процессе работы будет вре-
менно хранить свои данные. Адрес
этой области заносится в регист-
ровую пару SP. При записи в стек
значение SP уменьшается на  2, а
при извлечении числа  увеличива-
ется на 2.

       Счетчик команд PC
Двухбайтный регистр PC следит за
очередностью  выполнения  команд
программы.

  Регистр регенерации памяти R
Обслуживает  аппаратные  потреб-
ности компьютера.  Младшие  семь
разрядов регистра  увеличиваются
на единицу после выполнения оче-
редной команды процессора. Стар-
ший разряд аппаратно не  исполь-
зуется.

  Регистр вектора прерываний  I
Каждую 1/50 долю секунды процес-
сор прерывает выполнение  основ-
ной программы и приступает к вы-
полнению  вспомогательной  прог-
раммы. При установке 2-го режима
прерываний программист может на-
писать собственную процвдуру об-
работки прерываний. В результате
процессор будет выполнять парал-
лельно две программы, переключа-
ясь на их выполнение через  каж-
дые 1/50 долю секунды.


  Ну  а  теперь  самая  обширная
часть компьютера - память.Память
компьютера это одна большая ули-
ца состоящая из ячеек памяти.
 Так же как и регистры процессо-
ра каждая  ячейка  памяти  может
хранить один байт  состоящий  из
восьми бит. Ячейки  памяти  ком-
пьютера имеют сплошную нумерацию
от 0 до 65535. Память компьютера
разбивается на две части.

 ПЗУ от 0 до 16383. В этой части
памяти  процессор  бессилен  что
либо изменить.  Здесь  находятся
программы которые процессор сра-
зу же начинает  выполнять  после
включения компьютера.

 ОЗУ от 16384 до 65535.Эту часть
памяти можно условно разбить  на
четыре области:

 1.16384-23296 - экран. Все  что
 засылается в эту область памяти
 отображается на экране.

 2.23552-23733 - область систем-
 ных переменных.Используется для
 временного хранения данных  при
 работе программ ПЗУ.

 3. Свободная  память -  участок
 оперативной памяти которую мож-
 но  использовать  для  хранения
 данных и расположения собствен-
 ной программы.

 4. Машинный стек .  По  желанию
 программиста можно выделить лю-
 бой  свободный  участок  памяти
 для временного хранения  данных
 процессора.


EнА теперь самое интересное. Ваша
первая программа на ассемблере.
Если у вас  компьютер  128К,  то
лучше, конечно,  воспользоваться
турбоассемблером TASM 3.0.
Программа,приведенная ниже,пока-
жет вам как следует занести чис-
ло в регистр процессора,  произ-
вести с ним в цикле арифметичес-
кие операции, скопировать  число
из регистра в  ячейку  памяти  и
при выполнении  соответствующего
условия выйти из  программы.  Вы
увидите  также  какие  изменения
происходят в регистре  флагов  F
при работе программы.






    ORG 40000 ;адрес начала про-
              ;граммы
    LD A,0;в регистр А заносим 0
М1  INC A   ;увеличиваем число в
            ;регистре А на 1
    RET Z   ;выход  из программы
           ;если установлен флаг
           ;нуля Z
    LD (16384),A;содержимое рег.
                ;А  копируем   в
                ;экран
    JP M1   ;прыгаем на метку М1
Для выполнения программы нажмите
ENTER.




 Редакция  очень  надеется,  что
эта короткая статья поможет сде-
лать вам первый решительный  шаг
в  освоении  ассемблера.

             *  *  *



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

Авторская программа - Bestseller from Star - проигрыватель мелодий.

Авторская разработка - схемы Sound Drive V1.02 и Covox.

Игроскоп - О играх: Biff, Crime Santa Claus.

Игроскоп - О играх: Mugsy.

Игроскоп - О играх: Звёздное Наследие.

Музобоз - Таблица итогов 1-го тура. Конкурс продолжается...

Мультролик - Мультролик "Прогулка".

Новелла - Новелла "НЛО - Враг Неизвестен" часть 2.1.

Новелла - Новелла "НЛО - Враг Неизвестен" часть 2.2.

От редакции - О изменениях в журнале и его распространении.

Программирование - Как сделать бегущую строчку.

Программирование - Основные устройства ZX-Spectrum.

Реклама - Реклама и объявления.

Тусовка - Приветы и поздравления.


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

Похожие статьи:
Virus - О конкурсе по игре "Вирус 2".
Доска почета - использование мышки в журналах и другом софте (о криворуких кодерах).
Новости - как там поживают спектрумисты: Flash inc., JVS, UNIT-5, AURYN, Mafia, Stalker, Max Iwamoto, Games Killer, Silicon Brains, Roversoft, Omega Hackers Group, ETC Group, Bitmunchers, Digital Reality.
Solution of speccy games - Представляю вам собрание описаний игр под названием (2).
Интерфес - разбор почты. Письма от читателей: Колотушкин Сергей, Дмитрий Шадринов, Берников Евгений.

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