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

 
 
 
«Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.»
Brian W. Kernighan.
Русский | Українська


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

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

Функционирование процессора заключается в последовательной выборке команд из памяти и их выполнении. Очередной байт команд считывается из той ячейки памяти, адрес которой содержится в счетчике команд 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.