В системе команд микропроцессора имеется восемь однобайтовых
команд 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 |


