Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа_1(пирамида).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
240.13 Кб
Скачать

II. Выполнение отдельных команд на микроЭвм

Рассмотрим исполнение какой-либо конкретной команды из системы команд БИС КР580ВМ80А. Пусть, например, требуется выполнить команду так называемой непосредственной пересылки в память: переслать в ЯП, адрес которой записан во внутренних регистрах H и L, число, содержащееся во втором байте команды. Эта команда двухбайтная: первый байт – КОП, второй байт – операнд (пересылаемое число). Такой способ адресации, когда операнд является частью команды, называется непосредственным. Операнд адресован непосредственно, а адрес его размещения после пересылки указан в РОН HL. Такой тип адресации, когда адрес ЯП, где находится или должен будет находиться операнд, задан в паре регистров РОН (обычно это HL), называется косвенно-регистровым. Итак, в этой команде использованы два способа адресации: непосредственный для операнда и косвенно-регистровый для адреса конечного размещения операнда.

КОП этой команды: 36 (Н)1.

Если нужно переслать число, например, 50(Н), но полный код такой команды: 36 50 (Н). Команда выполняется за три цикла.

Задание 7. Выполнение команды по циклам

Пусть надо выполнить команду 36 50 по циклам, отразив состояние магистралей (МА, МД, МУ) в каждом цикле, и зафиксировать состояние внутренних регистров МП, РС, а также содержание выбранной для пересылки ЯП до исполнения и после исполнения команды (табл.1). Для этого:

  1. Клавишей «R» произведите начальную установку микроЭВМ.

  2. Выберите адрес ЯП, куда хотите переслать число 50 из области ОЗУ (0С00 – 0FB0), отведенной для размещения операндов. Например, выбрали адрес 0С10.

  3. С помощью клавиши «ОТА» просмотрите содержимое ЯП 0С10, запишите его в таблицу 1, убедитесь, что числа 50 там нет.

  4. Запишите («ОТА» и «ЗП/УВ») команду 36 50 в область ОЗУ 0800 – 0BAF, специально отведенную под запись программ пользователя. Например, первый байт (36) запишите в ЯП 0805, а второй в 0806.

  5. Запишите с помощью клавиш «ОТ РГ» и «ЗП/УВ» адрес пересылки 0С10 во внутренние регистры МП: HL, причем старшие разряды ОС – в Н, младшие – в L.

  6. Запишите в РС («ОТ РГ» и «ЗП/УВ») начальный адрес команды – 0805, причем старшие разряды в РС Н, младшие в РС L.

  7. С помощью клавиш «ОТ РГ» и «ЗП/УВ» просмотрите содержимое аккумулятора (А), РОН и РС. Заполните первую строку таблицы 1.

  8. Клавишей «РС» выставьте на дисплей адрес ЯП, где расположен первый байт команды (0805).

  9. Начинайте выполнение команды по циклам с помощью клавиши «ШЦ». Одно нажатие – один цикл. При работе микроЭВМ в этом режиме информация на дисплей не выводится. После каждого нажатия клавиши «ШЦ» фиксируйте состояния МА, МД, МУ и заполняйте таблицу 1. По состоянию магистралей определите тип каждого машинного цикла и его содержание, заполнив два последних столбца таблицы 1.

  10. После трех нажатий «ШЦ» (команда содержит три цикла) остановите выполнение команды клавишей «СТ».

  11. Просмотрите содержимое внутренних регистров, РС и ячейки 0С10. Убедитесь, что команда выполнена, т.е. число 50 записано в эту ЯП. Заполните последнюю строку таблицу 1.

Задание 8. Анализ выполненной команды по алгоритму

Пользуясь результатами предыдущего задания, зафиксированными в таблице 1, сопоставим выполнение этой конкретной команды с общим алгоритмом работы микроЭВМ.

  1. Вычисление адреса команды – в данном случае МП не производил этого вычисления. Номер ЯП, куда был помещен первый байт команды, мы установили в РС заранее.

  2. Выборка КОП – осуществлена в цикле М1, в такте ТЗ которого КОП записан в РК, где и хранится в течение выполнения всей команды.

  3. Дешифрация КОП – производится не только сразу после помещения КОПа в РК (на тактах Т4, Т5 цикла М1), но и на более поздних этапах выполнения команды: на последующих циклах М2, М3 и т.д. В данном случае в результате первичной дешифрации КОПа «36» МП «установил», что команда двухбайтная и адресация непосредственная. Образное слово «установил» (так же как и другие подобные термины «воспринял», «знает» и т.д.) по отношению к неодушевленному МП, разумеется, не означает какого-либо осмысленного действия, а содержит только то, что по определенному коду дешифратор УУ выдаст строго определенные управляющие сигналы, которые обеспечат предписанные КОПом действия. Такая реакция заложена в самой схеме дешифратора. В данном случае действия МП будут таковы: переход к выполнению цикла М2 – чтение из ЗУ второго байта команды, причем эта информация уже будет воспринята как операнд.

  4. Вычисление адреса операнда. Т.к. адресация непосредственная, то вычисление адреса операнда сводится для МП к выработке управляющего сигнала на регистр инкремент/декремент адреса (управляемый адресный регистр), который увеличит текущий адрес на 1, т.е. обеспечивается переход к последующей ЯП.

  5. Выборка операнда производится циклом М2, т.е. в Т1 УУ МП выставляет на ШД, а в Т2 записывает в регистр системного контроллера управляющее слово, соответствующее циклу ЧТ из ЗУ. На МА выставляется содержимое РС, т.е. адрес второго байта команды (0806). На МУ системным контроллером в такте Т2 выставляется сигнал ЧЗУ. Содержимое ЯП 0806 выставляется на МД и оттуда в такте Т3 считывается во внутренние регистры МП (а не в РК).

  6. Исполнение операции, заданной КОП заключается в пересылке числа 50 из внутренних регистров по адресу, записанному в HL. Эти операции стали ясны МП в результате вторичной дешифрации КОПа и будут осуществляться циклом М3 – ЗП в ЗУ. Итак, опять в системный контроллер записывается управляющее слово, соответствующее циклу М3, которое и будет ответственно за сигналы, управляющие исполнением цикла М3. На МА из регистров HL выставляется адрес ЯП ОС10. На МД из внутренних регистров – операнд 50, а на МУ – сигнал ЗП ЗУ.

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

Задание 9. С помощью команды непосредственной пересылки (КОП=36) перешлите число 33 в ЯП 0F00. Выполните команду по циклам. Заполните таблицу 1.

Задание 10. Выполните по циклам команду «Прямое запоминание аккумулятора (А)»: Содержимое А передается в ЯП, адрес которой находится во втором и третьем байтах команды. КОП = 32.

Такая адресация, когда адрес ЯП, где должен быть расположен операнд, задается как второй и третий байт команды, называется прямой. Так, например, если операнд должен находиться в ЯП 0D55, то полный код команды: 32 0D 55. Команда в этом случае трехбайтная и выполняется за 4 цикла.

Действуйте аналогично заданию 7, но учтите, что пересылаемое число (какое выберете) должно быть заранее записано в А. При записи в ОЗУ кода команды имейте в виду, что после КОП в следующую по номеру ЯП нужно записать младшие разряды выбранной ЯП (55), и только в следующую по старшинству ячейку – старшие (0D). Это связано с очередностью записи адреса в регистры W и Z. В виду того, что ША 16-разрядная, а ШД 8-разрядная, запись адресной части команды происходит за два цикла: вначале записываются младшие разряды в регистр Z, а затем старшие в регистр W.

В процессе исполнения команды заполняется таблица 1. Определите типы циклов, начальное и конечное состояние внутренних регистров МП и ЯП. Убедитесь, что после 4 циклов команда выполнена. Сопоставьте действия микроЭВМ с алгоритмом МП.

Задание 11. Выполните по циклам команду регистрового сложения: содержимое внутреннего регистра (в данном случае возьмем В) складывается с содержимым аккумулятора и результат помещается в аккумулятор (А).

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

КОП = 80. Команда однобайтная и выполняется за один машинный цикл.

Действуйте аналогично заданию 7, но учтите, что выбранный вами операнд заранее должен быть записан в регистр В, а также какое-либо число должно быть записано в А.

Задание 12. Выполните по циклам команду ввода: данные из указанного в команде порта ввода-вывода записываются в аккумулятор.

Любое устройство ввода-вывода подключается к магистралям микроЭВМ через буферный регистр – порт. Каждый такой порт имеет свой адрес, который дешифруется в соответствующий сигнал обращения. В нашей микроЭВМ порт – регистр для устройства ввода-вывода имеет адрес 05. Таким образом, команды ввода-вывода в нашей машине двухбайтные. КОП команды ввода = DВ; полный код команды – DВ05. Команда выполняется за три цикла.

Действуйте, как в задании 7, но имейте в виду, что на устройство ввода нужно заранее подать какое-либо число – группой из 8 левых нижних переключателей, имитирующих устройство ввода.

Задание 13. Выполните по циклам команду вывода: содержимое А передается в указанный порт.

КОП=D3. Команда выполняется за 3 цикла.

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

Задание 17. Выполните по циклам команду вызова подпрограммы. Команда эта трехбайтная и выполняется за 5 циклов. Первый байт, как всегда, КОП, равный для этой команды СД. Второй и третий байты должны составлять адрес (номер начальной ЯП) вызываемой подпрограммы. В результате выполнения команды вызова происходит а) передача управления начальному адресу вызываемой подпрограммы (второй и третий байты записываются в программный счетчик РС), б) адрес возврата из подпрограммы (номер следующей за командой вызова ЯП) записывается в стек, т.е. область ОЗУ, задаваемую указателем стека SP.

Обязательно отметьте в таблице начальное и конечное состояние РС и SP, а также ЯП NN SP-1 и SP-2 (а также №№ ЯП SP-H и SP-L). Обратите внимание на два последних цикла команды записи в стек (М7).

Например: нужно вызвать подпрограмму с начальным адресом 0DDD. Тогда команда вызова имеет вид: CD0DDD. Пусть она записана в следующих ЯП ОЗУ: CD - 0950; DD - 0951; 0D - 0952. Адрес возврата – 0953. В результате выполнения команды С0DDDD в РС окажется адрес вызова 0DDD, а в ячейках стека SP-1 (SP-H?) и SP-2 (SP-L?) – адрес возврата 0953. Указатель стека уменьшится на 2 (был 0bb0, должен стать – 0BAE). (См. в ЯП 0BAE – 53, 0BAF – 09).

Задание 18. Выполните по циклам команду возврата из подпрограммы. Команда однобайтная, выполняется за 3 цикла, КОП = С9. По этой команде управление передается адресу возврата, записанному в ЯП стека.

Если эта команда выполняется сразу за предыдущей командой вызова подпрограммы CD0DDD, то КОП команды возврата С9 следует записать в ЯП 0DDD, которой было передано управление предыдущей командой. Т.к. в предыдущей команде вызова адрес возврата 0953 был записан в ЯП SP-1 (SP-H?) и SP-2 (SP-L?), то команда возврата считает этот адрес возврата снова в РС. Одновременно к SP прибавится два раза по единице и восстановится первоначальное значение SP-0BB0.

Отметьте в таблице начальное и конечное состояние РС и SP. Обратите внимание на второй и третий циклы – чтение из стека (М6).

Приложение. Системы счисления

Десятичная

Двоичная

16-ричная

0 0 0 0

0 0 0 0

0 0 0 1

0 0 0 1

0 0 1 0

0 0 1 0

0 0 1 1

0 0 1 1

0 1 0 0

0 1 0 0

0 1 0 1

0 1 0 1

0 1 1 0

0 1 1 0

0 1 1 1

0 1 1 1

1 0 0 0

1 0 0 0

1 0 0 1

1 0 0 1

1 0 1 0

A

1 0 1 1

B

1 1 0 0

C

1 1 0 1

D

1 1 1 0

E

1 1 1 1

F

D7

D6

D5

D4

D3

D2

D1

D0

S

Z

O

AC

O

P

1

CY

1 Н – указание на то, что число задается и индицируется на дисплее в 16-ричной системе счисления.

17