- •13.1. Классификация микропроцессоров и особенности их использования в цифровой аппаратуре.
- •13.2. Типовые структуры микропроцессорных систем.
- •13.3. Принцип программного управления в микропроцессорной системе.
- •13.4. Организация ввода-вывода в микропроцессорной системе.
- •13.5. Интерфейсы микропроцессорных систем.
- •13.5.1. Интерфейс rs-232.
- •13.5.2. Интерфейс usb.
- •13.5.3. Интерфейс i2c.
- •13.5.4. Интерфейс spi.
- •13.6. Управляющие сигналы типового микропроцессора.
- •13.7. Структура типового микропроцессора.
- •13.8. Способы адресации данных.
- •13.9. Типовая система команд микропроцессора.
- •13.9.1. Команды пересылки данных.
- •13.9.2. Команды выполнения арифметических операций.
- •13.9.3. Команды выполнения логических операций.
- •13.9.4. Команды передачи управления.
- •13.9.5. Команды специальные.
13.9.4. Команды передачи управления.
При выполнении программы содержимое счетчика команд PC непрерывным образом увеличивается, поэтому команды извлекаются из памяти и выполняются в порядке возрастания их адресов. Ход выполнения программы можно изменить, если в счетчик команд PC поместить адрес, отличающийся от адреса очередной команды. В этом случае микропроцессор перейдет к выполнению программы с места, указанного новым адресом (адресом перехода). Адрес перехода может указываться напрямую в команде в виде числа или метки, а также косвенно содержаться в регистровой паре или специальном адресном указательном регистре, указанными в команде перехода. При выполнении команды перехода адрес, указанный в команде, записывается в счетчик команд PC, причем прежнее содержимое счетчика команд теряется. Переход может быть безусловным или условным. Если безусловные переходы реализуются всегда, то условные - только при истинном значении проверяемого условия условия. Если условие не удовлетворяется, то выполняется следующая команда программы.
1. Команда JMP addr является командой безусловного перехода. Эта команда адрес addr, указанный в ней в качестве операнда, записывает в счетчик команд PC. После отработки этой команды программа начнет выполняться с нового адреса, помещенного в счетчик команд.
2. Команда J-CON addr является командой условного перехода. В качестве условий рассматриваются нулевые или единичные значения флагов ZF, СF, РF, SF и OF флагового регистра. В место сокращения -CON подставляется мнемоника конкретного условия, при котором должен произойти переход: NZ - ненулевой результат; Z - нулевой результат; NC - отсутствие переноса в результате; C - наличие переноса в результате; PO - нечетное число единиц в коде результата; PE - четное число единиц в коде результата; P - неотрицательный результат; M - отрицательный результат. Например, команда условного перехода J-CON addr записывается JNZ addr, если условие перехода заключается в том, что не был установлен флаг нуля, т.е. ZF=0 (ранее выполненная команда не дала нулевого результата). При выполнении этого условия адрес перехода, содержащийся в команде в качестве операнда запишется в счетчик команд PC и микропроцессор перейдет к выполнению программы с нового адреса. Если условие не удовлетворится, т.е. ZF=1 (предыдущий результат был равен нулю), то выполняется команда, непосредственно следующая в программе за командой JNZ addr.
Если в программе встречаются одинаковые последовательности команд, то для того, чтобы не записывать такие последовательности по несколько раз в памяти, их выделяют в подпрограммы. Переход от выполнения программы к выполнению подпрограммы производится с помощью команд вызова подпрограмм. При выполнении такой команды в счетчик команд PC также записывается адрес, который указывается в команде (адрес первой команды подпрограммы), но предварительно прежнее содержимое счетчика команд PC, т.е. адрес команды, которая следует в программе за командой вызова (адрес возврата или точка возврата из подпрограммы), запоминается в стеке.
3. Команда CALL addr является командой вызова подпрограммы. Команда записывает в счетчик команд PC адрес первой команды подпрограммы, указанный в команде, и предварительно в стек на сохранение отправляет адрес возврата в основную подпрограмму (адрес команды, следующей за командой CALL addr). При этом, поскольку в стек записывается два байта адреса, указатель стека SP в зависимости от типа микропроцессора смещается вверх или вниз на две ячейки. В некоторых микропроцессорах команды вызова подпрограмм могут быть как безусловными, так и условными.
4. Команда RET служит для возврата из подпрограммы. Она является последней командой любой подпрограммы. По этой команде адрес возврата, сохраненный ранее в стеке при уходе на подпрограмму, пересылается обратно в счетчик команд PC. При этом указатель стека SP смещается на две ячейки в обратном направлении. После возврата из подпрограммы работа программы продолжится с того места, где она была прервана обращением к подпрограмме. Поскольку в стеке реализуется принцип «последний записанный считывается первым», то в случае вызова вложенных подпрограмм во время уже выполняющихся подпрограмм (как и в случае многоуровневых прерываний), адреса возврата будут извлекаться из стека в обратном порядке по сравнению с их размещением в стеке при уходе на подпрограммы. Таким образом, работа программы микропроцессора и последовательность вызова подпрограмм и возврата из них не будут нарушены.