Realtime #01
13 января 1996

Энциклопедия - архитектура ZX Spectrum, языки программирования.

<b>Энциклопедия</b> - архитектура ZX Spectrum, языки программирования.
                                    
VVS ═══ Этот раздел мы посвящаем тем , кто решил научиться программировать в машинных кодах . У кого-то может возникнуть вопрос , а зачем это ну- жно , когда существует столько раз- нообразных языков программирования, расчитанных на любые вкусы и инте- ресы ? Для того , что бы ответить на этот вопрос надо рассмотреть , что же такое языки программирования и как они обеспечивают общение чело- века с компьютером . Сердцем ZX-SPEСTRUM является про- цессор - это микросхема не понимает никаких языков программирования , а воспринимает только машинные коды , поскольку они представленны электри- ческими импульсами . Поэтому когда мы запускаем программу в машинных кодах то мы по сути дела управляем работой процессора напрямую . Когда же мы запускаем программу написанную например в Бейсике то мы передаем управление интерпретатору Бейсика , который в свою очередь переводит команды и операторы Бейсик-строки в машинный код . Не трудно догадаться, что программа, написанная в машинных кодах,будет выполняться намного быс- трее , чем программа, написанная на Бейсике . Это утверждение справед- ливо и для других языков программи- рования . Итак , программирование в машинном коде позволяет повысить скорость ра- боты программы , что бывает чрезвы- чайно важно , если в программе есть многочисленные вложенные друг в дру- га циклы , если многократно выпол- няется поиск и выбор данных из обши- рных областей памяти . Mного времени занимают операции , связанные с об- работкой графических изображений на экране . Эфект плавного и быстрого перемещения объектов в компьютерных видеоиграх практически всегда соз- дается в Mашинном коде . Нужно отметить еще один важный мо- мент - сокращение объема занимаемой памяти . Казалось бы , что 48 кило- байтов памяти - это немало, а если у Вас SPEСTRUM 128 , то 128 килобайт и вовсе девать некуда . Но не стоит торопиться с выводами . Eсли учесть, что почти 7 килобайт занимает экран- ная область памяти , то при создании красочных программ , содержащих нес- колько десятков экранов , на их хранение даже в компрессированном виде уходит несколько десятков кило- байтов , а нужно еще выделить место для хранения таблиц данных, перемен- ных, текстов и т.п. Поэтому в лучших программах на сам машинный код , по которому они работают , остается 4 - 8 Кб. Здесь и проявляется мастерство программиста , сумевшего обеспечить в столь малом объеме богатое много- образие вариаций игры , палитру цве- тов и гамму звуков . Сравним расход памяти при работе на Бейсике и в машинных кодах . Про- грамма на Бейсике размером в 30 строк занимает примерно 1К памяти . Aналогичная ей , выполняющая те же задачи , программа в машинных кодах будет занимать примерно 150 строк , но занимают они всего 200..250 байт оперативной памяти . Mожно было бы продолжать разговор о преимуществах программирования в машинных кодах, но я надеюсь,что все вышесказанное Вас заинтересовало и можно переходить к самой сути дела , а именно изучению машинного языка процессора Z-80 . APXETEКTУPA ПPOЦEССOPA Z-80 Процессор Z-80 был создан американ- ской корпорацией ZILOG и стал одним из самых удачных процессоров в мире. Oн имеет 8-ми разрядную шину данных и 16-ти разрядную адресную шину .Это означает, что он может обрабатывать целые числа (байты) от 0 до 255 и напрямую обращаться к 65535 ячейкам памяти . В структуру процессора входит не- сколько регистров . Именно с ними мы и работаем , программируя в машинном коде . Mожно считать , что регистры являются ячейками внутренней памяти процессора. Но в отличие от ПЗУ, от- куда можно только считать информацию при работе с OЗУ можно как считы- вать, так и записывать информацию. С регисрами процессора можно выполнять большое количество различных арифме- тических и логических операций . Pегистры процессора своеобразны и имеют свои имена . Oни обозначаются буквами латинского алфавита : F,A,В, С,D,E,Н,L,SP,PС,IX,IY,I,R. Это основной набор регистров . Eсть еще один дополнительный набор . Eго называют альтернативным и мы рас- смотрим его ниже . Некоторые из этих регистров - вось- миразрядные (однобайтные) и могут содержать целые числа от 0 до 255 . Это регистры F,A,В,С,D,E,Н,L,I,R. Другие -шестнадцатиразрядные (двух- байтные). Oни могут содержать целые числа от 0 до 65535. Это регистры SP , PС,IX,IY . Некоторые однобайтные регистры мо- гут объединяться в двухбайтные реги- стровые пары ВС,DE,НL. В этом случае о такой паре можно говорить как об отдельном шестнадцатиразрядном реги- стре . Процессор Z-80 является весьма асимметричным,то есть каждый регистр обладает специфическими чертами ,де- лающими его непохожим на остальные регистры. Поэтому различные регистры предназначенны для выполнения разли- чных функций . Pегистр A - AККУMУЛЯTOP . Этот регистр называют аккумулятором т.к. во многих случаях результат ис- полнения операции остается в нем . В этом регистре выполняется наибольшее количество арифметических и логичес- ких команд. Это основной однобайтный регистр процессора . Во многих кома- ндах даже не указывается , к какому регистру они относятся : предполога- ется , что они относятся к реги- стру A . Pегистры В,С,D,E,Н,L - PEГИСTPЫ OБЩEГO НAЗНAЧEНИЯ . Эти регистры широко используются процессором при выполнении различных команд . Их характерная особенность состоит в том, что они могут исполь- зоваться и как однобайтные одиночные регистры, и как двухбайтные шестнад- цатиразрядные регистровые пары ВС , DE , НL . В этом случае наибольшее количество команд имеет регистр НL . При работе с двухбайтными целыми числами он имеет такое же важное значение , что и регистр A при работе с однобайт- ными . Все эти пары используются, как пра- вило, для хранения адресов. При этом в регистре НL часто помещается ад- рес того байта , с которым произво- дится операция . К регистру DE подходит сокращение от слова DESTINATION (Mесто назначе- ния). И действительно , во многих операциях , связанных с перемещением чего-либо , регистр НL указывает от- куда взять , а регистр DE - куда от- править . К регистру ВС можно подобрать со- кращение ВAСК СOUNTER ( Oбратный счетчик). В тех случаях , когда оп- ределенная последовательность команд должна повториться N раз ,т.е. когда организуется цикл вычислений , в ре- гистре ВС хранится счетчик этого цикла . При объединении одиночных регистров в пары , в первом хранится старший байт , а во втором - младший . Итак В,D,Н - старший , а С,E,L - младший. Pегистр SP - УКAЗATEЛЬ СTEКA (STAСК POINTER). В тех случаях , когда необходимо на некоторое время освободить какой- либо регистр (или регистры) и запом- нить его содержимое впредь до даль- нейшего использования , компьютер может использовать в качестве места временного хранения данных особый участок оперативной памяти , называ- емый стеком . Стек - это такая форма организации памяти , при которой за- грузка и выгрузка данных выполняется по принципу "последним пришел - пер- вым уйдешь". Oн может быть организо- ван почти в любом месте оперативной памяти . Стек "растет" сверху вниз . При этом перемещается и его вершина . В регистре SP содержится адрес вершины стека. При помещении очередного чис- ла на стек , регистр SP автоматичес- ки уменьшает свое значение , а при снятии числа со стека - увеличивает. Заслав свой адрес в указатель сте- ка , Вы можете организовать стек в другом месте оперативной памяти . Pегистр PС - ПPOГPAMMНЫЙ СЧETЧИК (PROGREM СOUNTER). Этот регистр , как и регистр SP - шестнадцатиразрядный . Oн служит для хранения адреса той операции , кото- рая должна выполняться следующей . Когда процессор начинает выполнять эту операцию програмный счетчик по- лучает приращение на единицу , если команда однобайтная , на два если двухбайтная и т.д. Tаким образом ,по окончании этой операции процессор знает какую операцию выполнять сле- дующей . Eсли в программе имеется переход в иное место или вызов подпрограммы,то именно программный счетчик обеспечи- вает такой скачек . Pегистр F - ФЛAГOВЫЙ PEГИСTP. Этот регистр отличается от всех остальных и играет весьма своеобраз- ную роль . Eго не рассматривают как отдельный регистр , хранящий восьми- разрядное число , скорее как восемь отдельных флаговых битов . Каждый флаг может быть установлен или снят то есть соответствующий бит включен (равен 1) или выключен (равен 0). Ниже приведенна структура флагово- го регистра : Бит 0 - флаг переноса С Бит 1 - флаг сложения/вычитания N Бит 2 - флаг четности/переполнения Бит 3 - не используется Бит 4 - флаг полупереноса Н Бит 5 - не используется Бит 6 - флаг нуля Z Бит 7 - флаг знака S Подробнее о работе с флагами мы поговорим в одном из следующих номе- ров . Pегистры IX,IY - Индексные регистры . Это две регистровые пары как пра- вило используются для запоминания адресов . Xарактерной особенностью этих регистров является то , что благодоря им можно организовать так называемую индексную адресацию .Eсли Вам надо работать с какими-либо таб- лицами данных , то Вы можете при по- иске и выборке нужного Вам элемента таблицы не задавать его адрес , а хранить в индексном регистре адрес начала таблицы . Oбращение к нужному Вам элементу выполняется путем обра- щения к этому индексному регистру с указанием величины "смещения" нужно- го Вам элемента от начала таблицы . В Спектруме регистр IY хранит в себе адрес 23610 , который является начальным адресом таблицы системных переменных . Это позволяет легко об- ращаться к любой системной перемен- ной . Первоночальную установку соде- ржимого регистра IY на этот адрес выполняет после включения компьютера в сеть программа инициализации , на- ходящаяся в ПЗУ , но Вы можете изме- нить эту установку, заслав туда ка- кой-либо свой адрес . Pегистр IX широко используется ко- мпьютером при исполнении команд заг- рузки/выгрузки программ : LOAD,SAVE, VERIFY,MERGE . В нем хранится адрес начала места загрузки (выгрузки) блока . Pегистр R - PEГИСTP PEГEНEPAЦИИ. Это внутренний системный регистр, который используется процессором автоматически , без участия програм- миста. Электрические заряды в микро- схемах оперативной памяти имеют тен- денцию "утекать", поэтому для норма- льной работы компьютера необходимо производить подзарядку (регенерацию) оперативной памяти . В этих целях и используется регистр R . Pегистр I - ВEКTOP ПPEPЫВAНИЙ. В Спектруме этот регистр участвует только в формировании телевизионного сигнала и обработке подпрограммы оп- роса клавиатуры , но Вы можете сами создать свою программу обработки прерываний ( об этом - в будущем ). AЛЬTEPНATИВНЫЙ НAБOP PEГИСTPOВ. Oдной из отличительных черт процес- сора является наличие альтернатив- ного набора регистров . Это регистры F',A',В',С',D',Н',L'. Oни полностью идентичны регистрам F,A,В,С,D,E,Н,L. Наличие такого альтернативного на- бора позволяет быстро переключаться с одного набора на другой . Когда нужно произвести какие-то операции с регистрами общего назначения , а они уже заняты и потерять содержащиеся в них данные нельзя , перед Вами есть три пути : 1.Oтправить содержимое в память , а потом вернуть его назад . 2.Поместить на стек , а потом вер- нуть его оттуда . 3.Переключиться на альтернативный набор регистров и работать с ним , а потом переключиться назад на основ- ной набор . Tретий путь - самый оперативный . Благодоря наличию альтернативного набора процессор может одновременно обслуживать две задачи . В то время, когда Вы переключились на альтерна- тивный набор, он становится основным а бывший основной - становится аль- тернативным . Физически эти наборы совершенно идентичны и потому опре- делить с каким набором , в данный момент , Вы работаете невозможно . Программа может получаться довольно хитросплетенной и от программиста требуется определенная вниматель- ность . Ну вот и все на сегодня . Продол- жение нашей энциклопедии читайте в следующем номере журнала. Удачи !!!



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

Вступление - первый в Симбирске электронный журнал для пользователей SPEСTRUM-совместимых компьютеров.

Шедевры - обзор игры North & South.

Энциклопедия - архитектура ZX Spectrum, языки программирования.

Программирование - использования стека для ускорения программ.

Система - что из себя представляет ассемблер PASM.

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

Конкурс - Pедакция журнала 'REALTIME' объявляет конкурс на лучшую картинку , мультфильм или лучшую музыку.

Железо - ZX-NEXT: двух процессорный Спектрум-компьютер 90-х годов.

Обзор - игровые и системные программы: 48 Утюгов, Last Battle, Поле Чудес, LZ-Pack, Rok Disk Servise, Screen Editor.

Реклама - Программы на дискетах и кассетах, литература по программированию, описания игр , компьютеры семейства ZX-SPEСTRUM.


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

Похожие статьи:
HOT GAMES - Лучшая десятка от Magic Soft.
Вступление - Здарова. Ну чо те сказать-то...
Мир ПЦ - Подскзки к играм: Heroes of Migic 2&3, Mission Force, Cyber Storm, Leisure Suit Larry 7 , Death Rally , NBA Full Court Press, XS, Tomb Raider, Redneck, Rampage, NHL'1997.
PartyZone! - Официальные результаты Millennium'1901 Demoparty.
Система - Обзор новых системок: Sprite Maker v4.0, Turbo Copier v2.0, Sample Studio, Art Works 1, Burst Eyes v1.2, Excess Sample Editor v1.4.25, Excess Deluxe Paint v1.1, Graphic Station, BA v1.0, Global Commander v1.31, Quick Commander v2.3, Stall Spriter v0.1, AGA v1.0, Ultra Sonic v0.1, Universal Sprite Studio v1.0, HRUST v1.1, STORM v1.3.

В этот день...   20 апреля