Пример выполнения программы

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

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

Устройство управления начинает шаг выбора машинного цикла, извлекая команду из ячейки памяти с адресом АО и помещая эту команду (156С) в регистр команд (рис. 2.8, а). Обратите внимание на то, что в нашей машине команда имеет длину 16 битов (2 байта), поэтому выбранная команда размещается в ячейках памяти с адресами АО и А1. Устройство управления учитывает этот факт извлекает содержимое обеих ячеек и помещает этот код в регистр команд, который имеет длину, равную 16 битам. Затем устройство управления добавляет значение 2 к счетчику команд, чтобы он содержал адрес следующей команды (рис. 2.8, б). В конце шага выбора первого машинного цикла счетчик команд и регистр команд содержат следующие данные: счетчик команд — А2, регистр команд — 156С.

Затем устройство управления анализирует команду, находящуюся в регистре команд, и делает вывод о том, что нужно загрузить содержимое ячейки памяти с адресом 6С в регистр 5. Это действие осуществляется в процессе шага выполнения, третьего шага машинного цикла. Затем устройство управления начинает следующий цикл.

Новый цикл начинается с выбора команды 166D из ячеек памяти начиная с адреса А2. Устройство управления помещает эту команду в регистр команд

и увеличивает счетчик команд до значения А4. Следовательно, теперь значения в счетчике команд и в регистре команд таковы: счетчик команд — А4, регистр команд — 166D.

Теперь устройство управления расшифровывает команду 166D и определяет, что нужно загрузить содержимое ячейки память с адресом 6D в регистр 6. Затем выполняет команду, в результате чего регистр б загружается.

Поскольку счетчик команд содержит значение А4, устройство управления извлекает следующую команду, начиная с этого адреса. В результате команда 5056 помещается в регистр команд, а счетчик команд увеличивается до Аб. Теперь устройство управления расшифровывает содержимое регистра команд и выполняет то, что предписывает команда, активируя схему сложения в дополнительном коде, на входе которой находятся регистры 5 и б.

Во время шага выполнения арифметико-логическое устройство находит сумму, помещает результат в регистр 0 и докладывает устройству управления о том, что операция завершена. После чего устройство управления начинает другой машинный цикл. И опять, с помощью счетчика команд оно извлекает следую-

щую команду (306Е) из двух ячеек памяти начиная с адреса Аб и увеличивает счетчик команд до значения А8. Полученная команда затем расшифровывается и выполняется. На данном этапе сумма помещается в ячейку памяти с адресом 6Е.

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: