Basic 1969 г.

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


Глава 26

Использование машинных кодов

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

Эта глава описывает применение машинных команд микропроцессора
Z80 [ U880 ( ГДР), 18 10ВМ80 (СССР) ].

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

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

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

Байты 1, 99, О для ID ВС,99 и
201 для RET

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

RAMTOP»32599 UDG»32600 PRAMT«32767

если вы теперь выполните:
CLEAR 32499

то получите дополнительно 100 байтов памяти, начиная с адреса
32500. _____

RAMTOP»32599 UDG»32600 PRAMT«32767

если вы теперь выполните:
CLEAR 32499

то получите дополнительно 100 байтов памяти, начиная с адреса
32500. _____

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

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

10 LET А-32500
20 READ N: РОКЕ А, N
30 LET А-А+1: GOTO 20
40 DATA 1,99,0,201
(программа может завершиться с сообщением 'Е OUT OF DATA',
если переполняются отведенные вами 4 байта).

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

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

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

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

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

SAVE NAME LINE

а затем:

SAVE "ХХХХ" CODE 32500.4
LOAD "NAME"

Это приведет к тому, что вначале будет загружена и автомати-
чески выполнена бейсик-программа, которая, в свою очередь< загру-
зит и выполнит программу в машинных кодах. Книга "Искусство схе-
мотехники" П. Хоровиц, Y. Хилл Мир,1986, том 2, стр.579-58 0.

Далее приводятся 78 команд микропроцессора 8085, совместимых с
микропроцессором Z80 ( 158 команд). /и880-ГДР, К1810ВМ-СССР/

Мнемоника

Действие

К О

П

Циклы

1

2

3

4

n

e p

ссылка, загрузка,

з а п

и, с ь

MOV

R , R

ПЕРЕСЛАТЬ РЕГИСТР В РЕГИСТР

01RR

RRRR

4 [7]

MVI

R, D

ПЕРЕСЛАТЬ НЕПОСР.В РЕГИСТР

00RR

R1 10

7[10]

LXI

RP , DD

ЗАГРУЗИТЬ 0ЕПОСР.В ДВА РЕГ.

00PP

0001

10

STAX

В

ЗАПОМНИТЬ А КОСВЕННО ПО ВС

0000

0010

7

STAX

D

ЗАПОМНИТЬ А КОСВЕННО ПО DE

0001

0010

7

LDAX

В

ЗАГРУЗИТЬ А КОСВЕННО ПО ВС

0000

1010

7

LDAX

D

ЗАГРУЗИТЬ А КОСВЕННО ПО DE

0001

1010

7

STA

DD

ЗАПОМНИТЬ А ПО АДРЕСУ DD

001 1

0010

13

LDA

DD

ЗАГРУЗИТЬ А ПО АДРЕСУ DD

001 1

1010

13

SHLD

DD

ЗАПОМНИТЬ H,L ПО АДРЕСУ DD

0010

0010

16

LHLD

DD

ЗАГРУЗИТЬ H,L ПО АДРЕСУ DD

0010

1010

16

XCHG

ОБМЕНЯТЬ DE И HL

1110

101 1

4

П

P

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

INR

R

ПРИРАЩЕНИЕ РЕГИСТРА

00RR

R 1 00

4 [ 1 1 ]

DCR

R

УМЕНЬШЕНИЕ РЕГИСТРА

00RR

R 1 0 1

4 С 1 1 ]

I NX

RP

ПРИРАЩЕНИЕ ПАРЫ РЕГИСТРОВ

ООРР

001 1

6

DCX

RP

УМЕНЬШЕНИЕ ПАРЫ РЕГИСТРОВ

ООРР

1011

6

A

P И

Ф

МЕТИЧЕСКИЕ И ЛОГИЧЕСКИ

Б

ADD

R

ПРИБАВИТЬ РЕГИСТР К А

1000

0RRR

4 [7]

ADC

R

ПРИБАВИТЬ РЕГ К А С ПЕРЕНОСОМ

1000

1RRR

4 [7]

SUB

R

ВЫЧЕСТЬ РЕГИСТР ИЗ А

1001

0RRR

4 [7]

SBB

R

ВЫЧЕСТЬ С ЗАЕМОМ

1001

1RRR

4 [7]

ANA

R

РЕГИСТР dr А

1010

0RRR

4 [7]

XRA

R

ИСКЛ.ИЛИ РЕГИСТРА И А

1010

1RRR

4 [7]

ORA

R

РЕГИСТР ! А

1011

0RRR

4 [7]

CMA

R

СРАВНИТЬ РЕГИСТР И А

1011

1RRR

4 [7]

ADI

D

ПРИБАВИТЬ НЕПОСР.ДАННЫЕ К А

1 100

01 10

7

AC I

D

ПРИБАВИТЬ НЕПОСР.С ПЕРЕНОСОМ

1 100

1110

7

SUI

D

ВЫЧЕСТЬ НЕПОСР. ИЗ А

1101

0110

7

SBI

D

ВЫЧЕСТЬ НЕПОСР.С ЗАЕМОМ

1101

1110

7

AN I

D

НЕПОСР. dr А

1110

0110

7

XR I

D

ИСКЛ.ИЛИ НЕПОСР. И А

1 110

1110

7

OR I

D

НЕПОСР. ! А

1111

0110

7

CPI

D

СРАВНИТЬ НЕПОСР. С А

1111

1110

7

DAD

RP

ПРИБАВИТЬ ПАРУ РЕГИСТРОВ К HL

ООРР

1001

1 1

О П

E P

A

Ц.С НАКОПИТЕЛЯМИ

И Ф

Л А I

- А М И

RLC

СДВИНУТЬ А ВЛЕВО

oobo

0111

4

RRC

СДВИНУТЬ А ВПРАВО

0000

1111

4

RAL

СДВИНУТЬ А ВЛЕВО ЧЕР.РАЗР.ПЕР

0001

0111

4

RAR

СДВИНУТЬ А ВПРАВО ЧР.РАЗР.ПЕР

0001

1111

4

DAA

ДЕСЯТИЧ.КОРРЕКЦИЯ НАКОПИТЕЛЯ

0010

0111

4

CMA

ДОПОЛНЕНИЕ К НАКОПИТЕЛЮ

0010

1111

4

STC

УСТАНОВИТЬ БИТ ПЕРЕНОСА

001 1

0111

4

CMC

ОБРАТИТЬ БИТ ПЕРЕНОСА

00 1 1

1111

4

1 1 1

1/оу

ПРАВЛЕНИЕ И ОПЕРАЦ

И

И СО

с т

Е К 0 М

IN

D

ВВОД ИЗ ПОРТА D

1101

1011

10

OUT

D

ВЫВОД В ПОРТ D

1101

ООН

11

BI

РАЗРЕШЕНИЕ ПРЕРЫВАНИЙ

1 11 1

101 1

4

DI

ЗАПРЕЩЕНИЕ ПРЕРЫВАНИЙ

1111

001 1

4

NOP

НЕТ ОПЕРАЦИИ

0000

0000

4

HLT

ОСТАНОВ

01 1 1

01 10

4

PUSH

RP

ЗАНЕСТИ ПАРУ РЕГИСТРОВ В СТЕК

1 1РР

0101

1 1

POP

RP

ВЗЯТЬ ПАРУ РЕГИСТРОВ ИЗ СТЕКА

1 1РР

0001

10

XTHL

ОБМЕНЯТЬ HL С ВЕРХОМ СТЕКА

1110

ООН

19

SPHL

ПЕРЕСЛАТЬ HL В SP

1111

1001

6

П E

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

Н

и я

JMP

DD

БЕЗУСЛОВНЫЙ ПЕРЕХОД

1 100

001 1

10

JCC

DD

ПЕРЕЙТИ ПО УСЛОВИЮ СС

1 1 СС

сою

10

CALL

DD

БЕЗУСЛОВНЫЙ ВЫЗОВ

1 100

1101

17

CCC

DD

ВЫЗОВ ПО УСЛОВИЮ СС

1 1СС

С100

17(10)

RET

ВОЗВРАТ ПОСЛЕ ВЫЗОВА

1 100

1001

10

RCC

ВОЗВРАТ ПО УСЛОВИЮ СС

1 led

сооо

11(15)

RST

N

ВОЗОБНОВЛЕНИЕ В ЯЧЕЙКЕ 8*N

1 INN

N111

1 1

PCHL

ПЕРЕСЛАТЬ HL В PC

1110

1001

4

обозначения:
1 . П о л я данных.

D - один байт непоср. Данных (длина команды 2 байта)
DD - двухбайтовый адрес (длина команды 3 байта)

Все остальные команды имеют длину 1 байт.

2. Ц и к л ы.

N - число тактов, нужное для выполнения команды.
[N]- число тактов, когда R»M (доступ в память).
(N) - число тактов, если условие не выполнено.

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

"R"

RRR

В

ООО

С

001

Р

010

Е

01 1

Н

100

L

101

М

110

А

1 1 1

["И"»(HL)]

["И"»(HL)]

"RP"

РР

ВС

00

DE

01

HL

10

PS

1 1

PSW

1 1

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

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

исс"

ссс

Условие

NZ

ООО

не нуль

Z

001

нуль

NC

010

нет переноса

С

011

перенос

РО

100

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

РВ

101

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

р

110

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

и

111

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




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Очумелые ручки - Порт RS232.
С миру по биту - "Не надо нам такого порядка" дискуссия на тему: "IS-DOS: проблемы развития".
Рек-тайм - Реклама и объявления ...
Что нового - О новинках в Минске: Voyager#3, Net Walk.
+D and Multiface Protection

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