МУ_ЛР_АВС_622111


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.
МИНОБРНАУКИ РОССИИ


Федеральное г
осударственное бюджетное образовательное учрежд
е
ние

высшего профессионального образования

«Тульский Государственный Университет»



Кафедра «Автоматика и телемеханика»




СБОРНИК МЕТОДИЧЕСКИХ УКАЗАНИЙ

К ЛАБОРАТОРНЫМ РАБОТ
АМ


по дисциплине


Архитектура вычислительных систем



Направление подготовки:
230100 «Информатика и вычислительная техн
и
ка»

Профиль
:
«Программное обеспечение средств вычислительной техники и а
в
томатизированных систем»


Направление подготовки:
230400 «Инфо
рмационные системы и технол
о
гии»

Профиль:

«Информационные системы»


Направление подготовки:
220100 «Программная инженерия»



Формы обучения:
очная





Тула 2012 г.

2


Методические указания к лабораторным работам составлены
доцентом, к.т.н.
Гетманцем В.М и до
центом ка
ф.

АТМ, к.т.н.
Копыловым А.В.

и обсуждены на зас
е
дании кафедры

автоматики и телемеханики

факультета
к
и
бернетики
,

протокол № 6

от "

31 " января
201
2
г.

Зав. кафедрой________________
А.А. Фомичев



Методические указания к лабораторным работам п
ересмотрены и утверждены
на заседании кафедры

автоматики и телемеханики

факультета
киберн
е
тики
,

протокол №___ от "___"____________ 20___ г.

Зав. кафедрой________________
А.А. Фомичев


3


СОДЕРЖАНИЕ


Г
РАФИК ВЫПОЛНЕНИЯ И З
АЩИТЫ ЛАБОРАТОРНЫХ Р
АБОТ
......................

5

ОФОРМЛЕНИЕ ОТЧЕТА И
ПОРЯДОК ЗАЩИТЫ ЛАБОР
АТОРНЫХ РАБОТ

.

6

ТРЕБОВАНИЯ

К

ОТЧЕТУ

ПО

ЛА
БОРАТОРНОЙ

РАБОТЕ

................................
........

6

ПОРЯДОК

ЗАЩИТЫ

РАБОТЫ

................................
................................
.......................

6

УЧЕБНО
-
ОТЛАДОЧНОЕ УСТРОЙСТВ
О "ЭЛЕКТРОНИКА
-

580"

......................

7

НАЗНАЧЕНИЕ

................................
................................
................................
...................

7

СТРУКТУРА

УОУ

................................
................................
................................
.............

7

АДРЕСАЦИЯ

ПАМЯТИ

В

УОУ

................................
................................
......................

9

АДРЕСАЦИЯ

ВНЕШНИХ

УСТРОЙСТВ

(ВУ)

................................
..............................

9

КЛАВИАТУРА

ПУЛЬТА

УПРАВЛЕНИЯ

................................
................................
....

10

ИНДИКАТОР

АДРЕСА

И

ДАННЫХ

................................
................................
............

11

МИКРОПРОЦЕССОР КР580
ВМ80А

................................
................................
.............

13

ЭЛЕМЕНТЫ

АРХИТЕКТУРЫ

МП
-
СИСТЕМЫ

НА

БАЗЕ

KP580

.............................

13

ОРГАНИЗАЦИЯ

МП

КР580

................................
................................
...........................

14

ПРИНЦИП

ДЕЙСТВИЯ

МП

................................
................................
..........................

16

МАШИННЫЕ

ЦИКЛЫ

И

ТАКТЫ
................................
................................
.................

17

ПРОГРАММА

СИМУЛЯТОР

УЧЕБНО
-
ОТЛАДОЧНОГО

УСТРОЙСТВ
A

"ЭЛЕКТРОНИКА

-

580"

................................
................................
................................
..

19

ЛАБОРАТОРНАЯ РАБОТА
№ 1. ИЗУЧЕНИЕ УЧЕБНО
-
ОТЛАДОЧНОГО
УСТРОЙСТВА "ЭЛЕКТРОН
ИКА
-
580"

................................
................................
.......

20

ЛАБОРАТОРНАЯ РАБОТА
№ 2. ЗАПИСЬ И ВЫПОЛН
ЕНИЕ ПРОСТЫХ
ПРОГРАММ

................................
................................
................................
........................

25

ЛАБОРАТОРНАЯ РАБОТА
№3. ИЗУЧЕНИЕ СИСТЕМЫ

АДРЕСАЦИИ,
КОМАНД ПЕРЕСЫЛКИ И А
РИФМЕТЕЧЕСКИХ

ОПЕРАЦИЙ МП КР580

......

29

ЛАБОРАТОРНАЯ РАБОТА
№4. ИЗУЧЕНИЕ РАБОТЫ
КЛАВИАТУРЫ И
ДИСПЛЕЯ УОУ

................................
................................
................................
..................

38

ЛАБОРАТОРНАЯ РАБОТА
№ 5. ЛОГИЧЕСКИЕ ОП
ЕРАЦИИ И
ОРГАНИЗАЦИЯ УСЛОВНЫХ

ПЕРЕХОДОВ
................................
.............................

50

ЛАБОРАТОРНАЯ РАБОТА
№6. ИСПОЛЬЗОВАНИЕ ЯЗ
ЫКА АССЕБЛЕР В
ПРОГРАММАХ, НАПИСАНН
ЫХ НА ЯЗЫКЕ PASCAL

................................
.........

57

4


ЛАБОРАТОРНАЯ РАБОТА
№7. ВЗАИМОДЕЙСТВИЕ П
РОГРАММ НА
ЯЗЫКЕ PASCAL С КОДОМ

НАПИСАННЫМ НА ЯЗЫКЕ
АССЕМБЛЕРА

......

69

СПИСОК РЕКОМЕНДОВАНН
ОЙ ЛИТЕРАТУРЫ

................................
..................

79

ПРИЛОЖЕНИЕ 1. СИСТЕМ
А КОМАНД МИКРОПРОЦЕС
СОРА КР580

...........

80

ПРИЛОЖЕНИЕ 2. ТАБЛИЦ
А КОДОВ КОМАНД

................................
.....................

84

ПРИЛОЖЕН
ИЕ 3. ПРИМЕР ОФОРМЛЕ
НИЯ ОТЧЕТА ПО ЛАБОРА
ТОРНОЙ
РАБОТЕ

................................
................................
................................
................................

85



5


ГРАФИК ВЫПОЛНЕНИЯ И ЗАЩИТЫ ЛАБОРАТОРНЫХ РАБОТ

по курсу «Архитектура вычислительных систем» группы
6
22
1
1
1


Подгруппа 1


Название

Дата выпо
л
нения

Дата з
а
щиты

1

Изучен
ие учебно
-
отладочного устройства "ЭЛЕ
К
ТРОНИКА
-
580"

08.02.12

22.02.12

2

Запись и выполнение простых пр
о
грамм

22.02.12

07.03.12

3

Изучение системы адресации, команд пересылки и
арифм
е
теческих операций МП КР580

07.03.12

21.03.12

4

Изучение работы клавиатур
ы и дисплея УОУ

21.03.12

04.04.12

5

Логические операции и организация условных п
е
реходов

04.04.12

18.04.12

6

Использование языка ассеблер в программах, нап
и
санных на языке Pascal

18.04.12

16.05.12

7

Взаимодействие программ на языке Pascal с кодом
нап
и
с
анным на языке ассемблера

16.05.12

30.05.12

8

Заключительное занятие, защита работ

30.05.12


Подгруппа 2


Название

Дата выпо
л
нения

Дата з
а
щиты

1

Изучение учебно
-
отладочного устройства "ЭЛЕ
К
ТРОНИКА
-
580"

15.02.12

29.02.12

2

Запись и выполнение простых пр
о
грамм

29.02.12

14.03.12

3

Изучение системы адресации, команд пересылки и
арифм
е
теческих операций МП КР580

14.03.12

28.03.12

4

Изучение работы клавиатуры и дисплея УОУ

28.03.12

11.04.12

5

Логические операции и организация условных п
е
реходов

11.04.12

25
.04.12

6

Использование языка ассеблер в программах, нап
и
санных на языке Pascal

25.04.12

23.05.12

7

Взаимодействие программ на языке Pascal с кодом
нап
и
санным на языке ассемблера

23.05.12

30.05.12

8

Заключительное занятие, защита работ

30.05.12


6


ОФОРМЛЕ
НИЕ ОТЧЕТА И ПОРЯДОК ЗАЩИТЫ ЛАБОРАТОРНЫХ
РАБОТ

ТРЕБОВАНИЯ К ОТЧЕТУ ПО ЛАБОРАТОРНОЙ РАБОТЕ

Отчет по лабораторной работе должен содержать следующие обязательные
пункты.

1.

Титульный лист установленного образца.

2.

Цель работы.

3.

Задание на работу.

4.

Необходимые теорет
ические сведения.

5.

Ход выполнения работы, согласно программе работы.

6.

Текст программы или иную информацию, согласно пункту «Содержание отч
е
та» соответствующей лабораторной работы.

7.

Выводы.

Отчет выполняется на листах формата А4, разметка страницы: верхнее пол
е


2

см,

нижнее поле 2 см, левое поле 3 см, правое поле


1.5 см., шрифт: гарнитура

Times

New

Roman

, кегль 14 пт., выравнивание по ширине, междустрочный инте
р
вал 1.5. Пример подрисуночной подписи: «Рисунок 1
-



Внешний вид учебно
-
отладочного устройств
а
"ЭЛЕКТРОНИКА
-

580"»

Пример оформления отчета по лабораторной работе приведен в прилож
е
нии

3.


ПОРЯДОК ЗАЩИТЫ РАБОТЫ

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

Если студент по неуважительной причине задерживает защиту лабораторной р
а
боты на одн
о занятие относительно сроков, определенных графиком выполнения и
сдачи лабораторных работ, он получает минус один бал в итоговой оценке за курс, на
два занятия


м
и
нус два бала и т.д.


7


УЧЕБНО
-
ОТЛАДОЧНОЕ УСТРОЙСТВО

"ЭЛЕКТРОНИКА
-

580"

НАЗНАЧЕНИЕ

Учебно
-
отл
адочное устройство (УОУ) предназначено для знакомства с особе
н
ностями построения микроЭВМ на микропроцессоре с фиксированным набором к
о
манд и может быть использовано для исследования методов программирования и р
а
боты БИС, входящих в микропроцессорный компл
екс серии КР580.

УОУ представляет собой универсальную микроЭВМ и поэтому может быть и
с
пользовано как управляющая ЭВМ при создании и исследовании работы систем
управления различными объектами.
Внешний вид "ЭЛЕКТРОНИКА
-

580" прив
е
ден
на рис. 1.




Рисунок

1


Внешний вид учебно
-
отладочного устройства
"ЭЛЕКТРОНИКА
-

580"


УОУ является легко осваиваемым и удобным средством для отладки относ
и
тельно небольших программ пользов
а
теля.

СТ
Р
УКТУРА УОУ

Структурная схема УОУ приведена на рис.
2
.

Центральным элементом
является микропроцессор МП, представляющий с
о
бой
БИС КР580ИК80А
(зарубежный аналог
-

Intel 8080)
и обеспечивающий обработку
информации и управление всеми остальными узлами УОУ. Блок синхрон
и
зации БС
вырабатывает тактовые импульсы и основные синхронизирующи
е сигн
а
лы.

Обмен информацией между процессором и остальными узлами УОУ осущест
в
ляется с помощью трех шин: шины адреса ША, шины данных ШД и шины управл
е
ния ШУ. Для повышения нагрузочной способности шин предусмотрены буферные
схемы с шинными формирователями
БА и БД.

8


Сигналы шины управления обрабатываются в блоке системного контроллера
БСК, содержащем регистр слова состояния процессора и формирователя управля
ю
щих сигналов. Для упрощения схемы УОУ предусмотрен дешифратор адреса ДА, к
о
торый вырабатывает сигнал в
ыбора для устройств памяти и вне
ш
них устройств.

Хранение программ и данных, необходимых для работы УОУ, осуществл
я
ется в
ППЗУ и ОЗУ.



Рисунок
2

-

Структурная схема УОУ

Управление работой УОУ производится с помощью клавиатуры из
25 клавиш.
Клавиатура подключена к шинам УОУ через параллельный интерфейс ИПР, выпо
л
ненный на БИС КР580ВВ55.

9


Индикация информации осуществляется с помощью восьмизначного восьмисе
г
ментного светодиодного дисплея, управляемого узлом прямого доступа к памяти
П
ДП.

Для обеспечения возможности длительного сохранения отлаживаемых пр
о
грамм
в составе УОУ введен модем, обеспечивающий ввод
-
вывод информации на бытовой
кассетный магнитофон. Управление модемом производится программным путём ч
е
рез интерфейс ИПР.

Индикаторн
ые схемы ИС, подключенные к ИПР, предназначены для
-

отображ
е
ния состояния разрядов нуля и переноса (
Z

и
C
) регистра флагов микропроце
с
сора.

АДРЕСАЦИЯ ПАМЯТИ В УОУ

УОУ содержит два встроенных ЗУ: перепрограммируемое ПЗУ с ультрафиол
е
товым стиранием объемом
1 Кбайт и оперативное ЗУ объемом 2Кбайт. Предусмотр
е
на возможность установки одной
-

трех микросхем ППЗУ типа КР573РФ2 объ
е
мом 1
или 2 Кбайт каждая.

Распределение адресов памяти приведено в табл.

1.

Таблица 1

АДРЕС ОБЛ
А
СТИ ПАМЯТИ

НАЗНАЧЕНИЕ ОБЛАСТИ ПАМЯТИ

ОБ
Ъ
ЕМ

БАЙТ

0000…03
FF

Монитор (встроенное ППЗУ)

1
K

0400…0
FFF

Сменное ППЗУ пользователя

3
K

1000…7
FFF

Неиспользуемые адреса

28
K

8000…81
FF

Встроенное ОЗУ пользователя

512

8200…

Начальный адрес пользователя

80

…83
BF

Стек пользователя и массив контрольных

точек


83
E
0…83
E
7

ОЗУ монитора

24

83
F
8…83
FF

Регистры разрядов дисплея

8

8400…87
FF

Встроенное ОЗУ пользователя

1
K

8800…
FFFF

Неиспользуемые адреса

30
K


АДРЕСАЦИЯ ВНЕШНИХ УСТРОЙСТВ (ВУ)

Для облегчения создания на основе УОУ специализированных микроЭВМ в
схеме УОУ предусмотрен дешифратор адреса ДА, формирующий пять сигналов в
ы
борки внешних устройств.

10


Один сигнал выборки используется в УОУ в схеме параллельного интерфейса
ИПР, через который подключены клавиатура, модем и схемы индикации состояния
флагов МП.

Четыре остальных сигнала выборки предназначены для пользователя.

В микроЭВМ на основе МП КР580ВМ80А внешние устройства могут иметь
шестнадцатеричные адреса от 00 до
FF
, причем одно внешнее устройство обычно
имеет несколько последовательных адресов.

Дешифр
атор адреса, встроенный в УОУ, формирует сигналы выборки по ста
р
шему разряду кода адреса ВУ в соответствии с табл. 2.

Таблица 2

ОБОЗНАЧЕНИЕ УПРА
В
ЛЯЮЩЕГО СИГНАЛА

В
Ы
БОРКИ ВУ

СТАРШИЙ

РАЗРЯД

АДР
Е
СА ВУ


НАЗНАЧЕНИЕ

ВК ИВК/Ф

0

Используется в УОУ

ВК ПРЕДВ, 1

2

ВУ Пользователя

ВК ПРЕДВ, 2

3

ВУ Пользователя

ВК ПРЕДВ, 3

А

ВУ Пользователя

ВК ПРЕДВ, 4

В

ВУ Пользователя


Младшие разряды адреса ВУ должны расшифровываться непосредственно в
схеме интерфейса, через который подключено конкретное ВУ.

С помощью внешних д
ешифраторов можно дополнительно обеспечить до 176
адресов ввода и до 176 адресов вывода.

КЛАВИАТУРА ПУЛЬТА УПРАВЛЕНИЯ

Клавиатура пульта управ
ления включает 25 клавиш (рис. 3
).

Верхний и правый ряды содержат командные клавиши; их нажатие инициир
у
ет
выполнен
ие соответствующих действий УОУ. Остальные 16 клавиш служат для вв
о
да шестнадцатиричных цифр от 0 до
F
, а также задания имен регистров и рег
и
стровых
пар микропроцессора:


REG

MEM

BRK

CLR

RST

C

D

E

F

STEP

8/H

9/L

A

B

RUN

4

5

6

7

ADDR

0

1/P

2/T

3

NEXT

Р
исунок
3

-

Клавиатура УОУ

11


клавиши
F
,
D
,
C
,
D
,
E
, 8/
H
, 9/,
F


для обозначения регистра

аккумулятора А, р
е
гистров общего назначения (РОН)
B

L
, регистра флагов (признаков) микропроце
с
сора
F
;

клавиша
I
/
P

для обозначения указателя стека
SP
;

клавиша 2/Т

дл
я обозначения содержимого вершины стека
ST
.

Старшие разряды вершины стека хранятся по адресу
SP
+1, младшие разряды

по
адресу
SP
.

Назначение командных клавиш приведено в табл. 3.

Таблица 3

НАЗВ
А
НИЕ

ОБОЗНА
-
Ч
Е
НИЕ

НАЗНАЧЕНИЕ

СБРОС

RST

Установка исходного со
стояния

АДРЕС

ADDR

Перевод УОУ в режим задания адреса ячейки п
а
мяти

ПАМЯТЬ

MEM

Перевод УОУ в режим записи данных в ячейку п
а
мяти.

Повторное нажатие уменьшает на 1 адрес индиц
и
руемой ячейки памяти или регистра микропроце
с
сора

СЛЕД
У
ЮЩИЙ

NEXT

Увеличивает н
а 1 адрес индицируемой ячейки п
а
мяти или регистра

ВОССТ
А
НОВ
-
ЛЕНИЕ

CLR

Восстановление прежнего значения адреса или
данных, если после их ввода не нажимали др
у
гие
командные клавиши

РЕГИСТР

REG

Отображение содержимого восьми
-

разрядного р
е
гистра МП

ШАГ

STE
P

Выполнение очередной команды отлаживаемой
программы

ПРОГОН

RUN

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

КО
Н
ТРОЛЬ
-
НАЯ
ТО
Ч
КА

BRK

Задание адреса контрольной точки в програ
м
ме

ИНДИКАТОР АДРЕСА И ДАННЫХ

Инди
катор адреса и данных состоит из восьми разрядов. Каждый разряд являе
т
ся восьмисегментной ячейкой на светодиодах (семь сегментов отображают си
м
вол,
восьмой
-

точку). Для отображения алфавитно
-
цифровой информации, т.е. цифр 0, ...,
9, букв А, ...,
F
, Н, Р,
R
, S, Т, не всегда достаточно семи сегментов, п
о
этому для букв
В,
D
,
R
, Т используют стилизованные обозначения:

12



Разряды (знакоместа) индикатора нумеруются слева направо. При отображ
е
нии
ячейки памяти в разрядах 1,...,4 индикатор
а в шестнадцатиричной системе счисления
высвечивается адрес, в разрядах 7 и 8
-

данные, хранящиеся по этому адресу.

При отладке программы в разрядах 1 ... 4 индикатора отображается содерж
и
мое
счетчика команд, а в разрядах 7, 8
-

код команды либо содержимое

регистра микр
о
процессора. В последнем случае в пятом разряде индикатора появляется обознач
е
ние
регистра, а в шестом
-

знак "тире".

13


МИКРОПРОЦЕССОР КР580ВМ80А

ЭЛЕМЕНТЫ АРХИТЕКТУРЫ МП
-
СИСТЕМЫ

НА БАЗЕ KP580

Общая структура системы на базе микропр
оцессора KP58
0 показана на рис.

4
. В
ней выделяют три основных компонента
-

центральный процессор, функции к
о
торого
выполняет микропроцессор, память и средства ввода
-
вывода.

Микропроцессор является единственным активным компонентом системы и р
е
ализует следующие функции
:

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

управляет обменом различной информацией между компонентами сист
е
мы;

реагирует на разнообр
азные внешние сигналы.

Память МП
-
системы представлена программным энергонезависимым постоя
н
ным запоминающим устройством (ПЗУ), допускающим только считывание хр
а
нимой
информации, и полупроводниковой оперативной памятью (или запоминающим
устройством с произв
ольной выборкой
-

ЗУПВ), выполняющей операции считыв
а
ния
и записи.

В функциональном отношении память состоит из однотипных ячеек, длина (ра
з
рядность) которых совпадает с длиной слова микропроцессора, т.е. составл
я
ет 8 бит
(один байт). Ячейки пронумерованы,

номера их называются адресами, и для обращ
е
ния к ячейке достаточно указать ее адрес. Совокупность ячеек, к которым потенц
и
ально может адресоваться микропроцессор, называется адресным пространством п
а
мяти, а фактически имеющиеся ячейки образуют рабочее про
странство п
а
мяти МП
-
систем.

Адресное пространство микропроцессора КП580 составляет 64 Кбайт (65536
ячеек). Адресное пространство графически изображается в виде столбца из 64К строк
с двоичными адресами от 00…00 до II...
II
. Различные области адресного

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

Сре
дства ввода
-
вывода (ВВ) представлены портами ввода и вывода. Информ
а
ция от устройств ввода поступает в порты ввода и считывается микропроцесс
о
ром, а
порты вывода воспринимают информацию от микропроцессора и передают ее в
устройства вывода. В простейшем слу
чае порты ввода и вывода
-

это буферные рег
и
стры, имеющие определенные адреса и выполняющие фун
к
ции сопряжения МП
-
системы с разнообразными периферийными устройствами ("внешним миром").

14



Рисунок
4

-

Основные компоненты МП
-
системы

ОРГАНИЗАЦИЯ МП КР580

Архитектура МП КР580 отмечена следующими основными особен
-
ностями:

магистральным принципом связей, реализованным в виде связывающей осно
в
ные узлы МП двунаправленной шины данных;

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

наличием средств организации стековой памяти;

наличием шестнадцатиразрядной шины адреса, обеспечивающей возможность
прямой адресации любого байта в памяти емкостью 64 К
байт
;

наличием операции над двухбайтными словами с помощью специальных к
о
манд;

использованием нескольких форматов команд (однобайтных, двухбайтных и
трехбайтных) и разнообразных способов адресации, позволивших при коротком
восьмибитном слове иметь достаточ
но гибкую систему команд;

возможностью реализации векторного многоуровневого приоритетного прер
ы
вания путем подключения к МП специальной БИС (контроллера прерыв
а
ний);

возможностью реализации в МП режима прямого доступа к памяти путем по
д
ключения специально
й БИС (контроллера прямого доступа);

наличием эффективных средств работы с подпрограммами и средств обработки
запросов прерываний.

15



Рисунок
5

-

Структурная схема микропроцессора КР580ВМ80А

Структурная сх
ема МП КР580 приведена на

рис. 5
. Канал мик
-
ропроцессора с
о
держит три шины: шину данных ШД (8 линий), шину адреса ША (16 линий) и шину
управления ШУ (10 линий).

Микропроцессор имеет следующие функциональные узлы: арифм
е
тико
-
логическое устройство (АЛУ), устройство управления, дешиф
ратор команд и схему
кодирования цикла, блок регистров со схемой выборки регистра и мультиплекс
о
ром,
регистр команд, аккумулятор (регистр А), регистр флагов (регистр
F
), регистр вр
е
менного хранения данных на входе АЛУ (регистр Т), схему десятичной корре
к
ци
и,
регистр аккумулятора, регистры и буферы шин адреса и данных, схему и
н
кремента
-
декремента.Блок регистров организован в шесть шестнадцатибитных регистров: пр
о
граммный счетчик РС, указатель стека
SP
, регистр временного хран
е
ния
W
,
Z

и три
пары восьмибитных

регистров общего назначения (
POH
)
-
B
,
C
;
D
,
E
;
H
,
L
. Регистры
общего назначения можно использовать как в составе пар, так и о
т
дельно.

16


Программный счетчик хранит адрес текущей ячейки программной памяти. Ук
а
затель стека адресует последнюю занятую ячейку (или

"вершину" стека). Рег
и
стры
W
,
Z

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

Аккумулятор и
спользуется в качестве источника одного из операндов и места,
где фиксируется результат операции.

Схема инкремента
-
декремента предназначена для автоматического изменения
адресов.

Восьмиразрядное АЛУ выполняет

простейшие арифметические и логические
операции
. Схема десятичной коррекции под воздействием специальной команды и
н
терпретирует результат двоичного сложения как результат операции десятичной
арифметики.

АЛУ непосредственно связано с регистром флагов (признаков), в соответству
ю
щих разрядах которого фикс
ируются особенности результата каждой опер
а
ции (табл.
4).

ПРИНЦИП ДЕЙСТВИЯ МП

МП КР580 реализует классический принцип действия, предложенный Дж. фон
Нейманом еще в 1945 г. Работа МП состоит в последовательном выполн
е
нии команд
в соответствии с программой,
заранее разработанной и размещенной в памяти МП с
и
стемы.

Таблица 4

Б
ИТ

ПРИ
ЗНАК

НАЗВАНИЕ ПРИЗНАКА

0

С

Перенос из старшего разряда

1


Всегда единица

2

P

Паритет (четность числа единиц в аккумуляторе)

3


Всегда нуль

4

AC

Перенос из младшего полубайта

5


Всегда нуль

6

Z

Нулевой результат в аккумуляторе

7

S

Положительный результат в аккумуляторе


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

17


Код команды состоит из двух частей: кода операции (КОП), который задает в
ы
полняемые действия или операцию, и поля операнда, определяющего данные, учас
т
вующие в операции.

Код команды может иметь длину от 1 до 3 байт, причем код операции всегда с
о
держитс
я в первом байте команды.

Работа МП зависит не только от команд программы, но и от внешних сигн
а
лов,
поступающих по шине управления (например, сигналов готовности, запросов прям
о
го доступа к памяти, запросов прерывания, останова). Предположим, что эти внеш
ние
сигналы имеют такие значения, которые не нарушают о
с
новного режима работы МП
по реализации команд пр
о
граммы.

Процесс выполнения одной команды называется циклом команды. До начала
цикла команды в программный счетчик РС должен быть помещен адрес к
о
манды
в
программной памяти.

При выполнении любой команды элементы МП работают в следующей послед
о
вательности:

1.

Адрес кода команды выставляется на ША и в память посылается сигнал
чтения. Из ячейки памяти с указанным адресом извлекается байт команды,
содержащий код

операции, передается по ШД в МП и заносится в регистр
кома
н
ды. Содержимое РС увеличивается на единицу.

2.

Производится декодирование кода операции.

3.

Если код команды имеет длину 2 или 3 байта, то производиться обращ
е
ние
к программной памяти (аналогично п. 1,
только содержимое ячеек памяти
передается в регистры временного хранения). При каждом обращении к
программной памяти содержимое
PC

увеличивается на ед
и
ницу.

4.

Если это необходимо по логике выполнения команды, то по шинам ША и
ШД производится цикл обращения к

памяти или устройству ввода
-
вывода
(чтение или запись операнда).

5.

Реализуются конкретные действия, предусмотренные выполняемой кома
н
дой (преобразование данных, передача из временных регистров в програ
м
мно
-
доступные и т.д.).

6.

Если это необходимо, то производ
ится анализ результата операции, форм
и
руются флаги и помещаются в регистр флагов.

7.

В командах переходов формируется адрес следующей команды путем зан
е
сения нового содержимого в программный счетчик
PC
. Во всех остальных
командах адрес следующей команды форми
руется автоматически (пп. 1 и
3).

МАШИННЫЕ ЦИКЛЫ И ТАКТЫ

В МП КР580 каждая команда выполняется в течение 1
-

5 машинных циклов
МП. Число машинных циклов команды определяется числом обращений к вне
ш
ним
18


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

Машинный цикл состоит из 3
-

5 машинных тактов
T
1, называемых также фун
к
ц
иональными состояниями или просто состояниями микропроцессора. Дл
и
тельность
такта равна периоду сигналов синхронизации. Продолжительность выполнения ра
з
личных команд составляет от 4 до 18 та
к
тов.

Для МП КР580 существует 10 типов машинных циклов:

1.

Извлечение

кода команды (М1).

2.

Чтение данных из памяти.

3.

Запись данных в память.

4.

Извлечение данных из стека.

5.

Запись данных в стек.

6.

Ввод данных из внешнего устройства.

7.

Вывод данных во внешнее устройство.

8.

Цикл обслуживания прерывания.

9.

Останов.

10.

Обслуживание прерываний в
режиме останова.

Первые три такта всех машинных команд унифицированы и образуют фазу а
д
ресации. Собственно адресация осуществляется в цикле
T
1. Микропроцессор выдает
сигналы на шину адреса. Источником адреса могут быть следующие внутренние р
е
гистры: програ
ммный счетчик, указатель стека, регистровые пары
B
,
D

или Н,
L
, а
также пара
W
,
Z
.

Такт Т2 отведен для проверки необходимости реакции на некоторые управля
ю
щие сигналы, влияющие на функционирование МП. В этом такте проверяются уровни
внешних сигналов готовн
ости
READY
, запроса прямого доступа к памяти
HOLD
, а
также внутреннего сигнала подтверждения останова
HLTA
. Кроме того, в такте Т2
последнего машинного цикла каждой

команды проверяется уровень внешнего сигн
а
ла запроса прерывания
INT
.

Помимо проверки управл
яющих сигналов в такте Т2 производятся следующие
действия:

если текущий машинный цикл связан с обращением к программной памяти, то
выполняется инкремент программного счетчика РС;

если текущий цикл предназначен для ввода данных в МП, то формируется си
г
нал с
читывания;

если текущий цикл связан с выводом данных из МП, то формируются соотве
т
ствующие сигналы на шине данных.

Такт Т3 отведен непосредственно для обмена информацией.

19


В тактах Т4 производятся дешифрование кода операции, необходимые внутре
н
ние передачи
и преобразования данных. Например, в тактах Т4, Т5 к
о
манд
INR

(
INX
)
и
DCR

(
DCX
) осуществляется инкремент или декремент адресуемого регистра (рег
и
стровой пары), в командах разветвлений проверяются указанные в

них условия, в та
к
те T4 команды СМА инвертируетс
я аккумулятор и т.п.

Система команд микропроцессора КР580 приведена в приложении

1
.


ПРОГРАММА

СИ
МУЛЯТОР УЧЕБНО
-
ОТЛАДОЧНОГО УСТРОЙСТВ
A

"ЭЛЕКТРОНИКА
-

580"

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

тактир
о
вания, отображает значения регистров и флагов микроп
р
о
цессора.

Для запуска программы нужно выполнить файл
Emu580_prg.exe
.


Рисунок 6

-

Главное окно программы
-
симулятора "ЭЛЕКТРОНИКА
-

580"


Для запуска программы нужно выполнить файл
Emu580_prg.exe
.


20


ЛАБОРАТОРНАЯ РАБОТА № 1
.
ИЗУЧЕНИЕ УЧЕБНО
-
ОТЛАДОЧНОГО
УС
ТРОЙС
Т
ВА

"ЭЛЕКТРОНИКА
-
580"

1.

ЦЕЛЬ РАБОТЫ

Ознакомление со структурой УОУ, распределением памяти, органами управл
е
ния и режимами работы.

2.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Учебно
-
отладочное устройство (УОУ), выполненной на базе универсальной
микроЭВМ предназначено д
ля создания различных микропроцессорных систем и для
отладки их программного обеспечения. Кроме того, оно может быть использовано
для обучения работе с микропроцессорным набором КР580.

В УОУ применен восьмиразрядный МП типа КР580ВМ80А на микросхемах т
и
па К
Р565РУ2А емкостью 2 Кбайт.

Для осуществления диалога пользователя с УОУ предусмотрены клавиатура и
цифровой дисплей, действие которых обеспечивается программой
-
монитором объ
е
мом
1

Кбайт, записанной в ППЗУ типа К573РФ2.

Монитор позволяет загрузить в ОЗУ УОУ

программу пользователя, проверить,
изменить содержимое любой ячейки памяти или регистра микропроцессора, выпо
л
нить программу пользователя в режиме отладки (в пошаговом режиме, либо с ост
а
новкой по заданным контрольным точкам), осуществить прогон программы

пользов
а
теля в автоматическом режиме. Монитор позволяет считывать программу пользов
а
теля с бытового кассетного магнитофона и записывать её на магнитофон.

Для расширения функциональных возможностей УОУ предусмотрено подкл
ю
чение к нему различных внешних уст
ройств, например, дополнительной памяти, и
н
терфейсов и т.п. Одну печатную плату можно разместить внутри УОУ, а другие мо
ж
но подключить к внешним системным разъемам.

3.

ОБЪЕКТЫ ИССЛЕДОВАНИЯ

Работа производится на учебно
-
отладочном устройстве "Электроника
-
58
0" без
дополнительных модулей и контрольно
-
измерительной апп
а
ратуры.

4.

ЗАДАНИЕ ДЛЯ ПОДГОТОВКИ

4.1.

"Электроника
-
580".

4.2.

Изучите организацию, структуру и внутренние регистры МП
КР580ВМ80А О
з
накомьтесь с описанием учебно
-
отладочного устройства.

4.3.

Озна
комьтесь с основными режимами работы УОУ.

21


5.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.

5.1.

Порядок включения УОУ

Подключите шнур питания к сети 220 В и 50 Гц, переведите тумблер "Сеть" в
положение "Вкл" и нажмите клавишу
RST
. При этом УОУ будет установлено в и
с
ходное с
остояние: в счетчик команд пользователя записывается 8200, а в указатель
стека
-

83ЕУ.

Возвращать УОУ в исходное состояние можно не только при включении, но и в
любое время при работе. При нажатии на клавишу
RST

информация, ранее записа
н
ная в ОЗУ, не измен
яется, а содержимое регистров МП обычно теряется. Счетчик к
о
манд МП и указатель стека устанавливается в исходное состояние, разрешающее пр
е
рывания по всем векторам, стирается информация о ко
н
трольных точках.

Установите переключатель "Прогон
-
Отладка" в поло
жение "Отла
д
ка".

5.2.

Исследование содержимого памяти

Методику рассмотрите на конкретном примере исследования содержимого обл
а
сти памяти с адресами 0320
-
0333.

5.2.1.

Нажмите клавишу
ADDR
, при этом на четырех левых разрядах ди
с
плея отобразится содержимое сч
етчика команд пользователя.

5.2.2.

Последовательно нажмите клавиши 0, 3, 2, 0. При нажатии первой
клавиши её код вводится в четвертый разряд дисплея, а три старших разряда обнул
я
ются. Последующие цифры записываются в младший разряд адресного дисплея с
пред
варительным сдвигом всех знаков на один разряд влево. При введении четвертой
цифры с клавиатуры на двух правых индикаторах дисплея появится содержимое а
д
ресуемой ячейки памяти вместо пробелов. В данном случае появится код В5. В случае
ошибки при введении к
ода адреса следует нажать клавишу
ADDR

и повторить ввод.

5.2.3.

Нажмите клавишу
NEXT
. При этом адрес увеличится на единицу и
на дисплее появится содержимое ячейки памяти с новым адресом. Последов
а
тельно
нажимая клавишу
NEXT
, проверьте содержимое 20 ячеек п
амяти и результаты зап
и
шите в отчет.

5.2.4.

Нажмите клавишу
MEM
. На дисплее должна появиться точка п
о
сле
шестого слева разряда. Последовательно нажимая клавишу
MEM
, убедитесь, что
каждое повторное её нажатие приводит к уменьшению на единицу адреса п
а
мяти и

появлению на дисплее содержимого по новому адресу.

5.3.

Запись информации в память.

Методику рассмотрите на примере: записать в ячейки памяти с адресами 80Е7
-
80ЕС последовательно коды 42,
FF
,
0
Е, 23, 77,
0
1.

5.3.1.

Нажмите клавишу
ADDR

и после этого набер
ите адрес 80Е7. На
индикаторе появится адрес и его старое содержимое. Нажмите клавишу МЕМ. На и
н
22


дикаторе появится точка, показывающая, что запись по индицируемому адресу во
з
можна.

5.3.2.

Нажмите клавишу 4. Убедитесь, что введенная цифра индицир
у
ется
в млад
шем разряде данного дисплея.

5.3.3.

Нажмите клавишу 2. Убедитесь при этом, что цифра 4 младшего
разряда на дисплее переместилась влево, а цифра 2 заняла её место.

5.3.4.

Нажмите последовательно клавиши 4 и 2. Проверьте, что послед
у
ющие нажатия на цифровые
клавиши приводят к вводу цифры нажатой клавиши в
младший разряд дисплея данного и смещению в старший разряд цифры пред
ы
дущей
нажатой клавиши.

5.3.5.

Нажмите клавишу
NEXT
. На индикаторе появится следующий а
д
рес 80Е8 и его старое содержимое. Для ввода новой
информации нажмите дважды
клавишу
F
, а затем клавишу
NEXT
. Далее занесите данные в последующие ячейки.
При записи в последовательные ячейки клавишу
MEM

нужно нажать только один
раз, а затем использовать клавишу
NEXT
. Как и при чтении из памяти, повторные
н
ажатия клавиши
MEM

будут уменьшать на единицу а
д
рес памяти.

Если при записи информации в память обнаружится, что в какой
-
либо ячейке
уже содержится нужный код, то не следует набирать код на клавишах, а нужно ср
а
зу
же нажать клавишу
NEXT

для перехода к сле
дующему адресу.

5.3.6.

Запишите код
1
0 по адресу 0046, опишите в отчете и объясните с
и
туацию.

5.4.

Исследование и изменение содержимого программно
-
доступных рег
и
стров микропроцессора.

5.4.1.

Нажмите клавишу
REG
, а затем клавишу с наименованием рег
и
стра, т
.е. одну из следующих:
A
,
B
,
C
,
D
,
E
,
F
,
H
. На дисплей будет выведен текущий
адрес счетчика команд пользователя, затем обозначение выбранного регистра, в ш
е
стом разряде
-

знак "тире", а в седьмом и вос
ь
мом
-

содержимое регистра. Новое с
о
держимое
регистра мож
но вводить с цифр
о
вых клавиш
сразу же, не нажимая клавишу
MEM
.

5.4.2.

Нажатие на клавишу
NEXT

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

5.5.

Исследование и изменение соде
р
жимого регистровых пар и косвен
но адресу
е
мых ячеек памяти

Для чтения содержимого регистровой пары нужно нажать клавишу
ADDR
, з
а
тем
цифровую клавишу, соответствующую выбранной регистровой паре. (Табл.
I
.
I
), и,
Таблица 1.1

Регистровая пара

Клавиша

Указатель стека

1/
P

Вершина ст
е
ка

2/T

HL

8/H

BC

B

DE

D


23


наконец, клавишу
MEM
. Содержимое регистровой пары будет выведено в разряды 1
-
4 дисплея, в разрядах 5 и 6 будет обозначение пары, а в разрядах 7 и 9
-

содержимое
ячейки с указанным адр
е
сом.

Новое содержимое косвенно адресу
-
емой ячейки можно сразу же ввести с ци
ф
ровых клавиш. Для измерения содержимого рег
и
стровой пары нужно

записать
новую информацию в каждый из регистров пары в режиме
REG

(п. 5.4).

5.6.

Выполнение демонстрационной программы.

5.6.1.

Загрузите коды команд демонстрационной программы в соотве
т
ствующие яче
й
ки ОЗУ (табл. 1.2).

5.6.2.

Введите стартовый адрес программы 8200 и

нажмите клавишу
RUN
.
Наблюдая за индикатором, определите, какие действия выполняет демо
н
страционная
пр
о
грамма.

5.6.3.

Демонстрационная программа содержит неограниченный цикл. Её
выполнение можно прервать лишь с клавиатуры. Для прекращения выполнения пр
о
г
раммы нужно нажать клавишу
RST
. Введенная программа в памяти при этом сохр
а
нится и её при необходимости можно будет запустить повто
р
но.


Таблица 1.2

СТАРШИЕ
РА
З
РЯДЫ
АДР
Е
СА

МЛАДШИЕ РАЗЯДЫ АДРЕСА

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

820

3E

00

CD

95

02

06

64

0E

05

0D

C2

09

82

05

02

07

821

82

3
C

27

C
3

02

82












5.6.4.

Скорректируйте программу, записав нуль по адресу 8212. Зап
у
стите
измененную программу с того же стартового адреса и определите, как изменились
действия программы.


6.

СОДЕРЖАНИЕ ОТЧЕТА

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

7.

ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ

7.1.

Изобразить структуру учебно
-
отладочного устройства.

7.2.

Что такое карта памяти УОУ?

7.3.

К
акие адреса памяти относятся к ОЗУ и какие к ПЗУ?

24


7.4.

Расскажите о возможных режимах работы УОУ.

7.5.

Как записать информацию в программно
-
доступные регистры МП или в
память УОУ?

7.6.

Что происходит в УОУ при попытке записи данных:

7.6.1.


в ПЗУ;

7.6.2.

в

физически отсутствующую область?

7.7.

Опишите функции каждой клавиши управления.

25


ЛАБОРАТОРНАЯ РАБОТА № 2
.
ЗАПИСЬ И ВЫПОЛНЕНИЕ ПР
О
СТЫХ
ПРОГРАММ

1.

ЦЕЛЬ РАБОТЫ

Ознакомление с принципом действия, машинными циклами и тактами микр
о
процессора КР580: изучение пр
авил записи машинных программ (в машинных к
о
дах
и мнемокодах); исследование выполнения команд пер
е
сылки байта.

2.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

ЗАПИСЬ ПРОГРАММ ПРИ
РАБОТЕ С УОУ

В УОУ "Электроника

580" предусмотрен ввод
-
вывод программ только в м
а
шинных кодах, зап
исанных в шестнадцатеричной системе счисления. Такое пре
д
ставление программ неудобно для программиста, так как затрудняет понимание и
увеличивает вероятность ошибок. Для человека более удобна символическая (мнем
о
ническая) запись программ. Поэтому на практи
ке целесообразно совмещать на одном
бланке машинные и мнемонические коды команд. Рассмо
т
рим особенности записи
программ на примере (пр
о
грамма 2.1):

ПРОГРАММА 2.1

А
Д
РЕС

МАШ.
КОД

МЕТКА

МНЕМ
О
КОД

КОММЕНТАРИИ

8148

3E B5

START

MVI A, B5

ЗАСЫЛКА КОДА В5 В А
К
КУМУ
ЛЯТОР

814
А

21 A4 82


LXI H, 82A4

ЗАСЫЛКА АДРЕСА 82А4 В
ПАРУ
HL
:

814D

77


MJV M, A

ПЕРЕСЫЛКА ИЗ АККУМ
У
ЛЯТОРА В ПАМЯТЬ ПО
АДРЕСУ ИЗ ПАРЫ
HL

814E

E7


RS14

КОНЕЦ ПРОГРАММЫ И
ВОЗВРАТ В МОНИТОР


Бланк разделен на пять вертикальных полей. В первом поле за
писывается шес
т
надцатеричный адрес ячейки памяти, в которой размещен первый байт кода команды,
а во втором поле


машинный код команды (один, два или три байта) в порядке ра
з
мещения байтов в памяти. При записи следует помнить, что в тре
х
байтных командах
во

втором байте команды записывается младший байт адреса или операнда, а в трет
ь
ем


старший.

26


В третьем поле записывается символическое имя (метка), соответствующее а
д
ресу, находящемуся в первом поле. В примере метка
START

обозначает ячейку пам
я
ти с адресом
8148. В программах метки используются в командах переходов, а также
для обозначения некоторых команд с целью повышения наглядности текстов пр
о
грамм.

В четвертом поле записывается мнемоническое обозначение соответствующей
машинной команды. Сначала записывае
тся мнемоника кода операции, а затем мнем
о
ники операндов или адресов. В этом поле двухбайтные коды принято зап
и
сывать в
привычном виде: сначала старший байт, а затем


младший.

В поле комментария записываются в свободной форме различные поясн
е
ния.

Обычно р
абота программы заканчивается командой останова (
HLT
). При отла
д
ке программ в УОУ не рекомендуется заканчивать командой останова, так как при
этом будет невозможно с помощью монитора просмотреть содержимое рег
и
стров или
памяти. Вместо команды останова лучш
е использовать команду
RST
4 (код Е7), кот
о
рая будет передавать управл
е
ние монитору.

При записи программ все числа представляются в шестнадцатеричной системе
счисления.

3.

ОБЪЕКТЫ ИССЛЕДОВАНИЯ

Работа производится на учебно
-
отладочном устройстве "Электроника



580" без
дополнительных модулей и контрольно
-
измерительной аппар
а
туры.

4.

ЗАДАНИЕ ДЛЯ ПОДГОТОВКИ

4.1.

Ознакомьтесь с принципом действия, машинными циклами и тактами
микропр
о
цессора КР580.

4.2.

Изучите правила записи машинных программ при работе с УОУ.

4.3.

Напишите программу для выполнения действий, указанных в табл. 2.1
(константы в табл. 2.1 приведены в десятичной системе счисления; скобки обознач
а
ют содержимое соответствующего регистра). Программу разместите в пересылки
байта:

MOV

RD
,
RS



перес
лать содержимое регистра
-
источника
RS

в р
е
гистр
-
приемник
RD

(команда занимает в памяти один байт; на выполнение требуется 5 та
к
тов);



27


Таблица 2.1

В
А
Р
И
Р
И
АНТ

ВЫПОЛНИТЬ УКАЗАННЫЕ ДЕЙСТВИЯ

1

31


В

49


D

128


C

(B)


A

(C)


H

(D)


E

2

95


A

108


H

212


E

(A)


B

(H)


L

B)


D

3

209


L

100


A

28


C

(L)


H

(A)


E

C)


B

4

205


D

42


H

82


E

(D)


A

(H)


B

B)


C

5

105


C

54


H

219


B

(C)


A

(H)


E

B)


D

6

99


L

185


B

197


E

(L)


D

(B)


C

E)


H

7

71


A

145


D

231


L

(A)


C

(D
)


H

L)


B

8

47


H

168


A

255


B

(H)


C

(A)


L

B)


E

9

59


C

191


L

203


E

(C)


B

(L)


A

E)


B

10

61


D

215


B

152


H

(D)


C

(B)


L

C)


A


MVI

RD
, В2>


переслать содержимое второго байта команды в р
е
гистр
-
приемник
RD

(команда занимает в памяти два байта и выполняется за 7 тактов; во
втором байте кода к
о
манды размещается константа).

4.4.

Пользуясь таблицей кодов команд, размещенной на лицевой панели
У
ОУ, запишите машинные коды команд программы. Константы пер
е
ведите из десятичной в шестнадцатеричную систему счисл
е
ния.

5.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

5.1.

Введите в УОУ разработанную программу.

5.2.

Определите содержимое регистров общего назначения (РОН).

5.3.

Установите стартовый адрес программы и запустите ее на выполн
е
ние.

5.4.

Вновь определите содержимое всех РОН процессора и проверьте пр
а
вильность решения задачи.

6.

СОДЕРЖАНИЕ ОТЧЕТА

Отчет должен содержать:

машинную и символическую программы соответствующег
о варианта зад
а
ния;

таблицу содержимого регистров до и после выполнения программы;

анализ результатов и выводы.

28


7.

ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ

7.1.

Опираясь на общую схему выполнения команды в МП КР580, объя
с
ните
процесс реализации команды
MOV

B
,
H
.

7.2.

Как р
аботают основные элементы МП при выполнении команды
MVI

D
,
F
2?

7.3.

Как определяется адрес следующей команды при разработке программы
в м
а
шинных кодах?

7.4.

Что такое метки и для каких целей они используются?

29


ЛАБОРАТОРНАЯ РАБОТА №3
.
ИЗУЧЕНИЕ СИСТЕМЫ АДРЕС
А
Ц
ИИ,
КОМАНД ПЕРЕСЫЛКИ
И
АРИФМЕТЕЧЕСКИХ ОПЕРАЦИЙ МП КР580

1.

ЦЕЛЬ РАБОТЫ

Ознакомление с системой команд МП КР580, изучение методов адресации и о
с
новных команд пересылок и арифметических операций МП.

2.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

2.1.

Классификация команд МП

Базо
вая система команд МП КР580 включает 78 простых команд. Однако многие
базовые команды порождают несколько различных вариантов, поэтому их общее чи
с
ло составляет 244. Команды принято классифицировать на несколько групп, объед
и
няя команды с аналогичным функц
иональным назначен
и
ем:

-

перемещения данных;

-

преобразования данных;

-

управления программой;

-

специальные.

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

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

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

К специальным относятся команды разрешения или запрета прерываний, ост
а
нова, о
т
сутствия операции
.

2.2.

Методы адресации в МП КР580

Методами адресации называют способы указания адресов или операндов, и
с
пользуемых при выполнении машинных команд. Если в команде используется н
е
сколько адресов, то разные адреса могут определяться различными методами адрес
а
ции. Схемы на рис.
7

поясняют способы определения операндов при различных мет
о
дах адресации


30



Рис
унок 7
-

Режимы адресации:

а


прямая адресация;

б


непосредственная адресация;

в


прямая регистровая адрес
а
ция;

г


косвенная регистровая адрес
а
ция.



31


ПОДРАЗУМЕВАЕМАЯ АДРЕ
САЦИЯ

Адрес операнда явно не содержится в адресной части кода

команды, но подр
а
зумевается в содержании соответствующей операции либо один и тот же адрес и
с
пользуется для операнда и результата операции. Например, в описании арифметич
е
ских и логических команд указано, что адресации. Схемы на рис.
7

поясняют способы
оп
ределения операндов при различных методах адресации.один из операндов и р
е
зультат операции находятся в аккумуляторе. Команды обращения к стеку используют
содержимое одного из управляющих регистров


указателя ст
е
ка.

Подразумеваемая адресация используется с

целью сокращения длины кода к
о
манды и упрощения процесса выполнения команд в проце
с
соре.

ПРЯМАЯ РЕГИСТРОВАЯ А
ДРЕСАЦИЯ

В адресной части кода команды указывается РОН (или регистровая пара), в к
о
тором находится операнд.

Прямая регистровая адресация не требуе
т обращения к памяти, поэтому к
о
манда
выполняется за минимальное время. Кроме того, для указания регистра требуется к
о
роткое поле в коде команды (в КР580


3 бита), тогда как для указания адреса п
а
мяти
требуется 16 бит.

Примеры:

MO
V

B
,
H

Содержимое регистра

Н пересылается в регистр В.

DA
D

D

К содержимому пары
HL

прибавляется содержимое пары
DE

(пара
HL

подразумев
а
ется, а пара
DE

определена явно).

ABC

H

К содержимому аккумулятора прибавляется содержимое р
е
гистра
H

и фланга переноса
CF

(регистр
H

определен я
вно, а а
к
кумулятор и фланг переноса подразумев
а
ются).


ПРЯМАЯ АДРЕСАЦИЯ

В адресной части кода команды содержится адрес операнда. Код команды с
прямой адресацией занимает в памяти три последовательных байта:

-

код операции;

-

младший байт адреса;

-

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

В мнемонической записи кодов команд адреса записываются обычным поря
д
ком: сначала старшие разряды, потом


младшие.



32


Примеры:

LDA

2314

Содержимое ячейки памяти с адресом 2314 пересылается в
акк
у
мулятор.

JMP

CONT

Адрес ячейки с символическ
им именем
CONT

пересылается
в программный счетчик МП, следовательно, управление будет п
е
редано по адресу
CONT
.


КОСВЕННАЯ РЕГИСТРОВА
Я АДРЕСАЦИЯ

В адресной части кода команды указывается регистровая пара, в которой соде
р
жится адрес операнда.

Косвенная адре
сация удобна при работе с массивами, а также необходима в тех
случаях, когда адрес операнда является результатом различных преобразований.
Наиболее часто для косвенной адресации используется пара
HL
. При симв
о
лической
записи кодов команд символом
M

(от
MEM
ORY



память) обозначают ячейку пам
я
ти, адрес которой содержится в р
е
гистровой паре
HL
.

Примеры:

MO
V

M
,
C

Содержимое регистра
C

пересылается по адресу, находящ
е
муся в паре
HL
.

AD
D

M

К содержимому аккумулятора прибавляется содержимое
ячейки памяти с адресом
, находящимся в паре
HL
; результат ост
а
ется в аккумуляторе.

STA
X

B

Байт из аккумулятора записывается в память по адресу, с
о
держ
а
щемуся в паре
BC
.


НЕПОСРЕДСТВЕННАЯ АДР
ЕСАЦИЯ

Операнд размещается непосредственно в коде команды. В системе команд МП
КР580 не
посредственный операнд может иметь длину 1 или 2 байта и разм
е
щаться
после первого байта кода команды, содержащего код операции. Если оп
е
ранд имеет
длину 2 байта, то сначала размещается младший байт, а затем старший. В мнемонич
е
ской записи байты указываютс
я в обычной порядке: сначала старший, а затем мла
д
ший.

Примеры:

LXI

B
,
1
AF
4

Загрузка пары
BC

константой 1
AF
4.

ORT

F
0

Дизъюнкция содержимого аккумулятора с константой
F
0.

33


Непосредственная адресация широко используется для указания различных ко
н
стант.

2.
3.

Команды пересылок

Основные команды пересылок представлены в таблице 3.1. Команды ввода
-
вывода и команды работы со стеком, также относящиеся к группе команд перес
ы
лок,
будут рассматриваться в других лабораторных работах.

2.4.

Команды арифметических опера
ций

Вычислительные возможности МП КР580 ограничены простыми командами
сложения и вычитания восьми битных операторов. Операции умножения и дел
е
ния, а
также операции с другими форматами данных реализуются с помощью подпрогра
м
мы, что приводит к значительному
уменьшению производ
и
тельности МП
-
системы.

Команды арифметических операций приведены в таблице 3.2.

2.4.1.

Команды с однобайтными операндами в аккумуляторе

Операнды представлены в форме целого числа со знаком в дополнительном коде
с диапазоном изменения от

128 до +127. Старший бит представляет собой знак.

В командах, в которых формируются признаки переноса или заема, операнды
рассматриваются как целые числа без знака с диапазоном изменения от 0 до 255.

Первый операнд и результат операции подразумеваются в а
ккумуляторе; вт
о
рой
операнд может находиться в любом РОН, в памяти или непосредственно в к
о
манде.
Все флаги (признаки) устанавливаются в соответствии с результатом опер
а
ции.

Команды сравнения
CMP

и
CPI

производят вычитание из содержимого аккум
у
лятора значе
ния адресуемого операнда, модифицируют по результату все флаги, но
не изменяют содержимого аккумулятора. Наличие такого неразрушающего сравн
е
ния
упрощает, например, операции поиска в массиве чисел.

Таблица 3.1.

МН
Е
МОНИ
-
КА К
О
МАНДЫ

ДВ
О
ИЧ
-
НЫЙ КОД
КОМА
Н
-
ДЫ

ВЫП
ОЛНЯЕМЫЕ ДЕЙС
Т
ВИЯ

ЧИСЛО
БАЙТ
ТАКТОВ
ЦИКЛОВ

MOV RD,RS

01
DDDSSS

ПЕРЕСЫЛКА БАЙТА ИЗ
RS

В
RD

1

1

5

MOV R,RS

01110
SSS

ПЕРЕСЫЛКА БАЙТА ИЗ
RS

В
ПАМЯТЬ ПО АДРЕСУ ИЗ
HL

1

2

7

MOV RD,M

01
DDD
110

ПЕРЕСЫЛКА БАЙТА ИЗ П
А
МЯТИ
(ПО АДРЕСУ В
HL
) В
RS

1

2

7

MVI RD,Д8

00
DD
D
110

ПЕРЕСЫЛКА БАЙТА Д8 В
RD

2

2

7

MVI

M
,
L
8

00110110

ПЕРЕСЫЛКА БАЙТА Д8 В П
А
МЯТЬ ПО АДРЕСУ ИЗ
HL

2

3

10

34


CDA

АДР

00111001

ЗАГРУЗКА АККУМУЛЯТОРА ИЗ
ПАМЯТИ С УКАЗАННЫМ АДР
Е
СОМ

3

4

13

STA

АДР

00110010

ЗАПИСЬ ИЗ АККУМУЛЯТ
О
РА В
ПАМЯТЬ ПО УКАЗАННОМУ А
Д
РЕСУ

3

4

13

LDAX
РП

00SSS010

ЗАГРУЗКА АККУМУЛЯТОРА ИЗ
П
А
МЯТИ С АДРЕСОМ ИЗ РП

1

2

7

STAX
РП

00DDD010

ЗАПИСЬ ИЗ АККУМУЛЯТОРА В
П
А
МЯТЬ ПО АДРЕСУ ИЗ РП

1

2

7

XCNG

11101011

ОБМЕН СОДЕРЖИМЫМ ПАР
DE

И
HL


1

1

4

LXI

РП, Д16

11DDD010

ЗАГРУЗКА ПАРЫ РП ДВУМЯ
БАЙТАМИ Д16
ИЗ КОДА КОМА
Н
ДЫ

3

3

10

LHLD

АДР

00101010

ЗАГРУЗКА В
HL

СОДЕРЖ
И
МОГО
ДВУХ ЯЧЕЕК ПАМЯТИ:
(АДР)

L
,(АДР+1)

H

3

5

16

SHLD

АДР

00100010

ЗАПИСЬ ИЗ
HL

В ПАМЯТЬ: (
L
)

АДР,
H

АДР+1

3

5

16


МП КР580 может производить также обработку двоично
-
десятичных чисел. В
этом

формате байт содержит две десятичные цифры (тетрады) в коде 8
-
4
-
2
-
1. Слож
е
ние таких чисел выполняется в два этапа:

операнды складываются как двоичные числа;

производится десятичная коррекция.


Однобайтная команда десятичной коррекции
DAA

в два приема корр
ектирует
значение в аккумуляторе на две десятичные цифры с правильной устано
в
кой флага
C
:

если младшая тетрада содержит число, большее 9, или установлен флаг
AC
=1,
содержимое аккумулятора увеличивается на 6;


Таблица 3.2.

МНЕМ
О

-
НИКА

М
А
ШИННЫЙ
ДВОИЧНЫЙ
КОД

ВЫПОЛНЯЕМЫЕ ДЕ
Й
СТВИЯ

ЧИСЛО
БАЙТ
ТАКТОВ
ЦИКЛОВ

КОМАНДЫ С ОДНОБАЙТНЫМИ ОПЕРАНДАМИ В АККУМУЛЯТОРЕ

35


ADD RS

10000SSS

СЛОЖЕНИЕ

1

1

4

ADD

M

10000110

1

2

7

ADI
Д
8

11000110

2

2

7

ADC RS

10001
SSS

СЛОЖЕНИЕ С УЧЕТОМ
ПЕРЕНОСА

1

1

4

ADC M

10001110

1

2

7

ACI
Д
8

11001110

2

2

7

DAA

00100111

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

1

1

4

SUB RS

10010SSS

ВЫЧИТАНИЕ

1

1

4

SUB

M

10010110

1

2

7

SUI
Д
8

11010110

2

2

7

SBB RS

10011
SSS

ВЫЧИТАНИЕ С УЧЕТОМ
ЗАЕМА

1

1

4

SBB M

10011110

1

2

7

SBI
Д
8

11011110

2

2

7

SMP RS

10
111SSS

СРАВНЕНИЕ

1

1

4

SMP

M

10111110

1

2

7

SPI

Д8

11111110

2

2

7


КОМАНДЫ С ОДНОБАЙТНЫМИ ОПЕРАНДАМИ В РЕГИСТРАХ И П
А
МЯТИ

INR RS

00SSS100

ИНКРЕМЕНТ

1

1

5

INR

M

00110100

1

3

10

DCR RS

00SSS101

ДЕКРЕМЕНТ

1

1

5

DCR

M

00110101

1

1

10







КОМА
НДЫ С ДВУХБАЙТНЫМИ ОПЕРАНДАМИ

INX
РП

00SSS011

ИНКРЕМЕНТ

1

1

5

DCX

РП

00
SSS
011

ДЕКРЕМЕНТ

1

1

1

DAD

РП

00
SSS
001

ПРИБАВЛЕНИЕ СОДЕ
Р
ЖИ
-

МОГО ПАРЫ РП К С
О
ДЕР
-

ЖИМОМУ П
А
РЫ
HL
.

1

3

10


если после этого старшая тетрада аккумулятора содержит число, большее 9, ил
и
если установлен флаг
C
, то в старшую тетраду прибавляе
т
ся 6.

Следует специально подчеркнуть, что команда
DAA

не корректирует вычит
а
ния.

2.4.2.

Команды с однобайтными операндами в регистрах и п
а
мяти

Эти команды увеличивают или уменьшают на единицу содержи
мое любого
РОН, аккумулятора или ячейки памяти, адресуемой через пару
HL
. Содержимое а
к
кумулятора при этом не изменяется. Модифицируются все флаги, кроме флага
C
.

2.4.3.

Команды с двухбайтными операндами в регистровых п
а
рах

36


Операндами является содержимое р
егистровых пар в формате целого числа без
знака. Значения всех флагов не изменяются, только команда
DAD

модифицир
у
ет флаг
переносов
C
.

3.

ОБЪЕКТЫ ИССЛЕДОВАНИЯ

Работа проводится на учебно
-
отладочном устройстве «Электроника
-
580» без д
о
полнительных модулей и
контрольно
-
измерительной аппарат
у
ры.

4.

ЗАДАНИЕ ДЛЯ ПОДГОТОВКИ

4.1.

Ознакомьтесь с системой команд МП КР580, изучите методы адрес
а
ции,
которые можно использовать в командах при разработки машинных программ. Озн
а
комьтесь с командами перес
ы
лок.

4.2.

Составьт
е программу 3.1 для выполнения действий, описанных в соо
т
ветствующей строке таблицы 3.3, не используя косвенную адр
е
сацию.

4.3.

Составьте программу 3.2 для того же варианта с использованием косве
н
ной а
д
ресации.

Таблица 3.3.

В
а
риант

Выполнить указанные дей
ствия

1

85+101

8251 31
-
14

D (8251)+1

8251 (D)

8252 (8251) +(D)

B

2

22
-
76

C (A)+41

8301 (C)+1

8302 121

D (D)
-
(C)

8303

3

99

E (E)
-
22

80C4 51

D (D)

(E)

80C3 (DE)+(HL)

HL

4

(2F1)

B 44+59

C (B)
-
(C)

8010 (C)
-
2

8011

120

8012

5

37+52

8320 21

B (B) +41

83
21 (A)
-
(B)

8322 (8321)+17

8323

6

78C4

DE 26
-
18

H 31+4

l (DE)+(HL)

HL (H)

80FA

7

127
-
74

C (C)
-
14

80E4 66
-
(C)

(D) (B)+(D)

80E3 (C)+(D)

80E2

8

(17A)

E (E)+1

826E 98+5

826
Г

(E)
-
4

826
-
62

826C

9

18+81

C 42
-
37

D (C)+(D)

8341 (C)
-
(D)

8342 (C)+2

8343

10

110
-
93

D (D)+27

B (D)+18

800A (A)+
1

8009 (B)
-
8
-
(C)

8007

5.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

5.1.

Занесите программу 3.1 в память УОУ, определите начальное содерж
и
мое всех программно
-
доступных регистров, установите стартовый адрес пр
о
граммы.

5.2.

Выполните программу
3.1 и определите содержимое всех програ
м
мно
-
доступных регистров. Результаты занесите в таблицу. Проверьте правильность раб
о
ты программы.

37


5.3.

Аналогично исследуйте программу 3.2.

5.4.

Сравните программы по занимаемой памяти и времени выпо
л
нения.

6.

СОДЕРЖА
НИЕ ОТЧЕТА

Отчет должен содержать:

текст программы 3.1;

содержимое регистров и используемых ячеек памяти до и после выполнения
программы 3.1;

текст программы 3.2;

содержимое регистров и используемых ячеек памяти до и после выполнения
программы 3.2;

характе
ристики программ;

выводы.

7.

КОНТРОЛЬНЫЕ ВОПРОСЫ

7.1.

Объясните различие между прямой и непосредственной адр
е
сацией.

7.2.

Объясните различие между прямой и косвенной адресацией.

7.3.

Укажите все методы адресации, используемые при составлении пр
о
граммы 3.2.

7.4.

Какие форматы чисел предусмотрены в системе команд МП КР580?

7.5.

Как осуществляется десятичная коррекция?

38


ЛАБОРАТОРНАЯ РАБОТА №4
.
ИЗУЧЕНИЕ РАБОТЫ КЛАВИАТУРЫ И
ДИСПЛЕЯ УОУ

1.

ЦЕЛЬ РАБОТЫ

Исследование методов подключения и организации обмена информаци
ей с
устройствами ввода
-
вывода УОУ: клавиатурой и светодиодным дисплеем.

2.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ.

ВВОД
-
ВЫВОД ИНФОРМАЦИИ

К командам ввода
-
вывода МП КР580 относятся команды:

IN ПОРТ;

OUT ПОРТ.

Команды ввода
-
вывода занимают в памяти 2 байта, выполняются за

3 маши
н
ных
цикла(10 тактов). Состояние всех флагов не изменяется.

При выполнении команд IN ПОРТ микро ЭВМ считывает код из входного
устройства с адресом ПОРТ и записывает его в аккумулятор. При выполнении к
о
манды ОUТ ПОРТ микропроцессор записывает код

из аккумулятора в выходное
устройство адресом ПОРТ. Так как адрес устройства указывается в одном байте, то
с помощью этих команд микро ЭВМ может обмениваться информацией не более чём
с 256 внешними устройствами вывода и 256 внешними устройствами ввода.

Адрес
внешнего устройства выдается на шину адреса ША одновременно и в мла
д
шем и в
старшем байтах кода адреса.

Реализация ввода
-
вывода с помощью специальных команд называется изолир
о
ванным вводом
-
выводом. Здесь: адресное пространство портов отделено от ад
ресн
о
го пространства памяти. При организации в МП
-
системах ввода
-
вывода, отображе
н
ного на память, порты ввода
-
вывода считаются ячейками с определе
н
ным адресами.
Следовательно, все команды, адресующие порты, становятся к
о
мандами ввода
-
вывода и специал
ь
ные к
оманды не нужны.

В УОУ операции ввода
-
вывода, а клавиатурой, магнитофоном и индикаторным
схемами на .светодиодах осуществляются через универсальный параллельный инте
р
фейс на БИС КР580ВВ55 (рис.
8
) в режиме программного обмена информ
а
цией.

Порт А используе
тся для ввода информации от клавиатуры, порт В
-

для ввода
информации от магнитофона через модем, а порт С
-

для вывода

39



Рис
унок

8
-

Схема программного ввода
-

вывода информации в УОУ

информации на индикаторные схемы ИС, дли выд
ачи сигналов управления на
клавиатуру, для выдачи сигналов разрешения работы монитора и дисплея, а также для
вывода информации на магнитофон. Порт с адресом 03 используется для пер
е
дачи в
БИС управляющего слова, которое определяет режим и напра
в
ление работ
ы каждого
информационного порта. Монитор УОУ программирует порты А и В на ввод инфо
р
мации, а порт С
-

на вывод.

КЛАВИАТУРА

При организации ввода информации с клавиатуры микро ЭВМ необходимо р
е
шить следующие задачи: I) определение факта нажатия клавиши на к
лавиатуре; 2)
нахождение номера начатой клавиши; 3) осуществление передачи управления на с
о
ответствующую подпрограмму.


40



Рис
унок 9
-

Схема подключения клавиатуры к параллельному интерфейсу

В УОУ используется самый распростране
нный в настоящее время метод орган
и
заций клавиатуры, при котором клавиши образуют прямоугольную ма
т
рицу n*m (в
УОУ
-

8 строк и 3 столбца). Клавиатура подключена к системному каналу через ун
и
версальный параллельный интерфейс ИПР, выполненный на БИС КР580ВВ5
5. Схема
подключения клавиатуры приведена на рис.
9
.

На линии 4,5,6 порта выдаются сигналы опроса столбцов клавиш, а через л
и
нии
0
-
7 порта А производится ввод сигналов от строк.

Для определения факта нажатия хотя бы одной клавиши достаточно на все ве
р
тикальные линии подать сигналы низкого уровня. Если не нажата ни одна кл
а
виша,
41


то на всех горизонтальных линиях благодаря резисторам RО...R7 будут сигналы в
ы
сокого уровня. Код состояния шин строк в этом случае состоит из одних единиц, а
инвертированный код

-

из нулей.

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

Более сложной является задача определения номера нажатой клавиши. Для этого
ну
жно последовательно выдавать на одну из вертикальных шин низкий уровень си
г
нала при высоком уровне на остальных вертикальных шинах и опрашивать состо
я
ние горизонтальных шин. Номер нажатой клавиши в соответствующем столбце опр
е
деляет номер разряда кода
, содержащего нуль. Порядковый номер нажатой кл
а
виши
Nk определяется по номерам строки Ng и столбца Nv:

Nk = NV*8 + Ng

Нумерация строк и столбцов начинается с нуля.

СЕГМЕНТНЫЙ
СВЕТОДИОДНЫЙ

ДИСПЛЕЙ

Информация в символьной форме для удобного восприятия ее че
ловеком ос
у
ществляется в УOУ с помощью восьмиразрядного дисплея, состоящего из восьмисе
г
ментных светодиодных индикаторов. Каждый индикатор (рис.
10
) имеет 7 светоди
о
дов для отображения сегментов символов, а восьмой светодиод отображает десяти
ч
ную точку. Ин
дикатор может отображать цифры от 0 до 9, а также н
е
которые буквы.

'Для уменьшения числа электронных элементов, необходимых для подключ
е
ния
дисплея к ЭВМ, в УОУ использован мультиплексный режим работы индикаторов.
При этом код индицируемого символа подаетс
я параллельно на все индикат
о
ры, но в
каждом периоде срабатывает только один индикатор, на который пост
у
пает сигнал
выборки позиции.

Если чередовать включение индикаторов, с достаточно больший частотой., то
мерцания становятся незаметными, и получается ус
тойчивое изображение информ
а
ции на дисплее.

Иногда управление дисплеем ведут с помощью специальной программы. Такой
вариант приводит к простой схеме подключения дисплея, но требует отвлеч
е
ния МП
от выполнения программ пользователя: несколько сотен раз в се
кунду для выдачи
информации на дисплей.

В УОУ используется принципиально иной режим управления дисплеем
-

р
е
жим
прямого доступа памяти (ПДП), при котором схема усложняется, но МП освобожд
а
ется от выдачи управляющих сигналов на дисплей. Схема организац
ии работы ди
с
плея в режиме ШЩ приведена на рис.
11
.

Генератор импульсов П задает частоту смены изображений на индикаторе
1200.Гц. Блок местного управления БМУ запускается от ГИ и вырабатывает серий
управляющих сигналов, обеспечивающих работу индик
аторов в режиме ПДП

42


Для связи программ пользователя или монитора с дисплеем выделена специал
ь
ная область памяти с адресами 8ЗГ8
-

83ГГ, причем в ячейке 83Г8 соде
р
жится код для
крайней левой позиции дисплея, а в ячейке 83ГГ
-

для правой крайней.


Код




Код Е6 = (11100110)
2

Код 77 = (01110111)
2






Символ 4.


Символ А

Рис
унок 10
-

Световой индикатор:

а
-

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

б и в
-

примеры символов

Счетчик позиций дисплея выдает код текущей позиции, который расшифров
ы
ва
ется дешифратором ДШ и открывает соответствующий ключ выбора позиций ди
с
плея. Схема выдачи адреса формирует адрес текущей ячейки памятииндикаторов п
у
тем слияния (конкатенации) фиксированных старших разрядов с содержимым сче
т
чика изоляции дисплея.

7 6 5 4 3 2
1 0

43



Рис
унок 11
-

Организация работы дисплея в режиме ПДП

44


Узел ПДП запускается каждым импульсом ГИ при наличии разрешающего си
г
нала с линии 7 порта с параллельного интерфейса ИПР и выполняет следующие де
й
ствия:

1.

Счетчик позиции дисплея, деш
ифратор ДШ и ключи вырабатывают сигнал
выборки очередной позиции дисплея.

2.

БМУ формирует сигнал запроса прямого доступа к памяти

HOLD который по шине управления ШУ поступает на мп.

3.

МП реагирует на сигнал HOLD в определенном месте машинного цикла п
у
те
м выдачи сигнала разрешения прямого доступа HLDA и перевода, внутренних б
у
феров шин адреса и данных в третье (высокоомное) состояние. Тем самым МП о
т
ключается от внешних шин

ША и ШД

4.

БМУ воспринимает сигнал HLDA, выдает команду на перевод

буферов сист
емных шин БА и БД в высокоомное состояние, освобо
ж
дая

системные шины ША ШД.

5.

БМУ формирует сигнал выдачи адреса очередной ячейки памяти индикат
о
ров на системную шину адреса ША; этот адрес поступает в оперативное запомина
ю
щее устройство ОЗУ; память выдает

на ЩД содержимое адресуемой ячейки.

6.

По сигналу БМУ производятся прием кода с ШД и занесение его в регистр
кода символа.

7.

БМУ снимает сигнал запроса ПДП HOLD; МП в ответ снимает сигнал ра
з
решения HLDA и подключается к шинам адреса и данных, чтобы про
должить выпо
л
нение программы.

8.

БМУ снимает сигнал отключения буферов БА и БД; тем самым соедин
я
ются
канал МП и системный канал.

9.

Сигналы с выходов РКС открывают соответствующие ключи и подают си
г
налы высокого уровня на шины тех сегментов, которые должн
ы светиться на выбра
н
ном индикаторе. Таким образом, один из индикаторов дисплея будет отображать си
м
вол до появления н
о
вого импульса ГИ.

45


Узел ПДП в каждом периоде индикации захватывает системные шины только на
один такт синхронизации МП.

ИСПОЛЬЗОВАНИЕ КЛА
ВИАТУРЫ И ДИСПЛЕЯ В
ПРОГРАММЕ ПОЛЬЗОВАТ
Е
ЛЯ

Для использования клавиатуры нужно с помощью команд ввода
-
вывода обесп
е
чить выдачу сигналов на вертикальные шины матрицы клавиш через линии 4,5,6 по
р
та С (адрес. 02) и прием кода состояния горизонтальных шин через

порт А (а
д
рес 00).
Следует помнить, что нажатой клавише соответствует нуль в разряда пр
и
нятого кода.

Определение нажатой клавиши необходимо обеспечить в программе пользов
а
теля.

Для выдачи информации на дисплей нужно сформировать коды индициру
е
мых
си
мволов и занести их, а соответствующие ячейки памяти индикаторов (адр
е
са 83F8
-

83FF), а также выдать единичный сигнал разрешения работы дисплея ч
е
рез линию 7
порта С.

В коде символа нули должны соответствовать погашенным сегментам, един
и
цы
-

светящимся. С
оответствие сегментов индикатора разрядам кода символа пок
а
зано
на рис.
11
.

Примеры

Простейшая программа ввода
-
вывода, осуществляющая перезапись кода с кл
а
виатуры на младший разряд дисплея, приведена ниже.

Программа 4.1

А
Д
РЕС

М
А
ШИ
Н
ШИ
Н
НЫЙ
КОД

МЕ
Т
КА

МНЕМ
О
НИКА

К
ОММЕНТАРИЙ

8200

21 FF 83


LXI H,83FF

Засылка в пару не адреса мла
д
шего разряда индикатора

8203

3E E0


MVI A,E0

Выдача сигнала разрешения р
а
боты дисплея и подключение
клавиш 0…7

8205


D3 02


OUT 02


8207

DB 00

CONT

IN

00

Ввод с клавиатуры

8209

2
F


CMA

Инверсия аккумулятора

820A

77


MOV M,A

Запись в регистр дисплея

820B

C3 07 B2


JMP

CONT

Переход на продолжение цикла


При нажатии любой клавиши с обозначением от 0 до 7 (или их произвольной
комбинации) на индикаторе должны засветиться соответст
вующие сегменты. Кома
н
46


да инверсии СМА по адресу 8209 необходима вследствие того, что клавиатура УОУ
имеет инверсный выход: код нажатой клавиши равен нулю, а отжатой
-

ед
и
нице.

Программа 4.2 вводит код с клавиш 0
-

7, подсчитывает число нажатых кл
а
виш
из г
руппы 4
-

7 и выводит соответствующую цифру на второй слева индикатор ди
с
плея.

Программа 4.2

А
Д
РЕС

МАШИ
Н
НЫЙ КОД

МЕ
Т
КА

МНЕМОН
И
КА

КОММЕНТАРИЙ

8200

3E E0


MVI A,E0

Подготовка клавиатуры

8202

D
302


OUT

02

Подготовка дисплея

8204

DB 00

LOOP

IN 00

Ввод с кл
авиатуры

8206

2F


CMA


8207

67


MOV H,A

Пересылка кода в
H

8208

AF


XRA A

Очистка аккумулятора

8209

6
F


MOV L,A




Сдвиг кода влево на
4 разряда с суммир
о
ванием единиц пер
е
носа



820A

29


DAD H

820B

8D


ADC L

820C

29


DAD H

820B

8D


ADC
L

820C

29


DAD H

820D

8D


ADC L

820F

8D


ADC L

8210

29


DAD H

8211

8D


ADC L

8212

26 80


MVI H,80

Формирование адр
е
са в

таблице кодов си
м
волов и
з
а
несение его в
HL

8214

66 40


ADI 40

8216

6F


MOV L,A

8217

7E


MOV A,M

Занесение кода симво
ла в п
а
мять индикатора

8218

32 FA 83


ST 83BA

821B

C3 04 B2


JMP LOOP


8040

3F 06 5B 4F
66



Таблица кодов символов 0…4


ПОЯСНЕНИЯ К ПРОГРАММ
Е 4.2

Для сдвига кода влево с передачей выдвигаемого разряда во флаг С использов
а
на команда DAD H, т.к. сдвиг
влево двоичного кода эквивалентен у
д
воению.

47


Суммирование значений флага переноса осуществляется командой АDС L, пр
и
чем регистр предварительно, сброшен в нуль. Сумма получается в аккумулят
о
ре.

Для индикации числа нажатых клавиш в виде соответствующей

ц
ифры составлена таблица кодов символов 0
-
4 и размещена в памяти адреса
8040.

После подсчета числа нажатых клавиш в паре HL формируется

адрес и через аккумулятор код соответствующей цифры передается в ячейку п
а
мяти заданного индикатора дисплея.

3.

ОБОРУДОВАНИЕ

Работа проводится на учебно
-
отладочном устройстве "Электроника
-
580" без д
о
полнительных модулей и контрольно
-
измерительной аппарат
у
ры.

4.

ЗАДАНИЕ ДЛЯ ПОДГОТОВКИ

4.1.

Изучите команды ввода
-
вывода МП КР580 и основные способы адрес
а
ции портов

ввода
-
вывода в МП
-
системах.

4.2.

Изучите метод ввода информации с клавиатуры и выдачи на сегмен
т
ный
дисплей.

4.3.

Разработайте программу 4.3 выдачи на дисплей УОУ заданного препод
а
вателем варианта сообщения из табл. 4.1.

Таблица 4.1

В
А
Р
И
Р
И
АНТ

ЗАДАНИЕ

В
А
Р
И
Р
И
АНТ


ЗА
ДАНИЕ

1

2

3

4

5

ГР. (номер группы)

ДАТА В ФОРМАТЕ ДД
-
ММ
-
ГГ

ПРОБА 4

ГОД (год)

ГРУППА 5

6

7

8

9

10


ОПРОС

ПРОГРАММА 4.1

ПЕРЕНОС

ERROR

43

FLAG

P
-
1


4.4

Разработайте программу 4.4 для варианта
-
задания из табл. 4.2


48


Таблица 4.2

В
А
РИАНТ

ЗАДАНИЕ

1



2


3



4


5


6



7


8



9


10

Выдать на второй справа индикатор шестнадцатиричную цифру,
соответствующую двоичному коду, введенному с кл
а
виш 0
-
3

Если нажата клавиша 6, то в старшую позицию дисплея в
ы
вести
цифру 6, иначе символ "
-
" (тире)

Принять код с клавиш режимов

(кроме
RST
), подсчитать число
нажатых клавиш и вывести соответствующую цифру на четве
р
тый справа инд
и
катор

Выдать на шестой и седьмой индикаторы символы, отобража
ю
щие состояние соответствующих кл
а
виш

Если нажата клавиша Н, то во все позиции дисплея вывест
и си
м
вол Н, иначе


нули

Принять код с клавиш 0
-
7, подсчитать число нажатых кл
а
виш с
четными номерами и вывести соответствующую цифру на тр
е
тий слева индикатор
left

i
n
dicator

В четвертую слева позицию дисплея вывести символ А, если
нажата клавиша
ADDR
, ина
че
-

символ Е

Выдать на третий слева индикатор латинскую букву, номер к
о
торой соответствует двоичному коду, введенному с клавиш 0
-
2
(
ABCDEFGH
)

Если нажата клавиша
ADDR
, то вывести на дисплей слово А
Д
РЕС, ин
а
че
-

пробелы

Выдать на второй индикатор символ
U
,

если одновременно
нажаты клавиши 0,1,3, не нажата клавиша 2, иначе
-

символ
D

(для учета не нажатой клавиши использовать команду инверсии
флага
C

-

СМС
-

код 3
F
)


5.

ПРОГРАММА ВЫПОЛНЕНИЯ РАБОТЫ

5.1.

Введите в память УОУ программу 4.3, разработанную при
подготовке,
запустите ее и проверьте правильность работы.

5.2.

Исследуйте программу 4.4.

6.

СОДЕРЖАНИЕ ОТЧЕТА

Отчёт должен содержать:

тексты программ 4.3 и 4.4;

анализ результатов и выводы.

49


7.

КОНТРОЛЬНЫЕ ВОПРОСЫ

7.1.

Каковы преимущества и недостатки реж
има прямого доступа к пам
я
ти?

7.2.

Какие методы адресации устройств ввода
-
вывода могут быть использ
о
ваны в системах на базе МП КР580? Их достоинства и недостатки.

7.3.

Объясните принцип и составьте блок
-
схему обслуживания матричной
клавиатуры.

7.4.

Как раб
отает узел ПДП УОУ?

7.5.

Что нужно предусмотреть в программе пользователя для использов
а
ния
клавиатуры?

7.6.

Как в программе пользователя вывести информацию на дисплей УОУ?

50


ЛАБОРАТОРНАЯ РАБОТА № 5
.
ЛОГИЧЕСКИЕ ОПЕРАЦИИ И

ОРГАНИЗАЦИЯ УСЛОВНЫХ ПЕРЕХ
О
ДОВ

1.

Ц
ЕЛЬ РАБОТЫ

Изучение команд логических операций и передачи и передачи управления; из
у
чение программных способов поразрядной обработки данных и организации усло
в
ных переходов в УОУ.

2.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

КОМАНДЫ ПЕРЕДАЧИ УПР
АВЛЕНИЯ

К окончанию текущей, т
очнее


после выборки команды из памяти в програм
м
ном счетчике РС сформирован адрес следующей по порядку команды. При ест
е
ственном порядке выполнения команды, соответствующем простейшим л
и
нейным
программам, производятся выборка и исполнение этой следующей
команды и т.д.
Однако линейные прикладные программы на практике не встречаются. В разветвле
н
ных и циклических программах, а также при использовании подпр
о
грамм приходится
выполнять не следующую по порядку команду, а команду, находящуюся в другой
ячейке про
граммной памяти. Для этого достаточно загрузить в РС адрес новой яче
й
ки, называемый адресом перехода. Такая процедура называется передачей управл
е
ния, специальные команды, которыми она реализуется, называются командами
управления программой. В системе кома
нд МП КР580 предусмотрен обширный
набор команд передачи управления (табл.

5.1).

Команды безусловной передачи управления загружают в РС адрес перехода.
Старое содержимое РС теряется.

Команды условной передачи управления осуществляют переход только при уд
о
вл
етворении некоторого условия, заданного в коде операции. Если условие не уд
о
влетворяется, то передачи управления не происходит, а выполняется следу
ю
щая по
порядку команда.

Таблица 5.1

МНЕМ
О
НИКА
КОМА
Н
ДЫ

МАШИ
Н
НЫЙ КОД

ВЫПОЛНЯЕМЫЕ
ДЕЙСТВИЯ

ЧИСЛО

б
айт

тактов

циклов

JMP addr

11000011

Переход по указа
н
ному
адресу

3

3

10

PCHL


11101001

Переход по адресу из
HL

1

1

5

JZ

addr

1101010

По нулю

3

3

10

JNZ

addr

11000010

Не по нулю

3

3

10

JC

addr

11011010

По наличию пер
е
носа

3

3

10

51


J
NC

addr

11010010

По отсутствию перен
о
са

3

3

10

JPO

addr

11100010

По четному числу ед
и
ниц в коде

3

3

10

JPE

addr

11101010

По нечетному числу
единиц в коде

3

3

10

JP

addr

11110010

По знаку плюс

3

3

10

JM

addr

11111010

По знаку минус

3

3

10


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

Ре
гистр флагов имеет пять разрядов, каждый из которых устанавливается по
определенному правилу в соответствии с выполнением МП последней команды. Эт
и
ми разрядами являются:

1.

Разряд переполнения (переноса) С
-
CARRY
. В него записывается 1, если при
выполнении
арифметической команды или команды сдвига было переполнение акк
у
мулятора, в противном случае в разряд записыв
а
ется нуль.

2.

Разряд знака
S
-
SIGN
. В него записывается 1, если при выполнении арифм
е
тической или логической команды в старшем (седьмом) разряде ак
кумулятора зап
и
сана единица, в противном случае в разряд запис
ы
вается нуль.

3.

Разряд нулевого результата
Z
-
ZERO
. В него записывается 1, если при в
ы
полнении арифметической или логической команды во всех разрядах кода в аккум
у
ляторе имеются нули, в противно
м случае в разряд зап
и
сывается нуль.

4.

Дополнительный разряд переполнения АС
-
AUX
.
CARRY
. В него записыв
а
ется 1, если при выполнении команд в аккумуляторе возникает единица п
е
реноса из
третьего разряда.

5.

Разряд паритета
P
-
PARITY
. В него записывается 1, ес
ли при выполнении
команды количество единиц в разрядах аккумулятора будет че
т
ным.

При выполнении команд условных переходов микропроцессор проверяет сост
о
яние соответствующего разряда регистра признаков. Если при проверке сост
о
яние
разряда регистра призн
аков условие не подтверждается, то выполняется сл
е
дующая
по порядку команда программы. Если условие подтверждается, то происходит пер
е
ход по адресу, содержащемуся во втором и в третьем байтах команды условия пер
е
хода. Все восемь команд условных переходов т
рехбайтные: первый байт соде
р
жит
52


код операции, второй и третий байты


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

КОМАНДЫ ЛОГИЧЕСКИХ О
ПЕРАЦИЙ И СДВИГОВ


Рисунок
12
-

Схемы команд сдвигов

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

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

Команды логических операций и сдвигов приведены в табл.5.2. Характер сдв
и
гов поя
сняет рис.
12


Таблица 5.2

МН
Е
МОН
И
КА К
О
МАНДЫ

МАШИ
Н
НЫЙ КОД

ВЫПОЛНЯЕМЫЕ


ДЕ
Й
СТВИЯ

ЧИСЛО

байт

та
к
тов

ци
к
лов

ANA RS

10100SSS

}
КОНЬЮНКЦИЯ

1

1

4

ANA M

10100110

1

2

7

ANT
Д
8

11100110

2

2

7

ORA RS

10110SSS

}
ДИЗЪЮНКЦИЯ

1

1

4

53


ORA M

10110110

1

2

7

CRI
Д
8

11110110

2

2

7

XRA RS

10101
SSS

}
НЕЭКВИВАЛЕНТНОСТЬ (СЛ
О
ЖЕНИЕ ПО МОДУЛЮ 2)

1

1

4

XRA

M

10101110

1

2

7

XRI

Д8

11101110

2

2

7

CMA

00101111

Инверсия аккумул
я
тора

1

1

4

RLC

00000111

Циклический сдвиг вл
е
во

1

1

4

RRC

00001111

Циклический сдвиг впр
а
во

1

1

4

RAL

00010111

Сдвиг влево с пер
е
носом

1

1

4

RAR

00011111

Сдвиг вправо с пер
е
носом

1

1

4

STC

00110111

Установка флага п
е
реноса
в единицу

1

1

4

CMC

00111111

Инверсия флага пер
е
носа

1

1

4

БИТОВЫЕ ОПЕРАЦИИ

При программировании операций управления ил
и контроля часто возникает
проверять или изменять состояние отдельных битов многозарядных кодов. Для пр
о
ведения битовых операций в систему команд микропроцессора КР580 введены лог
и
ческие команды, команды сдвигов и к
о
манды с флагом переноса С.

Изменение сос
тояния отдельных разрядов кода в аккумуляторе производится л
о
гической командой, вторым операндом которой является специально сформирова
н
ный код маски:

очистка разряда


логическое умножение (или конъюнкция)


очищает разряд
кода, если в соответствующем раз
ряде маски записан нуль, и не изменяет его, если в
разряде маски записана 1;

установка разряда


логическое сложение (или дизъюнкция) устанавливает ра
з
ряд кода в 1, если в соответствующем разряде маски записана 1, и не измен
я
ет его,
если в разряде маски за
писан нуль;

инверсия разряда


логическое «исключающее или» (неэквивалентность, слож
е
ние по модулю 2) инвертирует содержимое разряда кода, если в соответствующем
разряде маски записана 1, и не изменяет его, если в этом разряде маски записан нуль.

При выпо
лнении всех логических команд формируется разряды
Z
,
S
,
P
,
AC

рег
и
стра признаков (в разряд С записывается нуль). Это позволяет проверять с
о
стояние
любого разряда кода в аккумуляторе и выполнять условные переходы в программе.

Примеры выполнения логических к
оманд приведены в
табл. 5.3.



54


Таблица 5.3

КОМАНДА

КОД В АККУМУЛ
Я
ТОРЕ

МАСКА

РЕЗУЛ
Ь
ТАТ

ANI OF

10011101

00001111

00001101

ANI 40

01100110

01000000

01000000

ANI 55

11101001

01010101

01000001

ORI OF

10011101

00001111

10011111

ORI 40

01100110

01000000

0110
0110

ORI 55

11101001

01010101

11111101

XRI OF

10011101

00001111

10010010

XRI 40

01100110

01000000

00100110

XRI 55

11101001

01010101

10111100


Программа для экспериментального исследования логических команд (програ
м
ма 5.1) позволяет принять код с клави
ш 0


7 клавиатуры в аккумулятор, провести л
о
гическую операцию и результат выдать на крайний левый индикатор. Код маски для
логической операции записывается по адресу 820В.

Программа 5.1

АДРЕС

КОД

МЕ
Т
КА

МНЕМОКОД

КОММЕНТАРИЙ

8200

21 FF 83


LXI H,83FI

Подго
товка клави
а
туры и дисплея

8203

3E E0


MVI A,E0

8205

D3 02


OUT 02


8207

DB 00

CUNI

IN 00

Ввод с клавиатуры

8209

2F


CMA


820A

E6 F0


ANI F0

Логическая опер
а
ция
с маской
F0=(11110000)

820C

77


MOV M,A

Запись результата в
регистр дисплея

820D

C3 07
82


JMP CONT

На продолжение


Ниже приведена программа 5.2, в которой используются и логические кома
н
ды
и команда условного перехода. Это программа опрашивает клавиши 0


7 и п
е
редает
на дисплей символ, соответствующий состоянию клавиши 4: 0


отпущена, 1


наж
а
та.



55


ПРОГРАММА 5.2

АДРЕС

КОД

МЕТКА

МНЕМ
О
КОД

КОММЕНТАРИЙ

8200

21 FF 83


LXI H,83FI

Подготовка клавиат
у
ры и
дисплея

8203

3E E0


MVI A,E0

8205

D3 02




8207

DB 00

LOOP

IN 00

Ввод с клавиатуры

8209

2F


CMA


820A

E6 10


ANI I0

Проверка разряда

8
20C

3E 06


MVI A,06

Код символа 1

820E

C2 13 82



Если клавиша 4 не наж
а
та

8211

F6 3F


ORI 3F

То формирование кода
символа

8213

77


MOV M,A

Запись в регистр ди
с
плея

8214

C3 07 82


JMP LOOP

На повторение

3.

ОБОРУДОВАНИЕ

Работа проводится на у
чебно
-
отладочном устройстве без дополнительных мод
у
лей и контрольно
-
измерительной аппаратуры.

4.

ЗАДАНИЕ ДЛЯ ПОДГОТОВКИ

4.1.

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

4.2.

Ознакомьтесь с разр
ядами регистра признаков МП и правилами записи
на них 1.

4.3.

Изучите команды условной передачи управления МП.

4.4.

Ознакомьтесь с программами 5.1, 5.2.

4.5.

Самостоятельно разработайте программы:

а) выдачи на дисплей символа Ч, если нажата хотя бы одна из

клавиш 0, 2,
4, 6, и символа Н в противном случае (программа 5.3);

б) выдачи на дисплей либо символа
F
, если одновременно нажаты одна из
клавиш 0


3 и одна из клавиш 4


7, либо символа 0 в противном случае (пр
о
грамма
5.4).

56


4.6.

Видоизмените программу 5.
2 так, чтобы на дисплей выдавалась 1, если
численное значение принятого от клавиатуры кода превышало 9, и 0


в проти
в
ном
случае (программа 5.5).

5.

ПРОГРАММА ВЫПОЛНЕНИЯ РАБОТЫ

5.1.

Исследование программы 5.1.

5.1.1.

Ввести программу 5.1, осуществить пуск
и исследовать результат ее
выполнения по светящимся сегментам дисплея.

5.1.2.

Заменяя в программе 5.1 команду
ANI

на команды
ORI
(
F
6),
XRI
(
EE
), исследовать результат ее выполнения.

5.1.3.

Заменяя в программе 5.1 команду
ANI

на команды
AMT

A
(
A
7),
ORA

A
(
B
7),
XRA

A

(
AF
) совместно с командой
NOP

(код 00), исследовать резул
ь
тат
ее выполнения.

5.2.

Исследование программы 5.2

5.2.1.

Ввести в УОУ программу 5.2, осуществить пуск и убедиться, что
при ее выполнении УОУ реагирует лишь на состояние клавиши 4.

5.2.2.

Ввес
ти программу 5.5, запустить ее и исследовать.

5.3.

Исследование программ 5.3, 5.4

Исследование этих программ провести самостоятельно.

6.

СОДЕРЖАНИЕ ОТЧЕТА

Отчет должен содержать: самостоятельно разработанные и исследованные в
процессе выполнения лабораторн
ой работы программы, указанные в пп. 5 и 6 зад
а
ния
для подготовки.

7.

КОНТРОЛЬНЫЕ ВОПРОСЫ

7.1.

Как сформировать код маски для очистки заданных разрядов к
о
да?

7.2.

Как занести единицы в заданные разряды двоичного кода?

7.3.

Как осуществить переход по знаку
числа, находящегося в ячейке п
а
мяти?

7.4.

Как осуществить переход по нулю в регистре Е?

7.5.

Как проверить состояние младшего разряда кода в регистре С:

а) с помощью логических команд;

б) с помощью команд сдвигов?


57


ЛАБОРАТОРНАЯ РАБОТА №6. ИСПОЛЬЗОВАНИЕ ЯЗ
ЫКА А
С
СЕБЛЕР
В ПРОГРАММАХ
,

НАПИСАННЫХ НА ЯЗЫКЕ PASCAL


ЦЕЛЬ И ЗАДАЧА РАБОТЫ:

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

ТЕОРЕТИЧЕСКИЕ

ПОЛОЖЕНИЯ.

АРХИТЕКТУРА КОМПЬЮТЕ
РА
IBM

PC

Современные компьютеры ра
ссматриваемой серии состоят из множества физ
и
ческих устройств, таких как монитор, принтер, звуковая карта и т. д. Однако для нас в
данный момент наибольший интерес представляют два из них: центральный проце
с
сор (в дальнейшем просто процессор) и оперативная

память центрального процессора
(в дальнейшем память). Отметим, что каждое из этих устройств состоит из большого
количества различных блоков, причем количество и состав этих блоков сильно зав
и
сит от производителя и от версии устройства.

Для примера рассмот
рим более подробно устройство процессора. Несмотря на
физическое отличие различных типов процессоров, все процессоры предназначе
н
ные
для работы в компьютерах серии
IBM

PC

обладают совместимой архитект
у
рой. Это
означает, что на определенном уровне абстракци
и все эти процессоры выглядят од
и
наково. Такая совместимость позволяет исполнять на процессорах с
а
мых последних
версий программы написанные, например, во времена
Intel

8086
. Однако, обратное
часто бывает не верно, т. к. в процессе развития архитектура проц
ессоров серии
x
86

была значительно расширена, но все изменения были связ
а
ны как правило только с
расширением функциональности, все возможности предшествующих типов проце
с
соров сохранялись, обеспечивая обратную совмест
и
мость.

Таким образом, связка процессор
-
память, как и десятилетия назад, так и сейчас
выглядит следующим образом

(рис. 13).

Как и в большинстве современных компь
ю
теров и программа и данные хранятся в оперативной памяти. Программа состоит из
последовательности машинных команд. Машинные команды и
меют переменную
длину, от одного до десятков байт. Машинная команда состоит из следующих эл
е
ментов:

-

код операции (КОП)
-

определяет последовательность действий
(микроопераций)
;

-

операнды
-

это данные, над которыми будет производиться обработка
;

-

префикс
-

мо
дифицирует действия определяемые кодом операции.


58



Рисунок 1
3

-

Архитектура компьютера
IBM

PC

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

1.

Чтение из памяти очередной команды.

2.

Декодирование команды.

3.

Выполнение действий предусмотренных командой.

4.

Определение адреса следующей команды.

5.

Переход к шагу 1.

РЕГИСТРЫ

Регистры
предназначены для временного хранения данных, операндов, т. е. их
функции близки к функциям основной памяти. Их наличие обусловлено нескол
ь
кими
причинами:

1.

Сокращение количества операндов команд и их длины. Приведем пример на
основе команды сложения, для ее

выполнения требуется 3 операнда: 2
слагаемых и результат. В случае использования памяти нам необходимо в
качестве операндов, например 3 адреса, каждый из которых занимает 4 байта
(в 32
-
х битном режиме), таким образом, общая длина команды составит более
12

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

2.

Слишком медленная работа основной памяти. Современные процессоры
работают на частотах порядка нескольких г
игагерц, в то же время память
работает на частоте порядка сотен мегагерц, таким образом, за время одного
обращения к памяти потенциально может быть выполнено до нескольких
59


десятков команд. Регистры же работают на той же частоте, что и сам
процессор.

Количе
ство регистров зависит от версии процессора, как правило, в каждой н
о
вой версии процессора появляются новые регистры, однако старые всегда сохраняю
т
ся (для обеспечения обратной совместимости). В дальнейшем будем рассма
т
ривать
набор регистров процессора
Int
el

80386
, т. к. на сегодняшний день в подавляющем
большинстве случаев программы не используют регистры появившиеся в последу
ю
щих версиях процессоров.

Каждый регистр имеет название. Большинство регистров имеет определенное
функциональное назначение, с точки

зрения программиста их можно разделить на н
е
сколько групп:



пользовательские регистры



регистры общего назначения (РОН):
eax/ax/ah/al, ebx/bx/bh/bl, ecx/cx/ch/cl,
edx/dx/dh/dl, ebp/bp, esi/si, edi/di, esp/sp
. Регистры этой группы предназначены
для хранения
данных и адресов;



сегментные регистры
cs, ds, ss, es, fs, gs
. Регистры этой группы используются
для хранения адресов сегментов в памяти. Отметим, что в защищенном режиме
работы процессора, о котором пойдет речь, далее данные регистры доступны
только привил
егированным процессам, т. е. как правило, только операционной
системе.



регистры

сопроцессора

st(0), st(1), st(2), st(3), st(4), st(5), st(6), st(7)
.
Предназначены для работы с числами с плавающей точкой.



регистры состояния и управления
-

содержат информаци
ю о состоянии
процессора, исполняемой программы и позволяют изменить это состояние.



регистр флагов
eflags
/flags



регистр указатель команды
eip/ip



системные регистры
-

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

Наиболее часто программисты непосредственно имеют дело с регистрами изо
б
раженными на рисунке 2.

60


Рисунок
14

-

Пользоват
ельские регистры и регистры состояния

Поясним смысл этого рисунка: регистр
eax

имеет длину 32 бита (двойное сл
о
во),
самый младший бит имеет номер 0, самый старший 31. Младшая половина этого р
е
гистра имеет специальное название
ax

и может быть использована о
тдельно от ста
р
шей, длина регистра
ax

составляет соответственно 16 бит (слово). Мла
д
шая и старшая
половины регистра
ax

также имеют специальные названия
al

и
ah

соответственно, их
длина 8 бит (байт).

ПАМЯТЬ

Организация памяти в

IBM

PC

-

это один из самых сл
ожных и запутанных мех
а
низмов. Существует несколько режимом работы процессора, моделей памяти, они х
а
рактеризуются различной размерностью адреса, а, следовательно, и объемом адрес
у
емого адресного пространства. Мы рассмотрим лишь одну из этих моделей, а име
нно
плоскую (
flat
) модель памяти в 32
-
х битном защищенном режиме. Этот режим выбран
нами для рассмотрения по двум причинам:

1.

В этом режиме работают большинство пользовательских приложений в 32
-
х
битных операционных системах, таких как
Windows

или
Linux
.

2.

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

Виртуальное адресное пространство в данном режиме представляет собой

ячеек пам
яти, каждая из которых имеет длину 8 бит (1 байт), ячейки пронумеров
а
ны,
номер ячейки обычно записывают в шестнадцатеричном виде и называют адр
е
сом.
Самая младшая ячейка имеет адрес
00000000
h
, самая старшая
FFFFFFFFh
. Для записи
адреса требуется 32 бита (4

байта).

Термин виртуальное адресное пространство требует дополнительного поясн
е
ния. В составе системного блока современного компьютера присутствует некот
о
рое
количество физической памяти (на сегодняшний день это обычно 256 Мб
-

1 Гб), в
тоже время размер
виртуального адресного пространства приложения с
о
ставляет 4
Гб, причем адресные пространства различных процессов в современных многозада
ч
ных операционных системах изолированы друг от друга, т. е. каждая запущенная пр
о
61


грамма имеет свои собственные 4 Гб. Явн
ое несоответствие между размерами вирт
у
ального адресного пространства и объемами физической памяти объясняется тем, что
не всем адресам виртуального адресного пространства поставлены в соответствие а
д
реса физической памяти. Управление выделением и отображе
нием физической пам
я
ти лежит на операционной системе. Обычно физическая память предоставляется пр
и
ложению только после соответствующего запроса к операционной системе со стор
о
ны приложения (в
Windows

это можно сделать, например, с помощью функции
VirtualAl
loc
). В случае если приложение обратилось к ячейке памяти, которой забл
а
говременно не была поставлена в соответствие физическая память, то происходит
ошибка "Обращение по недопустимому адресу" (
Access

Violation
), которая обычно
приводит к тому, что процесс

приложения аварийно завершается операционной с
и
стемой.

ЯЗЫК АССЕМБЛЕРА

Как уже говорилось ранее программа представляется для процессора в виде п
о
следовательности машинных кодов, так, например команда копирующая соде
р
жимое
регистра
ebx

в регистр
eax

в маши
нных кодах будет выглядеть как:

8B C3

ясно, что такая запись абсолютно неприемлема для человека. В связи с этим во
з
никла необходимость поставить в соответствие машинным командам некоторые б
о
лее понятные для человека мнемонические обозначения, это и привело

к созд
а
нию
языка ассемблер. На данном языке приведенная выше команда будет иметь вид:

mov eax, ebx

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

процессора имеет свой набор машинных команд.

Кратко рассмотрим синтаксис команд на языке ассемблер, отметим, что прив
о
димое описание не претендует на строгость и полноту описания.

Основной формат кодирования команд имеет вид:

[метка:] команда [операнд
(ы)]
[; [
комментарий
]]

Метка (если имеется), команда и операнд (если имеется) разделяются по крайней
мере одним пробелом или символом табуляции. Метка может содержать латинские
буквы, цифры и некоторые спецсимволы. Первым символом в метке должна быть
букв
а или спецсимвол. Примеры меток: COUNT, PAGE25, $E10. В качестве меток не
допускается использовать зарезервированные слова языка.

62


Мнемоническая команда указывает ассемблеру какое действие должен выпо
л
нить данный оператор, например, пересылка (MOV) или слож
ение (ADD).

Операнд определяет элементы, над которыми выполняется действие по к
о
манде.
Команда может иметь один, несколько операндов или не иметь их вообще.

Рассмотрим небольшую программу (рисунок
15
), вычисляющую сумму чисел от
1 до 10, результат после вы
полнения данной программы будет находиться в р
е
гистре
ebx
.

метка команда

операнды

комментарий



mov

ebx, 0 ; поместить в регистр eax 0


mov

eax, 0 ; поместить в регистр ebx 0


m1:

inc

eax ; увеличить содержимое e
ax на единицу



add

ebx, eax ; сложить содержимое eax с содеримым ebx,


;
результат поместить в ebx



cmp eax, 10 ; сравнить содержимое eax с числом 10,


; в случае если они равны буд
ет выставлен флаг Z


; регистра flags



jnz

m1 ; если был не был установлен флаг Z,


; то перейти на метку m1, иначе продолжить


; выполнение программы


Рисунок 15

-

Пример программы на языке ассемблер

Система команд современного процессора 86
-
й серии включает в себя н
е
сколько
сотен различных команд, их подробное описание может быть найдено, например, в
справочнике
[
1
]
.

МЕТОДЫ АДРЕСАЦИИ

Как уже было сказано ранее, ко
манды могут иметь один или несколько опера
н
дов, операнды
-

это элементы (данные) над которыми выполняются команды. Оп
е
ранды могут располагаться в различных местах, в частности, в одном из РОН, в оп
е
ративной памяти, в стеке и т. д., и обращение к ним может
быть произведено весьма
разнообразными способами. Способ обращения к операндам называют методом адр
е
сации.

Процессор серии x86 поддерживает большое число методов адресации, рассмо
т
рим некоторые из них:

1.

Непосредственная адресация
-

операнд или операнды расп
олагаются в самой
команде, в ее последних байтах, например:

mov eax, 123 ;

поместить в регистр eax значение 123

Операнд 123 в данном случае задан непосредственно. Эти байты, как правило,
находятся во внутренней очереди команд процессора, поэтому доступ к
ним ос
у
ществляется также достаточно быстро.

2.

Регистровая адресация
-

операнд располагаются в одном из регистров,
например:

63


mov eax,
ebx

;

поместить в регистр eax значение
из регистра
ebx

Оба операнда здесь заданы с помощью регистровой адресации. Данный спо
соб
обеспечивает очень быстрый доступ к данным; соответствующие команды, как пр
а
вило, имеют короткий двоичный код. Однако количество регистров в процессоре н
е
велико, их может не хватить для размещения всех переменных при решении сложной
задачи.

3.

В составе к
оманды находится не сам операнд, а его адрес, например:

mov eax,
[00
403474h
]

;

поместить в регистр eax значение
находящееся


; по адресу
00
403474
h

Это простейший способ обратиться к данным, находящимся в памяти.

4.

Косвенно
-
регистровая

адресация
-

в этом случае адрес операнда размещается в
одном из регистров, например:

mov eax,
[
ebx
]

;

поместить в регистр eax значение
находящееся


; по адресу находящемуся в регистре
ebx

Как правило, для этого используются регистры
esi
,

edi
,
ebx
,
ebp
. Содержимое р
е
гистра можно изменять (например, в цикле), при этом одна и та же команда будет
оперировать различными ячейками памяти.

5.

Базовая адресация
-

в этом случае адрес операнда (исполнительный адрес)
получается как сумма содержимого рег
истров
ebx

или
ebp

и числовой
константы, называемой смещением
(
displacement
)
. Если использован регистр
ebx
, то будет происходить обращение к данным

в памяти, а если регистр
ebp


то к стеку. Такой вид адресации можно, например, использовать для доступа к
эл
ементу некоторого массива: регистр
ebx

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

6.

Индексная адресация
-

во всех микропроцессорах фирмы Intel по существу
аналогична базовой. Адрес операнда вычисляется как сумма содержимого
ре
гистров
esi

или
edi

и смещения.

7.

Базово
-
индексная адресация (а также


базово
-
индексная со смещением)
-

адрес операнда здесь образуется из суммы содержимого регистров
ebx

(или
ebp
), регистров
esi

(или
edi
) и необязательного смещения.

8.

Неявная (или подразумев
аемая) адресация

-

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

п.

9.

Стековая адресация является разновидностью неявной. Операнд находится в
сте
ке, на вершину которого указывает регистр

esp
.

10.

Относительная адресация
-

в микропроцессорах фирмы Intel не применяется к
командам обработки данных, а используется лишь в командах переходов,
вызовов подпрограмм и управления циклами. Адрес перехода образуетс
я как
смещение относительно текущего содержимого счетчика команд.

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

64


СРЕД
А РАЗРАБОТКИ
VIRTUAL

PASCAL

Для знакомства с

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

Pascal
, данный выбор обусловлен следующими характеристик
а
ми
среды:

1.

Наличие 32
-
х битного компилятора, позволяющего создавать 32
-
х битные
п
риложения для операционных систем
Windows
,
Linux
,
OS
/2.

2.

Схожесть интерфейса с изучавшейся ранее средой
Borland

Pascal

(рисунок
16
)
.



Рисунок
16



Интерфейс
Virtual Pascal

3.

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


Продемонстрируем работу с отладчиком в режиме дизассемблера на прим
ере
простой программы (рисунок 17
).


program example;

var


a, b, c: longint;

begin


a := 1;


b

:= 2;


c

:=
a

+
b
;

end
.

Рисунок
17

-

Пример программы для отладки

Запустим эту программу в режиме отладки по шагам (например, с помощью
пункта меню
Run


Step

Over
).

Отладчик остановиться на первой строке програ
м
мы (
65


a:=1 ). Затем откроем окно дизассемб
лера с помощью пункта меню
View


CPU


и
сунок
18
).



Рисунок
18

-

Дизассемблер
Virtual

Pascal


Экран дизассемблера состоит из нескольких частей:

1.

исходный код
;

2.

регистры процессора (eax


eip, cs


fs)
;

3.

регистр флагов (c


d)
;

4.

оперативная память процесса (
программы) в нижней части экрана
;

5.

с
тек в нижней правой части экрана.

Окно исходного кода содержит как код на языке Паскаль (выделен желтым), так
и ассемблерный код. Формат данных в этом окне рассмотрим на примере стр
о
ки:


example
.
pas
.5
a

:= 1;


cs
:00401
030 030578344000
add

eax
,[403478
h
]


Поля этих строк имеют следующий смысл:

example.pas
-

имя файла с исходным текстом программы

5
-

номер строки в файле исходного кода

a

:= 1;
-

сама строка исходного текста

cs
:00401030
-

адрес команды в памяти

030578344
000
-

машинный код команды

add

eax
,[403478
h
]
-

запись команды на языке ассемблера

66


Команда, которая выполняется в данный момент, подсвечивается символом ►.
При активном окне дизассемблера смысл действий
Step

и
Next

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

выполняют не одну строку, а одну машинную к
о
манду.

Поясним дизассемблированный код в нашем примере:

mov DWord Ptr [403474h],1
; Поместить в 32
-
х битную (
DWord
) область памяти


;

по адресу 403474h значение 1

mov DWord Ptr [403
478h],2
; Поместить в 32
-
х битную область памяти значение
2

mov eax,[403474h]
;
Поместить в регистр eax значение из области
памяти


; по адресу

403474
h

add eax,[403478h]
;
Сложить значение находящееся в регистр
е
eax

со


;

значением находящимся по адресу
403478
h


; результат поместить в
eax

mov [40347Ch],eax
;
Значение находящееся в eax поместить в область


; памяти по ад
ресу
40347
Ch

Очевидно, что 32
-
х битная область памяти, начинающаяся с адреса 403474h
-

это
ни что иное, как переменная a, с адреса 403478h
-

b, 40347Ch
-

с.

АССЕМБЛЕРНЫЕ ВСТАВКИ

В языке программирования
Pascal

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


end
, данную конструкцию обычно называют ассемблерной вставкой. В качестве
содержимого данной конструкции используется код на языке ассемблера, причем
стандарт языка
Pascal

никак эт
о содержимое не оговаривает, т. е. возможное соде
р
жимое ассемблерной вставки может быть различным в различных комп
и
ляторах и на
различных платформах.

Напомним, что мы рассматриваем
32
-
х битный режим пр
о
цессора
x
86

и компилятор
Virtual

Pascal
.

Например, опе
ратор сложения в программе представленной на рисунке
17

может
быть переписан с использованием ассемблерной вставки, как показано на рисунке
19
.


program example;

var


a, b, c : longint;

begin


a := 1;


b := 2;


asm


mov eax, a


add eax, b


mov

c, eax


end

end.

Рисунок 19

-

Программа с ассемблерной вставкой


67


ЗАДАНИЕ К ЛАБОРАТОРН
ОЙ РАБОТЕ

В лабораторной работе требуется написать программу на языке
Pascal

в соотве
т
ствии с вариантом, обработку данных (в том числе циклы, если они необходимы)
осущес
твить в ассемблерной вставке.

1.

Написать программу, которая в массиве чисел типа
integer

находит среднее
арифметическое, количество элементов в массиве меньше 32000.

2.

Написать программу, вычисляющую количество элементов в массиве до
первого нулевого элемента,

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

3.

Написать программу, производящую сложение чисел произвольной
размерности. Числа хранятся в виде массивов типа longint, где 0
-
й элемент
массива
-

содержит младшие 32 б
ита числа (с 0
-
го по 31
-
й), следующий
элемент массива с 32
-
го по 63
-
й и т. д. Ввод
-
вывод данных чисел осуществлять
в 16
-
ричной системе счисления.

4.

Написать программу, производящую вычитание чисел произвольной
размерности. Числа хранятся в виде массивов типа

longint (см. задание 3).
Ввод
-
вывод данных чисел осуществлять из двоичных файлов (длина которых
соответственно кратна 4
-
м).

5.

Написать программу, выводящую на экран идентификатор процессора (для
процессоров серии 568 и старше), например, для процессоров фир
мы
Intel
:
GenuineIntel
, для процессоров
AMD
:
AuthenticAMD

и т. д.

6.

Написать программу, осуществляющую копирование содержимого массива
типа
char

в n
-
раз больший массив, при этом каждый элемент массива должен
повторяться n
-
раз, т. е., например, из массива
'
a
'
, '
b
', '
c
'
, при
n
=3
, должен быть
сформирован массив
'
a
', '
a
', '
a
', '
b
', '
b
', '
b
', '
c
', '
c
', '
c
'
Ввод
-
вывод массивов
осуществлять в виде строк.

7.

Подсчитать количество единичных битов в числе произвольной размерности,
представленном в виде массива чисел типа
longint

(см. задание 3). Ввод чисел
осуществить со стандартного ввода в 16
-
ричном виде.

8.

Переставить биты в числе произвольной размерности представленном в виде
массива чисел типа
longint

(см. задание 3) в соответствии с принципом: первый
меняется с последн
им, второй с предпоследним и т. д. Ввод
-
вывод чисел
осуществить через двоичные файлы.

9.

Определить является ли заданное 32
-
х битное число простым.

10.

Для массива 32
-
х битных целых чисел найти разность между максимальным и
минимальным элементами.

11.

Для массива 32
-
х битных целых чисел определить количество элементов
больших заданного числа, меньших его и равных ему.

12.

Для массива 32
-
х битных целых чисел определить сколько раз меняется знак
числа.

68


13.

Отсортировать массив 32
-
х битных целых чисел все отрицательные элементы
перенести в его начало, положительные в конец.

14.

Отсортировать массив 32
-
х битных целых чисел по возрастанию методом
пузырька.

15.

Определить сколько чисел 32
-
х битного целого массива находятся в заданном
диапазоне.

69


ЛАБОРАТОРНАЯ РАБОТА №
7
. ВЗАИМОДЕЙСТВИЕ ПРОГРАМ
М НА
ЯЗЫКЕ PASCAL

С КОДОМ НАПИСАННЫМ НА ЯЗЫКЕ АССЕ
М
БЛЕРА

ЦЕЛЬ И ЗАДАЧА РАБОТЫ
.


Изучить принципы взаимодействия программ, написанных на высокоуровн
е
вом
языке типа Паскаль с низкоуровневым кодом на ассемблере на примере 32
-
битного
ассемблера среды
Virtual

P
ascal
. Изучить механизмы вызова процедур и функций.

ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕ
НИЯ

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

Однако понимание того, во что разворачивается высокоуровневый код после
компиляции все
-
таки полезно. Традиционно в руководствах по ассемблеру прив
о
дят
аргументы в пользу оптимизации программ путем переписывания части кода
на а
с
семблере. В настоящее время такое использование ассемблера не очень акт
у
ально, т.
к. современные компиляторы обычно превосходят уровень среднего пр
о
граммиста на
ассемблере по таким параметрам как скорость выполнения кода. Но современные
компиляторы,
как и любые программы, содержат ошибки, которые иногда приводят к
неправильной генерации кода. В поиске таких ошибок програ
м
мисту и может помочь
знание ассемблера.

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

Простейший способ определить операнд в памяти
-

дать имя ячейке памяти. В
дальнейшем программа использует это имя в командах для ссылки на соответству
ю
щий участок памяти. При использовании ассемблера из Паскаль
-
программы объявл
е
ние переменных обычно производится не внутри ассемблерных вставок, а в секц
ии
var

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

кодом, так и кодом на языке ассемблер (рисунок 20).


program vars;

var


IntegerVar : longint;

begin


IntegerVar := 5;




asm


dec IntegerVar


end;




writeln(IntegerV
ar); { на эк
р
ан будет выведено число 4 }

end.


Рисунок 20
-

Использование переменных

70


ПОНЯТИЕ СТЕКА

Стек


это область оперативной памяти, организованная по принципу
FIFO

(
пе
р
вым пришел, последним ушел). Бытовой аналогией термина стек является стопка т
а
рело
к. Мы кладем одну тарелку на другую, тем самым, ограничивая д
о
ступ к нижним
тарелкам. Всегда взять можно только верхнюю тарелку и положить новую тарелку
также только на верхнюю.

Рассмотрим пример. В стек добавляются три элемента типа двойное слово (4
байта
) в следующем порядке: 1
-
й, 2
-
й, 3
-
й. Получившийся стек представлен на рису
н
ке 21. Последний добавленный элемент называется вершиной стека. Каждый новый
элемент «кладется» на вершину стека. При взятии элемента из стека первым берется
также элемент, являющи
йся вершиной. Т.

е. для стека из четырех элеме
н
тов порядок
доступа к ним будет такой: новый, 3
-
й, 2
-
й, 1
-
й.


Рисунок 21


Стек

Для организации стековой структуры в 32
-
х битном режиме используется р
е
гистр
esp
. Значение, хранящеес
я в нем, представляет собой адрес так называемой
вершины стека, т. е. последнего помещенного в стек байта.

Для помещения данных в стек используется команда
push
. Алгоритм ее работы
таков:

1.

Уменьшить значение
esp

на размер операнда

2.

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

стека

Обратная ей команда это команда
pop
, ее алгоритм:

71


1.

Загрузить в операнд содержимое вершины стека (адресуется парой
esp
)

2.

Увеличить содержимое
esp

на размер операнда

Стек часто используется для временного хранения значений регистров (рис.

22).


push eax

; размещение
eax

в стеке



mov eax, x ; некоторый фрагмент

add eax, 1234h ; кода который "портит"

mov x, eax ; значение находящееся в eax


pop eax
;
извлечение
eax

из стека


Рисунок 22
-

Пример размещения и извлечения регистра из с
тека

Другая функция стека
-

это организация вызовов подпрограмм и возврата из них,
для этого используются команды
call

и


соответственно. Пример такой пр
о
граммы
представлен на рисунке 23.


...


mov eax, 1234h
;
помещение аргумента процедур
ы в регистр
eax


call

proc
1 ;
вызов процедуры


...


proc1: sal eax, 1
;
умножение содержимого
eax

на 2



;
возврат из процедуры


Рисунок 23
-

Пример организации процедуры и ее вызова

Инструкция
call

сохраняет в с
теке адрес следующей за ней команды (анал
о
гично
команде
push
) и осуществляет переход по адресу указанному ей в качестве операнда
(аналогично команде
jmp
)
. Команда



в нашем случае извлекает из стека адрес (р
а
нее помещенный туда командой
call
)
и осуществ
ляет переход на него.

Отметим, что в
данном случае мы использовали для передачи параметров регистры (
eax
)
, возвраща
е
мое значение

после выхода из процедуры также находилось в
eax
.

Следует обратить внимание на такой момент: процессор не поддерживает ник
а
ких
механизмов для контроля правильности работы со стеком, эта функция лежит ц
е
ликом на программисте. В частности если внутри процедуры будет осуществлено п
о
мещение некоторого значения в стек командой
push
,

но симметри
ч
ной команды
pop

выполнено не будет, то эт
о приведет к тому, что команда

вм
е
сто адреса возврата
извлечет значение помещенное командой
push

и сделает п
о
пытку перехода по этому
адресу. В большинстве случаев это приведет к ошибке доступа
(
access

violation
)
.

Отметим, что команда

может иметь о
перанд
-
число, представляющее собой
величину на которую будет дополнительно увеличено значение
esp

при выполн
е
нии
этой инструкции. Смысл этого действия будет пояснен ниже.


72


ВЗАИМОДЕЙСТВИЕ ПРОГР
АММЫ НА ЯЗЫКЕ ПАСКАЛ
Ь С КОДОМ НА ЯЗЫКЕ
АССЕМБЛЕРА

Рассмотрим нап
исание процедур на ассемблере и передачу параметров. В кач
е
стве примера рассмотрим функцию сложения двух чисел (рисунок 24).


function Sum1(x, y : longint) : longint;

begin


asm


mov eax, x { Поместить в регистр eax значение x }


add eax, y

{ Добавить к значению в eax y }


mov @Result, eax { eax содержит результат функции }


end;

end;

Рисунок 24
-

Функция сложения двух чисел

Дизассемблирование данной функции показывает, что помимо написанного
нами кода компилятор добавил еще некото
рое количество команд (рисунок 25). В
ы
зов этой функции представлен на рисунке 26.


;
function Sum1(x, y : longint) : longint;

; begin


push ebp


mov ebp, esp


sub

esp
, 4

;
mov

eax
,
x

{ Поместить в регистр eax значение x }



mov

eax
,[
ebp
+0
Ch
]

;
add

eax
,
y

{ Добавить к значению в
eax

y

}


add

eax
,[
ebp
+8]

;
mov

@
Result
,
eax

{
eax

содержит результат функции }


mov [ebp
-
4],eax

; end;


mov eax,[ebp
-
4]


leave



8

Рисунок 25
-

Диза
ссемблированная функция
Sum
1


; y := Sum1(1, 2);


push 1


push 2


call Sum1


mov

[403488
h
],
eax


Рисунок 26
-

Дизассемблированный вызов функции
Sum
1


Поясним основные моменты. При передаче параметров в процедуру или фун
к
цию они поме
щаются в стек командой
push
, кроме этого туда записывается адрес во
з
врата командой
call
. Во время вызова функции регистр
ebp

сначала сохраняется в ст
е
ке, затем в регистр
ebp

помещается указатель на стек. Далее указатель вершины стека
esp

уменьшается на 4,
таким образом, в стеке резервируются 4 ба
й
та для временного
размещения переменной @Result
.
Далее выполняется код со
б
ственно функции, при
этом видно, что аргументы функции адресуются относ
и
тельно регистра
ebp
.

73


При возврате из процедуры необходимо восстанови
ть значение
ebp

и указателя
вершины стека. Это делается командой
leave
, которая копирует
ebp

в
esp

(
mov

esp
,
ebp
),
а затем восстанавливает значение в
ebp

из стека
(
pop

ebp
)
. После этих действий
состояние стека восстанавливается в то состояние, в котором он

находи
л
ся на момент
входа в функцию. Перед возвратом из процедуры осталось выполнить лишь одно
действие
-

очистку стека от аргументов функции (согласно соглашению о вызовах
процедур языка
Pascal

это должна делать вызываемая процедура). Это делает все та
ж
е команда

ret
, операнд которой имеет смысл числа байт удаляемых из стека. Во
з
вращаемое функцией значение помещается по соглашению в регистр eax.

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

Обратим внимание, что при передаче параметров по значению (без использов
а
ния ключевого слова var) в стеке передаются сами значения переменных. Если же п
е
редача идет по ссылке (со слов
ом var), то в стеке передается адрес переменных. Пр
о
цедура сложения двух целых чисел при передаче параметров по ссылке представлена
на рисунке 27.


function Sum2(var x, y : longint) : longint;

asm


mov eax,
x

{ eax содержит АДРЕС!
переменной
x

}



mov eax,[eax] { eax получает значение
переменной
x

}


mov ecx,y { eсx содержит АДРЕС!
переменной
y


}


mov ecx,[ecx] { ecx получает значение
переменной
y

}


add eax,ecx { eax = eax + ecx }

end;

Рисунок 27
-

Передача аргументов по ссылке

О
тметим что в последнем примере мы использовали несколько иную форму
вставки ассемблерного кода нежели в предыдущих примерах (отсутствуют ключ
е
вые
слова
begin

end

для тела функции), т. е. все тело функции задано ассемблерным к
о
дом.

ВЗАИМОДЕЙСТВИЕ ПРОГР
АММЫ

НА ЯЗЫКЕ АССЕМБЛЕРА
С ОПЕРАЦИО
Н
НОЙ СИСТЕМОЙ

При написании реальных программ никогда не удается ограничиться констру
к
циями только лишь конкретного языка программирования. Языки програ
м
мирования
сами по себе не поддерживают системно
-
зависимые функции. В кач
естве примера
можно привести функции доступа к физическим устройствам, файловой системе,
межпрограммному взаимодействию. Все эти функции лежат в вед
е
нии операционной
системы. Но для конкретного компилятора пишутся библиотеки, позволяющие и
с
пользовать серви
с, предоставляемый операционной системой.

74


Для получения доступа к некоторым возможностям операционной системы пр
о
грамма должна осуществить вызов некоторых ее функций. Способ взаимоде
й
ствия с
операционной системой или программный интерфейс (
API
,
Application

Pr
o
gramming

Interface
)

индивидуален для различных типов операционных систем.

Чаще всего используется два способа осуществления вызовов операционной с
и
стемы со стороны приложения: вызов процедуры с помощью команды call, либо с
помощью механизма прерываний.

Прерывание (interrupt)


это подпрограмма, а
д
рес
которой находится в специальной таблице векторов (адресов) прерываний.

Например, вывод строки текста на экран в системе MS
-
DOS (эта операционная
система работает в 16
-
битном режиме!) выглядит как вызов функ
ции 9 прер
ы
вания
21:

mov

ah, 9

; номер функции DOS в AH

mov


;
адрес

строки

message
в

DX

int

21h

; вызов системной функции DOS


В тоже время вывод окна сообщений (MessageBox) в системе Windows выгл
я
ди
т
так:

push

MB_OK

; специальная числовая константа,


; задающая набор кнопок в окне

push


; в стек кладем адрес строки title

push


; в стек кладем адрес строки message

push

0

;

параметр функции, говорящий о том,


; что окно сообщений не связано


; с другими окнами

call

MessageBox

; вызов системной функции Windows


Подробные сведения о функциях предоставляемых конкретной операцион
ной
системой можно найти в документации к операционной системе.

ЗАДАНИЕ К ЛАБОРАТОРН
ОЙ РАБОТЕ

В задании представлены различные функции, написанные на ассемблере, встр
о
енном в
Virtual

Pascal
. При выполнении лабораторной работы необходимо:

1.

Написать программу

в среде

Virtual

Pascal

(на Паскале), использующую
представленную функцию.

2.

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

Варианты заданий:

1.

{ Log base 10 of X}

function Log10(X: Extended): Extended;

{&Frame
-
} {&Uses none}

asm


fldlg2

75



fld X


fyl2x

end;


2.

{ Log base 2 of X }

function Log2(X: Extended): Extended;

{&Fra
me
-
} {&Uses none}

asm


fld1


fld X


fyl2x

end;


3.

{ Log base N of X }

function LogN(Base, X: Extended): Extended;

{&Frame
-
} {&Uses none}

asm


fld1


fld X


fyl2x


fld1


fld Base


fyl2x


fdivp st(1),st

end;


4.

{ Sum: Sum of values.

(SUM) }

function Sum(const Data: array of Double): Extended;

{&Frame
-
} {&Uses none}

asm


mov ecx,Data
-
4


inc ecx


mov eax,Data


fldz

@L0:


fadd qword ptr [eax]


add eax,8


loop @L0

end;


5.

function SumOfSquares(const Data: a
rray of Double): Extended;

{&Frame
-
} {&Uses none}

asm


mov ecx,Data
-
4


inc ecx


mov eax,Data


fldz

@L0:


fld qword ptr [eax]


fmul st,st


add eax,8


faddp st(1),st


loop @L0

end;


6.

n Str, not counting the null }

{ terminator. }

76


function StrLen(Str: PChar): Word; assembler; {$USES edi} {$FRAME
-
}

asm


cld


mov edi,Str


or ecx,
-
1


xor eax,eax


repne sca
sb


sub eax,ecx


sub eax,2

end;


7.


function StrEnd(Str: PChar): PChar; assembler; {$USES edi} {$FRAME
-
}

asm


cld


mov edi,Str


or ecx,
-
1


xor al,al


repn
e scasb


lea eax,[edi
-
1]

end;


8.


�{ 0 if Str1 = Str2, or greater than 0 if Str1 Str2. }

function StrComp(Str1, Str2: PChar): Integer; assembler;

{$USES es
i,edi} {$FRAME
-
}

asm


cld


mov edi,Str2


mov esi,edi


or ecx,
-
1


xor eax,eax


xor edx,edx


repne scasb


not ecx


mov edi,esi


mov esi,Str1


repe cmpsb


mov al,[esi
-
1]


mov dl,[edi
-
1]


sub eax,
edx

end;


9.


function StrUpper(Str: PChar): PChar; assembler;

{$USES esi} {$FRAME
-
}

asm


cld


mov esi,Str


mov eax,esi

@@1:


mov dl,[esi]


test dl,dl


jz @@2


inc esi


cmp

dl,'a'


jb @@1


cmp dl,'z'


ja @@1

77



sub dl,'a'
-
'A'


mov [esi
-
1],dl


jmp @@1

@@2:

end;


10.


function StrLower(Str: PChar): PChar; assembler;

{$USES esi} {$FRAME
-
}

asm


cld


mov esi,Str


mov eax,esi

@@1:


mov dl,[esi]


test dl,dl


jz @@2


inc esi


cmp dl,'A'


jb @@1


cmp dl,'Z'


ja @@1


add dl,'a'
-
'A'


mov [esi
-
1],dl


jmp @@1

@@2:

end;


11.

function IsNumber(Chr
: Char): Boolean; assembler;

{$USES None} {$FRAME
-
}

asm


xor al,al


mov ah,Chr


cmp ah,'0'


jb @@1


cmp ah,'9'



@@1:

end;


12.


{$USES None} {$FRAME
-
}

asm


xor al
,al


mov ah,Chr


and ah,0DFH { To upper }


cmp ah,'A'


jb @@1


cmp ah,'Z'



@@1:

end;




13.

function Min(X, Y: Integer): Integer; assembler;

{$USES None} {$FRAME
-
}

asm

78



MOV AX,X


CMP AX,Y


J
LE @@1


MOV AX,Y

@@1:

end;


14.

function Max(X, Y: Integer): Integer; assembler;

{$USES None} {$FRAME
-
}

asm


MOV AX,X


CMP AX,Y


JGE @@1


MOV AX,Y

@@1:

end;


15.

function ISqr(X: Integer): Integer; assembler;

asm


MOV CX,
X


MOV BX,0

@@1:


INC BX


MOV AX,BX


IMUL AX


CMP AX,CX


JLE @@1


MOV AX,BX


DEC AX

end;

79


СПИСОК РЕКОМЕНДОВАННОЙ ЛИТЕРАТУРЫ


1.

Балашов

Е.П., Григорьев

В.Л., Петров

Г.А. Микро
-

и

мини
-
ЭВМ. Л.:

Энергоатомиздат,
1984. 376 с
. (С. 124

134, 147

155).

2.

Таненбаум, Э.

Архитектура компьютера / Э. Таненбаум; пер. с англ. Ю. Горохо
в
ский, Д.
Шинтяков .


5
-
е изд.


М. [и др.] : Питер, 2007 .


844 с. : ил.

3.


Хорошевский, В.Г.

Архитектура вычислительных систем : учебное пособие для в
у
зов /

В.Г.Хорошевский .


М. : Изд
-
во МГТУ им.Н.Э.Баумана, 2005 .


512с. : ил.

4.

Архитектура компьютерных систем и сетей.

Электронный учебник из
www
.
EduLib
.
ru
.

5.

Абель П. Ассемблер. Язык программирования для IBM PC


М.: ВЕК, 2003.


736 с.:

6.

ISBN
966
-
7140
-
30
-
X
.

7.

Бре
дли Д.
Программирование на языке ассемблера для персональной ЭВМ фирмы IBM.
Пер. с англ. В.В Скугарева,Е.С.Копельмана.Под ред.А.А.Чижова.


М.: Радио и связь,
1988.


448с.

8.

Зубков С.В. Ассемблер для DOS, Windows и UNIX


СПб.: Питер, 2004.


608 с.:

9.

ISBN
5
-
94074
-
259
-
9

10.

Assembler

/ В. Юров
-

СПб.: Питер, 2002.
-

624 с.: ил.
ISBN 5
-
272
-
00040
-
4

11.

Юров В.
Assembler
: специальный справочник
-

СПб: Издательство "Питер", 2000.
-

496 с.:
ил.
ISBN 5
-
272
-
00119
-
2


80


ПРИЛОЖЕНИЕ 1.
СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА КР580



КОМА
НДЫ ПЕРЕСЫЛОК

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

Двои
ч
ный
код кома
н
ды

Выполняемые действия

Число байт
циклов

MOV RD,RS

01
DDDSSS

Пересылка байта из
RS

в
RD

1 1 5

MOV M,RS

01110
SSS

Пересылка байта из
RS

в память
по адресу из
HL

1 2 7

MOV RD,M

01
DD
D
110

Пересылка из памяти (по адресу
в
HL
) в
RD

1 2 7

MVI RD,
Д
8

00
DDD
110

Пересылка байта Д8 в
RD

2 2 7

MVI

M
,Д8

00110110

Пересылка байта Д8 в п
а
мять по
адресу из
HL

2 3 10

LDA

АДР

00111001

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

3 4 13

STA

АДР

00110010

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

3 4 13

LDAX
РП

00SSS010

Загрузка аккумулятора из памяти
с адресом из РП

1 2 7

STAX
РП

00DDD010

Запись из аккумулято
ра в память
по адресу из РП

1 2 7

XCNG

11101011

Обмен содержимым пар
DE

и
HL

1 1 4

LXI

РП, Д16

00
DDD
001

Загрузка пары РП двумя байтами
Д16 из кода команды

3 3 10

LHLD

АДР

00101010

Загрузка в
HL

содержимого двух
ячеек п
амяти: (АДР)


L
,
(АДР+1)
-

H

3 5 16

SHLD

АДР

00100010

Запись из
HL

в память: (
L
)


АДР, (
H
)


АДР+1

3 5 16





81


КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ

Мнемон
и
ка

Машинный дв
о
ичный код

Выполняемые дейс
т
вия

Число байтов
тактов циклов

К
о
ман
ды с

Однобай
т
ными

операндами в аккумул
я
торе


ADD RS

ADD M

ADI
Д
8

10000SSS

10000110

11000110


СЛОЖЕНИЕ

1 1 4

1 2 7

2 2 7

ADC RS

ADC M

ACI
Д
8

10001SSS

10001110

11001110

СЛОЖЕНИЕ


С УЧЕТОМ

П
Е
РЕНОСА

1 1 4

1 2

7

2 2 7

DAA

00100111

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

1 1 4

SUB RS

SUB M

SU1
Д
8

10010SSS

100101100

11010110


ВЫЧИТАНИЕ

1 1 4

1 2 7

2 2 7

SBB RS

SBB M

SB1
Д
8

10011SSS

10011110

11011110

ВЫЧИТАНИЕ

С УЧЕТОМ

ЗАЕМА

1 1 4

1 2 7

2 2 7

CMP RS

CMP M

CM1
Д
8

10111SSS

10111110

11111110


СРАВНЕНИЕ

1 1 4

1 2 7

2 2 7

К
о
манды с

однобай
т
ными

операндами в регистрах и

памяти

INR RS

INR M

00
SSS
100

00110
100

ИНКРЕМЕНТ

1 1 5

1 3 10

DCR

RS

DCR M

00SSS101

00110101

ДЕКРЕМЕНТ

1 1 5

1 1 10

К
о
манды с

двухбай
т
ными

операндами


INX

РП

00
SSS
011

ИНКРЕМЕНТ

1 1 5

DCX

РП

00
SSS
011

ДЕКРЕМЕНТ

1 1 1

D
AD

РП

00
SSS
001

Прибавление содержимого п
а
ры РП к содержимому пары
HL

1 3 10






82


КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ.

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

Маши
н
ный
код

Выполняемые действия

Число
байт та
к
тов ци
к
лов

К
о
манды

Бе
з
условной

передачи управления


JMP
АДР

11000
011

Переход по указанному адресу

3 3 10

PCHL

11101001

Переход по адресу из
HL

1 1 5

К
о
манды

Условной

передачи управления


JZ
АДР

1101010

По нулю

3 3 10

JNZ
АДР

11000010

Не по нулю

3 3 10

JC
АДР

11011010

По наличию переноса

3

3 10

JNC АДР

11010010

По отсутствию переноса

3 3 10

JPO
АДР

11100010

По четному числу единиц в коде

3 3 10

JPE
АДР

11101010

По нечетному числу единиц в коде

3 3 10

JP
АДР

11110010

По знаку плюс

3 3 10

JM
АДР

11111010

По з
наку минус

3 3 10


КОМАНДЫ ЛОГИЧЕСКИХ ОПЕРАЦИЙ И СДВИГОВ

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

Машинный код

Выполняемые действия

Число байт
тактов
ци
к
лов

ANA RS

ANA M

ANI
Д
8

10100SSS

10100110

11100110


КОНЪЮНКЦИЯ

1 1 4

1 2 7

2 2 7

ORA RS

O
RA M

ORI
Д
8

10110SSS

10110110

11110110


ДИЗЪЮНКЦИЯ

1 1 4

1 2 7

2 2 7

XRA RS

XRA M

XRI
Д
8

10101SSS

10101110

11101110

НЕЭКВИВАЛЕНТНОСТЬ
СЛОЖЕНИЯ ПО МОДУЛЮ 2

1 1 4

1 2 7

2 2 7

CMA

00101111

Инверсия аккум
улятора

1 1 4

RLC

00000111

Циклический сдвиг влево

1 1 4

RRC

00001111

Циклический сдвиг вправо

1 1 4

RAL

00010111

Сдвиг влево
с переносом

1 1 4

RAR

00011111

Сдвиг вправо
с переносом

1 1 4

83


STC

00110111

Устан
овка флага переноса в ед
и
ницу

1 1 4

CMC

00111111

Инверсия флага переноса

1 1 4


ОПЕРАЦИИ СО СТЕКОМ

Кома
н
да

Код

Выполняемые действия

Число байт
тактов циклов

PUSH B

PUSH D

PUSH H

PUSH PSW

C5

D5

E5

F5

Занесение в стек содержимого рег
и
стр
ов пары или PSW

1 3 11

1 3 11

1 3 11

1 3 11

POP B

POP D

POP H

POP PSW

C1

D1

E1

F1

Пересылка из стека в регистровую пару
или PSW

1 3 10

1 3 10

1 3 10

1 3 10

SPHL

F9

Пересылка из HL в SP

1 1 5

XTHL

E3

Обмен HL и вершины стека

1 5 18

LXI SP, Д16

31

Засылка в СР константы Д16

3 3 10

DAD SP

39

Сложение содержимого SP и HL

1 3

10

DCX SP

3B

Декремент SP

1 1 5

INX SP

33

Инкремент SP

1 1 5


ПОДПРОГРАММЫ

Команда код

Команда код

Команда код

безусловные



CALL АДР CD

RST 2 D7

RST 5 EF

RET C9

RST 3 DF

RST 6 F7

RST 0 C7

RST

4 E7

RST 7 FF

условные



CZ АДР СС

СР АДР F4

RPO E0

CNZ АДР C4

CM АДР FC

RPE E8

CC АДР DC

RZ C8

RP F0

CNC АДР D4

RNZ C0

RM F8

CPO АДР E4

RC D8


CPE АДР EC

RNC D0


84


ПРИЛОЖЕНИЕ 2. ТАБЛИЦА КОДОВ КОМАНД


0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

0

NOP




M
OV

B,B

MOV

D,B

MOV

H,B

MOV

M,B

ADD

B

SUB

B

ANA

B

ORA

B

RNZ

RNC

RPO

RP

1

LXI

B

LXI

D

LXI

H

LXI

SP

MOV

B,C

MOV

D,C

MOV

H,C

MOV

M,C

ADD

C

SUB

C

ANA

C

ORA

C

POP

B

POP

D

POP

H

POP

PSW

2

STAX

B

STAX

D

SHLD

STA

MOV

B,D

MOV

D,D

MOV

H,D

MOV

M,D

ADD

D

SUB

D

ANA

D

ORA

D

JNZ

JNC

JPO

JP

3

INX

B

INX

D

INX

H

INX

SP

MOV

B,E

MOV

D,E

MOV

H,E

MOV

M,E

ADD

E

SUB

E

ANA

E

ORA

E

JMP

OUT

XTHL

DI

4

INR

B

INR

D

INR

H

INR

M

MOV

B,H

MOV

D,H

MOV

H,H

MOV

M,H

ADD

H

SUB

H

ANA

H

ORA

H

CNZ

CNC

CPO

CP

5

DCR

B

DCR

B

DCR

H

DCR

M

MOV

B,L

MO
V

D,L

MOV

H,L

MOV

M,L

ADD

L

SUB

L

ANA

L

ORA

L

PUSH

B

PUSH

D

PUSH

M

PUSH

PSW

6

MVI

B

MVI

D

MVI

H

MVI

M

MOV

B,M

MOV

D,M

MOV

H,M

HLT

ADD

M

SUB

M

ANA

M

ORA

M

ADI

SUI

ANI

ORI

7

RLC

RAL

DAA

STC

MOV

B,A

MOV

D,A

MOV

H,A

MOV

M,A

ADD

A

SUB

A

ANA

A

ORA

A

RST

0

RST

16

RST

32

RST

48

8





MOV

C,B

MOV

E,B

MOV

L,B

MOV

A,B

ADC

B

SBB

B

XRA

B

CMP

B

RZ

RC

RPE

RM

9

DAD

B

DAD

D

DAD

H

DAD

SP

MOV

C,C

MOV

E,C

MOV

L,C

MOV

A,C

ADC

C

SBB

C

XRA

C

CMP

C



PCHL

SPHL

A

LDAX

B

LDAX

D

LHLD

LDA

MOV

C,D

MOV

E,D

MOV

L,D

MOV

A,D

ADC

D

SBB

D

XRA

D

CMP

D

JZ

JC

JPE

JM

B

DCX

B

DCX

D

DCX

H

DCX

SP

MOV

C,E

MOV

E,E

MOV

L,E

MOV

A,E

ADC

E

SBB

E

XRA

E

CMP

E


IN

XCHG

EI

C

INR

C

INR

E

INR

L

INR

A

MOV

C,H

MOV

E,H

MOV

L,H

MOV

A,H

ADC

H

SBB

H

XRA

H

CMP

H

CZ

CC

CPE

CM

D

DCR

C

DCR

E

DCR

L

DCR

A

MOV

C,
L

MOV

E,L

MOV

L,L

MOV

A,L

ADC

L

SBB

L

XRA

L

CMP

L

CALL




E

MVI

C

MVI

E

MVI

L

MVI

A

MOV

C,M

MOV

E,M

MOV

L,M

MOV

A,M

ADC

M

SBB

M

XRA

M

CMP

M

ACI

SBI

XRI

CPI

F

RRC

RAR

CMA

CMC

MOV

C,A

MOV

E,A

MOV

L,A

MOV

A,A

ADC

A

SBB

A

XRA

A

CMP

A

RST

8

RST

24

RST

40

RST

56


85


ПРИЛОЖЕНИЕ 3. ПРИМЕР ОФОРМЛЕНИЯ ОТЧЕТА ПО ЛАБОР
А
ТОРНОЙ РАБОТЕ


МИНОБРНАУКИ РОССИИ


Федеральное государственное бюджетное образовательное учрежд
е
ние

высшего профессионального образования

«Тульский государственный университет»



Кафедра «Автоматика и те
лемеханика»






АРХИТЕКТУРА ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ


Лабораторная работа №1


ИЗУЧЕНИЕ УЧЕБНО
-
ОТЛАДОЧНОГО УСТРОЙСТВА “ЭЛЕКТРОНИКА
-

580”






Выполнил студент группы
6
2
2
1
11 ____________

Проверил доц. каф. АТМ А.В. Копылов .____________







Тула 2012 г.

Це
ль работы:

о
знакомление со структурой
учебно
-
отладочного устройства “ЭЛЕКТР
О
НИКА
-

580” (
УОУ
)
, распределением памяти, органами управления и режим
а
ми работы.


Задание на работу:

изучить организацию, структуру и внутренние регистры МП
КР580ВМ80А, ознакомит
ься с описанием учебно
-
отладочного устройства,
ознакомиться с основн
ы
ми режимами работы УОУ.


Теоретические сведения

Учебно
-
отладочное устройство (УОУ) предназначено для знакомства с
особе
н
ностями построения микроЭВМ на микропроцессоре с фиксированным
набо
ром команд и может быть использовано для исследования методов пр
о
граммирования и р
а
боты БИС, входящих в микропроцессорный комплекс серии
КР580.
Структурная сх
е
ма УОУ

приведена на рисунке 1
.



Рисунок 1
-

Структурная схема УОУ



87

Таблица 1
.
Распределение адр
есов

памяти УОУ

Адрес области
памяти

Назначение области памяти

Объём
байт

0000...03FF

Монитор (встроенное ППЗУ)

1 К

0400...0FFF

Сменное ППЗУ пользователя

3 К

1000...7FFF

Неиспользуемые адреса

28 К

8000...81FF

Встроенное ОЗУ пользователя

512 К

8200...

...830F

Начальный адрес пользователя

Стек пользователя и массив кон
-
трольных точек

180 К

83E0...83E7

ОЗУ монитора

24 К

83F8...83FF

Регистры разрядов дисплея

8 К

8400...87FF

Встроенное ОЗУ пользователя

1 К

8800...FFFF

Неиспользуемые адреса

30 К


Ход р
аботы


1.

Исследование содержимого памяти.

При исследовании области памяти с адресами 0320
-

0333
было
обнаруж
е
но
, что в данных ячейках содержится:

0320



B5

0321



F9

0322



B8

0323



F7

0324



B6

0325



B4

0326



71

0327



77

0328



79

0329



5E

032A


39

03
2B


5D

032C


38


88

032D


76

032E


71

032F


6D

0330



21

0331



00

0332



00

0333



16


Убедились, что повторное нажатие клавиши MEM приводит к уменьш
е
нию на единицу адреса памяти и появлению на дисплее содержимого по нов
о
му а
д
ресу.


2.

Запись информации в память
.

При записи в ячейки памяти с адресами 80Е7
-

80ЕС последовательно к
о
дов 42, FF, 0Е, 23, 77, 01
были выполнены следующи
е

действия
:

-
после нажатия клавиши ADDR наврали адрес 80Е7,

-
после нажатия клавиши MEM ввели код 42,

-
далее, после нажатия клавиши NEXT
на индикаторе появился следующий
адрес 80Е8 и его старое содержимое,

-
далее поступая аналогично тому как был введен первый код вводим
остальные.

При попытке записи кода 10 по адресу 0046 на дисплее появилось сообщ
е
ние об ошибке, т. к. этот адрес из области

памяти используемой монитором
(встроенное ППЗУ).


3.

Исследование и изменение содержимого программно
-
доступных рег
и
стров

микропроцессора.

После последовательного нажатия клавиш REG и клавиши с наименован
и
ем р
е
гистра (клавиши Е) на дисплей было выведено:


89


8200


Е
-
03


Адрес счётчика команд


Обозначение регистра


Содержимое реги

-












стра






4.

Исследование и изменение содержимого регистровых

пар и косвенно
адресуемых ячеек памяти.

После последовательно
го нажатия клавиш ADDR, 1/Р (клавиша соотве
т
ству
ю
щая регистровой паре) и МЕМ на дисплее появилось:


83Е0






SP, 00


Содержимое регистровой Обозначение пары Содержимое ячейки с



пары






указанным адресом


5.

Выполнение демонстрационной программы.

После загрузки команд демонстрационной программы в соответствующие
яче
й
ки ОЗУ (см. табл.2), введения адреса 8200 и нажатия клавиши RUN видим,
что пр
о
грамма производит счёт в десятичной системе.


Таблица 2
. Текст программы
.

Адреса

Содержимое ячеек

8200

3E

8201

00

8202

CD

8203

95

8204

02

8205

06

8206

64

8207

0E

8208

05

8209

0D


90

820А

C2

820B

09

820C

82

820D

C5

820E

C2

820F

07

8210

82

8211

3C

8212

27

8213

C3

8214

02

8215

82


Для

прекращения выполнения программы надо нажать клавишу RST. П
о
сле з
а
писи 00 по адресу 8212 программа производит счёт в шестнадцатеричной
сист
е
ме.


Вывод.

В ходе выполнения работы была изучена организация, структура и вну
т
ренние регистры МП КР580ВМ80А. Прове
дено изучение состояния и измен
е
ние содержимого памяти УОУ. Выполнено исследование и изменение соде
р
жимого регистровых пар и косвенно адресуемых ячеек памяти. Осуществлен
запуск и коррекция демонстрац
и
онной программы.



Приложенные файлы

  • pdf 8814946
    Размер файла: 931 kB Загрузок: 3

Добавить комментарий