Работа с ZX-Spectrum 1993 г.

Глава 27 - использование машинных кодов.


ГЛАВА 26

ИСПОЛЬЗОВАНИЕ МАШИННЫХ КОДОВ

Краткое содержание: USR с числовым аргументом.

Эта глава описывает применение машинных команд микропроцессора

Z80.

Программы в машинных кодах пишут обычно на Ассемблере с последу-
ющей трансляцией (перечень мнемокодов команд микропроцессора Z80
приведён в приложении А). Транслятор с Ассемблера встроен в компьютер
ZX Spectrum.

Приведём пример программы:
ID ВС,99
RET

которая загружает в ,'ВС' регистр число 99. Эта программа будет
транслироваться в 4-х байтный машинный код:
байты 1,99,0 для ID ВС, 99 и

201 для RET.

Следующим шагом является загрузка программы в компьютер. Для этого
используется дополнительная память, получаемая между BASIC-областью и
областью определяемых пользователем символов. Допустим Вы имели сле-
дующее распределение последней части ОЗУ:

Для загрузки программы в машинных кодах Вы можете выполнить следу-
ющую BASIC-программу:

10 LET а=32500
20 READ п. РОКЕ а,п
30 LET а=а+1: GO ТО 20
40 DATA 1,99,0,201
(программа может завершиться с сообщенем "Е Out of DATA ... ", если
переполняются отведённые Вами 4 байта).

Для выполнения загруженных машинных кодов используется функция
USR, но с числовым аргументом, определяющим начальный адрес.
Если Вы выполните:

PRINT USR 32500
то получите ответ: 99.

Возврат в BASIC-программу осуществляется обычным образом по ко-
манде микропроцессора RtT. В машинной программе Вы не должны исполь-
зовать регистры IV и I.

Вы можете записать Вашу программу на ленту:

SAVE "name" CODE 32500,4
Можно записать эту программу и так, что она будет автоматически вы-
полняться после загрузки:

10 LOAD "" CODE 32500,4
20 PRINT USR 32500
для чего надо сделать:

SAVE "name" LINE 10

а затем:

SAVE "name 1" CODE 32500,4
LOAD "name"

Это приведёт к тому, что вначале будет загружена и автоматически вы-
полнена BASIC-программа, которая, в свою очередь, загрузит и выполнит
программу в машинных кодах.

Книга «Искусство схемотехники» П. Хорвиц, У* Хилл.

Мир, 1986, том 2, стр. 579-580.

Далее приводятся 78 команд микропроцессора 8085, совместимых с
микропроцессором Z80.

Мнемоника

Действие

* КОП

ЦИКЛЫ

1

2

3

4

ПЕРЕСЫЛКА, ЗАГРУЗКА, ЗАПИСЬ

MOV R.R

Переслать регистр в регистр

01RRRRRR

4|71

MVI R,D

Переслать непосредственно в регистр

OORRRHO

7|101

LXI RP,DD

Загрузить непосредственно в два регистра

00РР0001

10

STAXB

Запомнить А косвенно по ВС

0000 0010

7

STAXD

Запомнить А косвенно по DE

0001 0010

7

LDAXB

Загрузить А косвенно по ВС

0000 1010

7,

LDAXD

Загрузить А косвенно по DE

0001 1010

7

STADD

Запомнить А по адресу DD

0011 0010

13

LDA DD

Загрузить А по адресу DD

ООП 1010

13

SHLD DD

Запомнить H,L по адресу DD

0010 0010

16

LHLDDD

Загрузить H,L по адресу DD

0010 1010

16

XCHG

Обменять DE и HL

1110 1011

4

ПРИРАЩЕНИЕ И УМЕНЬШЕНИЕ

INRRR

Приращение регистра

00RR RI00

4(111

DCRR

Уменьшение регистра

00RR R101

4Ц11

INX RP

Приращение пары регистров

00РР0011

6

DCX RP

Уменьшение пары регистров

ООРРЮ11

6

АРИФМЕТИЧЕСКИЕ И ЛОГИЧЕСКИЕ

ADDR

Прибавить регистр к А

1000 0RRR

4(71

ADC R

Прибавить регистр к А с переносом

1000 1RRR

4(7]

SUB R

Вычесть регистр из А

1001 0RRR

4171

SBBR

Вычесть с заемом

1001 1RRR

4(7]

ANAR

. Регистр 4&4 А

1010 0RRR

4(7]

XRAR

Искл. 4или4 регистра и А

1010 1RRR

4(71

1

2

3

4

ORAR

Регистр It A

1011 0RRR

4|71

CMAR

Сравнить регистр и A

1011 1RRR

4[7]

ADID

Прибавить непоср. данные к А

11000110

7

ACID

Прибавить непоср. с переносом

1100 1110

7

SUID

Вычесть непоср. из А

11010110

7

SBID

Вычесть непоср. с заемом

1101 1110

7

ANID

Непоср. 4&4 А

11100110

7

XRID

Искл. 'или* непоср. с А

11101110

7

ORID

Непоср. и А

11110110

7

CRID

Сравнить непоср. и А

11111110

7

DAD RP

Прибавить пару регистров к HL

00PP 1001

И

ОПЕРАЦИИ С НАКОПИТЕЛЯМИ И ФЛАГАМИ

RLC

Сдвинуть А влево

0000 0111

4

RRC

Сдвинуть А вправо

00001111

4

RAL

Сдвинуть А влево чер. разр. пер.

0001 0111

4

RAR

Сдвинуть А вправо чер. разр. пер.

0001 1111

4

DAA

Десятичн. коррекция накопителя

00100111

4

СМА

Дополнение к накопителю

00101111

4

STC

-Установить бит переноса

000111 0111

4

CMC

Обратить бит переноса

ООН 1111

4

I/O, УПРАВЛЕНИЕ И ОПЕРАЦИИ СО СТЕКОМ

IND

Ввод из порта D

1101 1011

10

OUT D

Вывод в порт D

11010011

11

EI

Разрешение прерывания

1111 1011

4

DI

Запрещение прерывания

11110011

4

NOP

Нет операции

0000 0000

4

HLT

Останов

01110101

4

PUSH RP

Занести пару регистров в стек

1IPP0101

И

POP RP

Взять пару регистров из стека

11РР0001

10

1

2

3

4

XIHL

Обменять HL с вершиной стека

11100011

19

SPHL

Переслать HL в SP

1111 1001

6

ПЕРЕДАЧИ УПРАВЛЕНИЯ

JMP DD

Безусловный переход

1100 ООП

10

JCC DD

Перейти по условию СС

11СС СОЮ

10

CALL DD

Безусловный вызов

1100 1101

17

ССС DD

Вызов по условию СС

11СС сооо

П[10]

RET

Возврат после вызова

1100 1001

10

RCC

Возврат по условию СС

I1CC сооо

П [51

RSTN

Возобновление в ячейке 8*N

11NN N111

11

PCHL

Переслать HL в PC

1110 1001

4

Обозначения:

1. Поля данных.

D — один байт непоср. данных (длина команды 2 байта).
DD — двухбайтовый адрес (длина команды 3 байта).
Все остальные команды имеют длину 1 байт.

2. Циклы.

N — число тактов, нужное для выполнения команды.

!N] — число тактов, когда R= М (доступ в память).
N) — число тактов, если условие не выполнено.

3. Поля регистров.

"R"

RRR

В

000

с

001

D

010

Б

011

Н

100

L

101

М

110

А

111

["MMHL)]

f,RP"

РР

ВС

00

DE

01

HL

10

PS

11

PSW

11

4. Коды условий..

"СС"

ССС

Условие

NZ

ООО

не ноль

Z

001

ноль

NC

010

нет переноса

С

011

перенос

РО

100

нечетный паритет

РЕ

101

четный паритет

Р

110

положительное

М

111

отрицательное




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Слово авторов - Возможно - это последний номер газеты...
Demo-строение - Алгоpитмы обpаботки видимости повеpхностей 3D-фигуp.
Новости - Общаясь с Surfin Bird-ом я рассказал ему, что установил в PS2 жёсткий диск, и SB подал мне идею установить на приставку Linux.
Сделай сам - RC-фильтр для понижения шумов телефонной линии.
Enlight'96 - Проект "Спектрум на Enlight'96".

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