Микропроцессор Z80 его структура и система команд
Рефераты >> Программирование и компьютеры >> Микропроцессор Z80 его структура и система команд

H 7C 64 6C 44 4C 54 5C

L 7D 65 6D 45 4D 55 5D

B 78 60 68 40 48 50 58

C 79 61 69 41 49 51 59

D 7A 62 6А 42 4A 52 5A

E 7B 63 6B 43 4B 53 5B

Ни одна из команд, приведенных в таблице, не изменяет флаги. Существует кроме того 4 команды для I и R регистров.

Мнемоника 16-ный код

LD A,I ED57

LD A,R ED5F

LD I,A ED47

LD R,A ED4F

Эти последние команды влияют на флаг переполнения четности.

Подгруппа В. Команды копирования типа регистровая пара- регистровая пара

Существует только 3 команды этой подгруппы. Они копируют значения в указатель стека.

Мнемоника 16-ный код

LD SP,HL F9

LD SP,IX DD F9

LD SP,IY FDF9

Эти команды не изменяют содержимое флагов. Заметим, если содержимое регистровой пары надо копировать в другую регистровую пару и эти команды не подходят, необходимо выполнить две команды копирования регистр-регистр. Например, нет команды LD HL,DE, и её заменяют, используя LD H,D и LD L,E. Или содержимое первой регистровой пары может быть сохранено в стеке и затем переписано во вторую регистровую пару.

Подгруппа С. Команды DE,NL.

Существует только одна команда, которая позволяет обменивать содержимое регистровых пар в пределах основного набора регистров.

Мнемоника 16-ный код

EXX DE,HL EB

Это очень полезная команда позволяет обменивать содержимое пары DE с содержимым пары HL. Значение флагов не изменяется. Команда используется, когда необходимо, чтобы адрес или двухбайтовая числовая константа из пары DE была записана в пару HK, но содержимое последней не было потеряно.

Подгруппа D. Команды альтернативного набора регистров.

В этой группе 2 команды.

Мнемоника 16-ный код

EXX D9

EX AF,A’F 08

Команда EXX вызывает переключение регистров H,L,B,C,D,E на регистры H’,L’,B’,C’,D’,E’. Команды EXAF,A’F, как следует из мнемоники, переключают рег. A и F на A’ F. Альтернативные регистры часто используются для хранения адресов и данных. Помещенные в альтернативные регистры эти значения сохраняются от искажения и могут быть легко и просто восстановлены.

Группа 4.Команды загрузки регистров из памяти.

В систему Z80 входит много команд, позволяющих находить данные в памяти и затем загружать их в регистры. Все эти команды требуют, чтобы программист указал адрес или пару адресов в памяти, откуда данные должны быть скопированы в регистр-получатель данных.

Команды этой группы лучше рассматривать как команды трех подгрупп в соответствии с методом адресации. Виды адресации:

· косвенная- двухбайтовый адрес уже размещен в адресной регистровой паре;

· непосредственная -действительный адрес указан в двух байтах вслед за кодом операции;

· индексная- адрес данных должен быть вычислен путем сложения значения смещения D с основным адресом, уже содержавшимся в регистровой паре IX или IY.

Подгруппа A .Команды, использующие непосредственную адресацию.

Мнемоника 16-ный код

LD A ,(ADDR) 3A ADDR

LD HL ,(ADDR) 2AADDR

LD BC ,(ADDR) ED 4B ADDR

LD DE ,(ADDR) ED 5B ADDR

LD D ,(IX+D) DD 5D D

LD E ,(IX+D) DD 5E D

Для команд, использующих пару IY ,надо изменить IX на IY и DD на FD. Ни одна из команд этой группы не меняет флаги.

Группа 5.Команды записи в память содержимого регистра или константы.

Обычно команды этой группы выполняют операции, противоположные тем, которые делают команды группы 4.Команды позволяют содержимое регистров переписывать в память или записывать туда константы. Эти команды лучше рассмотреть по трём группам.

Подгруппа A. Команды непосредственной адресации.

Мнемоника 16-ный код

LD(ADDR) ,A 32 ADDR

LD(ADDR),HL 22 ADDR (обычная форма)

ED 63 ADDR (необычная форма)

LD(ADDR),BC ED 43 ADDR

LD(ADDR),DE ED 53 ADDR

LD(ADDR),IX ЕD 22 ADDR

LD(ADDR),IY ЕD 22 ADDR

LD(ADDR),SP ЕD 73 ADDR

Приведённые команды приводят только непосредственную адресацию и важно заметить, что нет команд для записи в память констант. Если это необходимо, константа предварительно должна быть загружена в регистр A. Затем выполняется LD(ADDR),A. Команды типа LD(ADDR),HL-фактически двойные команды: LD(ADDR),L и LD(ADDR+1),H. Команды подгруппы часто используются для сохранения адресов и значений в памяти, когда эти значения используются как переменные. Например, часто используется LD(RAMTOP),HL, где RAMTOP -метка пары адресов памяти, используемых для хранения текущего значения верхней границы памяти. Выборка текущего значения верхней границы может быть позднее выполнена команда 4 группы, например:

LD HL,(RAMTOP).

Подгруппа B. Команды косвенной адресации.

Команды этой подгруппы позволяют копировать содержимое регистров в память, адрес которой содержится в регистровой паре HL,BC или DE.

существует также команда записи однобайтовой константы по адресу, указанному в паре HL.

Мнемоника 16-ный код

LD(HL),A 77

LD(BC),A 02

LD(DE),A 12

LD(HL),X 74

LD(HL),L 75

LD(HL),B 70

LD(HL),C 71

LD(HL),D 72

LD(HL),E 73

LD(HL),+DD 36DD

Подгруппа C. Команды индексной адресации.

Мнемоника 16-ный код

LD(IX+D),A DD 77 D

LD(IX+D),H DD 74 D

LD(IX+D),L DD 75 D

LD(IX+D),B DD 70 D

LD(IX+D),C DD 71 D

LD(IX+D),E DD 73 D

LD(IX+D),+DD DD 36 DDD

Для команд, использующих IY-регистровую пару, надо изменить IX на IY и DD на DF.

Группа 6.Команды сложения.

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

Команды этой группы могут быть побелены на 3 подгруппы:

· команды ADD;

· команды INC. Специальные случаи сложения, когда к числу прибавляется 1;

· команда ADC. Значение флага переноса прибавляется к результату. Флаг переноса -это один из битов регистров флагов, который используется для сигнализации о том, было ли при выполнении последней арифметической операции переполнение регистра или байта памяти.

Команды ADD и ADC меняют флаг переноса, а INC-не меняет.

Подгруппа A. Команды ADD.

Мнемоника 16-ный код

ADD A,+DD C6 DD

ADD A,A 87

ADD A,H 84

ADD A,L 85

ADD A,B 80

ADD A,C 81

ADD A,D 82

ADD HL,HL 29

ADD HL,BC 09

ADD HL,DE 19

ADD HL,SP 39

ADD IX,IX DD 29

ADD IX,BC DD 09

ADD IX,DE DD 19

ADD A,E 83

ADD A,(HL) 86

ADD A,(IX +D) DD 86 D

Для команд использующих IY регистр, надо поменять IX на IY и DD на FD.

Подгруппа В. Команды INC.

Команды этой группы позволяют прибавить 1 к регистру, ячейке памяти или паре регистров. Во всех случаях флаг переноса не изменяется.

Мнемоника 16-ный код

INC A 3C

INC H 24

INC L 2C

INC B 04

INC C 0C

INC D 14

INC E 1C

INC (HL) 34

INC (IX+D) DD 34 D

INC HL 23

INC BC 03

INC DE 13

INC SP 33

INC IX DD 23


Страница: