Nicron #10
05 декабря 1996
  Железо  

Железо - обзор микропроцессора Zilog Z380, продолжение.


Аппаратное обеспечениеОбучение и справочные материалыОписание логических микросхем и микропроцессоров

╔══════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░ MPU Z380 ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚══════════════════════════════════════════════════════════════╝
[ Продолжение. Предыдущие публикации - в номерах 9,8,7,6. ]

(C) WLODEK BLACK

...Вот мы и добрались до системы команд! Начнем с самого просто-
го, как обычно, - пересылок.

		Группа команд 8-разрядной загрузки.

В ней добавились к имеющимся в Z80 инструкциям только
операции с половинками индексных регистров:

Команда		Действие

LD XYU,n	XYU <- n
LD XYL,n	XYL <- n

, где "XY" - IX или IY, а "n" - 8-разрядная константа.

Также объявлены команды пересылок между  половинками  индексных
регистров и регистрами общего назначения:

LD XYU,s
LD XYL,s
LD s,XYU
LD s,XYL

, где "s" - регистр общего назначения.

На самом деле эти операции выполнялись и на Z80, только они  бы-
ли не объявлены в официальном списке команд. Теперь же у них по-
явилась стандартная мнемоника, а вместе с  нею  и  полноправное
вхождение в перечень инструкций.

Инструкции вида
LD r,(XY+d)	LD (XY+d),r
LD (XY+d),n
LD A,(nn)	LD (nn),A
могут быть префиксованы DDIR IB или DDIR IW для расширения  раз-
рядности операнда.
В остальном состав группы 8-разрядных пересылок точно такой  же,
как и у прототипа.

	    Группа команд 16- и 32-разрядной загрузки.

Новые команды:

LD[W] (pp),nn	(pp+1) <- nh	загрузка 16-битной константы nn
		(pp)   <- nl	по адресу, указываемому парой
				pp, например, LD (BC),nn;

LD pp,(uu)	pph <- (uu+1)	косвенная загрузка регистровой
		ppl <- (uu)	пары pp с адреса, указываемого
				парой uu, например LD IX,(BC);

LD (pp),uu	(pp+1) <- uuh	помещение значения пары uu по
		(pp)   <- uul	адресу, указываемому парой pp:
				LD (DE),IX;

LD pp,UU	pp <- UU	пересылка значения одной пары
				в другую:  LD BC,HL;

LD XY,pp	XY <- pp	LD IX,BC; LD IY,DE;
LD pp,XY	pp <- XY	LD BC,IX; LD DE,IY;

LD IX,IY			пересылка значения одного
LD IY,IX			индексного регистра в другой;

LD (pp),XY	(pp+1) <- XYU	сохранение индексного регистра
		(pp)   <- XYL	по адресу,указываемому парой pp;
				LD (BC),IX;

LD XY,(pp)	XYU <- (pp+1)	загрузка индексного регистра с
		XYL <- (pp)	адреса, указываемого парой pp;
				LD IY,(DE);

LD pp,(XY+d)	pph <- (XY+d)h	загрузка пары pp с адреса, инде-
		ppl <- (XY+d)l	ксируемого по IX или IY  со сме-
				щением d:  LD HL,(IX+d);

LD IX,(IY+d)			загрузка одного индексного реги-
LD IY,(IX+d)			стра  с адреса,  индексируемого
				другим индексным  регистром  со
				смещением d;

LD pp,(SP+d)	pph <- (SP+d)h	загрузка пары с адреса, индекси-
		ppl <- (SP+d)l	руемого указателем стека SP  со
				смещением d;  LD DE,(SP+d);

LD XY,(SP+d)			-"- индексного регистра;

LD (XY+d),pp			загрузки в  противоположном  на-
LD (IX+d),IY			правлении - помещение  пары  pp
LD (IY+d),IX			или индексного регистра в память
LD (SP+d),pp			по адресу, индексируемому XY или
LD (SP+d),XY			SP;

LD[W] I,HL	I <- HL		загрузка регистра вектора преры-
				ваний значением пары HL;
				LD I,HL; LDW I,HL ("W" -  необя-
				зательный элемент);

LD[W] HL,I	HL <- I		чтение регистра вектора прерыва-
				ний в пару HL;
				LD HL,I; LDW HL,I.

Символ "W" можно употреблять для удобства чтения программы, что-
бы визуально подчеркнуть, что речь  идет  об  операнде  формата
"слово".

Все команды 16-разрядной загрузки, в том числе и "старые", в ре-
жиме "длинное слово" (LW; Long Word mode), установленном в реги-
стре SR, будут работать с 32-разрядными операндами.
Однобайтовое смещение в индексных операциях и 16-разрядный адрес
в операциях с прямой адресацией можно расширить до соответствен-
но 16 или 24-х или до 24-х или 32-х  бит  с  помощью  префиксов
DDIR IB, DDIR IW, если формат данных установлен в одинарное сло-
во. В режиме "длинное слово" операнды суть "16-разрядный адрес"
и так превращаются в 32-разрядные и требуют соответствующего ко-
личества байт, но индексное смещение остается в прежнем формате
и требует, при необходимости, префиксования DDIR (! Возможно, в
этом нюансе я чего-то и напутал (все-таки с английского оригина-
ла читаю)).

		    Группа PUSH / POP.

Добавились:

PUSH nn		(SP-2) <- nnl	занесение в стек константы;
		(SP-1) <- nnh	(константу можно расширить
		SP <- SP-2	через DDIR);

PUSH SR		(SP-2) <- SR(7-0)
		(SP-1) <- SR(15-8)
		SP <- SP-2

POP SR		SR(6-0) <- (SP)		<-- бит SR(7) не пере-
		SR(15-8) <- (SP+1)	устанавливается через
		SR(23-16) <- (SP+1)	POP; это бит расширен-
		SR(31-24) <- (SP+1)	ного режима процессора;
		SP <- SP+2		его можно сбросить толь-
					ко RESET-ом;

При установленном формате "обычное слово" POP SR, как видно, ве-
дет себя довольно оригинально - 8...15-й биты SR копируются в 2
старших байта регистра. При режиме "длинное слово" в стек  зано-
сится все 32-битное значение и так же все снимается при POP(это
справедливо для всех регистровых пар); старшая половина  32-бит-
ного значения заносится в стек первой (по отношению к "основной"
части значения).
"PUSH nn" можно расширить с помощью DDIR. Нерасширенный"PUSH nn"
в режиме "длинное слово" заносит дополнительно #0000 в стек (та-
кже это относится к PUSH AF).
"POP nn", разумеется, не существует (смысл очевиден).
При работе процессора в режиме "Z80" указатель стека закольцован
на младших 64К памяти; старшие разряды сброшены в 0.

[ Продолжение следует ].




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

Похожие статьи:
"Железная"... логика! - ликбез о логических микросхемах.
Печатается с продолж. - Z80/ZILOG - основные сведения (продолжение).
Железо - архитектура БИС параллельного интерфейса KP580BB55.

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