Black Crow
#03
27 июня 2000 |
|
Программистам - Процессор Z380
Считаю нyжныи сказатю несколюко слов прежде, чеи перейдеи к статюе о новои процессоре фuриы ZILOG. Utak, я изъял этот иа- терuал из газеты "NICRON". Поводои к этой откровенно пиратской акции стало то, что статюя была "порезана" редакцией этой га- зеты на болюшое количество кусков u разиецена в несколюкuх но- иерах подряд. Мне в свое вреия попался толюко первый ноиер, в которои была первая частю. Осталюное прочестю так u не yдалосю из-за отсутствия следyюцuх ноиеров. Но ине повезло u по почте дрyзюя выслали полный текст этой статюu. Учитывая то, что, как u я, uhorue не иоглu ознакоиuтюся со свободныи пересказои khu- ги в изложении Wlodek Black, а также пожелания читателей было решено разиестuтю статюю в иоеи журнале. Надеюсю, что это не вызовет бурю негодования как со стороны автора статюu, так u со стороны читателей. Благодаря спецфориатy текста в иоеи жур- нале эта статюя (около 72 килобайт чистый разиер) разиецена в полнои объеие. +============================================================+ |####################### MPU Z38О ###########################| +============================================================+ "Z38О Microprocessor. Product Specification". (R) 1998 WLODEK BLACK -------------------------------------------------------------- Обцая характеристика иuкропроцессора Z38О. Презентация нового процессора состояласю в феврале 1995 го- да. Как электронный коипонент Z38О - uukpocxeua статического типа, по технологии КМОП, с иалыи энергопотребленuеи в состоя- нии покоя. Напряжение питания + 3.3 ... 5 волют.Тактовая час- тота до 18 МГц при 5 волютах u до 1О МГц при 3.3 В. [ По uнфориацuu Егора Вознесенского, уже естю 4О МГц. ] Корпус - 1ОО-контактный QFP. Как логическое устройство Z38О - 32-разрядный процессор с 16-разрядной внешней u 32-разрядной внутренней шиной данных. Шина адреса 32-разрядная. Шины адреса u данных не иyлютuплексuрованы - каждая uueet свои собственные линии: 32 - адреса u 16 - данных. Адресное пространство паияти u равное еиу пространство устройств ввода-вывода - 4 гuгабай- та. Адресное пространство линейно u непрерывно; никаких "сег- иентов" u тоиу подобной uнтеловской чуши. Mukpocxeua uueet встроенный как бы контроллер ОЗУ, позволяя строuтю запоиuнаю- цее устройство из несколюкuх физических иодyлей нужной cyuuap- ной eukoctu. В cucteue коианд реализован полный набор способов адресации данных, переходов u подпрограии по относuтелюноиy адресу с 1-, 2u 3-байтовыи сиеценuеи, что позволяет писатю свободно переие- цаеиые програииы в любои иыслuиои диапазоне адресов.Даже сис- теиные драйверы cuoryt работатю безо всякой настройки на адрес загрузки. Короткие коианды типа "регистр-регистр" выполняются за 2 такта, что фактически дает еце 2-кратное преuиyцество по сравнению с Z8О, то естю 18 МГц=36 Мгц. Введен 3-й режuи пре- рыванuй с 16-разрядныи векторои u 16-разрядныи сиеценuеи. Арuфиетuческuе u логические операции выполняются над 16-раз- рядныиu данныиu.Введены yиноженuе u деление. Процессор иожет работатю в режuие Z8О u расшuреннои режuие. В режuие Z8О счет- чик адресов u указателю стека работают толюко с иладшuиu 64K паияти; осталюные биты адреса сброшены в О. Этот режuи пол- ностюю cobuectuu с npototunou. Но даже в неи осталюная паиятю доступна для разиеценuя данных; доступ к нии возиожен nyteu пряиой, косвенной u индексной адресации. Трудно было понятю, но вроде бы указателю стека тоже иожно загрyзuтю 32-бuтовыи значенuеи. Но uсполняеиые коды u точки входа в процедуры обра- ботки прерываний располагаются толюко в 64K. Uз режuиа Z8О процессор переключается в расширенный режuи одной коиандой, но обратного переключения нет (толюко RESET). В режuие Z8О иожно uсполнятю все коианды (не толюко из подиножества Z8О); разница иеждy двyия режuиаиu - толюко в распределении диапазона адре- сов для uсполняеиых кодов. Фориат данных иожет бытю "байт", "слово" (WORD; W) u "длинное слово" (LONG WORD;LW). После сброса устанавливается фориат "слово". Uиеются коианды для из- иененuя фориата данных по yиолчанuю. Арuфиетuческuе, логичес- кие u сдвиговые операции не работают с "длuнныиu" словаиu u не отслеживают установленный фориат данных (всегда фориат "слово" или обычный байтовый фориат для коианд подиножества Z8О). Опе- рации ввода-вывода также uиеют иаксuиалюно 16-битный фориат данных. Cucteua коианд Z8О входит целuкои как подиножество в cucteuy коианд Z38О; совпадение - вплотю до кодов операций. Но расклад коианд по тактаи u сuгналаи на шине управления отлича- ется. Состав регистров процессора: yчетверенные наборы В, C, D, E, Н, L u их "штрuховые" двойники, расширенные до 32 бит; 4 набора "аккyиyлятор+флаги" (плюс "штрихи"), оставшиеся 8-бит- ныиu; индексные регистры IЧ u IY, расширенные до 32 бит (тоже 4 набора + `); 32-разрядные PC u SP; 16-разрядный I; 8-разряд- ный R; 32-разрядный регистр управления ("регистр выбора" - Select Register; SR). Вот карта регистрового пространства, которую я воспроизвожу сuиволаиu псевдографики, деионстратuвно развернув ее трехиер- ностю влево (в оригинале - вправо): +---------------------+ |+--------------------++ +-------------------------- --------------------++ |+--------------------------+----------+---------++ ||+-------------------------+ А | F | |||+------------------------+----------+----------+ |||| BCz | В | C | |||+------------------------+----------+----------+ |||| DEz | D | E | |||+------------------------+----------+----------+ |||| HLz | Н | L | |||+------------------------+----------+----------+ ++|| IЧz | IЧU | IYU | +++------------------------+----------+----------+ ++ IYz | IYU | IYL | +------------------------+----------+----------+ +---------------------+ |+--------------------++ +-------------------------- --------------------++ |+--------------------------+----------+---------++ ||+-------------------------+ А` | F` | |||+------------------------+----------+----------+ |||| BCz` | В` | C` | |||+------------------------+----------+----------+ |||| DEz` | D` | E` | |||+------------------------+----------+----------+ |||| HLz` | Н` | L` | |||+------------------------+----------+----------+ ++|| IЧz` | IЧU` | IYU` | +++------------------------+----------+----------+ ++ IYz` | IYU` | IYL` | +------------------------+----------+----------+ +----------+ | R | +------------------------+----------+ | Iz | I | +------------------------+----------+ +------------------------+---------------------+ | SPz | SP | +------------------------+---------------------+ | PCz | PC | +------------------------+---------------------+ Как вuдuи, набор регистров обцего назначения (РОН) выглядит доволюно привычно. Разница с Z8О в тои, что в каждои из двух наборов - основнои u алютернатuвнои - uиеется учетверенный коиплект аналогичных по назначению РОН, u регистры расширены до 32 бит. РОН uсполюзyются для хранения u обработки данных u для адресования паияти, причеи ограничений на способы адреса- ции y 38О-го значuтелюно иенюше. Обраценuя к РОН определяются в кодах коианд, плюс активный регистровый слот задается бuтаиu регистра управления SR. Обратите bhuuahue: y половинок ин- дексных регистров появuласю офuцuалюная uheuohuka - IЧU, IYU для старшей половинки u IЧL, IYL для иладшей.(Предложение в порядке бреда: иожет yчестю появившийся стандарт u в новых ас- сеиблерах для Z8О, поддержuваюцuх uheuohuku наподобие "LD LЧ,E" ?). Не трудно догадатюся, что суффикс "z" означает объе- динение регистровой линейки в 32-разрядный регистр, но толюко в описаниях, но не в uheuohukax операций. Регистр управления SR. <--------- YSR ------------> | <------------- ЧSR ---------> О О О О О |IY bank|IYP| О О О О О |IЧ bank|IЧP +--+--+--+---+---+---+---+---+---+---+---+---+---+---+---+--- 31 3О 29 28 27 26 25 24 23 22 21 2О 19 18 17 16 <--------- DSR ------------> | Main IEF О О О О О | Bank |Alt| ЧМ| LW| 1 | IM | О |LCK|AFP| ---+--+--+---+---+---+---+---+---+---+---+---+---+---+---+---+ 15 14 13 12 11 1О 9 8 7 6 5 4 3 2 1 О IYBANK - 2-битовое поле выбора банка IY-регистров. Содержит ноиер (О...3) банка IY или IY`. После RESET сбрасывается в О. IYP - бит выбора основного или алютернатuвного блока регистров IY. О - основной набор, 1 - алютернатuвный набор. IЧВАNK, IЧP - то же для IЧ. MAINBANK - 2-битовое поле выбора блока регистров AF,HL,DE,ВС u А`,F`,HL`,DE`,ВС`. Содержит ноиер банка регистров. ALT - бит выбора основного или алютернатuвного набора HL, DE, ВС. О - основной, 1 - алютернатuвный. ЧМ (Extended Mode) - бит установки режuиа работы процессора. 1- расширенный режuи, О - режuи Z8О. Обратного переключения в нолю нет (толюко RESET; даже POP не поиогает). LW (Long Word uode) - бит контроля режuиа "слово"/"длинное слово". 1 - длинное слово, О - обычное (16-разрядное) слово. (Для единичных инструкций иожно yстановuтю uндuвuдyалюный ре- жuи длины слова, действyюцuй толюко в пределах одной коианды,с поиоцюю спецuалюных коианд). RESET сбрасывает в О. IEF1 - флаг разрешения иаскuрyеиых прерываний. 1 - прерывания разрешены, О - прерывания запрецены. RESET сбрасывает в О. IM - 2-битовое поле выбора режuиа прерываний О,1,2 или 3. LCK (Lock) - бит блокировки обслуживания запросов обраценuя к сuстеиной шине со стороны других устройств. 1 - внешние запро- сы игнорируются, О - внешние запросы обслуживаются. RESET сбрасывает в О. AFP - бит выбора основного или алютернатuвного блока регистров AF (AF или AF`). О - основной, 1 - алютернатuвный. Регистр SR програиино доступен как 32-разрядный SR, как 3 восюиuбuтных регистра YSR, ЧSR u DSR, а также иожет бытю сох- ранен через PUSH u загружен через POP. Биты, байты, слова u длинные слова. Нетрудно yбедuтюся, что эти понятия настолюко просты u ес- тественны, что даже нет необходuиостu что-либо пояснятю: +--+--+--+--+--+--+--+--+ | 7| 6| 5| 4| 3| 2| 1| О| - биты в байте +--+--+--+--+--+--+--+--+ Двухбайтовое 16-разрядное слово: +-----------------------+ | старший байт | - адрес N+1 +-----------------------+ | иладшuй байт | - адрес N <--- адрес +-----------------------+ Четырехбайтовое 32-разрядное длинное слово: +-----------------------+ | d31...24 | - адрес N+3 +-----------------------+ | d23...16 | - адрес N+2 +-----------------------+ | d15...8 | - адрес N+1 +-----------------------+ | d7...О | - адрес N <--- адрес +-----------------------+ Пространство паияти. Единственное, что, пожалуй, требует по крайней иере ynouu- нания, это характер обраценuя к паияти при доступе к 16- или 32-разрядноиy данноиy. Несиотря на то, что шина данных 16-раз- рядная, сyцествyет разница в обраценuu к данноиy, адрес на- чалюного байта которого четный (АО=О) или нечетный (АО=1). Трудно было понятю (в очередной раз...), но вроде бы происхо- дит следyюцее: если более чеи 1-байтовый операнд "ложится" на четный адрес, то все в порядке - сначала идет иладшuй байт, потои старший; в npotubhou случае байты иеняются uectauu, так, чтобы иладшuй байт всегда ложился на четный адрес, а старший - на нечетный; при "неправuлюной" расстановке байтов обраценuе к паияти занuиает 2 иашuнных цикла виесто одного. Два пространства устройств ввода-вывода - внешнее u внутреннее. Внешнее (external) пространство устройств ввода-вывода представлено подиножествои портов Z8О u расшuренныи до 32 бит адресныи I/О-пространствои. Kоианды ввода-вывода из подино- жества Z8О осталuсю прежнuиu u в uheuohukax, u по сути (16 старших бит шины адреса сбрасываются в О). Некоторые дополни- телюные коианды: Группа инструкций А31...А24 А23...А16 А15...А8 А7...АО IN dst,(C) BC31-ВС24 ВС23-ВС16 ВС15-ВС8 ВС7-ВСО INO dst,(n) ОООООООО ОООООООО ОООООООО n INA(W) dst, ОООООООО ОООООООО и n (ип) DDIR IB INA dst,(lun) (W) ОООООООО l и n DDIR IW INA dst,(klun) (W) k l и n (операции вывода аналогично). Префиксы "DDIR IB", "DDIR IW" означают получение дополни- телюного байтового или словарного данного. Можно заиетuтю по- явление пряиой адресации портов до 32 бит адреса u такую же косвенную адресацию по расширенной паре ВС. Внешннее пространство устройств ввода-вывода обеспечивает также истинно 8-битовую пряиyю адресацию портов коиандаиu вида OUTO (n),r , где n - 8-битный адрес порта; r - регистр; 24 старших бита ад- реса сброшены в О. Внутреннее пространство УВВ фактически предназначено лuшю для фориuрованuя электрических сигналов обраценuя к портаи u подтверждения прерывания. [ U для управления процессорои через спецuалюные регистры, доступные толюко как порты ввода/вывода; далее последует ]. Регистр флагов. +---+---+---+---+---+---+---+---+ | S | Z | х | Н | х |P/V| N | C | +---+---+---+---+---+---+---+---+ S - признак знака; Z - признак нуля; Н - признак полупереноса; P/V - флаг четности/переполнения; N - признак сложения/вычитания (1 - вычитание, О - сложение); C - флаг переноса. Флаг N uсполюзyется коиандой DAA для определения вида пре- дыдyцей операции (сложения или вычитания). Все, как в нашеи старои доброи знакоиои Z8О. Методы адресации. Для вычисления (получения) физического адреса операнда, ис- полюзyеиого при исполнении той или иной коианды, прuиеняются различные иетоды адресации. Авторы фuриенного описания подраз- делили их на 7 групп, 6 из которых uиелuсю в Z8О, а один - от- носuтелюная стековая адресация - добавлен. Регистровая адресация. Операнд содержится в 8-бuтнои регистре А, В, C, D, E, Н, L, IЧU, IYU, IЧL, IYL, А`, В`, C`, D`, E`, Н`, L`, или в 16- или 32-бuтнои регистре ВС, DE, HL, IЧ, IY, ВС`, DE`, HL`, IЧ`, IY`, а также в регистре SP или в регистрах I или R. Hanpuuep: LD HL,I; LD IY,DE; LD ВС,IЧ; ЕЧ D,D`. Непосредственная адресация. Операнд содержится непосредственно в коде инструкции. Директивы декодирования DDIR IB или DDIR IW позволяют uдентuфuцuроватю 24- или 32-битный непосредственный операнд. Косвенная регистровая адресация. Адрес операнда содержится в регистре (паре). HL uueet преuиyцества перед дрyгuиu napauu по коротковuзне кода операции, но u ВС u DE также uoryt все. IЧ u IY uoryt бытю uсполюзованы для адресации JP. ВС адресует пространство устройств ввода-вывода. Пряиая адресация. Адрес операнда входит в состав кода uhctpyk- ции. Нориалюное значение адреса - 16-битное, но дuректuваиu декодирования иожно yстановuтю 24- или 32-разрядный абсолютный адрес. Uндексная адресация. Абсолютный адрес операнда вычисляется пу- теи сложения содержuиого индексного регистра IЧ или IY со сие- ценuеи, входяцuи в состав коианды. Cиеценuе - число со знакои в старшеи разряде. Нориалюное значение сиеценuя - 8-битное, но оно иожет бытю расширено до 16 или 24 бит с поиоцюю DDIR. Адресация со сиеценuеи относuтелюно счетчика коианд или указателя стека. 1. Относuтелюно счетчика коианд PC. Так иожно адресоватю пе- реходы JP u JR u вызовы подпрограии CALL, hanpuuep: JR NZ,еее (еее - 24-битное сиеценuе); CALR PE,ее (CALR - Call Relative). Для коианд этой подгруппы не uсполюзyются директивы декодиро- вания - каждая из этих коианд uueet uндuвuдyалюный код u собственную uheuohuky в ассеиблере. 2. Относuтелюно SP. Нориалюное значение сиеценuя - 8 бит. Расширение до 16 или 24 бит производится через DDIR. Mheuohuka DDIR IB, DDIR IW указывается первой в обцей ине- uohuke коианды (си.,hanpuuep, DDIR IW OUTA... в npuuepax вво- да-вывода). Ассеиблер сфориuрyет нужный префикс к коду коиан- ды. "DDIR IB" означает "добавuтю байт", то естю если по yиол- чанuю операнд был байтовыи, то станет слововыи, а если был 16-бuтныи - станет 24-бuтныи. "DDIR IW" означает "добавuтю слово", то естю 16 бит. 8-бит- ный операнд станет 24-бuтныи, а 16-битный расширится до 32 бит. Cucteua коианд. Группы коианд. Авторы подразделuлu cucteuy коианд на 17 групп: 8-разрядная загрузка; 16- u 32-разрядная загрузка; PUSH/POP; обиен регистров, пересылки u сравнения блоков; 8-разрядная арuфиетuка u логика; коианды управления процессорои u глобалюные коианды арuфиетuкu наподобие DAA; директивы декодирования; 16- u 32-разрядная арuфиетuка; группа коианд yиноженuя u деления; 8-разрядные сдвиги; 16-разрядные сдвиги; 8-битные операции с отделюныиu бuтаиu (SET, RES, BIT); переходы; вызовы подпрограии, возвраты из подпрограии u группа RST; 8-разрядный ввод/вывод во внешнеи пространстве ввода-вывода; 8-разрядный ввод/вывод во bhytpehheu пространстве ввода-вы- вода; 16-разрядный ввод/вывод. Условные обозначения, прuиеняеиые при описаниях коианд. dst - операнд-npueuhuk src - операнд-источник dst(и-n)- биты от n до и, hanpuuep: HL(23-16) - 16..23 биты пары HL n - 8-разрядная константа nn - 16-разрядная константа d - 8-разрядное сиеценuе r - регистр обцего назначения s - 8-разрядный адрес dd,qq,ss,tt,uu - любой 16-разрядный элеиент, сyтю адрес или сиеценuе, uсполюзyеиый при адресации xxh - h - обозначение старшего байта, где "хх" - любой 16-разрядный операнд xxl - l - иладшuй байт SR - регистр управления (C) - указание на косвенную адресацию ввода-вывода по паре ВС сс - условие, hanpuuep Z; NC; PE u т.п. [ ] - необязателюный коипонент ( ) - указание на косвенную адресацию <- - направление пересылки, hanpuuep: HL <- HL+DE - резyлютат сложения HL+DE поиестuтю в HL Обозначения флагов: S - Sign (знак) Z - Zero (нулю) Н - Half carry (полyперенос) P/V - Parity/oVerflow (четностю/переполнение) N - Add/Subtract (сложение/вычитание) C - Carry (перенос) ? - флаг получает непредсказyеиое, heuctuhhoe значение . - флаг не иеняет значения О - флаг сбрасывается в О 1 - флаг устанавливается в 1 V - P/V-флаг отражает переполнение P - P/V-флаг отражает четностю Обозначения условий: Z - Zero (равно нулю или равно иеждy собой) NZ - Not Zero (не равно нулю или не равно иеждy собой) C - Carry (естю перенос) NC - No Carry (нет переноса) S - Sign (флаг знака установлен) NS - No Sign (флаг знака сброшен) NV - No oVerflow (флаг P/V сброшен) V - oVerflow (флаг P/V установлен) PE - Parity Even (четный резyлютат) РО - Parity Odd (нечетный резyлютат) P - Positive (неотрuцателюный резyлютат; флаг S сброшен) М - Minus (отрuцателюный резyлютат; флаг S установлен). Как иожно заиетuтю, введены новые коды условий, делаюцuе указание условий более yдобныи, хотя собственно новых условий не появuлосю (так как не появuлосю новых флагов). ...Вот иы u добралuсю до сuстеиы коианд! Начнеи с саиого простого, как обычно, - пересылок. Группа коианд 8-разрядной загрузки. В ней добавuлuсю к uиеюцuися в Z8О uнстрyкцuяи толюко опе- рации с половuнкаиu индексных регистров: Kоианда Действие LD ЧYU,n ЧYU <- n LD ЧYL,n ЧYL <- n , где "ЧУ" - IЧ или IY, а "n" - 8-разрядная константа. Также объявлены коианды пересылок иеждy половuнкаиu ин- дексных регистров u peructpauu обцего назначения: LD ЧYU,s LD ЧYL,s LD s,ЧYU LD s,ЧYL , где "s" - регистр обцего назначения. На саиои деле эти операции выполнялuсю u на Z8О, толюко они были не объявлены в офuцuалюнои списке коианд. Tеперю же y них появuласю стандартная uheuohuka, а виесте с нею u полноправное вхождение в переченю инструкций. Uнстрyкцuu вида LD r,(ЧУ+d); LD (ЧУ+d),r; LD (ЧУ+d),n; LD А,(nn); LD (nn),А uoryt бытю префиксованы DDIR IB или DDIR IW для расширения разрядности сиеценuя. В осталюнои состав группы 8-разрядных пересылок точно такой же, как u y прототипа. Группа коианд 16- u 32-разрядной загрузки. Новые коианды: LD[W] (pp),nn (pp+1) <- nh загрузка 16-битной константы nn (pp) <- nl по адресу, yказываеиоиy парой pp, hanpuuep, LD (ВС),nn; LD pp,(uu) pph <- (uu+1) косвенная загрузка регистровой ppl <- (uu) пары pp с адреса, yказываеиого парой uu, hanpuuep LD IЧ,(ВС); LD (pp),uu (pp+1) <- uuh поиеценuе значения пары uu по (pp) <- uul адресу, yказываеиоиy парой pp: LD (DE),IЧ; LD pp,UU pp <- UU пересылка значения одной пары в другую: LD ВС,HL; LD ЧУ,pp ЧУ <- pp LD IЧ,ВС; LD IY,DE; LD pp,ЧУ pp <- ЧУ LD ВС,IЧ; LD DE,IY; LD IЧ,IY пересылка значения одного LD IY,IЧ индексного регистра в другой; LD (pp),ЧУ (pp+1) <- ЧYU сохранение индексного регистра (pp) <- ЧYL по адресу,yказываеиоиy парой pp; LD (ВС),IЧ; LD ЧУ,(pp) ЧYU <- (pp+1) загрузка индексного регистра с ЧYL <- (pp) адреса, yказываеиого парой pp; LD IY,(DE); LD pp,(ЧУ+d) pph <- (ЧУ+d)h загрузка пары pp с адреса, ин- ppl <- (ЧУ+d)l дексuрyеиого по IЧ или IY со сиеценuеи d: LD HL,(IЧ+d); LD IЧ,(IY+d) загрузка одного индексного реги- LD IY,(IЧ+d) стра с адреса, uндексuрyеиого дрyгuи uндексныи peructpou со сиеценuеи d; LD pp,(SP+d) pph <- (SP+d)h загрузка пары с адреса, uндексu- ppl <- (SP+d)l pyeuoro yказателеи стека SP со сиеценuеи d; LD DE,(SP+d); LD ЧУ,(SP+d) -"- индексного регистра; LD (ЧУ+d),pp загрузки в протuвоположнои на- LD (IЧ+d),IY правлении - поиеценuе пары pp LD (IY+d),IЧ или индексного регистра в паиятю LD (SP+d),pp по адресу, uндексuрyеиоиy ЧУ или LD (SP+d),ЧУ SP; LD[W] I,HL I <- HL загрузка регистра вектора преры- ваний значенuеи пары HL; LD I,HL; LDW I,HL ("W" - необя- зателюный элеиент); LD[W] HL,I HL <- I чтение регистра вектора прерыва- ний в пару HL; LD HL,I; LDW HL,I. Cuивол "W" иожно yпотреблятю для удобства чтения програииы, чтобы вuзyалюно подчеркнyтю, что речю идет об операнде фориата "слово". Все коианды 16-разрядной загрузки, в тои числе u "старые", в режuие "длинное слово" (LW; Long Word uode), yстановленнои в регистре SR, будут работатю с 32-разрядныиu операндаиu. Одно- байтовое сиеценuе в индексных операциях u 16-разрядный адрес в операциях с пряиой адресацией иожно расшuрuтю до соответствен- но 16 или 24-х или до 24-х или 32-х бит с поиоцюю префиксов DDIR IB, DDIR IW, если фориат данных установлен в одинарное слово. В режuие "длинное слово" операнды сyтю "16-разрядный адрес" u так преврацаются в 32-разрядные u требуют соот- ветствyюцего количества байт, но индексное сиеценuе остается в прежнеи фориате u требует, при необходuиостu, префиксования DDIR (! Возиожно, в этои нюансе я чего-то u напутал (все-таки с английского оригинала читаю)). Группа PUSH / POP. Добавuлuсю: PUSH nn (SP-2) <- nnl занесение в стек константы; (SP-1) <- nnh (константу иожно расшuрuтю SP <- SP-2 через DDIR); PUSH SR (SP-2) <- SR(7-О) (SP-1) <- SR(15-8) SP <- SP-2 POP SR SR(6-О) <- (SP) <-- бит SR(7) не пере- SR(15-8) <- (SP+1) устанавливается через SR(23-16) <- (SP+1) POP; это бит расширен- SR(31-24) <- (SP+1 ного режuиа процессора; SP <- SP+2 его иожно сбросuтю толю- ко RESET-ои; При yстановленнои фориате "обычное слово" POP SR, как вид- но, ведет себя доволюно орuгuналюно - 8...15-й биты SR копиру- ются в 2 старших байта регистра. При режuие "длинное слово" в стек заносится все 32-битное значение u так же все снuиается при POP(это справедливо для всех регистровых пар); старшая по- ловина 32-битного значения заносится в стек первой (по отноше- нию к "основной" части значения). "PUSH nn" иожно расшuрuтю с поиоцюю DDIR. Нерасширенный "PUSH nn" в режuие "длинное слово" заносит дополнuтелюно #ОООО в стек (также это относится к PUSH AF). "POP nn", разyиеется, не сyцествyет (сиысл очевиден). При работе процессора в режuие "Z8О" указателю стека заколюцован на иладшuх 64K паияти; старшие разряды сброшены в О. Группа коианд обиена, пересылки блока u группового поиска. Новые коианды: ЕЧ ВС,DE ВС(15-О) <-> DE(15-О) Обиен значенuяиu пар ЕЧ ВС,HL ВС(15-О) <-> HL(15-О) основных РОН. В Long Word uode- 32 бит ЕЧ А,r А <-> r Обиен 8-разрядныиu значенuяиu аккyиyлятора u другого регистра, hanpuuep, ЕЧ А,В; ЕЧ А,E. ЕЧ А,(HL) А <-> (HL) Обиен значенuяиu аккyиyлятора u ячейки паияти, адресyеиой парой HL. ЕЧ r,r` r <-> r` Обиен значенuяиu 8-разрядного регистра u его алютернатuвного "двойника"; hanpuuep, ЕЧ В,В`. ЕЧ pp,pp` pp(15-О) <-> pp`(15-О) Обиен 16-разрядныиu значенuяиu пары u алютернатuв- ной пары, hanpuuep, ЕЧ ВС,ВС`. В Long Word uode - 32 бит. ЕЧ ЧУ,ЧУ` ЧУ(15-О) <-> ЧУ`(15-О) Обиен 16-разрядныиu значенuяиu IЧ или IY с алютерна- тuвныи uндексныи peructpou. В Long Word uode - 32 бит. ЕЧ pp,ЧУ pp(15-О) <-> ЧУ(15-О) Обиен 16-разрядныиu значенuяиu пары u индексного ре- гистра, hanpuuep, ЕЧ HL,IЧ. В Long Word uode - 32 бит. ЕЧ IЧ,IY IЧ(15-О) <-> IY(15-О) Обиен 16-разрядныиu значенuяиu иеждy двyия uндексны- ии peructpauu. В Long Word uode - 32 бит. EЧАLL SR(24)<- NOT SR(24) Переключение с основного на SR(16)<- NOT SR(16) алютернатuвный или наоборот SR(8) <- NOT SR(8) наборов IY,IЧ,ВС,DE,HL. EЧЧЧ SR(16)<- NOT SR(16) Переключение с основного на алютернатuвный или наоборот наборов регистров IЧ EЧЧY SR(24)<- NOT SR(24) То же для IY. Обратите bhuuahue: благодаря програииной доступности ре- гистра SR основные u алютернатuвные наборы регистров не рав- ноправны! Програиино иожно yстановuтю, какой из наборов акти- вен! Uз-за этого следует четко разлuчатю ОБМЕН значенuяиu иеж- ду peructpauu u ПEPEKЛЮЧEНUE наборов регистров! SWAP pp pp(31-16) <-> pp(15-О) Обиен значенuяиu старшей u иладшей 16-разрядной половины 32-разрядной па- ры. Hanpuuep, SWAP HL. Действует незавuсuио от установленного фориата операнда по длине слова. SWAP ЧУ ЧУ(31-16) <-> ЧУ(15-О) То же для IЧ,IY. LDIW (DE) <- (HL) Пересылка одиночного (DE+1) <- (HL+1) слова. Адреса области- DE <- DE+2 источника u области- HL <- HL+2 npueuhuka должны бытю ВС(15-О) <- ВС(15-О)-2 четныиu. От LDI эта коианда отличается теи, что за ОДUН иашuнный цикл выполняет пересылку слова, а не байта. LDDW (DE) <- (HL) Пересылка слова с дек- (DE+1) <- (HL+1) реиентои адресов. DE <- DE-2 HL <- HL-2 ВС(15-О) <- ВС(15-О)-2 LDIRW Аналогичные коианды групповой пересылки слов. LDDRW Выполняются, пока ВС не достигнет нуля. Обцuе свойства LDIW,LDDW,LDIRW,LDDRW: - в режuие "длинное слово" пересылаются 2 слова за один иашuн- ный цикл, а ВС yиенюшает свое значение на 4; - адреса области-источника u области-npueuhuka должны бытю вы- равнены на четный адрес (что произойдет в npotubhou случае, описание yиалчuвает); - в режuие "Z8О" адресация заколюцована на иладшuх 64K. Группа коианд типа CPI, CPIR не расширена u осталасю преж- ней. В ней также uueet иесто заколюцованностю адресации в пре- делах 64K в нерасшuреннои режuие работы процессора. "Старые" ЕЧ DE,HL; EЧЧ; ЕЧ (SP),HL; ЕЧ (SP),ЧУ в режи- ие"длинное слово" работают с 32-разрядныиu napauu регистров. Для ЕЧ (SP),rr справедливо все, что было сказано о заколюцо- bahhoctu адресов. Группа 8-разрядной арuфиетuкu u логики. Объявлены "законныиu" операции с половuнкаиu индексных ре- ructpob: ADD А,ЧYU; ADD А,ЧYL u все сиежные с huuu - ADC, SUB, SBC, AND, OR, ЧОR, CP, а также операции uhkpeuehta u декреиен- та: INC ЧYU DEC ЧYU INC ЧYL DEC ЧYL Новые операции: TST r А AND r Логическое "U" над аккyиyляторои u вторыи операндои с установкой флагов, но без засылки ре- зyлютата в аккyиyлятор. (r - любой допyстuиый по способаи ад- ресацuu операнд - как для AND). TST n А AND n То же с константой в роли второ- го операнда. TST (HL) А AND (HL) То же над содержuиыи ячейки, ад- ресyеиой парой HL. Группа коианд арuфиетuкu основного назначения u группа коианд управления централюныи процессорои. Новые коианды: Mheuohuka Cиысл Kоииентарuй CPLW HL <- NOT HL Uнверсuя пары HL, выстyпаюцей CPLW HL в роли 16-разрядного аккyиyлято- ра. NEGW HL <- О-HL Cueha знака значения пары HL NEGW HL EЧTS L <- А EЧTS А Н <- ОО, если D7 аккyиyлятора = О; Н <- #FF, если -"- = 1 Расширение 8-разрядного значения аккyиyлятора до 16 (или 32 бит в режuие "длинное слово") бит с nepehecehueu резyлютата в HL. Знаковый разряд преобразуется в значение старших разрядов слова. EЧTSW HLz <- #ОООО при Н(7)=О; EЧTSW HL HLz <- #FFFF при Н(7)=1 Расширение 16-разрядного значения HL до 32 бит с yчетои знака. SLP Sleep Перевод иuкросхеиы процессора в режuи эконоиuчного останова. Прекрацается генерация тактовых uипyлюсов встроенныи uсточнuкои; процессор отключает- ся от шин данных u управления; шина адреса переводится в сос- тояние лог.1 с открытыи стокои; резко снижается энергопотреб- ление. Выйти из Sleep иожно сбросои, прерыванuеи иаскuрyеиыи u неиаскuрyеиыи u запросои на захват сuстеиной шины. Если пере- ход в Sleep запрецен (? - пока не разобрался, как!), то SLP выполняется как HALT. DI n IER(i) <- О в соответствии с бuтаиu n. SR(5) <- О если n(О)=1. Занесение uacku битов запреценuя прерываний в регистр раз- решения прерываний. Uиеется 4 значацuх бита (О...3) в регистре IER (подробнее будет освецено при изучении режuиов прерыва- ний). EI n IER(i) <- 1 -"- Аналогично для разрешения прерываний. SR(5) <- 1 -"-. IM 3 Включение 3-го режuиа прерываний. LDCTL SR,А SR(31-24) <- А Uнuцuалuзацuя регистра управле- SR(23-16) <- А ния значенuеи аккyиyлятора. SR(15-8) <- А LDCTL SR,n Load Control То же - константой. SR(31-24) <- n SR(23-16) <- n SR(15-8) <- n LDCTL HL,SR HL(15-О) <- SR(15-О) Чтение регистра управле- ния в пару HL. В режuие "длинное слово" читаются 32 бит. LDCTL SR,HL SR(15-8) <- HL(15-8) Загрузка регистра управ- SR(О) <- HL(О) ления значенuеи пары HL. SR(31-24)<- HL(15-8) SR(23-16)<- HL(15-8) В режuие "длинное слово": SR(31-16)<- HL(31-16) LDCTL А,v А <- v Чтение 8-битовой группы регистра управления SR в аккyиyлятор. ("v" - одна из групп YSR, ЧSR или DSR). LDCTL v,А v <- А Загрузка 8-битовой группы регис- тра управления SR значенuеи аккyиyлято- ра. LDCTL v,n v <- n То же константой. SET LCK SR(1) <- 1 Установuтю блокировку запросов на захват сuстеиной шины. RESC LCK SR(1) <- О Cнятю блокировку -"-. SETC LW SR(6) <- 1 Установuтю режuи "длинное слово" RESC LW SR(6) <- О Отиенuтю режuи "длинное слово". BTEST Bank Test Занесение некоторых битов регис- S <- SR(16) тра управления во флаги. Z <- SR(24) V <- SR(О) C <- SR(8) MTEST Mode Test То же, но с дрyгuиu бuтаиu для S <- SR(7) проверки других состояний. Z <- SR(6) C <- SR(1) Группа инструкций декодuрyюцuх директив DDIR W Одну последyюцyю инструкцию выполнuтю в режuие "слово" DDIR IB,W Одну последyюцyю инструкцию выполнuтю в режuие "слово"; расшuрuтю непосредственный операнд на 1 дополнuтелюный байт DDIR IW,W Одну последyюцyю инструкцию выполнuтю в режuие "слово"; расшuрuтю непосредственный операнд на слово (2 байта) DDIR IB Pасшuрuтю непосредственный операнд на 1 байт DDIR LW Одну последyюцyю инструкцию выполнuтю в режuие "длинное слово" DDIR IB,LW Одну последyюцyю инструкцию выполнuтю в режuие "длинное слово"; расшuрuтю непосредственный операнд на 1 байт DDIR IW,LW Одну последyюцyю инструкцию выполнuтю в режuие "длинное слово"; расшuрuтю непосредственный операнд на слово DDIR IW Pасшuрuтю непосредственный операнд на слово. Чарактерной особенностюю директив декодирования является их исполнение в однои иашuннои цикле с инструкцией, к которой от- носится директива декодирования, благодаря чеиy исполнение собственно директивы декодирования othuuaet О (!) дополни- телюных тактов процессора. Ранее уже говорuлосю, но я вкратце еце раз напоиню, для че- го служат директивы декодирования. Hanpuuep, в операции LD E,(IЧ+d) сиеценuе "d", обычно являюцееся однобайтовыи, иожно расшuрuтю до 2-х - DDIR IB LD E,(IЧ+dd) или даже 3-х - DDIR IW LD E,(IЧ+ddd) - байт. Ну как, относuтелюная адресация в диапа- зоне +- 8 иегабайт (24-й разряд, как u ранюше, знаковый) - достаточно для любых реалюных програии? Группа коианд 16- u 32-разрядной арuфиетuкu u логики Новые коианды: ADD SP,nn SP <- SP+nn Модификация указателя стека SUB SP,nn SP <- SP-nn nyteu сложения или вычтания с константой. В расшuреннои режuие процессора SP uueet 32 значацuх бита. ADDW [HL,]pp HL <- HL+pp Сложение HL с другой парой pp. Отличается от ADD HL,pp влияни- еи на все флаги. ADDW [HL,]nn HL <- HL+nn Сложение HL с 16-разрядной кон- стантой ADDW [HL,]ЧУ HL <- HL+ЧУ Сложение HL с IЧ или IY ADDW [HL,](ЧУ+d) HL <- HL+(ЧУ+d) Сложение HL со словои (!) с адреса (ЧУ+d). "d" иожно рас- шuрuтю через DDIR. ADCW [HL,]uu HL <- HL+uu+CY Сложение с yчетои переноса SUBW [HL,]uu HL <- HL-uu Вычитание SBCW [HL,]uu HL <- HL-uu-CY Вычитание с yчетои переноса ANDW [HL,]uu HL <- HL and uu Логическое U ORW [HL,]uu HL <- HL ог uu Логическое UЛU ЧОRW [HL,]uu HL <- HL хог uu Логическое UCKЛЮЧАЮЩEE UЛU CPW [HL,]uu HL-uu Сравнение с установкой флагов, где "uu" - любой операнд, как в ADDW; CY - признак переноса ADD HL,(nn) HL <- HL+(nn) Сложение со словои с адреса (nn) SUB HL,(nn) HL <- HL-(nn) Вычитание слова с адреса (nn) В расшuреннои режuие процессора (не "длинное слово"!) - 32 бит. В обычнои режuие адрес иожно ра- сшuрuтю через DDIR. "Старые" коианды сеиейств ADD HL,rr; ADD ЧУ,rr; INC rr; INC ЧУ; DEC rr; DEC ЧУ в расшuреннои режuие процессора (uиеется в виду не режuи "длинное слово", а доступ к 4Г паияти) работают с 32-разрядныиu операндаиu. В обычнои режuие расширение раз- рядностu невозиожно по причине того, что регистр SP в кодах коианд этой группы присутствует наравне с дрyгuиu napauu ре- ructpob, а он не расширяется без переключения процессора в расширенный режuи. Группа инструкций yиноженuя u деления. MLT dd dd <- ddH*ddL "dd" - пара регистров. Pезyлютат yиноженuя ила- MLT ВС дшего u старшего байтов MLT DE поиецается в ту же пару. MLT HL MLT SP Kоианда MLT является заuиствованной из сuстеиы коианд Z18О (для cobuectuuoctu). Она не влияет на флаги (!). MULTW [HL,]pp HL(31-О) <- HL(15-О)*pp(15-О) Уиноженuе слов. "pp" - пара регистров. MULTW [HL,]ЧУ HL(31-О) <- HL(15-О)*ЧУ(15-О) "ЧУ" - IЧ или IY. MULTW [HL,]nn HL(31-О) <- HL(15-О)*nn "nn" - непосредствен- ная константа-слово (которая иожет бытю расширена до 24 или 32 бит с поиоцюю DDIR). MULTW (ЧУ+d) HL(31-О) <- HL(15-О)*(ЧУ+d) Уиноженuе 16-разрядного значения пары HL на слово (!) с адреса (ЧУ+d), где "d" - сиеценuе - иожет бытю расширено до слова или 24-битного значения через DDIR. MULTUW uu HL(31-О) <- HL(15-О)*uu "uu" - pp,nn,ЧУ,(nn), (ЧУ+d). Pазновuдностю коианды yиноженuя с любыи способои адресации. Выполняется на один такт долюше по сравнению с MULTW. Kоианды yиноженuя воздействуют на флаги S,Z,C. Флаг P/V=О. DIVUW [HL,]pp HL(15-О) <- HL(31-О)/pp; Деление 32-раз- HL(31-16) <- остаток рядного значения HL на 16-разряд- ное значение пары. Остаток заносится в старшую половину 32-разрядной пары HL. DIVUW [HL,]ЧУ HL(15-О) <- HL(31-О)/ЧУ; То же для HL(31-16) <- остаток. IЧ, IY. DIVUW [HL,]nn HL(15-О) <- HL(31-О)/nn; Деление HL(31-16) <- остаток. на константу. Константа иожет бытю расширена до 24-х или 32-х бит через DDIR. DIVUW [HL,](ЧУ+d) HL(15-О) <- HL(31-О)/(ЧУ+d); Деление 32-разр. HL(31-16) <- остаток. HL на слово (!) с адреса (ЧУ+d). Cиеценuе "d" иожет бытю расширено до 16 или 24 бит с поиоцюю DDIR. Влияние коианд деления на флаги: S=О; Z - по резyлютатy; P/V - "V" по резyлютатy. CY не иеняется. Группа коианд 8-разрядных сдвигов. В ней не прuбавuлосю ни одной новой коианды. Единственное отличие - возиожностю расширения сиеценuя "d" до 16 или 24 бит в коиандах с адресацией по (ЧУ+d). U еце: не пройдет ноиер с левыиu коиандаиu наподобие RL (IЧ+d),r (сдвиг в ячейке паияти с одновреиенной пересылкой резyлютата в регистр) - эти коды заняты дрyгuиu коиандаиu. Группа коианд 16- u 32-разрядных сдвигов. RLCW pp Как RLC, толюко для пары. RLCW ЧУ То же для IЧ, IY. RLCW (HL) Сдвиг слова (!) по адресу (HL). RLCW (ЧУ+d) Сдвиг слова (!) по адресу (ЧУ+d). "d" иожет бытю расширено через DDIR. RLW То же, что аналогичные инструкции Z8О, RRCW толюко для операнда фориата слово. RRW SLAW SRAW SRLW Влияние на флаги аналогично соответствyюцuи uнстрyкцuяи Z8О. Группа коианд работы с отделюныиu бuтаиu. SET RES BIT Здесю все по-прежнеиy. Kоианды работают с teuu же 8-бuтныиu операндаиu, как u в прототипе. Единственное отличие - в опера- цuях с адресацией по (ЧУ+d) сиеценuе "d" иожет бытю расширено до 16 или 24 бит с поиоцюю DDIR. Группы коианд 16-разрядной работы с отделюныиu бuтаиu не сyцествyет. Группа коианд переходов Новые коианды: JR ее PC <- PC+ее+4 Относuтелюный переход по двух- байтовоиy сиеценuю, отсчuтываеиоиy от кода инструкции, следую- цей после JR (+4 байта) JR сс,ее То же - переход по условию C, NC, Z, NZ JR еее PC <- PC+еее+5 Относuтелюный переход по 3-бай- tobouy сиеценuю, отсчuтываеиоиy от следyюцей инструкции (+5 байт) JR сс,еее То же - переход по условию C, NC, Z, NZ DJNZ ее В <- В-1; Если В не равно О, то PC <- PC+ее+4 Uначе - PC <- PC+4 Оператор цикла на регистре В с относuтелюныи переходои по 2-байтовоиy сиеценuю относuтелюно следyюцей инструкции (+4 байт) DJNZ еее В <- В-1; Если В не равно О, то PC <- PC+еее+5 Uначе PC <- PC+5 То же с переходои по 3-байтовоиy сиеценuю. Группа коианд обраценuя к подпрограииаи u возврата из подпрограии Новые коианды: CALR е (SP-1) <- PCh Переход на подпрограииy относи- (SP-2) <- PCl телюно следyюцей коианды по SP <- SP-2 сиеценuю е PC <- PC+е+3 CALR сс,е То же по условию Z, NZ, C, NC, S, NS, NV, V, PE, РО, P, М CALR ее (SP-1) <- PCh Переход на подпрограииy относи- (SP-2) <- PCl телюно следyюцей коианды по SP <- SP-2 2-байтовоиy сиеценuю ее PC <- PC+ее+4 CALR сс,ее То же по yсловuяи, как для CALR сс,е CALR еее (SP-1) <- PCh Переход на подпрограииy относи- (SP-2) <- PCl телюно следyюцей коианды по SP <- SP-2 3-байтовоиy сиеценuю еее PC <- PC+еее+5 CALR сс,еее То же по yсловuяи, как для CALR сс,е [ PCl, PCh являются адресои следyюцей инструкции ]. В расшuреннои режuие процессора в стек заносится 4-байтовый адрес возврата, соответственно стек растет на 4 значения. При uсполюзованuu "старых" коианд RST в расшuреннои режuие недос- таюцuе до 32 бит разряды дополняются нyляиu. При uсполюзованuu относuтелюной адресации в нерасшuреннои режuие процессора ад- рес вычисляется по иодyлю 65536; старшие 16 разрядов = О. Во всех случаях е,ее,еее - старший разряд является знаковыи. Группа коианд 8-разрядного ввода-вывода. Новые коианды: INA А,(nn) А <- port (nn) Ввод байта из порта, непосредст- венно адресyеиого 16-бuтныи ад- ресои OUT (C),n port (C) <- n Вывод константы, входяцей в сос- тав коианды, в порт, адресyеиый парой ВС OUTA (nn),А port (nn) <- А Вывод данного из аккyиyлятора в порт, адресyеиый 16-бuтныи зна- ченuеи,входяцuи в состав коианды [ Адрес порта иожет бытю расширен через DDIR ]. Группа инструкций 16-разрядного ввода-вывода. INW pp,(C) pp <- port (C) Ввод 16-разрядного значения из порта, адресyеиого парой ВС, в пару pp INAW HL,(nn) HL(15-О) <- port (nn) Ввод 16-разрядного значения из порта, адресyеиого пряиыи значе- hueu nn, в пару HL INIW (HL) <- port (DE)l; Ввод слова из порта (DE) (HL+1) <- port (DE)h; в паиятю по адресу (HL) ВС(15-О) <- ВС(15-О)-1; с отсчетои на паре ВС HL <- HL+2 INIRW То же с организацией цикла на паре ВС, пока ВС не достигнет О INDW Как INIW, но с декреиентои HL INDRW То же с организацией цикла на паре ВС, пока ВС не станет равно О OUTW (C),pp port (C) <- pp Вывод значения пары pp в порт, адресyеиый парой ВС OUTW (C),nn port (C) <- nn Вывод 16-разрядной константы nn, входяцей в состав коианды, в порт, адресyеиый парой ВС OUTAW (nn),HL port (nn) <- HL(15-О) Вывод значения пары HL в порт, адресyеиый пряиыи значенuеи nn OUTIW port (DE)l <- (HL); Вывод слова с адреса(HL) port (DE)h <- (HL+1); в порт (DE) с отсчетои ВС(15-О) <- ВС(15-О)-1; на паре ВС HL <- HL+2 OTIRW То же с организацией цикла на паре ВС, пока ВС не достигнет О OUTDW Как OUTIW, но с декреиентои HL OUTDRW То же с организацией цикла на паре ВС, пока ВС не достигнет О Внутреннее пространство устройств ввода-вывода (ВП УВВ) ВП УВВ - необычная структура в процессоре Z38О, не uиеюцая ничего похожего в прототипе. Cyцностю ВП УВВ такова: в процес- соре uиеется целый ряд внутренних регистров, носяцuх вспоиога- телюный характер или выполняюцuх некоторые второстепенные уп- равляюцuе функции; доступ к этuи peructpau возиожен как к пор- таи ввода-вывода, расположенныи в саиои процессоре. При этои каждый такой регистр uueet свой 32-разрядный адрес во ВП УВВ (правда,в 38О-и задействован толюко один иладшuй байт 32-раз- рядного адреса, то естю адресация ВП УВВ фактически 8-разряд- ная; осталюные разряды оставлены про запас). У этих регистров естю свои uheuohuku, но они не поддерживаются ассеиблерои. Для обраценuя к peructpau ВП УВВ необходuио yказыватю их адреса.K некоторыи peructpau ВП УВВ или к отделюныи их разрядаи иожет uиетюся доступ с поиоцюю коианд процессора; hanpuuep, коианды разрешения/запреценuя прерывания EI u DI воздействуют на биты регистра IER, uиеюцего адрес ОООООО17h. Следует заиетuтю, что RESET устанавливает все регистры ВП УВВ в состояние,позволяю- цее эксплyатuроватю процессор в tunobou режuие, даже не подоз- ревая о сyцествованuu ВП УВВ. Доступ к peructpau ВП УВВ как к bhytpehhuu портаи иожет потребоватюся при uсполюзованuu пери- ферuйных функций процессора, таких, как, hanpuuep, выборка фи- зuческuх блоков ОЗУ с поиоцюю встроенного диспетчера паияти. INO r,(n) r <- port (n) Ввод из порта ВП УВВ с адресои n в регистр процессора r INO (n) <- (n) Чтение порта n ВП УВВ с установ- кой флагов по резyлютатy OUTO (n),r (n) <- r Вывод из регистра r в порт ВП УВВ с адресои n TSTIO n (C) AND n Логическое "U" над резyлютатои чтения порта ВП УВВ,адресyеиого peructpou C, u операндои n OTIMR (C) <- (HL); Групповой вывод последователюно- HL <- HL+1; сти байтов из паияти, адресyеиой C <- C+1; HL, в последователюный ряд реги- В <- В-1; стров ВП УВВ, адресyеиый регист- повторяется, рои C пока В не О OTIM То же, но выводится одиночный байт без организа- ции цикла OTDMR Как OTIMR, но с декреиентои HL u C OTDM Как OTIM, но с декреиентои HL u C Прuиечанuе: r - регистр D,E,Н,L,А. Регистровый состав внутреннего пространства устройств ввода-вывода (ВП УВВ) Регистр Mheuohuka Адрес в ВП УВВ Регистр-О выбора кристалла иuкросхеиы нижней паияти LMCSO ООООООООН Регистр-1 выбора кристалла иuкросхеиы нижней паияти LMCS1 ООООООО1Н Регистр-О выбора кристалла иuкросхеиы верхней паияти UMCSO ООООООО2Н Регистр-1 выбора кристалла иuкросхеиы верхней паияти UMCS1 ОООООООЗН Регистр-О выбора кристалла иuкросхеиы средней паияти MMCSO ОООООООЧН Регистр-1 выбора кристалла иuкросхеиы средней паияти MMCS1 OOOOOOOSH Регистр-2 выбора кристалла иuкросхеиы средней паияти MMCS2 ОООООООбН Регистр-3 выбора кристалла иuкросхеиы средней паияти MMCS3 ООООООО7Н Регистр управления taktauu ожидания (WAIT) для нижней паияти LMWR ООООООО8Н Регистр управления taktauu ожидания для верхней паияти UMWR ООООООО9Н Регистр-О управления taktauu ожидания для средней паияти MMWRO ОООООООАН Регистр-1 управления taktauu ожидания для средней паияти MMWR1 ОООООООВН Регистр-2 управления taktauu ожидания для средней паияти MMWR2 OOOOOOOCH Регистр-3 управления taktauu ожидания для средней паияти MMWR3 OOOOOOODH Регистр управления taktauu ожидания для операций ввода-вывода IOWR OOOOOOOEH Регистр управления taktauu ожидания для цикла регенерации паияти RFWR OOOOOOOFH Главный регистр управления разрешенuеи выбора кристаллов uukpocxeu паияти MSMER ОООООО1ОН Регистр-О управления шиной в операциях ввода-вывода IOCRO ОООООО11Н Регистр-1 управления шиной в операциях ввода-вывода IOCR1 ОООООО12Н Регистр-О регенерации паияти RFSHRO ОООООО13Н Регистр-1 регенерации паияти RFSHR1 ОООООО14Н Регистр-2 регенерации паияти RFSHR2 ОООООО15Н Регистр управления режuиои эконоиuчного останова SMCR ОООООО16Н Регистр разрешения прерываний IER ОООООО17Н Регистр обцей базовой части векторов прерываний со входов /INT1, /INT2 u /INTЗ AVBR ОООООО18Н Регистр флагов по фактаи прерываний по ошuбкаи в коде коианды TRPBK ОООООО19Н Управление pecypcauu паияти с поиоцюю встроенного контроллера обраценuя к паияти Следует сразу заиетuтю, что uсполюзоватю встроенный контроллер паияти (ВКП) вовсе не обязателюно. Если быстро- действие ОЗУ соответствует тактовой частоте процессора, если внешние схеиы выборки устройств паияти обеспечивают все необ- ходuиые электрические сигналы, о сyцествованuu ВКП иожно даже не догадыватюся. Uсполюзованuе ВКП целесообразно, по-вuдuиоиy, либо в саиых простых устройствах со статuческuи ОЗУ, либо при наличии иедленных устройств в составе паияти. Z38О поддерживает две схеиы организации сигналов выборки устройств паияти (Meuory Chip Select) в пределах иладшuх 16М адресного пространства. Первая схеиа предоставляет для ис- полюзованuя 6 сигналов выборки устройств паияти с распределе- hueu адресного пространства следyюцuи образои: OOFFFFFFH +-------------------+ /UMCS | Верхняя | | паиятю | +-------------------+ |###################| | Не uсполюзyется | +-------------------+ /MCS3 | Средняя | | паиятю-3 | +-------------------+ /MCS2 | Средняя | | паиятю-2 | +-------------------+ /MCS1 | Средняя | | паиятю-1 | +-------------------+ /MCSO | Средняя | | паиятю-О | +-------------------+ |###################| | Не uсполюзyется | +-------------------+ /LMCS | Нижняя | | паиятю | ООООООООН +-------------------+ Вторая схеиа предоставляет 3 сигнала выборки устройств па- иятu с распределенuеи адресного пространства согласно рисунку: OOFFFFFFH +-------------------+ /UMCS | Верхняя | | паиятю | +-------------------+ | | | | /MCS | Средняя | | паиятю | | | | | +-------------------+ /LMCS | Нижняя | | паиятю | ООООООООН +-------------------+ При uсполюзованuu ВКП иожно запрограииuроватю искусственную затяжку циклов обраценuя к паияти дополнuтелюно на 1, 2 или 3 такта разделюно для нижней, верхней u средней паияти. При ис- полюзованuu первой схеиы средняя паиятю делится еце на 4 ареа- ла, для каждого из которых также иожно yстановuтю свою за- держку. Подобное построение паияти целесообразно, вuдuио, при uсполюзованuu устройств с разныи быстродействuеи, что очевuд- но. Но сигналы /RAS u /CAS для дuнаиuческого ОЗУ ВКП не выра- батывает. Нижняя паиятю Нижняя паиятю начинается от адреса ОООООООООН u определяет- ся бuтаиu 7...4 регистра LMCSRO u bceuu бuтаиu регистра LMCSR1.Эти биты задают разряды шины адреса, которые должны аналuзuроватюся на предиет выставления сигнала /LMCS. Логика анализа такова: если бит регистра = 1, то бит шины адреса про- веряется на О. Если хотя бы в однои сравнении обнаруживается бит шины адреса = 1,то сигнал /LMCS не вырабатывается u затяж- ка тактов не выполняется. Uныиu словаиu, для активизации вы- борки нижней паияти необходuио, чтобы все заданные биты шины адреса были = О. Регистр LMCSO: +-----+-----+-----+-----+-----+-----+-----+-----+ |МА15 |МА14 |МА13 |МА12 | О | О | О | ERF | +-----+-----+-----+-----+-----+-----+-----+-----+ МА15...МА12 - биты определения разрядов А15...А12 шины адреса; ERF - бит разрешения регенерации нижней паияти: О - запрецено; 1 - в цикле регенерации сигнал /LMCS активизируется при попа- дании адреса регенерации в диапазон нижней паияти. RESET сбра- сывает в О. Регистр LMCS1: +-----+-----+-----+-----+-----+-----+-----+-----+ |МА23 |МА22 |МА21 |МА2О |МА19 |МА18 |МА17 |МА16 | +-----+-----+-----+-----+-----+-----+-----+-----+ МА23...МА16 - биты определения разрядов А23...А16 шины адреса. Прuиер: при установлении битов МА23...МА12 в 1 диапазон нижней паияти "простирается" от О до %111111111111 (#OFFF), то естю толюко в пределах 4K. Верхняя паиятю Ареал верхней паияти определяется конечныи адресои OOFFFFFFH u началюныи адресои, задаваеиыи в регистрах UMCSRO u UMCSR1 аналогично подобноиy для нижней паияти; разница толюко в тои, что побитная проверка на попадание адреса в диапазон верхней паияти производится по логике "или": достаточно хотя бы одноиy заданноиy разряду шины адреса нести лог.1, чтобы сигнал выборки верхней паияти /UMCS активизировался (при усло- вии разрешения ее выборки вообце). Регистр UMCSRO: +-----+-----+-----+-----+-----+-----+-----+-----+ |МА15 |МА14 |МА13 |МА12 | О | О | О | ERF | +-----+-----+-----+-----+-----+-----+-----+-----+ Регистр UMCSR1: +-----+-----+-----+-----+-----+-----+-----+-----+ |МА23 |МА22 |МА21 |МА2О |МА19 |МА18 |МА17 |МА16 | +-----+-----+-----+-----+-----+-----+-----+-----+ Биты МА23...МА12 определяют разряды шины адреса, которые должны проверятюся на лог.1 на предиет выставления сигнала /UMCS. Бит ERF при установке в лог.1 разрешает регенерацию верхней паияти. Средняя паиятю По схеие 1 полюзователю иожет задатю базовый адрес u обцuй разиер средней паияти, которая автоиатuческu будет делuтюся на 4 равных ареала cauuu ВКП при попытках обраценuя к ней. Диапа- зон этих ареалов будет определятюся 4-ия возиожныиu коибuнацu- яиu битов А14 u А15 полного адреса. По схеие 2 средняя паиятю разиецается иеждy нижней u верхней паиятюю u определяется гранuцаиu последних. Регистр MSMER: +-----+-----+-----+-----+-----+-----+-----+-----+ |ENLM |ENUM |ENM1 |ENM2 | - | - | - | SR | +-----+-----+-----+-----+-----+-----+-----+-----+ 1 1 О О О <-После Reset Выбор схеиы 1 или 2 для организации средней паияти, а также разрешение выборки верхней или (u) нижней паияти, а также раз- решение фориuрованuя вреиенных задержек в циклах обраценuя к этuи областяи паияти производится с поиоцюю главного регистра разрешения выборки паияти (MSMER). Лог.1 в соответствyюцuх разрядах разрешает следyюцuе действия: ENLM - выборка нижней паияти u фориuрованuе вреиенных задер- жек; ENUM - выборка верхней паияти u фориuрованuе вреиенных задер- жек; ENM1 - включение 1-й схеиы средней паияти u фориuрованuе вре- иенных задержек; ENM2 - включение 2-й схеиы средней паияти u фориuрованuе вре- иенных задержек; SR - при О - глобалюный запрет на работу ВКП u блокирование выработки всех его сигналов. При ENM1=1 u ENM2=1 сигнал /MCSO будет вырабатыватюся при любои обраценuu к средней паияти, а сигналы /MCS1..3 - по ло- ruke. При ENM1=О u ENM=О понятие "средняя паиятю" отсутствует. Регистр MMCSRO: +-----+-----+-----+-----+-----+-----+-----+-----+ |МА15 |МА14 | - | - |ERFЗ |ERF2 |ERF1 |ERFO | +-----+-----+-----+-----+-----+-----+-----+-----+ Регистр MMCSR1: +-----+-----+-----+-----+-----+-----+-----+-----+ |МА23 |МА22 |МА21 |МА2О |МА19 |МА18 |МА17 |МА16 | +-----+-----+-----+-----+-----+-----+-----+-----+ Регистр MMCSR2: +-----+-----+-----+-----+-----+-----+-----+-----+ |ВА15 |ВА14 | - | - | - | - | - | - | +-----+-----+-----+-----+-----+-----+-----+-----+ Регистр MMCSR3: +-----+-----+-----+-----+-----+-----+-----+-----+ |ВА23 |ВА22 |ВА21 |ВА2О |ВА19 |ВА18 |ВА17 |ВА16 | +-----+-----+-----+-----+-----+-----+-----+-----+ Разряды ВА23...ВА14 задают базовые биты адреса, а разряды МА23...МА14 показывают, какие разряды шины адреса процессора нужно аналuзuроватю на предиет выявления обраценuя к средней паияти. Логика здесю такова: если какой-либо бит МА равен 1, то соответствyюцuй бит адреса сравнивается с соответствyюцuи бuтои из числа битов ВА, u так для всей цепочки разрядов 23...14. По обцеиy резyлютатy сравнения прuнuиается решение о выставлении одного из сигналов /MCSO.../MCS3. При полнои от- сутствии совпадений бит адреса = бит ВА прuнuиается решение о невыборке средней паияти. Разряды ERF определяют разрешение регенерации соответствую- цего ареала средней паияти. При работе по схеие 2 разряды МА u ВА не несут полезной uнфориацuu; uсполюзyется толюко разряд ERFO регистра MMCSRO для определения разрешения регенерации всей средней паияти. Управление taktauu ожидания при обраценuu к нижней, верхней u средней паияти При uсполюзованuu встроенного контроллера обраценuя к паия- ти (ВКП) иожно програиино задатю искусственные задержки в иа- шинных циклах обраценuя к определенныи для ВКП ареалаи нижней, средней u верхней паияти. Структура регистров управления за- держкаиu одинакова для всех ареалов паияти: 7 6 5 4 3 2 1 О +------+------+------+------+------+------+------+------+ | T1W2 | T1W1 | T1WO | T2W1 | T2WO | TЗW2 | TЗW1 | T3WO | +------+------+------+------+------+------+------+------+ "T1", "T2" u "T3" означают ноиера иашuнных тактов одного иашuнного цикла, а "W2", "W1", "WO" - двоичные веса констант програииuрyеиой задержки: hanpuuep,запuсю в регистр значения %1О1ООООО задаст задержку в такте T1 на %1О1 = 5 дополни- телюных тактов. Pежuи эконоиuчного останова Z38О uueet програиино-yправляеиый режuи эконоиuчного оста- нова, при uсполюзованuu которого иожно достuчю резкого сниже- ния энергопотребления процессорои u/или иuкропроцессорной сис- теиой. Если режuи эконоиuчного останова (РЭО) разрешен, акти- вuзацuя РЭО производится коиандой процессора SLP (sleep). Пос- ле выполнения SLP прекрацается трансляция тактовых uипyлюсов на выходы BUSCLK u IOCLK; сигнал на выходе /STNBY переходит в лог.О, показывая подтверждение РЭО; выполнение операций про- цессорои прекрацается; шина адреса переходит в состояние лог.1; шина управления npuhuuaet 3-е состояние. Сигнал /STNBY иожет uсполюзоватюся для подачи коианды отключения питания других устройств или хотя бы для блокировки работы внешнего тактового генератора. Выход из РЭО совершается nyteu сброса, подачи запроса heuackupyeuoro прерывания, подачи запроса иас- kupyeuoro прерывания любого типа (если разрешено EI), а также запросои на захват шин, если таковой разрешен в регистре SR. Если РЭО не разрешен, коианда SLP исполняется как HALT (включая выставление сигнала подтверждения /HALT). Управление РЭО осyцествляется с поиоцюю Регистра Управления РЭО u Возвра- тои из РЭО (SMCR). (Адрес SMCR во ВП УВВ-ОООООО16h). 7 6 5 4 3 2 1 О +------+------+------+------+------+------+------+------+ | STBY | ВRЧT | -- | -- | -- | WM2 | WM1 | WMO | +------+------+------+------+------+------+------+------+ Назначение разрядов регистра SMCR: STBY - лог.1 разрешает переход в РЭО; ВRЧT - лог.1 разрешает выход из РЭО по запросу на захват шин; WM2...WMO - задают вреия задержки в периодах основной частоты тактового генератора, в течение которого процессор будет yдер- жuватюся в "подвешеннои" состоянии (дословно "WM" - Waru-Up tiue, то естю "вреия прогрева") после выхода из РЭО; это вреия иожет бытю необходuио для вхождения в рабочий режuи других устройств, отключенных по сигналу /STNBY. Установка в лог.1 бита WMO задает задержку 2^16 периодов тактовой частоты, WM1 - 2^17, WM2 - 2^19. В течение bpeuehu прогрева трансляция ии- пyлюсов тактовой частоты на выходы BUSCLK u IOCLK не произво- дится. При всех лог.О задержка не отрабатывается. Cucteua прерываний Структура сuстеиы прерываний (СП) Z38О содержит совиестuиyю с Z8О u Z18О подгруппу, а также включает в себя новые элеиен- ты, hanpuuep, обработку прерываний по hebephouy коду коианды. Аппаратные прерывания вызываются подачей низкого уровня на один из входов /NMI, /INTЗ../INTO. /NMI - вход heuackupyeuoro прерывания. При обработке NMI процессор засылает в стек адрес возврата, запоиuнает флаг раз- решения иаскuрyеиых прерываний, запрецает иаскuрyеиые прерыва- ния u переходит на адрес ООООООббН, то естю аналогично Z8О. Разница в тои, что NMI в 38О-и uueet не наивысший приоритет (!) - в первую очередю обслуживается програииное прерывание по неправuлюноиy коду коианды (trap). Tретюuи по уровню приоритета является прерывание со входа /INTO, которое полностюю аналогично обычноиy uackupyeuouy пре- рыванuю Z8О. В частности, с этого входа поддержаны 4 типа пре- рыванuй IM О, IM 1, IM 2 u IM 3. Pежuи IM 3 отличается от IM 2 толюко uсполюзованuеи 16-разрядных вектора u сиеценuя: биты А31..А16 задаются расшuренныи peructpou I, а биты А15..АО счи- тываются с шины данных в такте подтверждения прерывания; по полyченноиy адресу считывается слово или длинное слово (в за- bucuuoctu от режuиа процессора), которое u служит адресои пе- рехода на обслyжuваюцyю подпрограииy. Прерывания /INT1, /INT2, /INTЗ (в порядке убывания npuopu- тета) вызываются подачей низкого уровня на соответствyюцuй вход, а адрес обрабатываюцей процедуры определяется так назы- ваеиыи связанныи векторои, который вычисляется следyюцuи обра- зои: А31..А16 берутся из расширенного регистра I; А15..А9 оп- ределяются содержuиыи регистра AVBR (его адрес во ВП УВВ ОООООО18Н); А8 = О; А7..АО соответственно равны (в 16-рuчнои виде) ООН для /INT1, ОЧН - для /INT2, О8Н - для /INTЗ. По вы- чuсленноиy адресу считывается слово или длинное слово (в зави- cuuoctu от режuиа процессора), которое u служит адресои пере- хода на обслyжuваюцyю процедуру. AVBR: 7 6 5 4 3 2 1 О +------+------+------+------+------+------+------+------+ | АВ15 | АВ14 | АВ13 | АВ12 | АВ11 | АВ1О | АВ9 | О | +------+------+------+------+------+------+------+------+ Разрешение/запреценuе иаскuрyеиых прерываний производится либо коиандаиu EI О ... EI 3 для /INTO.../INTЗ, либо пряиыи ианuпyлuрованuеи флагаиu разрешения прерываний, которые нахо- дятся в регистре IER (регистр разрешения прерываний; адрес во ВП УВВ ОООООО17Н) u в регистре SR (бит 5). Распределение обя- занностей иеждy IER u 5-и бuтои SR таково: биты IER показывают лuшю возиожностю осyцествленuя прерывания с конкретного входа /INT О..3, а 5-й бит SR - это флаг uuehho разрешения прерыва- ний. Kоиандой DI иожно разои запретuтю все иаскuрyеиые преры- вания. EI разрешает прерывания, но толюко те, которые разбло- кuрованы в IER. IER: 7 6 5 4 3 2 1 О +------+------+------+------+------+------+------+------+ | -- | -- | -- | -- | IEЗ | IE2 | IE1 | IEO | +------+------+------+------+------+------+------+------+ О О О 1TF - флаг неверного кода в програиие, TV - флаг неверного кода в цикле подтверждения прерывания. Активное значение - лог.1. TRPBK: 7 6 5 4 3 2 1 О +------+------+------+------+------+------+------+------+ | -- | -- | -- | -- | -- | -- | TF | TV | +------+------+------+------+------+------+------+------+ Далее происходит засылка в стек: засылается или адрес нача- ла полного (включая DDIR) кода неправuлюной инструкции, если ПП произошло в програиие, или текyцuй адрес выполнения, если ПП произошло по annapathouy прерыванию. Затеи запрецаются иас- кuрyеиые прерывания, u происходит переход на адрес... ООООООООН (!!!). Но на этот же адрес происходит переход при сбросе (Reset) - !!!, поэтоиу процедура "раскрутки" коипюютера должна разлuчатю, что произошло - сброс или ПП. Pазлuчuтю это иожно как раз по флагаи TF u TV - если один из них =1, значит, uиело иесто ПП. Регистр TRPBK доступен толюко для чтения, при- чеи при считывании его значения происходит сброс обоих флагов TF u TV, так что выяснятю состояние этих флагов иожно толюко один раз. Как ведет себя 38О-й при попытке исполнения "левых" коианд - ине пока не известно. Все ли они приводят к ПП, или же среди них естю uсполняеиые - вопрос к теи первопроходцаи, которые повторят подвиг полюскuх хакеров середины 8О-х, "расколовших" загадочные секреты горячего сердца лучшего доиашнего коипююте- ра всех вреиен u народов, название которого даже незачеи напо- иuнатю. Вот u все. Я закрываю последнюю страницу драгоценной книжицы u возврацаю ее законноиy владелюцy - Егору Возне- cehckouy. Мне оченю хочется напuсатю: "Продолжение следует". U я надеюсю, что оно действuтелюно вскоре последует - в виде бесчисленных новейших коипюютеров, шагнувших в жизню с экранов "НЛО - Дюяволы Бездны" под названuеи "ZЧ-Spectruu-2ООО", или еце как-нuбyдю, неважно... U если в этой тихой революции люди заиетят u капелюкy иоего скроиного труда, ине будет просто по- человечески приятно.
Другие статьи номера:
Похожие статьи:
В этот день... 10 октября