Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТО_САПР_2010_11.doc
Скачиваний:
6
Добавлен:
08.11.2018
Размер:
19.26 Mб
Скачать

Выполнение машинных команд

Время, затрачиваемое на получение работоспособной программы ЭВМ, резко сокращается, если программист хорошо представляет, как выполняются отдельные машинные команды, и использует эти знания при отладке программы. Подробные сведения о процессах, происходящих в базовой ЭВМ во время выполнения отдельных команд, приведены в параграфах 4.2 — 4.4, а здесь кратко рассмотрим лишь те из них, знание которых позволяет быстрее локализовать ошибки при исполнении отлаживаемой программы.

В процессе исполнения машинных команд устройство управления ЭВМ производит анализ и пересылку команды, отдельных ее частей (кода операции, признака адресации и адреса) или операнда из одного регистра машины в другой ее регистр, АЛУ, память или устройство ввода-вывода.

Эти действия (микрооперации) протекают в определенной временной последовательности и скоординированы между собой. Для создания временной последовательности (см. рис. 1.4) используется генератор тактовых импульсов (импульсов с частотой в несколько МГц).

Цикл команды. Для реализации одной команды требуется выполнить определенное количество микрокоманд, каждая из которых инициирует одновременное осуществление одной или нескольких микроопераций за время одного рабочего такта ЭВМ. Общее число тактовых импульсов (микроопераций), требуемых для выполнения команды, определяет время ее выполнения, называемое циклом команды (рис. 2.7). Цикл команды обычно включает один или несколько машинных циклов.

Рис. 2.7. Типичный цикл команды

Устройство управления базовой ЭВМ может находиться в четырех возможных состояниях: выборки команды, выборки адреса, исполнения и прерывания. Длительность каждого из этих четырех состояний определяет время выполнения соответствующего машинного цикла. Каждый машинный цикл предназначен для определенной цели.

Выборка команды. В данном машинном цикле выполняются чтение команды из памяти, ее частичное декодирование и иногда исполнение (для безадресных команд и команд ввода-вывода, являющихся одноцикловыми командами):

  1. содержимое ячейки памяти, указываемой счетчиком команд, читается из памяти в регистр данных (см. рис. 2.2, а, б);

  2. содержимое счетчика команд увеличивается на единицу (см. рис. 2.2, б, в);

  3. содержимое регистра данных пересылается в регистр команд (см. рис. 2.2, г), код операции команды частично декодируется для выяснения типа команды (адресная, безадресная или ввода-вывода), анализируется бит признака адресации и происходит подготовка цепей, необходимых для выполнения команды;

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

Рис. 2.8. Исполнение команды СМА в конце цикла выборки команды

На рис. 2.8, а, б показаны действия, выполняемые в конце цикла выборки для одноцикловой команды СМА, инвертирующей содержимое аккумулятора (5).

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

  1. адресная часть команды пересылается из регистра данных (где пока еще сохраняется копия команды) в регистр адреса;

  2. содержимое ячейки памяти, указываемой регистром адреса, читается в регистр данных; теперь в этом регистре находится адрес операнда (адрес результата или перехода), который будет использоваться при выполнении команды (в цикле исполнения).

Для иллюстрации действий, осуществляемых в этом машинном цикле, выбрана команда ADD (21), расположенная в ячейке 43.

После выборки в регистре данных и регистре команд хранится сама команда (4821): четыре старших разряда — код операции (0100)2, затем признак адресации (1)2 и, наконец, адрес (000 0010 0001)2=(21)16. В счетчике команд записан адрес следующей команды (44), в аккумуляторе — результат предыдущих операций (7) и в 11-разрядном регистре адреса — адрес исполняемой команды (43).

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

Если косвенно адресуется одна из индексных ячеек (ячеек с номерами от 008 до 00F), то цикл выборки адреса операнда (результата) продолжается:

  1. содержимое регистра данных увеличивается на 1;

  2. измененное содержимое регистра данных пересылается в ячейку памяти по адресу, указываемому регистром адреса ;

  3. содержимое регистра данных уменьшается на 1.

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

Для иллюстрации шагов 3, 4 и 5 выбрана команда ADD (8), также расположенная в ячейке 43. Поэтому два первых шага по выборке адреса операнда (результата) будут очень похожи на аналогичные действия при выполнении команды ADD (21). Различие лишь в том, что в регистрах данных и команд первоначально сохранялась команда ADD (8) вместо ADD (21) и, следовательно, регистр адреса указывает на ячейку 8 (а не на ячейку 21).

Исполнение. Последовательность действий, выполняемых в этом цикле, определяется типом выполняемой адресной команды.

A. Для команд, при выполнении которых требуется выборка операнда из памяти ЭВМ (AND, ADD, ADC, SUB, ISZ), состояние исполнения используется для чтения операнда в регистр данных и выполнения операции, указываемой кодом операции команды.

Пример цикла исполнения для команды ADD 21 подробно рассмотрен на рис. 2.2, д — 2.2, з. И хотя на рис. 2.2 иллюстрировалось выполнение команды сложения с прямой адресацией, оба цикла (выборки и исполнения) будут совершенно такими же и при сложении с косвенной адресацией. В последнем случае между этими циклами будет выполнен цикл выборки адреса операнда, и этот адрес, так же, как и при прямой адресации, будет помещен в регистр данных.

Б. По команде пересылки (MOV) в этом машинном цикле производится запись содержимого аккумулятора в ячейку памяти с адресом, расположенным в регистре данных, для чего содержимое регистра данных пересылается в регистр адреса, а содержимое аккумулятора — в регистр данных и далее в ячейку памяти, указываемую регистром адреса.

B. При исполнении команд переходов производятся проверка соответствующего условия (1 в регистре переноса, 0 в знаковом разряде аккумулятора и т. п.) и пересылка адреса из регистра данных в счетчик команд при выполнении этого условия. Если исполняется команда безусловного перехода, то пересылка адреса перехода в счетчик команд осуществляется без какой-либо проверки.

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

Г. Для команды обращения к подпрограмме (CALL) во время этого машинного цикла осуществляются пересылка содержимого счетчика команд в ячейку памяти, адрес которой содержится в регистре данных, и занесения в счетчик команд увеличенного на единицу содержимого регистра данных.

Эти действия иллюстрируются на примере выполнения команды CALL 30 (рис. 2.10). Здесь в качестве регистра для временного хранения адреса первой команды подпрограммы служит регистр команд, содержимое которого после декодирования команды уже не используется устройством управления.

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

Рис.2.10. Цикл «Исполнение» команды CALL 30

Таким образом организуются переход к выполнению команд подпрограммы (начиная с команды в ячейке 31) и запоминание (перед первой ее командой) адреса возврата из подпрограммы. Когда в конце подпрограммы будет выполнена команда JMP (30), то в счетчик команд попадет адрес 21, сохраняемый в ячейке 30, и машина продолжит выполнение команд, расположенных за командой CALL 30.

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

С процессом отладки можно ознакомиться в параграфе 3.1, где дано описание отладочного пульта базовой ЭВМ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]