Микропроцессоры и микроконтроллеры

 
 
 
«Большинство программ на сегодняшний день подобны египетским пирамидам из миллиона кирпичиков друг на друге и без конструктивной целостности — они просто построены грубой силой и тысячами рабов.»
Alan Kay
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципы работы микропроцессоров :: Управление последовательностью чтения команд из памяти

Управление последовательностью чтения команд из памяти

Функционирование процессора заключается в последовательной выборке команд из памяти и их выполнении. Очередной байт команд считывается из той ячейки памяти, адрес которой содержится в счетчике команд PC. После чтения каждого байта автоматически выполняется действие PC := PC + 1(см. рис. 4.3). Таким образом на аппаратном уровне обеспечивается чтение кодов команд, расположенных в памяти последовательно друг за другом.

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

Рис. 4.4. Схема выполнения команды условного перехода

Пусть команда 3 имеет формат 3 байта и является командой условного перехода. Второй и третий байты этой команды содержат адрес команды 6. Таким образом, при считывании всей команды 3 будет выполнено действие
PC= PC + 3 (это будет адрес команды 4). При выполнении команды 3 будет произведена проверка некоторого условия. В случае истинности условия в регистр PC будет записан новый адрес – в данном случае адрес команды 6, который содержится в адресной части команды 3. Таким образом, следующей командой, считываемой из памяти, будет команда 6, и, значит, будет выполнена передача управления в нужную точку алгоритма. В случае ложности проверяемого условия содержимое счетчика команд не изменится, и следующей выполняемой командой будет команда 4.