|
Speccy
#05
30 апреля 1996 |
|
Программирование - Основные устройства 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. Редакция очень надеется, что эта короткая статья поможет сде- лать вам первый решительный шаг в освоении ассемблера. * * *
Другие статьи номера:
Похожие статьи:
В этот день... 1 января
SibNews #08,
Woot! #01,
Spectrum Magazine #01,
ACNews #25,
Psychoz #14,
ACNews #14,
Last 128 #08,
Last 128 #06,
Last 128 #05,
Last 128 #04,
Last 128 #03,
Last 128 #02,
Last 128 #09,
Last 128 #3.5,
Last 128 #8.025,
Sinclair Club #05,
Last 128 #M!R 01,
Fantadrom #01,
Buzz #20,
Last 128 #01,
DonNews #13,
Nicron #120,
Promised Land #01,
Inferno #01,
Marazm #25,
Ultimathum #01,
Marazm #21,
Hooy Mag #02,
KrNews #11,
Marazm #22,
Marazm #23,
ZX Football 2000 #01,
Codemania #01,
Always #03,
Bugs #02,
IzhNews #08,
Virtual Worlds #01,
Listok #04,
Scenergy #02,
Flash Info #18,
Marazm #16,
Marazm #17,
Zed #01,
Balagan #02,
ZX Format #08,
ZX Power #03,
Shock #01,
Impulse #02,
Deja Vu #03,
ZX Club #08,
ZX Club #06,
Numberology #01,
Marazm #13,
Marazm #12,
Marazm #14,
Gorodok #02,
Zodiac #01,
Marazm #15,
Deja Vu #07,
Marazm #11,
Deja Vu #07,
Playboy #03,
Crazy News #2,
Crazy News #4,
ZX Light #01,
Crazy News #5,
Playboy #02,
ZX News #03,
ZX Review #1-2,
Read Me #02,
Crazy News #3,
Nicron #13,
Read Me #01,
Public Spirit #01,
Faultless #06,
Faultless #05,
ZX Software #01,
Stump #04,
Speccy #07,
Возраждение #0,
Speccy #03,
On-Line #17,
Scene+ #01,
Welcome Press #01,
ZX Konig #04,
Adventurer #01,
Faultless #05,
Faultless #04,
Di Halt #01,
Faultless #01,
Playboy #01,
Crazy News #1,
Faultless #03,
Pioneer #03,
Sinclair Town #02,
ZX Magazine #01,
Eldorado #01,
ZX Magazine #02,
Spectron #01,
ZX News #01,
ZX Konig #02,
200 #W,
Welcome Press #00,
Dune #07,
Subliminal Extacy #01,
Subliminal Extacy #02,
ZX Konig #01,
Subliminal Extacy #00,
Muchomor #01,
Spectrofon #01,
ZX Revija #02,
Outlet #01,
Outlet #1-3