Електроний посібник з
дисципліни "Мікропроцесорні системи"
 
Дипломный проект
                                                           2.4.4.Команди передачі керування

  За командами передачі керування або командами переходів мікропроцесор здійснює безумовні або умовні розгалужування (переходи) програми, виклик підпрограм і повернення з них. Найпростішими є команди безумовного переходу, які ще називають командами-стрибками (jmp). Як правило, у команді зазначена адреса переходу. Переходи можна здійснювати у всьому 16-бітному адресному просторі пам'яті, при цьому використовується команда Ljmp 16 adr (табл. 2.6).

  Якщо переходи виконуються в межах однієї сторінки розміром 2048 байт, то використовують команди абсолютного переходу Ajmp adr 11 (буква А початкова буква слова Absolute), при цьому молодші 11 біт умісту лічильника команд (РС) змінюються 11-бітною адресою, зазначеною у самій команді. Переходи можна здійснювати щодо поточної адреси. При цьому використовують команду Sjmp (буква S початкова у слові Short - короткий). Адресний зсув переходу щодо адреси наступної команди становить - 128… + 127 байт. Адреса зсуву вказується в команді Sjmp rel (8); (табл. 2.6). Переходи можна здійснювати за непрямою адресою jmp@A+DPTR щодо вмісту вказівного регістру DPTR. При цьому в лічильник команд завантажується сума вмісту  комірки  пам'яті,  зазначеної  акумулятором,  і  вмісту  регістру  DPTR
(( A)) + DPTR ® PC . При   цьому   переході  програма  сама  обчислює   адресу переходу, яка невідома при написанні вихідного тексту програми. Система команд МК51 дозволяє здійснювати й умовні переходи. Наприклад, якщо вміст акумулятора (JZ) дорівнює нулю, уміст акумулятора не дорівнює нулю (JNZ).
  Перенос дорівнює одиниці (JC), перенос дорівнює нулю (JNC), адресований біт дорівнює одиниці JB, адресований біт дорівнює нулю (JNB).
  Усі команди умовних переходів використовують відносний метод адресації. При цьому відносна адреса переходу втримується в другому байті команди JL rel (8). Команди DJNZ Rn, rel; і DJNZ adr, rel; (табл. 2.6) використовуються для організації програмних циклів. При цьому в якості лічильника використовуються як регістри поточного банку, так і прямоадресовані комірки пам'яті.
  Команди порівняння й перехід, якщо не дорівнює CJNEA, adr, rel; CJNEA, #ds, rel; CJNE Rn, #d8, rel; CJNE @Ri, # d8, rel також використовують відносні переходи й використовуються в тих випадках, коли в системі необхідно зафіксувати які-небудь події, наприклад, CJNEA, P2, 20H. Завдяки цій команді порівнюються вміст акумулятора й стан порту Р2. Якщо вони не дорівнюються, то здійснюється перехід зі зсувом 20Н, якщо дорівнюються, то виконується наступна за цією команда програми. Функції розгалужування програми з поверненням до адреси перерваної програми виконують команди ACALL adr 11, виклик підпрограми  в  адресному  просторі  2 Кбіт  і  LCALL adr 16, виклик підпрограми у всьому адресному просторі мікроконтролера. При виконанні цих команд мікропроцесор запам'ятовує адресу перерваної програми в стеку PC + 2
®SP й  здійснює  повернення  до  перерваної  адреси  програми командою RET (SP ® PC). За командою RET вміст вершини стека (два байти) пересилається в лічильник команд (SP) ® PC. Команда RETI виконує те саме й додатково скидає сигнал запиту переривання.
  Завершує систему команд МК51 порожня операція NOP. Завдяки цій команді мікропроцесор нарощує вміст лічильника команд на 1 (РС+1) і не виконує ніяких операцій. При частоті тактування 12 Мгц, команда NOP виконується за 1 мкс.