Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Команды перехода и вызова подпрограмм




Команды перехода, называемые также командами ветвления, позволяют организовать в программах циклы и разветвления. Команды вызова подпрограмм дают возможность сократить объем разрабатываемых программ за счет повторного использования подпрограмм. Наличие в микропроцессоре стека с указателем стека делает возможным возврат в главную программу после выполнения подпрограммы с помощью команд возврата.

Команды перехода и вызова подпрограмм можно разделить на следующие группы:

· команды переходов (JMP, JC, JNC, JZ, JNZ, JP, JM, JPO, JPE);

· команды вызова подпрограмм (CALL, CC, CNC, CZ, CNZ, CP, CM, CPO, CPE);

· команды возврата (RET, RC, RNC, RZ, RNZ, RP, RM, RPO, RPE);

· команды рестартов (RST0, RST1, RST2, RST3, RST4, RST5, RST6, RST7);

· команда записи содержимого H-пары в программный счетчик (PCHL).

Ни одна из команд этой группы не изменяет содержимое регистра признаков F.

 

Формат, байтов Время тактов Код Мнемо- код Наименование команды Описание операции  
 
    C3 JMP B3B2 Безусловный переход В (РС)-регистр записывается адрес перехода (В3В2)  
    DA JC B3B2 Переход, если перенос Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3  
    D2 JNC B3B2 Переход, если не перенос Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3  
    CA JZ B3B2 Переход, если нуль Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3  
    C2 JNZ B3B2 Переход, если не нуль Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3  
    F2 JP B3B2 Переход, если плюс Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3  
    FA JM B3B2 Переход, если минус Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3  
    EA JPE B3B2 Переход, если четно Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3  
    E2 JPO B3B2 Переход, если нечетно Если условие верно, то в (РС)-регистр записывается адрес перехода (В3В2), иначе переход к следующей команде (РС)=(РС)+3  
    CD CALL B3B2 Безусловный вызов подпрограммы В стеке сохраняется адрес следующей команды (РС)= (РС)+3, затем в (РС)-регистр записывается адрес вызова подпрограммы (В3В2)  
  11/17 DC CC B3B2 Вызов подпрограммы, если перенос Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3  
  11/17 D4 CNC B3B2 Вызов подпрограммы, если не перенос Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3  
  11/17 CC CZ B3B2 Вызов подпрограммы, если нуль Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3  
  11/17 C4 CNZ B3B2 Вызов подпрограммы, если не нуль Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3  
  11/17 F4 CP B3B2 Вызов подпрограммы, если плюс Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3  
  11/17 FC CM B3B2 Вызов подпрограммы, если минус Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3  
  11/17 EC CPE B3B2 Вызов подпрограммы, если четно Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3  
  11/17 E4 CPO B3B2 Вызов подпрограммы, если нечетно Если условие верно, то в стеке сохраняется адрес следующей команды (РС)=(РС)+3, затем в (РС)- регистр записывается адрес вызова подпрограммы (В3В2). Иначе переход к следующей команде (РС)=(РС)+3  
    C9 RET Безусловный возврат В (РС)-регистр записывается адрес из верхушки стека  
  5/11 D8 RC Возврат, если перенос Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1  
  5/11 D0 RNC Возврат, если не перенос Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1  
  5/11 C8 RZ Возврат, если нуль Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1  
  5/11 C0 RNZ Возврат, если не нуль Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1  
  5/11 F0 RP Возврат, если плюс Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1  
  5/11 F8 RM Возврат, если минус Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1  
  5/11 E8 RPE Возврат, если четно Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1  
  5/11 E0 RPO Возврат, если нечетно Если условие верно, то в (РС)-регистр записывается адрес из верхушки стека. Иначе переход к следующей команде (РС)=(РС)+1  
    C7 RST 0 Рестарт по 0-му уровню В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта  
    CF RST 1 Рестарт по 1-му уровню В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта  
    D7 RST 2 Рестарт по 2-му уровню В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта  
    DF RST 3 Рестарт по 3-му уровню В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта  
    E7 RST 4 Рестарт по 4-му уровню В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта  
    EF RST 5 Рестарт по 5-му уровню В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта  
    F7 RST 6 Рестарт по 6-му уровню В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта  
    FF RST 7 Рестарт по 7-му уровню В стеке сохраняется адрес следующей команды (РС)= (РС)+1, затем в (РС)-регистр записывается адрес вызова подпрограммы (РС)=8*№рестарта  
    E9 PCHL Запись содержимого Н- пары регистров В (РС)-регистр записывается содержимое (HL)-пары  

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...