В системе команд микропроцессора имеется восемь однобайтовых

команд RST 0 - RST 7 вызова подпрограмм, расположенных по

фиксированным адресам. Ниже приведена таблица соответствия между

этими командами и шестнадцатеричными адресами ячеек памяти, куда

передается управление при их выполнении.

В мнемонике Z-80 ( в отличиe от мнемоники INTEL 8080) команда

записывается с указанием непосредственного адреса обращения к

подпрограмме. Например, RST 7 записывается как RST 38h.

┌─────────┬──────────────┬─────────┬──────────────┐

│ Команда │ Адрес начала │ Команда │ Адрес начала │

│ │ подпрограммы │ │ подпрограммы │

├─────────┼──────────────┼─────────┼──────────────┤

│ RST 0 │ 0000 │ RST 4 │ 0020 │

│ RST 1 │ 0008 │ RST 5 │ 0028 │

│ RST 2 │ 0010 │ RST 6 │ 0030 │

НЕ нашли? Не то? Что вы ищете?

│ RST 3 │ 0018 │ RST 7 │ 0038 │

└─────────┴──────────────┴─────────┴──────────────┘

Группа команд управления центральным процессором

Команда NOP этой группы не производит никаких операций, однако

т. к. она выполняется за определенный отрезок времени, ее можно

использовать в программах для задания временных интервалов.

Появление в программе команды HALT ведет к останову выполнения

программы. Продолжить выполнение программы можно только подачей

сигнала СБРОС или ЗАПРОС ПРЕРЫВАНИЯ на соответствующие входы

микропроцессора. В режиме ожидания команда схожа с командой NOP.

Команда IM служит для установки вектора прерываний. Команды DI

и EI - для запрещения и разрешения маскируемых прерываний.

Команда IM 0 устанавливает режим прерывания, в котором

прерывающее устройство может вставить какую-нибудь команду в шину

данных или для выполнения CPU.

Команда IM 1 устанавливает режим прерывания, в котором

процессор будет реагировать на прерывание, выполняемое командой

RST 38H.

Команда IM 2 устанавливает режим прерывания, в котором

разрешается непрямой вызов какой-нибудь ячейки памяти. В этом

режиме CPU формирует 16-битный адрес памяти. Восемь верхних битов

содержит регистр I контроля вектора прерывания.

┌──────────┬─────────────┬───────────┬───┬────┬────┬─────────┐

│ │Символическое│ Флаги │ │ │ │ Intel │

│ Мнемокод │ описание ├─┬─┬─┬─┬─┬─┤ Дл│ ЧЦ │ ЧТ │ 8080 │

│ │ │C│Z│V│S│N│H│ │ │ │ │

├──────────┼─────────────┼─┼─┼─┼─┼─┼─┼───┼────┼────┼─────────┤

│ NOP │ Нет операции│∙│∙│∙│∙│∙│∙│ 1 │ 1 │ 4 │ NOP │

├──────────┼─────────────┼─┼─┼─┼─┼─┼─┼───┼────┼────┼─────────┤

│ HALT │ Останов │∙│∙│∙│∙│∙│∙│ 1 │ 1 │ 4 │ HLT │

├──────────┼─────────────┼─┼─┼─┼─┼─┼─┼───┼────┼────┼─────────┤

│ DI │ IFF=0 │∙│∙│∙│∙│∙│∙│ 1 │ 1 │ 4 │ DI │

├──────────┼─────────────┼─┼─┼─┼─┼─┼─┼───┼────┼────┼─────────┤

│ EI │ IFF=1 │∙│∙│∙│∙│∙│∙│ 1 │ 1 │ 4 │ EI │

├──────────┼─────────────┼─┼─┼─┼─┼─┼─┼───┼────┼────┼─────────┤

│ IM 0 │ │∙│∙│∙│∙│∙│∙│ 2 │ 2 │ 8 │ ─ │

├──────────┤ Установка ├─┼─┼─┼─┼─┼─┼───┼────┼────┼─────────┤

│ IM 1 │ режима │∙│∙│∙│∙│∙│∙│ 2 │ 2 │ 8 │ ─ │

├──────────┤ прерываний ├─┼─┼─┼─┼─┼─┼───┼────┼────┼─────────┤

│ IM 2 │ │∙│∙│∙│∙│∙│∙│ 2 │ 2 │ 8 │ ─ │

└──────────┴─────────────┴─┴─┴─┴─┴─┴─┴───┴────┴────┴─────────┘

ПРИЛОЖЕНИЕ 2. ЛИСТИНГ ПРОГРАММЫ "ОКЕАН"

Ниже приводится листинг программы, рисующей заставку с надписью

"ОКЕАН". Программа оттранслирована ассемблером DUAD.

TITLE Ocean

ORG 9000h

9000 CDC793 CALL ocean@

9003 C9 RET

;--------------------------------------------------------------

0010 = nosprz EQU 16 ;номера спрайтов для заставки (и +1)

;-------------------------------------------------------------

; Подпрограмма записи данных в регистр VDP

; [b] - данные, [c] - номер регистра

9004 78 wrrvdp: LD A, B ; грузим данные

9005 D399 OUT (99H),A ; выкидываем в порт VDP

9007 79 LD A, C ; теперь номер регистра VDP

9008 F680 OR 80H ; устанавливаем 7 бит в 1

900A D399 OUT (99H),A ; выкидываем в порт VDP

900C C9 RET ; возвращаемся

;--------------------------------------------------------------

; данные-"кирпичики" для рисования картинок типа "Океан"

900D FFFFC0C0 block1: DB 0FFh,0FFh,0C0h,0C0h,0C0h,0C0h,080h,0FFh

9011 C0C080FF

9015 91919898 DB 91h, 91H, 98h, 98h, 98h, 98h, 96h, 61h

9019 98989661

901D FFFFFFFF block2: DB 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh

9021 FFFFFFFF

9025 91918181 DB 91h, 91h, 81h, 81h, 81h, 81h, 61h, 61h

9029 81816161

902D FFFEFCFC block3: DB 0FFh,0FEh,0FCh,0FCh,0FCh,0FCh,0FFh,0FFh

9031 FCFCFFFF

9035 91968686 DB 91h, 96h, 86h, 86h, 86h, 86h, 61h, 61h

9039 86866161

;---------------------------------------------------------------

; Подпрограмма подготовки графического режима

; данные для "Шум моря"

903D DEFS 6

9043 1EB71000 DEFB 30,183,16,0,0,0,90,14

9047 00005A0E

904B CD2894 draw: CALL EXchg

; -------- шум моря

904E F7 RST 30h

904F 00 DEFB 0

9050 C000 DEFW 0c0h

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46