Z380 [9]

ZXNet эхоконференция «zx.spectrum»

От Walerij Kozhevnikov (500:95/462. Кому All 06.04.1998


=== Cut ===
╔══════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░ MPU Z380 ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚══════════════════════════════════════════════════════════════ў
(Продолжение. Предыдущие публикации - в номерах 8,7,6).

(C) WLODEK BLACK

Методы адресации.

Для вычисления (получения) физического адреса операнда, исполь-
зуемого при исполнении той или иной команды, применяются различ-
ные методы адресации. Авторы фирменного описания подразделили
их на 7 групп, 6 из которых имелись в Z80, а один - относитель-
ная стековая адресация - добавлен.

Регистровая адресация. Операнд содержится в 8-битном регистре
A,B,C,D,E,H,L,IXU,IYU,IXL,IYL,A',B',C',D',E',H',L', или в 16-
или 32-битном регистре BC,DE,HL,IX,IY,BC',DE',HL',IX',IY', а
также в регистре SP или в регистрах I или R. Hапример: LD HL,I;
LD IY,DE; LD BC,IX; EX D,D'.

Hепосредственная адресация. Операнд содержится непосредственно
в коде инструкции. Директивы декодирования DDIR IB или DDIR IW
позволяют идентифицировать 24- или 32-битный непосредственный
операнд.

Косвенная регистровая адресация. Адрес операнда содержится в
регистре (паре). HL имеет преимущества перед другими парами по
коротковизне кода операции, но и BC и DE также могут все. IX и
IY могут быть использованы для адресации JP. BC адресует прост-
ранство устройств ввода-вывода.

Прямая адресация. Адрес операнда входит в состав кода инструк-
ции. Hормальное значение адреса - 16-битное, но директивами де-
кодирования можно установить 24- или 32-разрядный абсолютный ад-
рес.

Индексная адресация. Абсолютный адрес операнда вычисляется пу-
тем сложения содержимого индексного регистра IX или IY со смеще-
нием, входящим в состав команды. Смещение - число со знаком в
старшем разряде. Hормальное значение смещения - 8-битное, но
оно может быть расширено до 16 или 24 бит с помощью DDIR.

Адресация со смещением относительно счетчика команд или указате-
ля стека. 1. Относительно счетчика команд PC. Так можно адресо-
вать переходы JP и JR и вызовы подпрограмм CALL, например:
JR NZ,eee (eee - 24-битное смещение); CALR PE,ee (CALR - Call
Relative). Для команд этой подгруппы не используются директивы
декодирования - каждая из этих команд имеет индивидуальный код
и собственную мнемонику в ассемблере. 2. Относительно SP. Hорма-
льное значение смещения - 8 бит. Расширение до 16 или 24 бит
производится через DDIR.

Мнемоника DDIR IB, DDIR IW указывается первой в общей мнемонике
команды (см.,например, DDIR IW OUTA... в примерах ввода-вывода).
Ассемблер сформирует нужный префикс к коду команды.
"DDIR IB" означает "добавить байт", то есть если по умолчанию
операнд был байтовым, то станет слововым, а если был 16-битным -
станет 24-битным.
"DDIR IW" означает "добавить слово", то есть 16 бит. 8-битный
операнд станет 24-битным, а 16-битный расширится до 32 бит.

Система команд. Группы команд.

Авторы подразделили систему команд на 17 групп:

8-разрядная загрузка;
16- и 32-разрядная загрузка;
PUSH/POP;
обмен регистров, пересылки и сравнения блоков;
8-разрядная арифметика и логика;
команды управления процессором и глобальные команды арифметики
наподобие DAA;
директивы декодирования;
16- и 32-разрядная арифметика;
группа команд умножения и деления;
8-разрядные сдвиги;
16-разрядные сдвиги;
8-битные операции с отдельными битами (SET, RES, BIT);
переходы;
вызовы подпрограмм, возвраты из подпрограмм и группа RST;
8-разрядный ввод/вывод во внешнем пространстве ввода-вывода;
8-разрядный ввод/вывод во внутреннем пространстве ввода-вывода;
16-разрядный ввод/вывод.

Условные обозначения, применяемые
при описаниях команд.

dst - операнд-приемник
src - операнд-источник
dst(m-n)- биты от n до m, например: HL(23-16) - 16..23 биты
пары HL
n - 8-разрядная константа
nn - 16-разрядная константа
d - 8-разрядное смещение
r - регистр общего назначения
s - 8-разрядный адрес
dd,qq,ss,tt,uu - любой 16-разрядный элемент, суть адрес или
смещение, используемый при адресации
xxh - h - обозначение старшего байта, где "xx" - любой
16-разрядный операнд
xxl - l - младший байт
SR - регистр управления
(C) - указание на косвенную адресацию ввода-вывода
по паре BC
cc - условие, например Z; NC; PE и т.п.
[ ] - необязательный компонент
( ) - указание на косвенную адресацию
<- - направление пересылки, например: HL <- HL+DE -
результат сложения HL+DE поместить в HL

Обозначения флагов:

S - Sign (знак)
Z - Zero (нуль)
H - Half carry (полуперенос)
P/V - Parity/oVerflow (четность/переполнение)
N - Add/Subtract (сложение/вычитание)
C - Carry (перенос)

? - флаг получает непредсказуемое, неистинное значение
. - флаг не меняет значения
0 - флаг сбрасывается в 0
1 - флаг устанавливается в 1
V - P/V-флаг отражает переполнение
P - P/V-флаг отражает четность

Обозначения условий:

Z - Zero (равно нулю или равно между собой)
NZ - Not Zero (не равно нулю или не равно между собой)
C - Carry (есть перенос)
NC - No Carry (нет переноса)
S - Sign (флаг знака установлен)
NS - No Sign (флаг знака сброшен)
NV - No oVerflow (флаг P/V сброшен)
V - oVerflow (флаг P/V установлен)
PE - Parity Even (четный результат)
PO - Parity Odd (нечетный результат)
P - Positive (неотрицательный результат; флаг S сброшен)
M - Minus (отрицательный результат; флаг S установлен).

Как можно заметить, введены новые коды условий, делающие указа-
ние условий более удобным, хотя собственно новых условий не поя-
вилось (так как не появилось новых флагов).

(Продолжение следует).

Jason.

Powered by ScorpionZS256turbo+/SMUC/HDD'IDE130Mb/FDD'800/
/CMOS/Covox/ATkbd/Mouse/CDOS...

=== Cut ===