Изучение микропроцессора серии К580. Описание микроЭВМ на основе К580. Структурная схема микроЭВМ

Страницы работы

21 страница (Word-файл)

Фрагмент текста работы

Программа выполняет над операндами логическую и сдвиговую операции, после чего заносит в стек аккумулятор и регистр признаков результата. Таким образом, после выполнения программы в ячейках памяти с адресами L=200 и L=201 будут находиться данные:

В ячейке L = 200 — содержимое регистра флагов F = 10 0х0 1112;

В ячейке L = 201 — содержимое регистра аккумулятора A = 00 000 0102;

Таблица 4.5.2

Иллюстрация работы программы по шагам

Мнемоника команды

Значение аккумулятора

Значение регистра флагов

LXI SP

хx xxx xxx

хx0x0x1x

MVI B

хx xxx xxx

хx0x0x1x

MVI A

00 000 001

хx0x0x1x

XRA B

10 000 001

100х0110

RAL

00 000 010

100х0111

4.6. Очистка памяти

Таблица 4.6

Адреса (L)

Команды

Мнемоника команд

Комментарии

000

227

SUB A

Обнуление A

001

041

LXI H

Загрузка начального адреса указателя памяти

002

011

B2

Младший байт адреса

003

000

B3

Старший байт адреса

004

167

MOV M, A

Обнуление ячейки памяти, адресуемой регистровой парой HL

005

043

INX H

Формирование адреса следующей ячейки памяти

006

303

JMP

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

007

004

B2

Младший байт адреса

010

000

B3

Старший байт адреса

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

4.7. Команда останова

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


4.8. Условные переходы

Таблица 4.8.1

Адреса (L)

Команды

Мнемоника команд

Комментарии

000

061

LXI SP

Загрузка начального адреса указателя стека

001

200

B2

Мл. байт адреса

002

000

B3

Ст. байт адреса

003

361

POP PSW

Извлечение из стека Слова Состояния Программы

004

*

*

Код команды условного перехода

005

000

B2

Мл. байт адреса перехода

006

000

B3

Ст. байт адреса перехода

007

166

HLT

Останов

200

**

Состояние регистра признаков

201

000

Содержимое аккумулятора

Результат работы программы зависит от моделируемого регистра признаков.

Таблица 4.8.2

* Команда (L=004)

** Регистр признаков (L=200)

Переход

JNZ (302)

002/102

+/-

JZ (312)

002/102

-/+

JNC (322)

002/003

+/-

JC (332)

002/003

-/+

JPO (342)

002/006

+/-

JPC (352)

002/000

-/+

JP (362)

002/202

+/-

JM (372)

002/202

-/+

4.9.Вызов подпрограммы

Таблица 4.9

Адреса (L)

Команды

Мнемоника команд

Комментарии

000

061

LXI SP

Загрузка начального адреса указателя стека

001

100

B2

Мл. байт адреса

002

000

B3

Ст. байт адреса

003

315

CALL

Вызов подпрограммы

004

200

B2

Мл. байт адреса

005

000

B3

Ст. байт адреса

006

166

HLT

Останов

200

000

NOP

Пустая операция

201

311

RET

Возврат из подпрограммы

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


4.10. Вызов подпрограммы обработки прерывания

Таблица 4.10.1

Адреса (L)

Команды

Мнемоника команд

Комментарии

000

061

LXI SP

Загрузка начального адреса указателя стека

001

067

B2

Мл. байт адреса

002

000

B3

Ст. байт адреса

003

317

RST 1

Вызов подпрограммы по адресу L=010

004

166

HLT

Останов

010

311

RET

Возврат из подпрограммы

Таблица 4.10.2

Работа программы:

ША

ШД

Комментарий

000

061

LXI

001

067

B2

002

000

B3

003

317

RST 1

066

000

SP-1

065

004

SP-2

010

311

RET

065

004

SP-2

066

000

SP-1

004

166

HLT

Отличие команд CALL и RST N — в способе адресации: в первом случае это прямая адресация (адрес следует после кода операции), во втором — разновидность неявной адресации: адрес перехода вычисляется из кода операции.

Команда RSTn  занимает меньше места в памяти, по сравнению с CALL, поэтому её используют при прерываниях. Однако ее недостатком является то, что вызвать подпрограмму можно только в пределах адресов 000 000 – 000 070 с шагом в 010.

4.11. Вложенный вызов подпрограмм

Таблица 4.11

Адреса (L)

Команды

Мнемоника команд

Комментарии

000

061

LXI SP

Загрузка начального адреса указателя стека

001

067

B2

Мл. байт адреса

002

000

B3

Ст. байт адреса

003

317

RST 1

Вызов подпрограммы по адресу L=010

004

166

HLT

Останов

010

311

RST 2

Вызов подпрограммы по адресу L=020

011

311

RET

Возврат из подпрограммы

020

337

RST 3

Вызов подпрограммы по адресу L=030

021

311

RET

Возврат из подпрограммы

030

347

RST 4

Вызов подпрограммы по адресу L=040

031

311

RET

Возврат из подпрограммы

040

357

RST 5

Вызов подпрограммы по адресу L=050

041

311

RET

Возврат из подпрограммы

050

311

RET

Возврат из подпрограммы

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

Если удалить из памяти один или несколько операторов RET, поведение процессора может быть произвольным, потому что между подпрограммами находятся неопределенные участки памяти (012 — 019, 022 — 029, 032 — 039, 042 — 049, 051 — ).

5.Вычисление 12-го члена ряда Фибоначи

Идея алгоритма

Считаем сумму двух последних чисел, пока значение “счетчика” i (начальное условие: i = 12 ) не станет равным нулю.

В программе задействованы следующие регистры и регистровые пары:

·  А   — последнее вычисленное число;

·  С   — предпоследнее вычисленное число;

·  D   — счетчик;

Словесное описание алгоритма:

1.  Инициализация регистров:

A =0;

C=0;

B=0;

D=12;

2.  Суммируем значения регистров А и С, результат записываем в А;

3.  Присваиваем регистру С значение регистра В;

4.  Присваиваем регистру М значение регистра А;

5.  Уменьшаем значение счетчика на единицу;

6.  Проверяем значение счетчика(неравен нулю - переходим в начало цикла, равен нулю конец программы);

7.  Останов.


Таблица4.1

Программа

Адреса (L)

Команды

Мнемоника команд

Комментарии

000

041

LXI H

Загрузка начального адреса указателя стека

001

200

B2

Мл. байт адреса

002

000

B3

Ст. байт адреса

003

076

MVI A

Непосредственная загрузка 0 в A

004

001

B2

005

016

MVI A

Непосредственная загрузка 0 в C

006

000

B2

007

006

MVI A

Непосредственная загрузка 0 в B

010

000

B2

011

026

MVI A

Непосредственная загрузка 0 в D

012

022

B2

013

107

MOV B, A

Присваиваем рег. B значение рег. A

014

201

ADD A

Суммируем значения регистров А и С, результат записываем в А

015

110

MOV C, B

Присваиваем регистру С значение регистра В;

016

167

MOV M, A

Присваиваем регистру М значение регистра А;

017

025

RCRD

Уменьшаем значение счетчика на единицу

020

302

JZ addr

Условный переход по флагу z

021

013

B2

Если z=1(нулевой результат), то переходим

022

000

B3

в 013, иначе осущ. переход к след. команде

023

167

MOV M, A

Запись результата в стек

024

166

HLT

Останов

Результат тестирования:

По адресу 000 200 будут последовательно записываться числа:

0 1 1 2 3 5 8 13 21 34 55 89
6. Бегущая строка

Дополнения к формулировке задания

В рамках этого раздела был выполнен вывод бегущей строки на четырехразрядный семисегментный индикатор. Отображаемый текст: «Прогноз — снег».

Таблица5.1

Кодирование символов

Символ

Код

Символ

Код

П

00110111

01000000

Р

01110011

С

00111001

О

00111111

Н

01110110

Г

00110001

Е

01111001

Н

01110110

Г

00110001

О

00111111

З

01001111

Таблица5.2

Содержание памяти

Адрес (L)

Содержание

206

П

207

Р

210

О

211

Г

212

Н

213

О

214

З

215

-

216

С

217

Н

220

Е

221

Г

Идея алгоритма

В каждый момент времени на дисплее отображается только 4 символа из 4 соответствующих ячеек памяти. Изначально регистровая пара HL указывает на адрес L = 202. Затем происходит вывод четырех символов, по ходу вывода L увеличивается на 3. Далее выполняется пустой цикл с большим количеством итераций. После этого проверяется значение L. Если оно равно 225, в L вновь загружается начальный адрес, если нет, из L вычитается 2 и происходит возврат к началу вывода на левый индикатор. Поскольку скорость движения строки не обозначена в задании, соответствующий параметр цикла подбирался «на глаз».

Таблица5.3

Программа

Адреса (L)

Команды

Мнемоника команд

Комментарии

 

000

041

LXI H

Загрузка начального адреса памяти

 

001

202

B2

Мл. байт адреса

 

002

000

B3

Ст. байт адреса

 
 

003

176

MOV A, M

Читаем из памяти символ для левого разряда индикатора

 

004

323

OUT

Выводим символ в левый разряд

 

005

376

B2

Адрес левого разряда индикатора

 

006

043

INX H

Переходим к следующей ячейке памяти

 

007

176

MOV A, M

Аналогично для 2-го слева разряда индикатора

 

010

323

OUT

 

011

375

B2

 

012

043

INX H

 

013

176

MOV A, M

Для 3-го индикатора

 

014

323

OUT

 

015

374

B2

 

016

043

INX H

 

017

176

MOV A, M

Для 4-го индикатора

 

020

323

OUT

 

021

373

B2

 

022

021

LXI D

Инициализация параметра цикла

 

023

000

B2

Мл. байт

 

024

000

B3

Ст. байт

 

025

023

INX D

Увеличиваем параметр цикла на 1

 

026

172

MOV A, D

Перемещаем старший байт параметра цикла в аккумулятор для проверки

 

027

376

CPI

Проверка с фиксированным значением

 

030

200

B2

(Значение B2 достаточно условное)

 

031

302

JNZ

Проверка условия продолжения цикла

 

032

025

B2

Мл. байт адреса тела цикла

 

033

000

B3

Ст. байт адреса тела цикла

 

034

175

MOV A, L

Адресный регистр в аккумулятор

 

035

376

CPI

Проверяем значение адреса

 

036

225

B2

Адрес, считающийся конечным

 

037

312

JZ

В случае достижения конечного адреса, инициируем указатель заново

 

040

000

B2

Мл. байт адреса

 

041

000

B3

Ст. байт адреса

 

042

326

SUI

Уменьшаем значение адреса

 

043

002

B2

на 2

 

044

157

MOV L, A

Записываем обновленный адрес

 

045

303

JMP

Переход к выводу левого символа

 

046

003

B2

Мл. байт перехода

 

047

000

B3

Ст. байт перехода


7.Выводы

В ходе данной работы был подробно исследован процессор К580: его система команд, способы адресации, организация стековых операций, работа с периферийными устройствами (на примере многоразрядного семисегментного индикатора). Процессор имеет хорошо продуманную и организованную систему команд. Все команды можно разделить на несколько больших групп, большие группы в свою очередь делятся на малые группы, то есть команды легко классифицируются. Достаточно много однобайтных команд — все регистры общего назначения

Похожие материалы

Информация о работе