Микропроцессор. Устройства на базе микропроцессоров. Чтение и запись данных. Операции над четырёхразрядным кодом по машинным командам, страница 9

DE       001

HL        010

SP        011

LXI RP, CONST - осуществляет загрузку константы в указанную регистровую пару.

4.   LDAX RP - косвенная загрузка аккумулятора. Использует регистровые пары BC и DE.

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

5.   STAX RP - выполнение команды загружает содержимое аккумулятора в ячейку памяти, адрес которой находится в соответствующей регистровой паре.

6.   LDA address - прямая загрузка аккумулятора, трехбайтовая команда. Выполняется за 4 МЦ. При выполнении команды в аккумулятор заносится содержимое ячейки памяти, адрес которой находится в регистровой паре.

7.   STA address - прямая загрузка памяти. Содержимое аккумулятора будет записано в ячейке памяти, адрес которой указан в регистровой паре.

8.   LHLD address - загружает в регистр L  содержимое ячейки памяти, адрес которой указан в команде, адрес которой больше на 1, чем тот, который указан в команде:                    (L) ¬(adr),       (H) ¬(adr+1)

9.   SHLD - обратная команда. Трёхбитовая. Выполняется за 5 МЦ.

Команды.

Стек  бывает 2х видов: преддекременийный (или постинкрементийный) и прединкрементийный (или постдекрементийный ). Основная характеристика стека - глубина стека. Вспомогательная - вершина стека.

Стек -  специальная область памяти для временного хранения данных, как правило для выполнения в подпрограмме.

Глубина -  количество информации, сохраняемой в памяти (стеке). При принятой вложенности программы стек адресуется только его вершиной. Вершина стека - адрес ячейки памяти, из которой будут извлекаться данные при выполнении процедуры чтения из стека.

Стек называется преддекрементным, если при записи в стек сначала уменьшается на адрес вершины стека, а затем по этому адресу выталкивается в стек информация а при чтении наоборот: сначала из адреса вершины стека извлекается информация, а затем адрес вершины увеличивается на 1.

Чтение из пустого стека - переопустошение.

Стек может быть линейным и кольцевым. В I8080 реализован кольцевой стек : после адреса вершины адреса вершины устанавливается адрес FFFF.

Для хранеия адреса вершины стека используется специальный регистр SP - указатель стека

Команды работы со стеком :

PUSH RP - в стек выталкиваются регистровые пары ВС, DE, HL , PSW- слово состояния программы. Состоящей из A и F PSW(AF).

Команда однобитовая выполняется за 3 МЦ.

1.   (SP) ¬(SP)-1

2.   ((SP)) ¬(RH)

3.   (SP) ¬(SP)-1

4.   ((SP)) ¬(RL)

POP RP – процедура извлечения из стека

1.   (RL) ¬((SP))

2.   (SP) ¬((SP))+1

3.   (RH) ¬((SP))

4.   (SP) ¬(SP)+1

Операции со стеком не изменяют фактически : команды POP PSW

Операции со стеком - единственная возможность прочитать темные флаги, например AUXILLARY CARRY (вспомогательного переноса)

XTHL - обмен между вершиной стека и Н - парой регистра

(H)Û ((SP))

(L) Û((SP+1))

При выполнении этой команды не происходит изменение вершины стека.

SPHL - запись Н- пары регистров в указатель стека

(SP)Ü(HL)

В HL - должны быть флага адрес не выходящий за длину стека и не превосходящий глубину стека.

Команды ввода - вывода:

IN port

OUT port

Данные команды прямую адресацию. Адрес порта кодируется в одном байте

Часто в МП обращение к портам как к памяти

При выполнении команда IN используются следующие МЦ :

1.   чтение ввода команды

2.   чтение адреса порта

3.   чтение из устройств ввода – вывода

a.   (PC) Ü(PC)+1

b.   проверки

c.   (ABL) Ü(port)

d.   (A) Ü (ABL)

Команды обработки данных

INR R - работает с регистрами A,B,C,D,E,F  и ячейкой адрес которой указан в (HL). После выполнения данной операции полностью изменяются все флаги, кроме флага переполнения

DCR R – обратная операция INR R

Операции INR и DCR возможны над регистровыми парами

INX RP - работает с регистровыми парами