Чтобы посмотреть этот 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
0А
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А. Проведено изучение состояния и измен
е
ние содержимого памяти УОУ. Выполнено исследование и изменение соде
р
жимого регистровых пар и косвенно адресуемых я
чеек памяти. Осуществлен
запуск и коррекция демонстрац
и
онной программы.