МУ_ЛР_АВС_622111


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


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

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

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



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




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

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


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


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



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

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


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

Профиль:

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


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



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





Тула 2012 г.

2


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

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

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

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

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

протокол № 6

от "

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

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



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

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

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

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

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


3


СОДЕРЖАНИЕ

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

5

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

.

5

ТРЕБОВАНИЯ

К

ОТЧЕТУ

ПО

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

РАБОТЕ

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

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


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

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


Подгруппа 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

-

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

Управление работой УОУ производится с помощью клавиатуры из 2
5 клавиш.
Клавиатура подключена к шинам УОУ через параллельный интерфейс ИПР, выпо
л
ненный на БИС КР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

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

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

ШАГ

STEP

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

ПРОГОН

RUN

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

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

BRK

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

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

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

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

12



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

в шестнадцатиричной системе счисления
высвечивается адрес, в разрядах 7 и 8
-

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

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

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

знак "тире".

13


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

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

НА БАЗЕ KP580

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

показана на рис.

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.

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

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

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

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

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


младший.

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

Обычно ра
бота программы заканчивается командой останова (
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

11

1
6
3



A

(
A
)



B

23



H

100



C

(
C
)


L

0
2


D

12

27



L

98



B

(L)



A

16



C

(
A
)


D

56



A

13

57



H

21



B

1
27



C

(
C
)


D

(B)


L

75



A

14

61


B

(
B
)



A

152


B

64



C

(B)


L

100



H


MVI

RD
, В2>


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

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

4.4.

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

5.

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

5.1.

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

5.2.

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

5.3.

Установите стартовый

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

5.4.

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

28


6.

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

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

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

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

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

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

(от
MEMORY



память) обозна
чают ячейку пам
я
ти, адрес которой содержится в р
е
гистровой паре
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
DDD
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
РП

00SSS01
0

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

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

10111SSS

СРАВНЕНИЕ

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

8321 (A)
-
(B)

8322 (832
1)+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ВВ55. Схема
подключения клавиатуры приведена на рис.
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


JNC

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

AN
A 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

01100110

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

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

820C

3E 06


MVI A,06

Код символа 1

820E

C2 13 82



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

8211

F6 3F


ORI 3F

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

8213

77


MO
V 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


десятков команд. Регистры же работают на той же частоте, что и сам
процессор.

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

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

это можно сделать, например, с помощью функции
VirtualAlloc
). В случае если приложение обратилось к ячейке памяти, которой забл
а
говременно не была поставлена в соответствие физическая память, то происхо
дит
ошибка "Обращение по недопустимому адресу" (
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 ; увеличить содержимое eax на единицу



add

ebx, eax ; сложить содержимое eax с содеримым ebx,


;
результат поместить в ebx



c
mp 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
:00401030 030578344000
add

eax
,[403478
h
]


Поля этих строк имеют следующий смысл:

example.pas
-

имя файла с исходным текстом программы

5
-

номер строк
и в файле исходного кода

a

:= 1;
-

сама строка исходного текста

cs
:00401030
-

адрес команды в памяти

030578344000
-

машинный код команды

add

eax
,[403478
h
]
-

запись команды на языке ассемблера

66


Команда, которая выполняется в данный момент, подсвечивается сим
волом ►.
При активном окне дизассемблера смысл действий
Step

и
Next

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

Поясним дизассемблированный код в нашем примере:

mov DWord Ptr [403474h],1
; Поместить в 32
-
х

битную (
DWord
) область памяти


;

по адресу 403474h значение 1

mov DWord Ptr [403478h],2
; Поместить в 32
-
х битную область памяти значение
2

mov eax,[403474h]
;
Поместить в регистр eax значение из области
памяти



; по адресу

403474
h

add eax,[403478h]
;
Сложить значение находящееся в регистре
eax

со


;

значением находящимся по адресу
403478
h


; результат поместить в
eax

mov [403
47Ch],eax
;
Значение находящееся в eax поместить в область


; памяти по адресу
40347
Ch

Очевидно, что 32
-
х битная область памяти, начинающаяся с адреса 403474h
-

это
ни что иное, как переменная a, с адреса 403478h
-

b, 40
347Ch
-

с.

АССЕМБЛЕРНЫЕ ВСТАВКИ

В языке программирования
Pascal

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


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

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

Напомним, что мы рассматриваем
32
-
х битный режим пр
о
цессора
x
86

и компилятор
Virtual

Pascal
.

Например, оператор сложения в программе представленной на рисунке
17

может
быть переписан с использованием ассемблерной вставки, как показано на рисунке
19
.


p
rogram 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

Pascal
. Изучить механизмы вызова процедур и функций.

ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕ
НИЯ

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

Однако понимание того, во что разворачивается высокоуровневый код после
компиляции все
-
таки полезно. Традиционно

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

ИСПОЛЬЗОВАНИЕ ПЕРЕМЕ
ННЫХ В АССЕМБЛЕРНОМ
КОДЕ

Простейший способ определить операнд в памяти
-

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

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

кодом, так и кодом на языке ассемблер (рисунок 20).


program vars;

var


IntegerVar : longint;

begin


IntegerVar := 5;




asm


dec IntegerVar


end;




writeln(IntegerVar); { на эк
р
ан будет выведено число 4 }

end.


Рисунок 20
-

Использование переменных

70


ПОНЯТИЕ СТЕКА

Стек


это область оперативной памяти, организо
ванная по принципу
FIFO

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

Рассмотрим пример. В стек добавляются три элемента типа двойное слово (4
байта) в следующем порядке: 1
-
й, 2
-
й, 3
-
й. Получившийся стек представлен на рису
н
ке 21. Последний добавленный элемент называется вершиной стека. Каждый

новый
элемент «кладется» на вершину стека. При взятии элемента из стека первым берется
также элемент, являющийся вершиной. Т.

е. для стека из четырех элеме
н
тов порядок
доступа к ним будет такой: новый, 3
-
й, 2
-
й, 1
-
й.


Рисунок 2
1


Стек

Для организации стековой структуры в 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

Message
Box

; вызов системной функции Windows


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

ЗАДАНИЕ К ЛАБОРАТОРН
ОЙ РАБОТЕ

В задании представлены различные функции, написанные

на ассемблере, встр
о
енном в
Virtual

Pascal
. При выполнении лабораторной работы необходимо:

1.

Написать программу в среде

Virtual

Pascal

(на Паскале), использующую
представленную функцию.

2.

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

Варианты заданий:

1.

{ Log base 10 of X}

function Log10(X: Extended): Extended;

{&Frame
-
} {&Uses non
e}

asm


fldlg2

75



fld X


fyl2x

end;


2.

{ Log base 2 of X }

function Log2(X: Extended): Extended;

{&Frame
-
} {&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: array 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.


{ terminator. }

76


function StrLen(Str: PChar): Word;

assembler; {$USES edi} {$FRAME
-
}

asm


cld


mov edi,Str


or ecx,
-
1


xor eax,eax


repne scasb


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


repne 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 esi,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


m
ov 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.

{ Converts Str to lowe

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'



al

@@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


JLE @@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
.
EduL
ib
.
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
DDD
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
РП

00SSS
010

Загрузка аккумулятора из памяти
с адресом из РП

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

00110100

ИНКРЕМЕНТ

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

DAD

РП

00
SSS
001

Прибавление содержимого п
а
ры РП к содержимому пары
HL

1 3 10






82


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

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

Маши
н
ный
код

Выполняемые действия

Число
байт та
к
тов ци
к
лов

К
о
манды

Бе
з
условной

передачи управления


JMP
АДР

11000011

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

3 3 10

PCHL

11101001

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

1 1 5

К
о
манды

Условной

передачи управления


JZ
АДР

1
101010

По нулю

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

ORA 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




MOV

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

MOV

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

M
OV

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

S
BI

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”






Выполн
ил студент группы
622111

____________

Проверил доц. каф. АТМ А.В. Копылов .____________







Тула 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
было
обнаруж
е
но
, что в данных ячейках содержится:

0
320



B5

0321



F9

0322



B8

0323



F7

0324



B6

0325



B4

0326



71

0327



77

0328



79

0329



5E

032A


39

032B


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

82


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 8814484
    Размер файла: 933 kB Загрузок: 1

Добавить комментарий