Uploaded by jsut_live1

Лабораторный практикум (09.03.04) Системное программирование. Дмитренко П.С.

advertisement
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«КРЫМСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ имени В.И.ВЕРНАДСКОГО»
ФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ
Кафедра компьютерной инженерии и моделирования
Дмитренко П.С.
Лабораторный практикум по дисциплине
«Системное программирование»
для студентов 2 курса дневной формы обучения
направления подготовки 09.03.01, 09.03.04
образовательно-квалификационного уровня «бакалавр»
Симферополь, 2020
Рекомендовано к печати заседанием кафедры компьютерной инженерии и
моделирования
протокол № 5 от 15.01.2020
Рекомендовано к печати:
Учебно-методическим советом Физико-технического института (структурное
подразделение) ФГАОУ ВО «КФУ им. В.И.Вернадского»
протокол № 6 от 28.02.2020
Составитель: Дмитренко П.С. ассистент кафедры компьютерной инженерии и
моделирования.
ВВЕДЕНИЕ
Настоящие указания учебно – методического пособия включают в себя описания
лабораторных работ по дисциплине «Системное программирование» студентов
направления подготовки 09.03.01 «Информатика и вычислительная техника» и
09.03.04 «Программная инженерия». В практикум включены работы, в которых
рассматриваются базовые понятия программирования на язке Ассемблер и в
мнемокодах на простейших архитектурах.
1.
2.
3.
4.
Требования к студентам по подготовке, выполнению и отчету
по лабораторным работам (практическим занятиям, семинарам и.т.д.) :
Студент посещает лабораторное занятие ознакомившись с теоретическим материалом
по данной теме, для выполнения лабораторных работ.
В начале занятия преподаватель проверяет подготовку к лабораторной работе и
оценивает ее. Студенты, не показавшие достаточных теоретических знаний к
выполнению работы не допускаются.
Содержание отчета к каждой лабораторной описано в соответствующем подпункте
каждой работы.
Порядок сдачи лабораторной работы: Студент предоставляет преподавателю отчет
определенного образца, описывает ход работы и проделанные действия, отвечает на
контрольные вопросы и вопросы по ходу выполнения работы или на вопросы,
определяющие уровень теоретической подготовки.
Для самоконтроля и подготовки студентов к практическим работам описание
каждой из них содержит большое количество вопросов и задач. Некоторые вопросы
требуют более глубокой проработки теоретического материала и умения применять
его в нестандартных условиях.
СОДЕРЖАНИЕ
Лабораторная работа № 1
5
Лабораторная работа № 2
13
Лабораторная работа № 3
17
Лабораторная работа № 4
21
Лабораторная работа № 5
30
Приложение 1
39
Приложение 2
43
Приложение 3
45
Приложение 4
47
Лабораторная работа №1 на тему
«Изучение и исследование микропроцессорного тренажера»
Цель:
1. Практически закрепить знание теоретических сведений об архитектуре
микропроцессоров серии КР580; 2. Изучить команды загрузки регистров МП КР580ИК80А и
пересылки данных между ними; 3. Привить практические навыки написания программ и
программирования операции загрузки регистров
микропроцессоров и пересылки данных между
ними.
1.
Краткие теоретические сведения
Микропроцессор
(МП)-устройство,
выполняющее
функции
программной
обработки
информации, аналогичные функциям центрального процессора обычной ЭВМ, и реализованное в
одной схеме большой степени интеграции (БИС-полупроводниковая микросхема, которая имеет 500
или больше элементов) или в виде модуля, содержащего несколько БИС.
Микросхема
КР580ИК80А
представляет
собой
однокристальный
восьмиразрядный
микропроцессор с фиксированной системой команд, который предназначен для применения в
устройствах обработки данных и схемах управления в качестве центрального процессорного
элемента. Микропроцессор конструктивно помещен в пластиковый корпус с 40 выводами.
Основными функциональными узлами микропроцессора являются:
-
АЛУ;
-
устройство управления и синхронизаци;
-
блок регистров общего назначения (РОН);
-
вспомогательные регистры;
-
регистр признаков условий (или регистр флажков);
-
исходные буфера данных и адрес.
МП работает с восьмиразрядными словами данных (байтами), а для задания адреса памяти
используется шестнадцать разрядов (два байта). Формат данных интерпретируется как:

целое положительное число без знака в прямом коде в диапазоне от 0 до 255 (в
десятичной системе исчисления);

число со знаком в дополнительном коде. Диапазон изменения чисел от +127 до

128 в десятичной системе исчисления;

двухразрядное двоично-десятичное число без знака в диапазоне от 0 до 99 в десятичной
системе исчисления;

логический байт данных;

допускается
представление
чисел
в
двухбайтовом
формате
в
прямом
или
дополнительном коде. Диапазон изменения чисел при этом от +32767 до -32786 в десятичной
системе исчисления.
Арифметические операции выполняются по правилам двоичной арифметики над числами в
дополнительном
коде.
Арифметические
операции
над
двоично-десятичными
числами
поддерживаются только одной командой – командой десятичной коррекции после сложения DAA.
Необходимость коррекции обусловлена тем, что сложение двоично-десятичных чисел производится
на двоичном сумматоре с использованием кода « с избытком 6». Для выполнения вычитания этих
чисел необходимо сформировать дополнительный код, который образуется как ( 99 –вычитаемое +1),
выполнить двоичное сложение, затем
- команду DAA. Логические операции выполняются по
правилам двоичной логики. Результат операции представляется числом в соответствующем формате
и байтом признаков результата (флажков).
S
Z
X
A
X
P
X
C
C
Пять признаков (остальные три разряда фиксированы) устанавливаются в зависимости от
результата выполнения операции:

Бит знака S устанавливается в соответствии со старшим битом D7 результата.

Бит нуля Z устанавливается в "I", если результат равен 0; в противном случае
сбрасывается в "0".
Бит четности Р устанавливается в "I", если число единиц в результате четно; в

противном случае сбрасывается в "0".
Бит переноса С устанавливается в "I", если в результате выполнения операции

сложения возникает перенос из старшего разряда или при вычитании перенос не возникает
(происходит заем); в противном случае обнуляется.
Бит вспомогательного переноса АС устанавливается в "I" при появлении переноса из

третьего
в
четвертый
разряд
результата
при
выполнении
сложения
и
вычитания.
Используются при обработке двоично-десятичных чисел.
Форматы команд зависят от типа команд и способа адресации. Код операции представляется
одним байтом. В случае прямой адресации к памяти используется адрес длиной 16 бит (т.е.
максимальная емкость памяти 65536 байтов).
Длина команды может быть 1, 2 или 3 байта. Многобайтные команды хранятся в соседних
ячейках памяти и адресуются по первому байту, младший байт располагается по меньшему адресу.
Формат команды определяется кодом операции. Адресация памяти в микропроцессоре КР580ИК80А
задается в коде операции и использует следующие способы.

Прямая: используется для адресации однобайтовых слов данных и двухбайтовых
адресов, содержащихся в памяти или внешнем устройстве. Прямой адрес указывается во втором или
во втором и третьем байтах команды.

Прямая регистровая: используется для адресации одно- и двухбайтовых слов,
содержащихся во внутренних регистрах процессора, и указывается в байте кода операции.

Косвенная регистровая: используется для адресации байтов данных в памяти.
Косвенный адрес содержится в паре регистров процессора (адресных указателях), указываемых в
байте кода операции.

Непосредственная: используется в двух- или трехбайтовым форматом команд. Байт2
(или байты 2 и 3) непосредственно содержат данные (операнд или адрес, заносимый в регистр).

Cтековая: используется для косвенной адресации двухбайтовых слов данных или
адресов, находящихся в области памяти, отведенный под стек. Адрес определяется по содержимому
регистра указателя стека (SP).
Сложности при программировании связаны также с ограниченным числом регистров и их
малой разрядностью, что приводит к большому количеству операций пересылок. Эти недостатки
приводят к увеличению объема памяти, необходимого для хранения программ, и времени их
выполнения, так как приходится использовать подпрограммы, последовательно-параллельную
обработку, большое количество пересылок. В микропроцессоре КР580ИК80А программнодоступными являются 8-битовые регистры A,B,C,D,E,H,L; 16-битовые - слово состояния PSW
(регистры А и F), пары регистров B,D,H, обозначаемые по первому регистру пары BC,DE,HL
соответственно, указатель стека SP и программный счетчик РС, а также отдельные признаки регистра
F (см.рис.5).
Система команд микропроцессора содержит 78 команд и может быть разбита на следующие
группы:
1.
группа команд пересылки, осуществляющих передачу информации между регистрами
(11 команд);
2.
группа арифметических команд (14 команд);
3.
группа логических команд (15 команд);
4.
группа команд передачи управления (29 команд);
5.
группа команд работы со стеком, ввода-вывода и управления регистрами процессора (9
команд).
Выделим наиболее общие закономерности их использования.
1. Арифметические и логические операции разрешены только между аккумулятором и байтом данных
или между аккумулятором и любым регистром.
2. Аккумулятор и регистровая пара HL являются единственными регистрами, которые могут быть
непосредственно загружены в память.
3. Аккумулятор является единственным регистром, который может быть инвертирован, сдвинут,
косвенно загружен в память с использованием регистровых пар ВС и DE или использован в командах
ввода/вывода (IN, OUT).
4. Регистровая пара HL является единственной, содержимое которой может быть передано в счетчик
команд (команда PCHL) или указатель стека (команда SPHL).
5. Регистровая пара НL может использоваться как аккумулятор двойной длины при сложении 16разрядных чисел (команда DAD).
6. Содержимое регистровых пар HL и DE можно менять местами (команда HCHG).
7. Отдельные команды могут применяться для специальных функций. Команды XRA А или SUB А
обнуляют аккумулятор. Команды ANA А или ORA А очищают флаг переноса, а команда ADD А
выполняет логический сдвиг аккумулятора влево.
8. Команды увеличения (уменьшения) на 1 регистров INR (DCR) действуют на все флаги, за
исключением флага переноса. Команды увеличения (уменьшения) на 1 регистровых пар INX (DCX)
не оказывают влияния на флаги.
9. В стек или из стека могут быть переданы только регистровые пары. Одной из таких регистровых пар
является слово состояния микропроцессора, которое содержит аккумулятор (старший байт) и флаги
(младший байт). Команды CALL и RET передают адрес в стек и обратно.
10. При записи 16-разрядных адресов младший байт записывается первым.
Недостатками системы команд являются:

малая мощность команд. Отсутствуют команды умножения, деления двоичных и двоичнодесятичных чисел, арифметические и логические сдвиги, очистки регистров и так далее,

асимметричность: определенные действия закреплены за фиксированными регистрами, различное
воздействие однородных команд на флаги регистра признаков, поэтому необходимо контролировать
формирование необходимых признаков по описанию команды

ограниченное количество способов адресации. Отсутствие индексного, базового, относительного
способов адресации существенно усложняет программирование,

ориентация на обработку 8- и 16-разрядных данных.
Команда загрузки регистров общего назначения
Синтаксис команд загрузки регистров общего назначения (РОН) в общем виде представляется
форматом
MVI R, K
где R-идентификатор регистров общего назначения A, B, C, D, E, H, L.
K-операнд, т. е. число или константа;
Эта команда двухбайтовая и в первом байте содержится код операции (КОП), а во втором
байте- операнд. Она использует прямой регистровый и непосредственный методы адресации и
выполняется за 2 машинных цикла, на которые растрачивается 7 тактов.
Команда манипуляции 16-тиразрядными данными
Синтаксис команд манипуляции 16-тиразрядными данными в общем виде предоставляется
форматом
LXI R,KHKL
где R-идентификатор первого регистра (B, D или H) регистровых пар BC, DE, HL
KH-старший, а
KL-младший байт 16-тиразрядного операнда;
Команда трехбайтовая, в первом байте- КОП, во втором- младшие, а в третьем- старшие 8
разрядов операнда. Она использует прямой регистровый и непосредственный методы адресации и
выполняется за 3 машинных цикла, на которые растрачивается 10 тактов. В памяти всегда
располагается сначала младший, а потом- старший байт операнда.
Команда пересылки
Синтаксис команды пересылки из одного регистра в другой в общем виде представляется
форматом
MOV R1,R2
где
R1- идентификатор регистра- получателя, т. е. регистра, в который пересылается
информация;
R2- идентификатор регистра- источника информации, т. е. регистра, из которого
информация берется для передачи.
В качестве регистров R1 и R2 могут использоваться аккумулятор А и регистры общего
назначения B, C, D, E, H и L.
Команда MOV является однобайтовой и использует прямую регистровую адресацию. Она
выполняется за 1 машинный цикл, составляющий 5 тактов.
Команда загрузки регистра указателя стека
Для записи информации в регистр указателя стека SP используют две команды:
LXI SP,KHKL-непосредственной загрузки;
SPHL-косвенной загрузки;
SP- идентификатор регистра указателя стека;
KH, KL- старший и, соответственно, младший байты операнда.
Особенности команды LXI рассмотрены выше. Команда SPHL является однобайтовой и
использует неявный метод адресации. Она выполняется за 1 машинный цикл, составляющий 5
тактов.
По команде SPHL регистр указателя стека SP загружается содержимое регистровой пары H.
Поэтому, чтобы в регистр указателя стека поместить операнд, его необходимо вначале расположить
в регистровой паре H.
Команда загрузки счетчика команд
По команде загрузки счетчика команд, синтаксический формат которой имеет вид
PCHL
в счетчик команд
PC записывается содержимое регистровой пары Н. Поэтому перед загрузкой
счетчика необходимо предварительно в регистровую пару Н поместить требуемый адрес, и только
затем можно выполнить команду PCHL.
PCHL- команда безусловного перехода по адресу, хранимому в регистровой паре Н. Является
однобайтной , использует неявный метод адресации и выполняется за 1 машинный цикл,
составляющий 5 тактов.
2.
Порядок выполнения лабораторной работы
Для выполнения лабораторной работы необходимо выполнить следующие действия:
1.
Запишите в память микропроцессора с начального адреса 800 последовательность
команд (программу), представленную в таблице 2.1. Воспользуйтесь для этого командой просмотра и
модификации содержимого ячеек памяти системной программы МОНИТОР.
2.
Выполните последовательность команд (программу) посредством команды
СТ800 80Е ВП
выполнения программы пользователя. По окончании выполнения программы в адресной части
дисплея должен отобразиться адрес останова 80Е 16, а в информационной- символ «-». Нажмите
клавишу ЗП и переведите УМК в режим приема команд.
3.
Просмотрите содержимое РОН, используя команду РГ просмотра и модификации
содержимого регистров системной программы «МОНИТОР»(клавиша РГ)В регистрах должна
содержаться следующая информация:
А=0016, В=0116,C=0216, D=0316, E=0416, H=0516, L=0616
Таблица 1 Последовательность команд загрузки РОН операндом (константой, числом)
4.
Адрес
Команда
Код команды
Загружаемый операнд
800
MVI A,0
3E 00
00
802
MVI B,1
06 01
01
804
MVI C,2
0E 02
02
806
MVI D,3
16 03
03
808
MVI E,4
1E 04
04
80А
MVI H,5
26 05
05
80С
MVI L,6
2E 06
06
Для загрузки 16-тиразрядных данных выполните действия, представленные в
таблице 2.
Таблица 2 Программа манипуляции 16-тиразрядными данными
Адрес
Команда
Код команды
Загружаемый операнд
800
LXI B,3132
01 32 31
3132
803
LXI D,3334
11 34 33
3334
806
LXI H,3536
21 36 35
3536
После выполнения этой программы содержимое регистров должно выглядеть следующим
образом: B=3116, C=3216, D=3316,E=3416, H=3516, L=3616.
5.
Для пересылки данных из одного регистра в другой выполните программу,
приведенную в таблице 3.
Таблица 3 Программа пересылки данных
Адрес
Команда
Код команды
800
MVI A,FF
3E FF
802
MOV B,A
47
803
MOV C,B
48
Загружаемый операнд
Загрузка аккумулятора
Пересылка содержимого аккумулятора в регистр В
CB
804
MOV D,C
51
DC
805
MOV E,D
5A
ED
806
MOV H,E
63
H E
807
MOV L,H
6С
LH
После выполнения этой программы в регистрах должно содержаться одно и то же число FF.
6.
Для выполнения команд непосредственной и косвенной
загрузки регистра
указателя стека SP запишите в память с начального адреса 80016 код команды, приведенной в
таблице 4 и выполните ее посредством команды СТ 800 803 ВП
Таблица 4 Программа непосредственной загрузки регистра указателя стекаSP
Адрес
Команда
800
LXI SP,0810
Код команды
Загружаемый операнд
31 10 03
0810
По окончании выполнения программы нажмите клавишу ВП и переведите УМК в режим
приема команд. Проверьте содержимое регистра указателя стека. Содержимое старшего байта
должно быть SH=0816, а младшего- SL=1016, а младшего SL=1016/
7.
Для
косвенной
загрузки
регистра
указателя
стека
выполните
действия,
предложенные в таблице 5.
Таблица 5 Программа косвенной загрузки регистра указателя стекаSP
Адрес
Команда
800
LXI H,0830
803
SPHL
Код команды
21 30 08
F9
3.
Загружаемый операнд
Предварительное размещение в регистровой паре Н числа 083016
Загрузка регистра указателя стека SP
Задание на самостоятельную работу
Задание 1: напишите в табличной форме и выполните программу загрузки РОН согласно
индивидуальному заданию. По окончанию выполнения программы проверьте правильность
полученных и результатов посредством команды РГ системной программы МОНИТОР. Результаты
программирования и выполнения подготовленной последовательности команд оформите в виде,
аналогичном таблице 1. Сделайте выводы по работе.
Задание 2: напишите в табличной форме и выполните программу загрузки регистровых пар
согласно индивидуальному заданию. По окончанию выполнения программы проверьте правильность
полученных и результатов посредством команды РГ просмотра и модификации
содержимого
регистров системной программы МОНИТОР. Результаты программирования и выполнения
подготовленной последовательности команд оформите в виде, аналогичном таблице 2. Сделайте
выводы по работе.
Задание 3: напишите в табличной форме и выполните программу пересылки информации
из регистра в регистр, предусмотрев предварительную загрузку регистров- источников данными
.согласно индивидуальному заданию.
выводы по работе.
Проверьте правильность выполнения программ. Сделайте
Задание 4: напишите в табличной форме и выполните программу загрузки указателя стека
(непосредственной и косвенной) согласно индивидуальному заданию.
Задание 5: аналогично с предыдущими заданиями напишите и выполните программу
безусловного перехода согласно индивидуальному заданию ( загрузка программного счетчика).
4.
Содержание отчета
1. Краткое описание цели работы и результатов самостоятельной подготовки к лабораторному
занятию.
2. Тексты программ выполнения лабораторной работы.
3. Протокол работы, отражающий последовательность действий на пульте отладочного
устройства при выполнении программ.
5.
Контрольные вопросы
1. Что такое микро-ЭВМ?
2. Что такое микропроцессор? Его существенные отличия от микро-ЭВМ
3. Какие основные типы операций он может выполнять? Соответственно, на какие основные группы
можно разбить его команды?
4. Какие адреса памяти в УМКотносятся к ПЗУ и ОЗУ?
5. В чем заключается принципиальное отличие ПЗУ от ОЗУ?
6. Что происходит при попытке записи данных в ПЗУ?
7. Сохраняется ли в памяти УМК программа после выключения питания?
8. Что такое флаг? Для чего он используется?
9. Что такое программа-монитор и ее функции?
10. Какой формат могут иметь команды микропроцессора?
11. Какие регистры существуют в микропроцессоре? Определите само понятие регистр.
12. Что такое стек, указатель стека и счетчик команд?
13. Назовите основные типы адресации.
Лабораторная работа № 2 на тему
«Программирование арифметических операций »
Цель работы: изучить команды пересылки данных и арифметические команды, способы
адресации данных при выполнении простых программ по нахождению суммы ряда чисел и сложении
(вычитании) с переносом (заёмом).
1. Краткие теоретические сведения
Арифметические операции микропроцессора КР580ИК80а выполняются с помощью блока
арифметико-логического устройства (АЛУ), который предназначен для выполнения арифметических
и логических операций над числами в параллельном 8-разрядном двоичном коде, а также операций
циклического сдвига.
Команды данной группы предназначены для выполнения операций сложения, сложения с
переносом, вычитания, вычитания
с переносом, инкрементирования, декрементирования и
десятичной коррекции аккумулятора. Все эти команды оперируют с данными в памяти и регистрах и
используют в той или другой мере все 5 флагов регистра F. Операции вычитания проводятся с
использованием дополнительного кода и устанавливают флаг переноса СУ в «1» при наличии
переноса при выполнении операции (т. е. если есть заем) и устанавливают флаг переноса СУ в «0»
при отсутствии переноса (т. е. если нет займа).
Все команды арифметических операций выполняются только с использованием аккумулятора
А, в котором обязательно должен находиться один из операндов еще до выполнения команды.
Второй операнд необходимо предварительно загрузить:
-
в один из РОН МП;
-
в ячейку памяти МП;
-
записать во второй байт команды.
Только после размещения операндов модно выполнять команду арифметической операции.
Результат вычислений автоматически, с помощью метода неявной адресации, размещается в
аккумуляторе А, а число, хранимое там, стирается.
МП КР580ВМ80А выполняет только операции сложения и вычитания с помощью
соответствующих команд. Операции умножения и деления осуществляются с помощью специальных
подпрограмм, реализованных посредством набора команд сложения, сдвига и других преобразований
в соответствии с известными правилами, изученными в разделе «Математические разделы ЭВМ»
1.2 Примеры выполения арифметических операций
Рассмотрим процесс программирования выражения
(A)=(A)+(B)+(M)+1
Здесь и далее под (A), (B), (M) будем понимать содержимое регистра-аккумулятора А,
регистра В и некоторой ячейки памяти М. Вполне очевидно, что перед выполнением выражения
исходные данные нужно поместить в аккумулятор А, регистр В и ячейку памяти М. При этом адрес
ячейки памяти перед реализацией выражения следует заранее поместить в регистровую пару Н.
Реализовывать заданное выражение будем в том порядке, в котором оно записано.
Программа, реализующая сложение 8-мибайтовых чисел приведена в таблице 2.
Таблица 1
Программа последовательного сложения чисел
Адрес
Мнемокод
команды
Код
команды
800
MVI A, 45
802
MVI B,
AB
LXI H, 900
809
MVI M,
0E
ADD B
3E
45
06
AB
21
00
09
36
0E
80
80А
ADD M
86
80В
INR A
3C
804
807
Комментарий
Результат
Выполнения
команды
(A)=4516
Загрузка числа 4516 в аккумулятор
Загрузка числа АВ 16 в регистр В
(B)=AB16
Загрузка регистровой пары Н адресом ячейки памяти М
(H)=0916
(L)=0016
Загрузка числа 0Е16 в ячейку памяти М
(M)=0E16
Суммирование содержимого аккумулятора и содержимого
регистра В. Результат помещается в аккумулятор.
Суммирование содержимого аккумулятора и содержимого
ячейки памяти. Результат помещается в аккумулятор
Инкрементирование (увеличение на единицу) содержимого
аккумулятора. Результат остается в аккумуляторе.
Согласно заданию
(A)=F016
Согласно формуле
(A)=FE16
Согласно формуле
(A)=FF16
2. Порядок выполнения лабораторной работы
1.
Введите программу из таблицы 1 в память УМК и выполните ее в покомандном режиме
посредством команды СТ системной программы МОНИТОР, создавая в ее формате на каждом шаге
начальный адрес очередной выполняемой команды и адрес точки останова. В качестве адреса точки
останова следует понимать следующий начальный адрес очередной выполняемой команды, которая
должна будет выполнена на следующем шаге выполнения программы из таблицы 2. Программная
реализация покомандного режима выполнения программы обусловлена необходимостью просмотра
в процессе решения задачи содержимого регистров микропроцессора Кр580ИК80А. В пошаговом
(покомандном) режиме УМК происходит установка, а не прерывание
выполнения программы.
Поэтому для временного выхода из выполняемой программы необходимо нажать клавишу
управления СБ, что приводит к изменению содержимого регистров микропроцессора ( содержимое
ячеек памяти остается постоянным).Дальнейшее выполнение программы становится невозможным.
При программной реализации
покомандного режима происходит прерывание выполняемой
программы, в результате которого возможен просмотр содержимого регистров МП. Их содержимое
не будет изменено.
2.
Подготовьте
программы,
реализующие
арифметические
выражения
согласно
индивидуальному заданию и составьте их блок- схемы. Решите задачи аналитически, выполняя
арифметические операции в том порядке, который определяют заданные выражения.
3.
Запишите разработанную программу в память УМК с адреса 800 16
и
выполните ее в
программно реализованном покомандном режиме посредством команды СТ старта программы
пользователя системы «МОНИТОР».
4.
На каждом шаге после выполнения очередной команды сравните результат выполнения
команд с результатами аналитического решения и сделайте выводы. Определите время выполнения
программы в автоматическом режиме.
5.
По результатам выполнения лабораторной работы оформите отчет, который должен
содержать следующую информацию.
3. Содержание отчета
1. Краткое описание цели работы и результатов самостоятельной подготовки к лабораторному
занятию.
2. Тексты программ выполнения лабораторной работы.
3. Протокол, отражающий последовательность действий на пульте отладочного устройства и
результаты выполнения команд МП К580ИК80 с записью последовательности нажатых клавиш на
пульте отладочного устройства.
4. Контрольные вопросы
1. Что такое команда МП?
2. Что такое система команд МП?
3. Назовите группы команд МП К580ИК80?
4. Из каких частей состоит команда МП?
5. Что такое мнемокод?
6. Назовите способы адресации, используемые в МП К580ИК80А?
7. Для чего служат команды пересылки данных?
8. Назовите значения разрядов регистра признаков МП К580ИК80А?
9. Какие из разрядов формируются при выполнении команды пересылки данных?
10. После выполнения команды пересылки данных MOV С,В сохраняются ли исходные
данные в регистре В?
11. Приведите примеры команд пересылки данных с прямой, косвенной, регистровой
адресацией.
12. В каких байтах располагаются младшие и старшие разряды адреса в командах, содержащих
адрес ячейки памяти?
13. В ячейке памяти с адресом 8314 находится число F4. Какие команды можно применить для
записи его в регистр С?
14. В регистре D находится число Е4. Какие команды можно использовать для записи его в
ячейку памяти с адресом 8147?
15. В каких регистрах МП К580ИК80 может храниться адрес ячейки памяти?
16. Для чего служат арифметические (логические команды)?
17. Данные, какой длины может обрабатывать МП К580ИК80А?
18. Где хранятся операнды, и куда помещается результат после выполнения арифметических
(логических) команд?
19. Какие разряды в регистре признаков формируются при выполнении арифметических
(логических) команд?
20. Для чего используются команды положительного и отрицательного приращения (INR, DCR,
INX, DCX)?
21. Как выполняется команда сравнения двух чисел? Где формируется результат выполнения
этой команды?
22. Как выполняются команды простого и циклического сдвига содержимого аккумулятора?
23. Над содержимым каких программно доступных регистров МП К580ИК80А можно
выполнить команду сдвига?
Лабораторная работа № 3 на тему
«Исследование выполнения логических операций»
Цель:
1. Практически закрепить знание теоретических сведений о программировании
логических операций микропроцессорами. 2. Изучить команды МП КР580ВМ80А для выполнения
логических операций. 3. Привить практические навыки написания и выполнения программ для
программирования логических операций в машинных кодах для микропроцессора
1. Краткие теоретические сведения
Логические команды предназначены для выполнения операций над переменными по законам
булевой алгебры, тестирования и сравнения бит данных (т. е. сравнение с заданной маской бит) и
сдвига данных. Все операции логики выполняются с двумя операндами, один из которых всегда
находится в аккумуляторе, а результат операции сохраняется в аккумуляторе.
Операции сдвига выполняются только над операндами, которые находятся в аккумуляторе, а
из всех имеющихся флагов используются только флаги знака Z и переноса CY. Различают два типа
команд сдвига: сдвиг циклический и сдвиг с переносом. Примером команды первого типа является
команда RLC (сдвиг циклический по левую сторону), если содержимое аккумулятора сдвигается по
левую сторону на один разряд. При этом устанавливается в состоянии бита старшего розряда
аккумулятора А7, бит младшего розряда аккумулятора А0 и бит переноса CY, что отвечает
следующей схеме выполнения команды (Рисунок 1).
CY
A7
A6
A5 A4
A3
A2
A1
A0
Рисунок 1 Команда циклического сдвига влево
Примером команды 2-го типа является команда RAL (сдвиг по левую сторону с перенесом),
если проводится сдвиг содержимого аккумулятора на один разряд по левую сторону. При этом бит
переноса СУ устанавливается в состояние бита старшего разряду аккумулятора А7, а бит младшего
разряда
А0 – в состояние бита переноса СУ, что отвечает следующей схеме выполнения команды
(рисунок 2 ) и ее условному обозначению.
В логических командах используется регистровая,
косвенно регистровая и непосредственная адресации
CY
A7
A6
A5
A4
A3
A2
A1
A0
Аккумулятор
1.2 Пример программирования логических операций
Рассмотрим программирование логических операций на примере программной реализации
функции алгебры логики
А=  A  B  M   C  D
где под A, B, C, D и M понимается содержимое регистров а ( аккумулятора), В, С и ячейки памяти
соответственно. Перед выполнением программы, выполняющей необходимые действия, необходимо
предварительно разместить в соответствующих регистрах и ячейке памяти нужные данные.
Логические операции будем выполнять в той последовательности, в которой они заданы
функцией алгебры логики.
Последовательность необходимых команд будет выглядеть следующим образом:
1. Размещаем данные в соответствующих регистрах;
2. Заносим адрес ячейки памяти в регистровую пару H;
3. Заносим данные в ячейку памяти;
4. Производим операцию логического сложения содержимого аккумулятора А с содержимым регистра
В. Для этого используем команду ORA B. Результат будет помещен в аккумулятор.
5. Следующую операцию производим с помощью
команды ORA M- сложения содержимого
аккумулятора с содержимым ячейки памяти. результат, как известно, сохраняется в аккумуляторе.
6. Теперь необходимо выполнить логическое умножение содержимого аккумулятора и содержимого
регистра С посредством команды ANA C.
7. Сложение по модулю два производим с помощью команды XRA D над операндами,
расположенными в аккумуляторе и регистре D . Результат будет помещен в аккумулятор.
8. Заключительным этапом программирования заданного выражения будет выполнение логической
операции НЕ (отрицания). Она реализуется путем инвертирования содержимого аккумулятора, где
хранится результат выполнения всех предыдущих действий, с помощью команды CMA.
Программа, реализующая заданную функцию алгебры логики, приведена в таблице 1.
Таблица 1
Адрес
Мнемокод
команды
Код
команды
800
MVI A, 25
802
MVI B, 3А
804
MVI С, 2Е
806
MVI D, 16
808
LXI H,
3E
25
06
3A
0E
2Е
16
16
21
Комментарий
Загрузка числа 2516 в аккумулятор
Результат
Выполнения
команды
(A)=2516
Загрузка числа 3А16 в регистр В
(B)=3A16
Загрузка числа 2Е16 в регистр С
(C)=2Е16
Загрузка числа 1616 в регистр D
(D)=1616
Загрузка регистровой пары Н адресом ячейки памяти М
(H)=0916
900
80B
MVI M, 28
80D
ORA B
00
09
36
28
B0
80E
80F
810
811
ORA M
ANA C
XRA D
CMA
B6
A1
AA
2F
(L)=0016
Загрузка числа 2816 в ячейку памяти М
(M)=2816
Логическое сложение содержимого аккумулятора А с содержимым
регистра В
Логическое сложение
Логическое умножение
Сложение по модулю 2 содержимого аккумулятора и регистра D.
Инвертирование содержимого аккумулятора. Результат
размещается в А.
Программирование
операции
сравнения
двоичных
чисел:
в
системе
команд
микропроцессора КР580ВМ80А предусмотрено три типа команд сравнения:
-
сравнение содержимого аккумулятора с содержимым регистра;
-
сравнение содержимого аккумулятора с содержимым ячейки памяти М, адрес которой должен
содержаться в регистровой паре Н;
-
сравнение содержимого аккумулятора А с операндом, который находится непосредственно во
втором байте команды.
Таким образом, один из операндов должен обязательно находиться в аккумуляторе.
Команды сравнения реализуются путем вычитания содержимого регистра, содержимого
ячейки памяти или операнда, находящегося во втором байте команды, из содержимого аккумулятора
А. При этом содержимое аккумулятора А не изменяется . Результат сравнения отображается в
состояниях триггеров регистра F признаков условий:
-
триггер Р признака четности устанавливается в состояние, соответствующее числу единиц в
разности, полученной при сравнении операндов: если число единиц четное- в состояние логической,
если нечетное- в состояние логического нуля.
-
триггер S признака знака устанавливается в состояние, определяемое значением старшего разряда
результата вычитания при сравнении операндов;
-
триггеры Z признака нулевого результата и CY признака переноса из старшего разряда
устанавливаются в состояние. Определяемые результатом сравнения (смотрите таблицу 2)
Таблица 2 Состояния триггеров Z и CY в зависимости от результата сравнения операндов
Результат сравнения
Состояние триггера
Z
CY
Равно
1
0
Больше
0
0
Меньше
0
1
2. Задание на лабораторную работу
1. Введите программу из таблицы 1 в память УМК и выполните ее в пошаговом режиме, предусмотрев
первую точку останова по адресу 80 с целью проверки правильности загрузки регистров и ячейки
памяти М требуемыми данными. В дальнейшем программу выполняйте в программно реализованном
пошаговом режиме. Для этого в формате команды СТ системной программы «МОНИТОР» УМК
задавайте на каждом шаге в качестве стартового начальный адрес выполняемой команды, а в
качестве адреса останова- начальный адрес команды, которую необходимо будет выполнять на
очередном шаге.
2. Напишите в табличном виде программу, реализующую функцию алгебры логики согласно
индивидуальному заданию и составьте ее блок-схему. Решите задачу аналитически, выполняя
логические операции в том порядке, который указывает заданная ФАЛ с учетом принятого
приоритета. Введите разработанную программу в память УМК и выполните ее в пошаговом режиме.
3. На каждом шаге выполнения программ путем просмотра содержимого аккумулятора А проверьте
совпадение полученного результата с аналитическим, полученным в процессе разработки
программы.
4. Определите время выполнения программы в автоматическом режиме работы.
5. Результаты работы программы и время ее выполнения отразите в выводах по работе.
6. Подготовьте программу сравнения содержимого аккумулятора А с содержимым регистра, ячейки
памяти и с числом К согласно индивидуальному заданию, составьте ее блок- схему. Программу
представьте в табличном виде:
Адрес Мнемокод Код
команды
команды
Комментарий
Результат решения
аналитически
P
S
Z
программно
CY
P
S
Z
7. В таблицу поместите результаты аналитического решения задачи, полученные
CY
в часы
самостоятельной подготовки, а затем- машинного при выполнении программы на УМК. Проведите
сравнительный анализ и сделайте необходимые выводы. В качестве исходных данных возьмите
данные из задания 2, разместив их по своему усмотрению в аккумуляторе, заданных регистре и
ячейке памяти, во втором байте команды. Определите время выполнения программы в
автоматическом режиме.
3. Содержание отчета
1. Краткое описание цели работы и результатов самостоятельной подготовки к лабораторному
занятию.
2. Тексты программ выполнения лабораторной работы.
3. Протокол, отражающий последовательность действий на пульте УМК и результаты
выполнения команд МП К580ИК80 с записью последовательности нажатых клавиш на пульте УМК
Лабораторная работа № 4 на тему
«Исследование возможности организации циклов»
Цель: 1. Изучить команды МП КР580ВМ80А для выполнения операций условного,
безусловного перехода. 2. Практически закрепить знание теоретических сведений о
программировании логических, арифметических операций микропроцессора, а также операций
условного и безусловного перехода.
1. Общие теоретические сведения
Задачи, решаемые на ЭВМ, не сводятся к обработке отдельного элемента данных с помощью
одной операции. Напротив, они требуют обработки многих элементов данных (например, массива
или блока данных), которые занимают отдельные ячейки памяти. Программа может выполнять одну
и ту же операцию над содержимым ячеек, причем выполнять ее многократно с помощью
программных циклов. Кроме того, в программах могут встречаться логические разветвления,
например, если нужно перейти к определенной части алгоритма при выполнении (или
невыполнении) какого-либо условия.
В системе команд практически всех микропроцессоров предусмотрено три типа переходов с
одного места программы на другое (нарушение последовательного выполнения команд):
1. переход (команда JMP adr микропроцессора КР580ВМ80)- переход к выполнению команды, код
которой находится в ячейке памяти с адресом adr.
2. переход к подпрограмме (команда CALL adr микропроцессора КР580ВМ80).
3. возврат из подпрограммы (команда RET микропроцессора КР580ВМ80).
Переход к подпрограмме и возврат из нее организуется с участием стека. Стеком называется
последовательность ячеек памяти, организованная таким образом, что последнее записанное число
считывается первым (стек магазинного типа или типа "последним вошел - первым вышел"). Никакие
другие операции, например считывание информации из середины стека не допускаются.
Обычно при записи в стек нового числа, оно занимает ячейки памяти с адресами лежащими
непосредственно перед концом стека. Таким образом, стек в памяти растет "сверху вниз". Адрес
последней занятой стеком ячейки памяти хранится в специальном регистре микропроцессора указателе стека (SP).
Стек используется микропроцессором двояким образом:
1. для временного хранения информации, то есть программист может записывать в него данные и
извлекать их (команды PUSH rp и POP rp ассемблера МП КР580ВМ80);
2. для организации подпрограмм, при переходе к подпрограмме (по команде CALL adr) в стек
автоматически, без участия программиста, записывается адрес команды, следующей за командой
вызова подпрограммы. После окончания подпрограммы (команды RET) микропроцессор также
самостоятельно извлекает из стека последнее записанное в него число, считает, что это адрес
возврата в основную программу и передает управление основной программе начиная с этого адреса.
Поскольку в большинстве микропроцессоров (например, в КР580ВМ80) для обеих целей
используется один и тот же стек, обращаться с ним нужно с осторожностью.
Все эти переходы могут быть как безусловными - они выполняется всегда, так и условными они выполняются только в том случае, когда результат предыдущих арифметической или логической
операции отвечает определенным условиям. Сведения о выполнении (или невыполнении) этих
условий находятся в регистре флагов (F) или признаков, содержимое которого анализируется
микропроцессором при выполнении данных команд. Такими условиями могут быть (для МП
КР580ВМ80) нулевой или ненулевой результат (Z или NZ), наличие или отсутствие переноса (C или
NC), положительный или отрицательный результат (P или M) и др. Если условный переход не
происходит (условие не выполнено), то управление передается команде, следующей за командой
перехода.
В системе команд некоторых микропроцессоров есть команда программного прерывания, она
выполняется аналогично команде перехода к подпрограмме, но адрес вызываемой подпрограммы не
присутствует непосредственно в команде, а находится в ячейках памяти с адресом определяемым
номером прерывания.
1.1 Команды переходов
Команды переходов осуществляются посредством изменения соджержимого счетчика команд
PC и, следовательно, изменения нормального последовательного выполнения программы. Команды
обеих подгрупп являются 3-х байтовими: первый байт занимает КОП, а второй и третий байты
вмещают в себе младшую (LAD) и старшую (HAD) половины адреса точки перехода (то есть адреса,
где размещенная следующая команда программы и которая не является последовательно
выполняемой командой). Мнемонической (т.е. ассемблерной ) записью команды безусловного
перехода является JMP [Address] (т.е JMP [<B3><B2>]), а команд условного перехода
J<Condition>[Address]. Последние осуществляют передачу управления (т. е. Выполнение программы)
в зависимости от состояния одного из соответствующих разрядов регистра флагов, то есть состояния
одного из четырех флагов (Z, S, P и CY). Они устанавливаются по результату выполнения команды
(то есть содержимого аккумулятора А), которая задает ту или другую операцию, и имеют такие
значения (таблица 1).
Таблица 1.
№
г.г.
1.
Обозначение
флага
Z (zero)
2.
3.
4.
S (sing)
Значение
флага
Результат выполнения команды
(операции)
0
Если результат операции не равняется 0.
1
Если результат операции равен 0.
0
Если старший бит результата (А7)
Операции равен 0.
1
Если старший бит результата(А7)
Операции равен 1.
5.
P (parity)
6.
7.
Если результат операции насчитывает
нечетное число 1.
Если результат операции насчитывает
парное число 1
0
1
CY (carry)
8.
Если есть перенос к старшему
разряду (при сложении)
или перенос из старшего
разряда (при вычитании или сравнении).
В противном случае.
0
1
Поскольку условие перехода связанно со значением того ли иного флага, а возможных
значений существует восемь, то для их кодирования в КОП используются три разряда, а поле кода
условия при записи самой команды и его формата указывается как ССС. Мнемоническим
обозначением
команд условного перехода является J (то есть от
JMP) с соответствующим
обозначением одной из условий.
Имеют место следующие условия перехода и соответствующие им значения поля ССС
(таблица 2).
Таблица 2
№
г.г.
Мнемоническое
обозначение
условия
Значение
флага
Содержание значения флага
1.
2.
3.
4.
NZ
Z
NC
C
Z=0
Z=1
CY=0
CY=1
Не нуль
Нуль
Нет переноса
Есть перенос
5.
6.
PO
PE
P=0
P=1
Нечетный результат
Парный результат
7.
8.
P
M
S=0
S=1
Плюс (положительный)
Минус (отрицательный)
Если заданное полем ССС условие выполняется, что проверяется по значению
соответствующего разряда регистра флагов, то управление передается команде, адрес которой
определяется вторым и третьим байтами команды условного перехода, то есть содержимое второго и
третьего байтов команды заносится в счетчик команд РС.
В случае, если заданная полем ССС условие не выполняется, то ЦП переходит к
выполнению следующей по порядку команды, для чего содержимое счетчика команд просто
увеличивается на трех единицы.
1.2 Команды вызова подпрограмм
Команды вызова, которые могут быть как безусловными (CALL), так и условными (CALL IF),
применяются для обращения к подпрограммам, которые размещены вне рабочей области основной
памяти. Мнемоническое обозначение команды условного вызова создается объединением символа С
(от лица CALL) с одним из мнемонических обозначений условий, которые приведенные в таблице 3.
В отличие от команд условного и безусловного перехода команды вызова всегда
предусматривают возможность возвращения к прерванной основной программе. Для этого любая
команда вызова перед передачей управления подпрограмме заносит в стек адрес возвращения к
основной программе. Поэтому старшая половина программного счетчика PCH заносится в стек по
адресу (SP)-1, а младшая половина адресаPCL-в стек по адресу (SP)-2, где (SP)- содержимое
указателя стека. Само содержимое указателя стека при этом уменьшается на две единицы.
Любая подпрограмма всегда должна заканчиваться командой безусловного возвращения
RET(RETURN), или командой возвращения по условию (RETURN IF). При выполнении команды
возвращение содержимое ячейки памяти, адрес которой в текущий момент времени располагается в
указателе стека SP, переписывается в младшую половину счетчика команд РС, то есть PCL. После
этого содержимое ячейки памяти, адрес которой на единицу больше текущего содержимого
указателя стека SP, переписывается в старшую половину РС то есть РСН, что приводит к
формированию в РС адреса возвращения из последней выполненной подпрограммы. При этом
содержимое указателя стека увеличивается на две единицы.
Команда RST (RESTART) осуществляет повторный запуск МП и используется в операциях
с вектором (то есть двоичным кодом) прерываний NNN, где N=0/1. Таким образом RST является
командой программных прерываний, число которых равняется восьми. Для выполнения такой
команды необходимо указать начальный адрес подпрограммы обработки прерываний данного типа.
Этот адрес формирует на основании кода NNN сама однобайтовая команда RST n, где n-номер
рестарта (n=0-7), и является аргументом команды.
При выполнении команды RST содержимое РС пересылается в стек следующим образом:
старшая половина адреса РСН переносится в стек по адресу (SP)-1, а младшая половина адреса PCL-в
стековую область памяти по адресу (SP)-2. При этом содержимое указателя стека уменьшается на две
единицы. Все эти действия обеспечивают возвращение к основной программе после завершения
работы программы по обработке данного прерывания. При выполнении команды RST содержимое
программного счетчика РС формируется как шестнадцатиразрядный адрес, который имеет в себе
поле NNN в таком виде: (РС)<-8*NNN
A15
A14
A13
A12
A11
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
0
0
0
0
0
0
0
0
0
0
N
N
N
0
0
0
т.е. адрес равняется коду NNN, умноженному на 8. Этот адрес и является начальным адресом
программы обслуживания прерываний данного типа.
1.2 Пример использования команд перехода при выполнении арифметических операций
Допустим, необходимо найти сумму ряда чисел. При этом задача состоит в том, чтобы
осуществить суммирование нескольких чисел сразу. Эти числа могут представлять собой
совокупности входных сигналов, находящихся под управлением системы, число изделий (или число
сообщений), изготовленных (или принятых) за определенный промежуток времени. Предположим,
что сумма не превышает 25510 и для её хранения достаточно одной 8-битовой ячейки памяти.
В программе суммирования ряда чисел для МП К580ИК80 использованы следующие исходные
данные и обозначения:
В - регистр-счетчик, указатель длины массива
NNNN - адрес ячейки памяти, где указана длина массива
HL - регистровая пара, адресный указатель данных
DDDD - адрес ячейки памяти, где хранится первый элемент
8100 - адрес начала программы
Перед выполнением программы исходный ряд чисел заносится с помощью командных клавиш
в область памяти, начиная с адреса DDDD (см. Приложение 2).
Таблица 1
Программа сложения ряда чисел
Адрес
Машинный код Метка
Мнемокод
LDA
Комментарий
загрузка длины ряда чисел в АКМ
8100
3A
8101
NN
8102
NN
8103
47
MOV B,A
8104
97
SUB A
Обнуление аккумулятора
8105
21
LXI H
загрузка адресного указателя
8106
DD
8107
DD
8108
86
8109
из ячейки памяти с адресом
NNNN
загрузка длины ряда чисел в счетчик
DDDD в регистровую пару HL
ADD M
сложение элемента массива с АКМ
05
DCR B
уменьшение счетчика
810A
CA
JZ, M1
сложение элементов массива
810B
11
810C
81
810D
23
INX H
810E
C3
JMP, M2
810F
08
8110
81
8111
00
N - длина чисел в байтах
M2
закончено?
Ml
NOP
переход к следующему адресу
организация цикла
окончание программы
В - регистр-счетчик, указатель длины чисел
DE - регистровая пара, адресный указатель первого слагаемого
NNNN - адрес ячейки памяти, где хранится младший байт первого числа
HL - регистровая пара, адресный указатель второго слагаемого
DDDD - адрес ячейки памяти, где хранится младший байт второго числа
8300 – адрес начала программы
В большинстве случаев точность вычислений, обеспечиваемая одной ячейкой памяти,
недостаточна. Поэтому рассмотрим арифметику для чисел, занимающих несколько ячеек. Задача
состоит в том, чтобы сложить два числа длиной более 8 бит каждое. Исходные числа располагаются
в области памяти таким образом, что сначала идут младшие разряды, а затем более старшие.
Полученную сумму необходимо поместить в те ячейки памяти, где хранилось первое число.
В программе суммирования двух длинных чисел для МП К580ИК80 использованы следующие
исходные данные и обозначения:
Таблица 2
Программа сложения двух длинных чисел
Адрес
Машинный
код
8300
06
8301
N
8302
11
8303
NN
8304
NN
8305
21
8306
DD
8307
DD
8308
1A
8309
Метка
Мнемокод
Комментарий
MVI B
Загрузка счетчика
LXI D
загрузка адресного указателя
Первого числа
LXI H
загрузка адресного указателя
Второго числа
М2
LDAX D
загрузка операнда в АКМ
8E
ADC M
сложение с учетом переноса
830А
12
STAX D
Запоминание результата сложения
830В
05
DCR B
Уменьшение счетчика на единицу
830С
CA
JZ, M1
сложение закончено?
830D
14
830Е
83
830F
13
INX D
переход к следующему байту
первого числа
8310
23
INX H
переход к следующему байту
второго числа
8311
C3
8312
08
JMP, M2
организация цикла
8313
83
8314
00
Ml
NOP
окончание программы
Перед выполнением программы исходные числа F1 и F2, начиная с младшего байта,
заносятся последовательно байт за байтом с помощью командных клавиш в ячейки памяти,
начиная с адресов NNNN и DDDD соответственно (см. Приложение 4).
Микропроцессор КР580ВМ80А не имеет команд умножения, поэтому для выполнения этой
математической операции надо составлять программу. Приведенный ниже вариант такой программы
работает по следующему алгоритму:
Шаг 1: проверить младший бит множителя. Если он равен нулю, перейти к шагу 3, если
единице - сложить множимое с промежуточным результатом умножения.
Шаг 2: сдвинуть полученный промежуточный результат на один бит влево.
Шаг 3: повторять шаги 1 и 2 до тех пор, пока не будут проверены все биты множителя.
;УМНОЖЕНИЕ
;вход в программу:
;А - множитель, DE — множимое,
;результат работы:
;HL - произведение
UMNOG:
LXI Н,0
;сброшен промежуточный результат
;****** шаг 3 ******
SHAG3:
ORA А
RZ
;проверка окончания работы
;если содержимое регистра А равно нулю - умножение закончено;****** шаг 1
******
RAR
;младший бит множителя в переносе
INC SDVIG ;если перенос равен нулю - пропуск сложения
DAD D
;сложение множимого и промежуточного результата
;******шаг 2 ******
SDVIG:
XCHG
DAD H
;сдвиг множимого
XCHG
JMP SHAG3
В строке с меткой SHAG3 проверка на равенство нулю аккумулятора выполнена при помощи
логической операции ИЛИ аккумулятора с самим собой. Эта операция не изменяет содержимое
аккумулятора, но устанавливает все признаки. Можно было бы проверить содержимое аккумулятора
на равенство нулю при помощи команды CPI 00, но эта команда занимает больше места в памяти и
дольше выполняется.
Для реализации операции деления существуют несколько алгоритмов, вы можете
ознакомиться с ними в литературе по вычислительной технике. Самый простой алгоритм сводится к
последовательному вычитанию делителя из делимого, подсчитыванию числа вычитаний, до тех пор
пока уменьшающееся каждый раз после очередного вычитания значение делимого не станет равным
нулю или меньше нуля. Если значение делимого равно нулю, значит, деление без остатка, и число
вычитаний соответствует частному. Если значение делимого меньше нуля, значит, надо вычислить
величину остатка. Она вычисляется прибавлением значения делителя к текущему значению
делимого.
2. Порядок выполнения лабораторной работы
1. Введите программу из таблицы 1 в память УМК и выполните ее в покомандном режиме посредством
команды СТ системной программы МОНИТОР, создавая в ее формате на каждом шаге начальный
адрес очередной выполняемой команды и адрес точки останова. В качестве адреса точки останова
следует понимать следующий начальный адрес очередной выполняемой команды, которая должна
будет выполнена на следующем шаге выполнения программы.
2. Подготовьте программы, реализующие арифметические выражения согласно индивидуальному
заданию (приложении 4) и составьте их блок- схемы. Решите задачи аналитически, выполняя
арифметические операции в том порядке, который определяют заданные выражения.
3. Запишите разработанную программу в память УМК с адреса 800 16 и выполните ее в программно
реализованном покомандном режиме посредством команды СТ старта программы пользователя
системы «МОНИТОР».
4. На каждом шаге после выполнения очередной команды сравните результат выполнения команд с
результатами аналитического решения и сделайте выводы. Определите время выполнения
программы в автоматическом режиме.
5. По заданию преподавателя напишите программу умножения/деления с использованием полученных
знаний
6. По результатам выполнения лабораторной работы оформите отчет.
3. Содержание отчета
1. Краткое описание цели работы и результатов самостоятельной подготовки к лабораторному
занятию.
2. Тексты программ выполнения лабораторной работы.
3. Протокол, отражающий последовательность действий на пульте отладочного устройства и
результаты выполнения команд МП К580ИК80 с записью последовательности нажатых клавиш на
пульте отладочного устройства.
3. Контрольные вопросы:
1. Что хранится в указателе стека?
2. Поясните понятия «условный» и «безусловный переход»
3. Назовите используемый признаки перехода
4. Что значит мнемоническая запись команды?
5.
В каких регистрах МП К580ИК80 может храниться адрес ячейки памяти?
6.
Для чего служат арифметические (логические команды)?
7.
Данные, какой длины может обрабатывать МП К580ИК80А?
8. Где хранятся операнды, и куда помещается результат после выполнения арифметических
(логических) команд?
9. Какие разряды в регистре признаков формируются при выполнении арифметических (логических)
команд?
10. Для чего используются команды положительного и отрицательного приращения (INR, DCR, INX,
DCX)?
11. Как выполняется команда сравнения двух чисел? Где формируется результат выполнения этой
команды?
12. Как выполняются команды простого и циклического сдвига содержимого аккумулятора?
13. Над содержимым каких программно доступных регистров МП К580ИК80А можно выполнить
команду сдвига?
14. Назовите назначение разрядов регистра признаков МП К580ИК80А?
15. По каким условиям записывается 1 в каждый из разрядов регистра признаков МП К580ИК80А?
16. Какие функции выполняют команды перехода?
17. Какие существуют способы изменения последовательности выполнения команд?
18. Как осуществляется выполнение команды перехода?
19. В каких байтах располагаются младшие и старшие разряды в командах перехода?
20. По алгоритму задачи необходимо принять решение "больше". Какими командами можно это
реализовать?
21. По алгоритму задачи необходимо принять решение "равно". Какими командами можно это
реализовать?
22. Как организуется цикл в системе команд МП К580ИК80А?
23. Какое максимальное число команд имеет параметр цикла?
24. Как организуется работа с массивами?
25. С какой целью следует оставлять "пустые" команды в программе?
Лабораторная работа № 5 на тему
«Исследование взаимодействия с портами ввода-вывода
( маскирование, «бегущие огни», сканирование клавиатуры, вывод слова)»
Цель: 1. Практически закрепить знание теоретических сведений о возможностях взаимодействия
МП с портами ввода-выводаопераций микропроцессорами; 2. Привить практические навыки
написания сложных программ и программирования различных операций в машинных кодах для
микропроцессора.
1. Краткие теоретические сведения
У микропроцессора КР580 порт ввода/вывода может быть реализован на программируемом периферийном
интерфейсе (микросхема КР580ИК55). Режимы работы микросхемы К580ИК55 задаются при ее
начальной установке. Четыре подадресных регистра схемы включают в себя три регистра каналов
ввода - вывода данных (А, В, С) и регистр управления. Регистр канала С может быть подразделен на
два четырехразрядных регистра ввода - вывода данных, к которым осуществляется доступ как к
отдельным независимым регистрам. Имеется возможность подразделения трех каналов на две
группы. В этих группах каналы А и В используются для обмена данными с микро-ЭВМ, а отдельные
шины канала С - для записи управляющих сигналов. Режимы работы каналов задаются путем записи
управляющего слова в регистр управления.
1.2 Пример работы с портами вводы-вывода
Пусть порт А будет программироваться как порт ввода- будем считать, что к 3-м его разрядам
подключены тумблеры. А к 8 разрядам порта В подключены светодиодные индикаторы. Этот порт будет
программироваться как порт вывода, т.е. МП сможет считывать данные с тумблеров и выводить данные на
светодиодные переключатели.
На рисунке 1 представлена структурная схема программы, которая демонстрирует использование этих
портов.
ПОРТЫ ВВОДА/ВЫВОДА
ПРОГРАММИРОВАНИЕ
ИНТЕРФЕЙСА
СЧИТАТЬ ДАННЫЕ С ПОРТА
ВВОДА
ЗАПИСАТЬ ДАННЫЕ В ПОРТ
ВЫВОДА
Рисунок 1 Структурная схема программы для переписи данных из порта ввода в порт вывода
Эта программа ( таблица 1) считывает данные из порта ввода и записывает их в порт вывода..
Таблица 1
Адрес
Содержимое
8000
ЗЕ
8001
8002
8003
8004
8005
8006
8007
8008
8009
800А
81
D3
FB
DB
FA
D3
F9
СЗ
04
80
Метка
Команда
MVIА,81
OUT FB
START:
IN FA
OUT F9
JMP START
Чтобы запрограммировать интерфейс, как было предусмотрено (А -порт ввода, В - порт вывода),
необходимо подать на него код 81 по адресу FB. Первая комманда MVI А,81 означает загрузку
аккумулятора кодом 81. Следующая команда OUT FB записывает содержимое аккумулятора в порт по
адресу.FB, т.е. порт (интерфейс) программируется. Далее идет команда IN FA, обеспечивающая запись
данных из порта с адресом FA,. присвоенным порту А, в аккумулятор. Команда OUT F9 означает вывод
данных из аккумулятора в порт вывода по адресу F9. Поскольку этот адрес в нашем случае присвоен
порту В, происходит вывод данных из аккумулятора в порт В (на светодиодные индикаторы). Таким
образом, программа пересылает данные из порта ввода в порт вывода. Последняя, команда - переход
(JMP). Она завершает цикл, который выполняется непрерывно. Следовательно, данные выходного порта
будут соответствовать данным порта ввода во время выполнения программы., МП КР580ИК80 может
адресовать до 256 портов ввода и столько же портов вывода. Поэтому для адресации портов достаточно
два шестнадцатеричных разряда, а не четыре, как это требуется для памяти.
1.3 Использование логических команд при взаимодействии портов ввода-вывода
В основе построения
цифровых схем лежит логический вентиль, а наиболее широко
используются 4 базовые функции вентиля: «И», «ИЛИ», «НЕ» и «исключающее ИЛИ». Каждая из
этих функций может быть реализована программным способом.
Для иллюстрации действия логических команд проведем следующий эксперимент: будем
вводить данные с переключателей входного порта, затем эти данные преобразуются логическими
командами, и результат высветится на светодиодных индикаторах выходного порта. Т. к.
микролаборатория имеет только три переключателя входного порта, мы будем наблюдать только за
тремя младшими разрядами данных.
Таблица 2
Программа, демонстрирующая действие логических команд
Адрес
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
800А
800B
800C
800D
Содержимое
Метка
Команда
MVI A, 81
OUT FB
START
Комментарии
Программирование
интерфейса
КР580ИК55
MVI B, 0A
Чтение данных с входного порта в
аккумулятор
0000 1010B
ANA B
OUT F9
A*BA
Запись данных в порт вывода
JMP START
Зацикливание программы
IN FA
Эта программа считывает данные с переключателей входного порта, а затем объединяет их по
«И» с числом 0000 1010. Результат появляется на светодиодных индикаторах. Затем программа
возвращается на начало, и процесс бесконечно повторяется, так что можно изменить
входные
данные и проверить соответствующие выходные.
1.3 Маскирование
Типичное применение логических команд-
выделение определенных битов слова
(маскирование). Для примера предположим, что нам нужно проверить состояние одного из
переключателей, подключенных к порту ввода, а состояние остальных- проигнорировать.
Алгоритм для программы, проверяющей переключатель, соединенный со вторым битом
входного порта будет иметь вид (если ключ замкнут, индикатор загорается и наоборот):
-
программирование интерфейса;
-
чтение данных с переключателей;
-
объединение по схеме «И» аккумулятора и кода 000 0100;
-
если результат=0, то выключение переключателей, если 0, то включение.
В таблице 3 приведен листинг программы. Сначала производится программирование
интерфейса, затем считываются данные с входного порта в аккумулятора и в регистр B заносится
маскирующее слово. Затем содержимое регистров A и B объединяется по «И». В результате все биты
кроме второго приводятся к нулю. Значение второго бита результата будет зависеть от положения
переключателя. Программа использует команду JZ перехода, если установлен флаг нуля. Нулевой
флаг инициирует, что полный байт (и поэтому бит 2) равен 0.
Таблица 3
Адрес
8000
8001
8002
8003
Содержимое
Метка
Команда
MVI A,81
OUT FB
Комментарии
Программирование
интерфейса
8004
8005
8006
8007
8008
8009
800A
800B
800C
800D
800E
800F
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
START
ANA B
JZ OFF
Чтение данных с переключателей
в аккумулятор
Запись в регистр B маскирующего
слова 0000 0100
Выделение второго бита
Проверка аккумулятора на нуль
MVI A, FF
Включение индикаторов
IN FA
MVI B,04
ON
OUT F9
JMP START
OF
MVI A, 00
Выключение индикаторов
OUT F9
JMP START
1.4 Команды сдвига: «бегущий огонь»
Примером использования команд сдвига может быть программа реализации «Бегущего огня».
Простейший вариант этой программы может быть представлен следующим алгоритмом:
-
программируем интерфейс;
-
заносим в аккумулятор код 1000 0000;
-
выводим содержимое аккумулятора на индикаторы ( при этом определяем петлю задержки, которая
обеспечивает медленное изменение состояния индикаторов. Без нее сдвиг происходил бы настолько
быстро, что визуально был бы незаметен).
Программа, реализующая этот алгоритм, приведена в таблице 4.
Таблица 4
Адрес
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
800A
800B
800C
800D
800E
800F
8010
8011
8012
8013
8014
8015
8016
8017
Содержимое
Метка
Команда
MVI A, 81
Комментарии
Программирование
интерфейса
OUT FB
MVI A, 80
1000 0000А
MVI D, 40
Загрузка регистров D и E для
организации петли задержки
MVI E, FF
OUT F9
Вывод данных на индикаторы
DCR E
JNZ LOOP
Е-1Е
Если Е0, то переход на LOOPпетлю задержки
DCR D
JNZ LOOP
D-1D
Если D0, то переход на
LOOP- петлю задержки
RRC
JMP LOAD
Сдвиг данных в аккумуляторе
Повторение цикла
2 Процесс разработки сложного программного обеспечения.
При
разработке
сложных
программ
необходимо
придерживаться
следующей
последовательности:
-
-определить задачу;
-
принять решение- разделить на функциональные блоки;
-
составить алгоритм программы;
-
написать программу;
-
испытать и отладить каждую команду;
-
испытать и отладить полную программу.
После определения задачи, выбора метода и разделения программы на модули можно
приступить к составлению алгоритмов. Обычно составляется общий алгоритм, в котором каждый
модуль программы изображается в виде квадрата. Составляются алгоритмы и для каждого модуля.
Пример разработки программного обеспечения:
Рассмотрим описание программы контроллера «Бегущие огни».
Индикаторы выходного порта (светодиоды) используются как имитаторы «бегущих огней».
Контроллер
должен
регулировать
следующую
последовательность
чередования
горения
светодиодов:
1. Горят светодиоды 1,4, 7, остальные- погашены.
2. Время горения установленных светодиодов.
3. Горят светодиоды 2, 5, 8, остальные- погашены.
4. Время горения установленных светодиодов.
5. Горят светодиоды 3, 6, остальные- погашены.
6. Время горения установленных светодиодов.
7. Повторение процесса (переход к шагу 1).
Выходные индикаторы (светодиоды YD1…YD7) подключаются к шине данных с помощью
программируемого интерфейса.
В таблице 5 показаны используемые комбинации сигналов имитирования «бегущих огней» на
светодиодах. Единица в двоичном коде сигнала означает включенный индикатор.
Таблица 5
VD1
1
0
0
VD2
0
1
0
VD3
0
0
1
VD4
1
0
0
VD5
0
1
0
VD6
0
0
1
VD7
1
0
0
VD8
0
1
0
Код
92 16
49 16
24 16
Для работы основной программы необходимо разработать подпрограмму, вызывающую
задержку. Простейший способ генерирования задержки может быть описан приведенным ниже
алгоритмом:
1. Установка счетчика.
2. Уменьшающий счет.
3. Возврат в основную программу.
Однако максимальное время задержки, полученное таким способом, не превышает 1785 мкс.
Принцип получения более длительной задержки будет приведен ниже.
После составления алгоритмов и определения характеристик можно писать программы.
Основная программа последовательности довольно проста (Таблица 6).
Таблица 6
Метки
Команды
SEQ
Комментарии
Установка горения светодиодов
1, 4, 7
Время горения установленных
светодиодов
MOV A, 92
MVI D,I
CALL DELAY
Установка горения светодиодов
2, 5, 8
Время горения установленных
светодиодов
MOV A, 49
MVI D,I
CALL DELAY
Установка горения светодиодов
3, 6
Время горения установленных
светодиодов
MOV A, 24
MVI D,I
CALL DELAY
Программа последовательности устанавливает в регистр А число 92- код выходных
индикаторов, при котором светодиоды 1, 4, 7 горят, а светодиоды 2, 3, 5, 6, 8- погашены. Затем
вызывает подпрограмму задержки. Для чего программа последовательности заносит в регистр D
величину
задержки,
после
чего
вызывается
сама
подпрограмма
задержки.
Далее
эта
последовательность повторяется для других кодов выходных сигналов светодиодов.
Разработка подпрограммы задержки:
приведена подпрограмма задержки, соответствующая описанному выше алгоритму.
Таблица 7
Метки
DELAY
Команды
Комментарии
Уменьшающий
DCR A
Примечание
4 такта
счет
JNZ DELAY
RET
Продолжение
счета, если содержимое
аккумулятора 0
Возврат
7/10 такта
10 тактов
Чтобы использовать эту программу, в аккумуляторе устанавливается нужное значение
задержки и вызывается программа задержки. Содержимое аккумулятора уменьшается до тех пор,
пока не достигает нуля, после чего управление возвращается на программу вызова.
Время задержки, полученное при выполнении этой программы, можно проанализировать
следующим образом:
-
в примечаниях указано число синхроимпульсов ( тактов), необходимых для выполнения каждой
команды;
-
для DCR A требуется 4 такта. Для JNZ, в случае выполнения условия требуется 10 тактов, если же
условие не выполняется- 7 тактов. Для RET требуется 10 тактов. Для каждого прогона по петле
задержки потребуется 4+10=14 тактов. Для последнего прогона потребуется 54+7+10=21 такт.
Следовательно, уравнение задержки имеет вид:
Задержка=(А-1)*14+21 (тактов)
Один такт длится 0.5 мкс. Поэтом уравнение можно переписать следующим образом:
Задержка=(А-1)*7 мкс+10.5 мкс
где А- начальное содержимое аккумулятора.
Самая длинная задержка вызывается установкой аккумулятора в нуль. При первом прогоне по
петле задержки содержимое аккумулятора уменьшается и мтановится равным 255. Первоначальная
установка в нуль эквивалентна тому, что А=256. Следовательно максимальная задержка:
Задержка=(156-1)*7 мкс+10.5 мкс=1795 мкс.
Для
получения
более
длительной
задержки
целесообразно
применить
команды,
воздействующие на пары регистров.
Программа, использующая пары регистров, приведена в таблице 8.
Таблица 8
Метки
DELAY
Команды
DCX B
MOV A, B
ORA C
JNZ DELAY
RET
Комментарии
Уменьшающий счет
Проверка на 0
Повторить до 0
Использование команды DCX B, уменьшающей содержимое пары регистров B,C позволяет
увеличить счет задержки до значения 2562=65536. Т. к. эта команда не влияет на нулевой флаг МП,
то для этого используется команда ORA C.осле этого может быть выполнена команда JNZ.
Время задержки, полученное при выполнении этой программы, определяется по формуле,
имеющей вид:
задержка=(N-1)*24 +31 (тактов)= Задержка=(N-1)*12 мкс+15.5 мкс.
Здесь N-начальное содержимое регистров B, C,
максимальная задержка=(65536-1)*12+15.5=0.786 с.
Такую задержу можно получить, если первоначально занести 0 в регистры B, C.
Для получения задержки организуется счетчик в регистре D. Число, первоначально занесенное
в этот регистр, определяет, сколько раз выполняется задержка 0.786 с. Максимальная задержка,
полученная таким образом, равна 256* 0.786=201 с.
В таблице 9 приведена полная программа задержки.
Таблица 9
Метки
DELAY
LOOP
Команды
LXI B, 0
DCX B
MOV A, B
ORA C
JNZ LOOP
Комментарии
Начало счета внутренней
петли
Петля задержки 0, 786 с
1.
DCR D
Уменьшение основного
счетчика и работа по петле, если
0
RET
Команда LXI B, 0 заносит 0 в пару регистров B, C. Далее вырабатывается задержка 0.786 с.
Регистр D используется для счета основной петли задержки. Внешняя петля генерирует множество
таких задержек. Такая организация называется «вложением».
3. Порядок выполнения лабораторной работы
Задание 1: Проведем эксперимент по выполнению программы для передачи данных из порта
ввода в порт вывода.
1. Введите программу, указанную в таблице 1
2. Начните выполнение программы с адреса 8000.
3. Поставьте тумблер порта ввода в любое положение. Верхнее положение соответствует 1, нижнее – 0.
4. Посмотрите на светодиоды 2-4, считая справа. Они показывают те же данные, которые установлены
на тумблерах порта ввода.
5. Измените положение тумблеров порта ввода. Данные порта вывода должны измениться
соответственно.
6. Нажмите кнопку СБРОС. Программа остановится, управление перейдет к монитору.
7. Измените положение тумблеров порта ввода. Данные порта вывода не изменятся, так как введенная
программа больше не выполняется.
Задание 2:
Перевести программу из таблицы 2 в машинные коды ( каждое мнемоническое обозначение должно
быть преобразовано в соответствующий КОП и дополнено необходимыми данными ( если нужно).
2.
Проверить правильность введенной программы.
3.
Установить начальный адрес 8000 и нажать кнопку ПУСК. Программа выполняется.
4.
Установить входные переключатель в 1. Индикаторы показывают 000 1010.
5.
Изменить положение переключателей и проверить соответствующие выходы. Биты, которые
6.
объединяются по «И» с нулями, не зависят от положения переключателей.
Нажать кнопку СБРОС для возвращения управления монитору. (заметьте, что переключатели не
влияют больше на состояние индикаторов. Замените команду ANA B ( по адресу 8008) командой
ORA B.
7.
Запустить программу снова. Проанализируйте полученные результаты
8.
Замените команду ORA B ( по адресу 8008) командой XRA. Повторите шаг 7. Биты, объединенные
по «Исключающему ИЛИ» инвертируются.
Результаты занесите в отчет, проанализируйте их, сделайте выводы.
Задание 3:
1.
2.
3.
Переведите программу из таблицы 3 в машинный код и введите в память. Проверьте правильность
ввода.
Запустите программу и проверьте, что входные переключатели правильно управляют индикаторами.
Все индикаторы зажгутся только в том случае, если включен второй переключатель. Состояние
остальных переключателей безразлично.
Измените программу, чтобы проверить другой переключатель.
Задание 4:
1. Переведите программу из таблицы 4 в машинный код и введите данные в ОЗУ.
2. Проверьте правильность ввода программы и запустите ее. На индикаторах появится эффект
«бегущего огня» вправо.
3. Замените команду RRC на RLC. В этом случае наблюдается «бегущий огонь» влево.
4. Можно изменить частоту переключения индикаторов, занося в регистр D различные числа. Заменяя
код по адресу 8005 можно изменить комбинацию «зажженных огней».
Задание 5:
1. Ввести программу из таблицы 9 в ОЗУ аккумулятора;
2. Удостовериться, что она правильно записана в ОЗУ;
3. Выполнить основную программу, начинающуюся по адресу 8000;
4. Посмотреть на изменение времени «пробежки» огней, изменив время задержки.
Для того, чтобы выполнить лабораторную работу, необходимо проанализировать составные
части программы, и, пользуясь приведенными алгоритмами, составить общую программу для
наблюдения «бегущих огней».
Приложение 1
Индивидуальные задания к лабораторной работе №1
Индивидуальные данные к заданию 1.
Номер варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Имена регистра
AEBCH
B4AHC
HABDE
CDLEA
LEHAD
EHCDL
DLACB
AELDC
HACLB
BHAED
CDEBL
EALCB
LADBC
ADECH
LHAEB
BLEDH
DHLAC
LDEHA
AHEDC
LBDAE
DEAHC
AEBLC
CLDAE
HBCLE
CBADH
LACHD
ECHBL
BADHL
CHLDA
HELCB
Загружаемые данные
10 23 45 67 89
02 14 56 78 91
3A B7 C8 83 90
0A 0B E6 71 9E
0B 2A 7E 74 84
3E 4B 72 3A FE
EF 0F 38 43 75
FF EE A4 33 CC
4A 5B 6C 7E 5F
9F 8E 7D 68 53
23 34 45 56 67
33 44 55 66 77
A1 B2 C3 D4 E5
6E 5D 4C 38 2A
FF 2E F4 C8 AA
FF EE 88 CC DD
22 33 44 8C EF
41 57 69 80 AF
63 72 84 96 A7
72 84 69 15 17
15 A8 98 5D 5F
28 88 99 00 0A
0B A9 C0 F3 E8
C0 A1 AF E4 3F
FA EB C0 B4 11
FF 22 AA 33 CC
AE CF 54 F8 80
17 29 36 42 50
25 63 84 A0 FD
F8 E7 D6 C3 87
.
Индивидуальные данные к заданию 2.
Номер варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Имя регистровой пары
B
D
H
B
D
H
B
D
H
B
D
H
B
D
H
B
D
H
B
D
H
B
Загружаемый операнд
1023
2014
3AB7
0A1B
0B2A
3E4B
E038
EA4B
4A5B
9D8E
2334
3344
A182
6E5D
12E
DFEE
2233
4157
5372
7284
15A8
2889
23
24
25
26
27
28
29
30
D
H
B
D
H
B
D
H
03A9
C0A1
CAEB
AC22
AECF
1729
2563
C8E7
Индивидуальные данные к заданию 3
Номер варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Регистр
источник
L
H
H
E
E
D
D
C
C
B
B
A
L
E
H
D
E
C
D
B
C
A
B
L
A
H
A
L
L
D
H
C
E
B
D
A
C
L
B
H
A
E
L
C
H
B
E
A
D
L
C
Данные
приемник
H
E
E
D
D
C
C
B
B
A
A
L
E
H
D
E
C
D
B
C
A
B
L
A
H
L
L
H
D
E
C
D
B
C
A
B
L
A
H
L
E
H
C
E
B
D
A
C
L
B
H
E7
63
29
CF
22
EB
A1
A9
88
A8
84
72
75
33
EE
2E
5D
B2
44
34
8C
5B
EE
0F
4B
2A
27
28
29
30
H
B
E
A
D
L
B
H
A
A
E
L
D
H
B
A
A
L
Индивидуальные данные к заданию 4
Номер варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Загружаемые операнды
0867 0902
09D8 0878
0883 09A0
0871 0863
09C4 09EA
083A 09C0
0843 0922
08BB 09E7
097E 0DA1
096C 0888
0956 08EB
0966 08AA
08F4 0823
083B 096E
08C8 0923
08CC 0821
088C 0D37
0980 080A
0896 0833
0915 08F1
085D 09CD
0900 09A3
09F3 0887
0DE4 0927
0984 09DF
0933 0815
09F8 085E
0842 08EA
08A0 0902
09C3 09CA
Индивидуальные данные к заданию 5
Номер варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Адрес
800
801
802
803
804
805
806
807
808
809
80A
80B
900
902
90A
1B
87
14
BD
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
80C
80D
80E
80F
810
811
812
813
814
815
816
817
818
819
81C
Приложение 2
Индивидуальные задания к лабораторной работе №2
Варианты индивидуальных заданий для программирования арифметических операций над
восьмиразрядными двоичными числами.
Номер варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Арифметическое выражение
A=A+D-M+116
A=A-B+M-116
C=M-116+C+A
A=B-C-M+116
H=A-116+D+M
B=A+C-116-M
L=H-L+M+116
A=A-B-M+116
E=A+B-M-116
L=M-B+116+E
H=D-M+116-B
B=E+M-C-116
D=M-L+116-B
E=116+B-H+M
C=116+M-E-D
B=E-116+C-D
H=D-M+E-116
D=M-116-B+H
E=D-B-116+M
C=A+E-116+M
B=EB16-D-M+116
D=M-116+AB16+C
H=A+M-CA16+116
E=A+E-M-116
L=L+M-116-A
C=A-C-116+M
E=B+L-116-M
A=M-L+116+E
L=H+M-E-116
D=A+116-L-M
Данные
7A 02 3C
B3 63 CE
91 E2 53
C4 3A 1E
87 56 0A
4C 70 64
8F 31 E5
6B 4C 0F
2D AE 41
7D 24 78
DD A0 0F
1E 7B 42
F3 3D 17
A7 53 CD
D9 19 3B
9B 2C 43
8E 2D 6A
69 3B 47
B1 07 3F
5B 3E 0C
4A 1C
5D 9A
3F 23
4D 5A 1F
A6 03 54
9A 37 4C
BD 0A 36
F0 7D 28
A4 3B CF
F3 5C 3E
Варианты индивидуальных заданий для программирования арифметических операций над
шестнадцатиразрядными двоичными числами.
Номер варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Арифметическое выражение
HL+BC+DE
BC+DE+HL
DE+BC+HL
HL+DE+BC
DE+HL+BC
BC+HL+DE
HL+HL+BC
HL+BC+HL
BC+HL+HL
HL+HL+DE
HL+DE+HL
DE+HL+HL
BC+BC+HL
BC+HL+BC
HL+BC+BC
DE+DE+BC
DE+BC+DE
BC+DE+DE
BC+BC+DE
BC+DE+BC
DE+BC+BC
DE+DE+HL
DE+HL+DE
Начальный адрес
9OA
9OC
9OE
910
912
914
916
918
9A0
9A2
9A4
9A6
9A8
9AA
9AC
9AE
9B0
9B2
9B4
9B6
9B8
9BA
9BB
Данные
1000 34A0 2200
1010 350A 0202
1100 530A 0022
2113 A035 0B57
2010 AC75 A37B
1911 4607 64C4
1809 5E13 31F8
1707 F0C4 4C6B
1505 14EA BE2D
1303 7742 2E7D
1401 F00A EADF
12A1 24B7 CBEE
111B 71D3 4E3F
137A DC35 487A
1716 B391 4E9C
16AC 34C2 19B9
1009 A6D2 C3E8
10CB 74B3 7396
12AA F370 AE1B
219E C0E3 ABB5
12C8 C1A4 6B8F
148A B113 A9D5
166B 32F3 BD72
24
25
26
27
28
29
30
HL+DE+DE
DE+BC+1
HL+1+DE
1+BC+HL
DE+HL+1
HL+1+BC
1+BC+DE
9BC
9BE
9C0
9C2
9C4
9C6
9C8
BA8E F1A5 4803
AC01 453E A67B
A6C9 2153 41E7
20EC 9C6A F1B3
3F8B 02AC BA86
8F7F EF1A F1B7
9081 57CA B6C4
Приложение 3
Индивидуальные задания к лабораторной работе №3
Варианты индивидуальных заданий для программирования логических операций над
восьмиразрядными числами.
Номер варианта
Функции алгебры логики
Данные
A=(Av7B16^M)+(B^C)
B=M^Cv(A+016vB)
C=A+BvCE16^M+L
Адрес ячейки
памяти
9OA
9OC
9OE
1
2
3
4
D=M^(A+B)^CF16vC
910
16 49 7F B5
5
6
E=9716vA^(M+B)vC
912
914
18 4B 0C B2
1A 40 76 4B
916
918
9A0
1C 4E 09 07
5 50 4E BA
2F 52 BA E2
21
23
25
A3
0E
H=AB+M^E816^C
L=BvM+C^7F16vA
A=MvH^L+(2716^B)
7
8
9
B=BC16AvM+(E^B)
10 43 7A 60
12 54 7C 62
14 47 7E 20
10
11
12
13
14
C=EE16A+BvM
H=M(E+6516)^B+C
L=(C316vA)+M^HvB
9A2
9A4
9A6
9A8
9AA
15
A=M+B^Av2F16+C
9AC
2A 45 60 1E
16
17
18
19
20
B=M^C816v(A+B)vC
C=1C16vA^B+C^M
D=(A^M^4516vB)+C
E=B+A116+CvM
H=AE16vB^C+M
9A1
9A3
9A5
9A7
9A9
10
C4
12
41
34
21
22
L=7716^M^Av(B+C)
A=BvC^M+(F716vE)
9B0
9B2
36 07
38 76
23
24
B=C^6A16vA+M+B
C=A^Mv(B+5F16)vC
9B3
9B1
3A 6 92 0C
3C 79 BE A4
25
26
D=M^(AA16Va)+BvC
E=A+B^CvCC16^M
9B4
9B5
7B C8 20 43
C0 72 B1 55
27
28
H=M+AvBv3516vC
9B9
9B6
C4 F2 71 28
04 3A 21 4C
9B8
9B7
13 49 1C E6
18 4E CA EB
D=A1A16+MvB^C
E=B+A^C+M^FF16
L=CvAB+M+AF16
A=4116+A+MvB^C
B=C16vMvA^(B+C)
29
30
6A
6B
58
5B
29
B2
21
C3
CB
7C
85
86
8F
27
44
46
63
41
96
F8
83
8
0A
23
5F
BA
EC
AB
7E
AA
C8 12
B6 AC
Варианты индивидуальных заданий для программирования логических операций над
шестнадцатиразрядными числами.
Номер варианта
1
2
Функции алгебры логики
BC=BCv0E16vHL
DE=BC^HL+DE
Данные
CAEB E481 C425
6EC1 9432 0438
3
4
5
6
7
HL=(BCvDE)+HL
BC=BC^(DEvHL)
DE=BCvDE^HL
HL=BCvHL+DE
BC=BC+DE^HL
C412
5513
3402
4AEB
C092
8
DE=BC^HL+DE
CAB6
9
HL=BCvDE+HL
218C 7063 E2F3
A340
270C
8CB7
97C3
6A3
49AB
2A38
053A
822A
79BE
6783 2B9B
10
BC=BCvE+H
AA8F
C743 FCB9
11
12
DE=HLvBC^DE
HL=HLvDE+BC
E769 BC14 A1D7
BA14 3C21 AF0C
13
14
15
BC=HL^DE+BC
DE=HLvDE+BC
HL=BC+DE^HL
CE36 124C 8A4
AB64 2B01 C930
E106 54A2 CC70
16
17
18
19
20
BC=BCvDEvHL
DE=BC+DEvHL
HL=BC+DE^HL
BC=BC+DE^HL
DE=BC+DE^HL
F544
3272
A0F8
868
B858
92E0
B53A
8552
B632
A612
A 28
4 FF
2A03
1BEA
2FEA
21
22
23
24
25
26
HL=BCvHL^DE
BC=BC^HL+DE
DE=BCvDEvHL
HL=HLvBC^DE
BC=HL+BC^DE
DE=HLvDE^BC
2EAB
ABE4
B467
2BC0
5BF7
02E7
25F1
05 5
4A1
B481
9461
4741
6F74
1353
AEBC
C F1
04B8
2BB4
27
28
HL=HL+BC+DE
BC=DEvHL^BC
26C7 4521 3EA0
06A7 3401 8AC3
29
30
DE=BCvHL^DE
HL=HL+BC+DE
51BE 025C F 24
0CC7 9 67 F8AA
Варианты индивидуальных заданий для программирования операций сравнения двоичных
чисел.
Номер варианта
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Регистр
B
C
D
E
H
L
B
C
D
E
H
L
B
C
D
E
H
L
B
C
D
E
H
L
B
C
D
E
H
L
Адрес ячейки памяти M
9B8
9A2
9B7
9A0
9B6
918
9B9
916
9B5
914
9B4
912
9B1
910
9B0
90E
9A9
90C
9A7
90A
9A5
9A4
89A
89B
89C
89
89E
89F
900
903
Приложение 4
Индивидуальные задания к лабораторной работе №4
Варианты индивидуальных заданий для программирования сложения ряда чисел
N п/п
NNNN
DDDD
Исходный ряд чисел
1
8203
832F
12, 23, 1D, 2F, 19, 3D, 0F
2
8132
8263
26, 36, 2F, 3D, 22
3
8233
8553
24, 1A, 29, 31, 42, 0D
4
8317
8400
2E,1D, 35, 27, 1C
5
8267
8154
39, 34, 0D, 1F, 3C, 21
6
8102
8300
34, 24, 45, 2C, 23
7
8430
8521
62, 1D,1C,1A,1E, 24
8
8100
832D
A4, IF, 23, 0D
9
8523
8200
17, 25, 3D, 1A, 23, 41
10
8423
8145
27, 2F, 1A, 3D, 09
11
841D
8323
24, 12, 2A, 32, 07, ID
12
8705
8305
21, 36, 18, ЗА, 12, 1E
13
8320
8100
13, 35, 2A, 2D, 2F, 19
14
831F
8053
14, 34, 23, 3В, IF
15
8424
812А
11, 21, 31, 23, 41, 0D
16
8503
8401
ЗА, 24, 4А, 16, 14, 07
17
8204
8312
2F, 2A, 2D, 2C, 2E
18
843F
8700
14, 25, 3А, 2D, 48, OF
19
8303
8500
61,2F, ID, 1A,2D, IF
20
8319
8473
23, 43, 2F,1D, 2E
21
81FA
831С
3А, 3D, 2A, 11, 18, 04
22
8316
8400
31, 08, 3F, 24, 5А, 11
23
8306
8419
11, 45, 34, 43, 1E
24
8003
8520
38, 2F, 4А, 23, 19, 08
25
8302
8408
24, 16, 07, 2F, 41, 2E
Варианты индивидуальных заданий для программирования сложения длинных чисел
N п/п
NNNN
DDDD
F1 – первое слагаемое
F2 - второе слагаемое
1
8165
8231
12A3DE
23D6A8
2
8234
8421
A4E6FF
18D5A4
3
8110
8311
35D6E5
8567Е4
4
8200
8012
AD3312
342ЕА6
5
8234
8500
E6D556
D34520
6
8100
8435
E4A5D2
3F56A5
7
8131
8015
86DE54
9A56D3
8
8310
8200
D46618
341198
9
8402
8300
37Е529
19075D
10
8238
8423
539АЕ7
76D5A3
11
82А4
831F
8D45F1
D3E45C
12
8209
8410
4В56С4
А41209
13
80АЕ
8126
7DAED2
1F549A
14
8239
8100
3FDD24
96F235
15
8450
8502
73550F
23097Е
16
8005
8412
DE5319
1120F8
17
8403
8509
9F5CD7
4980DE
18
8201
8321
9302F4
18DAF3
19
8111
8300
83041F
1EF5D5
20
8415
8500
D63690
2017АЕ
21
8152
8542
350971
5AE6DD
22
82F3
81ED
3290D5
56DEAF
23
854D
8203
4539DE
3216D7
24
8398
82АЕ
EF2890
1078DE
25
8502
8124
2605ED
54DEA6
Download