Команды передачи управления
Команды пересылки данных
Команды пересылки обеспечивают передачу данных между ресурсами микроконтроллера. Состояние флагов не изменяют.
Команда MOVработает с внутренней памятью данных.
Mov A,Rn Mov A,Direct Mov A,@Rii=0,1 Mov A,#Data Mov Rn,A Mov Rn,Direct Mov Rn,#Data Mov Direct,A Mov Direct,Rn Mov Direct1, Direct2 Mov Direct,@Rii=0,1 Mov Direct,#Data Mov @Ri,A,i=0,1 Mov @Ri,Directi=0,1 Mov @Ri,#Datai=0,1 Mov Dptr,#Data | (A)=(Rn) (A)=(Direct) (A)=((Ri)) (A)=(#Data) (Rn)=(A) (Rn)=(Direct) (Rn)=(#Data) (Direct)=(A) (Direct)=(Rn) (Direct1)=(Direct2) (Direct)=((Ri)) (Direct)=(#Data) ((Ri))=(A) ((Ri))=(Direct) ((Ri))=(#Data) (Dptr)=(#Data) |
Команда MOVC пересылает в аккумулятор байт из памяти программ. Адрес ячейки вычисляется.
Movc A,@A+Dptr Movc A,@A+PC | (A)=((A)+(Dptr)) (A)=((A)+(PC)) |
Команда MOVX пересылает в аккумулятор байт из внешней памяти данных или из аккумулятора во внешнюю память данных. Адрес в регистре Dptr
Movx A,@Dptr Movx @Dptr,A | (A)=((Dptr)) ((Dptr))=(A) |
Команда записи в стек
Пересылает в стек содержимое регистра специального назначения или ячейки памяти. Состояние флагов не изменяет.
Push Direct | (SP)=(SP)+1 ((SP))=(Direct) |
Команда чтения из стека
Считывает байт из стека в регистр специального назначения или ячейку памяти. Состояние флагов не изменяет.
Pop Direct | (Direct)=((SP)) (SP)=(SP)-1 |
Команды безусловного перехода
Передает управление на команду, обозначенную меткой Met. Состояние флагов не изменяет.
Ajmp Met Sjmp Met Ljmp Met | Адрес перехода должен находиться внутри одной страницы объемом 2Кбайт Адрес перехода должен находиться в диапазоне от –128 до +127 байт от команды перехода Передача управления в диапазоне всей памяти программ |
Команды перехода на подпрограмму
Передает управление подпрограмме с именем Name. Состояние флагов не изменяет.
Acall Name Scall Name Lcall Name | Адрес перехода должен находиться внутри одной страницы объемом 2Кбайт Адрес перехода должен находиться в диапазоне от –128 до +127 байт от команды перехода Передача управления в диапазоне всей памяти программ |
Сравнение с переходом
Сравнить операнды и перейти на метку Met, если не равны. Изменяет состояние разряда С.
Cjne A,Direct,Met Cjne A,#Data,Met Cjne Rn,#Data,Met Cjne @Ri,#Data,Met i=0,1 | (A)-(Direct)=0 ? (A)-(#Data) =0 ? (Rn)-(#Data) =0 ? ((Ri))-(#Data) =0 ? |
Уменьшение на 1 с переходом
Уменьшить на 1 содержимое операнда. Если после этого оно не равно 0, то перейти на метку Met. Состояние флагов не изменяет.
Djnz Rn,Met Djnz Direct,Met |
Сравнение и переход, если аккумулятор не равен 0
Перейти на метку Met, если содержимое аккумулятора не равно 0. Состояние флагов не изменяет.
Jnz Met |
Сравнение и переход, если аккумулятор равен 0
Перейти на метку Met, если содержимое аккумулятора не равно 0. Состояние флагов не изменяет.
Jz Met |
Возврат из подпрограммы
Восстанавливает из стека ранее сохраненный адрес и обеспечивает передачу управления на него. Состояние флагов не изменяет.
Ret Reti | Выход из подпрограммы Выход из подпрограммы обработки прерывания. |