Пользуясь результатами предыдущего задания, зафиксированными в таблице 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 | CY |
[1] Н – указание на то, что число задается и индицируется на дисплее в 16-ричной системе счисления.