5. Команды перехода
Мнемоника |
Спос адр. |
Содержание |
Флаги VHINZC |
Цк |
Бт |
Примечание |
Команды безусловного перехода | ||||||
JMP ad8 |
DIR |
(PC) <- ad8 |
------ |
2 |
2 |
JuMP |
JMP ad16 |
EXT |
(PC) <- ad16 |
------ |
3 |
3 |
|
JMP ,X |
IX |
(PC) <- (H:X) |
------ |
2 |
1 |
|
JMP of8,X |
IX8 |
(PC) <- of8+(H:X) |
------ |
3 |
2 |
|
JMP of16,X |
IX16 |
(PC) <- of16+(H:X) |
------ |
4 |
3 |
|
BRA cad |
REL |
(PC)<-(PC)+rel |
------ |
3 |
2 |
BRanch Always |
BRN cad |
IMM |
Переход к следующей команде |
------ |
3 |
2 |
Branch Never |
NOP |
INH |
Переход к следующей команде |
------ |
1 |
1 |
No OPeration |
Команды вызова подпрограмм и обслуживания прерываний | ||||||
BSR cad |
REL |
((SP))<-(PCL);(SP)<-(SP)-1; ((SP))<-(PCH);(SP)<-(SP)-1; (PC) <- (PC)+rel |
------ |
4 |
2 |
Branch to SubRoutine |
JSR ad8 |
DIR |
((SP))<-(PCL);(SP)<-(SP)-1; ((SP))<-(PCH);(SP)<-(SP)-1; (PC) <- ad8 |
------ |
2 |
2 |
JuMP To Subroutine |
JSR ad16 |
EXT |
((SP))<-(PCL);(SP)<-(SP)-1; ((SP))<-(PCH);(SP)<-(SP)-1; (PC) <- ad16 |
------ |
3 |
3 |
|
JSR ,X |
IX |
((SP))<-(PCL);(SP)<-(SP)-1; ((SP))<-(PCH);(SP)<-(SP)-1; (PC) <- (H:X) |
------ |
2 |
1 |
|
JSR of8,X |
IX8 |
((SP))<-(PCL);(SP)<-(SP)-1; ((SP))<-(PCH);(SP)<-(SP)-1; (PC) <- of8+(H:X) |
------ |
3 |
2 |
|
JSR of16,X |
IX16 |
((SP))<-(PCL);(SP)<-(SP)-1; ((SP))<-(PCH);(SP)<-(SP)-1; (PC) <- of16+(H:X) |
------ |
4 |
3 |
|
SWI |
INH |
((SP))<-(CCR);(SP)<-(SP)-1; ((SP))<-(A); (SP)<-(SP)-1; ((SP))<-(X); (SP)<-(SP)-1; ((SP))<-(PCH);(SP)<-(SP)-1; ((SP))<-(PCL);(SP)<-(SP)-1; (I)<-1 (Запрет прерываний) (PC)<-(ADMAX-3):(ADMAX-2) (вектор программного прерывания SWI) |
--1--- |
9 |
1 |
SoftWare Interrupt. Регистр H не запоминается для совместимости с HC05 |
RTI |
INH |
(SP)<-(SP)+1;(PCL)<-((SP)); (SP)<-(SP)+1;(PCH)<-((SP)); (SP)<-(SP)+1; (X)<-((SP)); (SP)<-(SP)+1; (A)<-((SP)); (SP)<-(SP)+1;(CCR)<-((SP)); (Разрешение прерываний) |
++++++ |
7 |
1 |
ReTurn from Interrupt |
RTS |
INH |
(SP)<-(SP)+1;(PCH)<-((SP)); (SP)<-(SP)+1;(PCL)<-((SP)); |
------ |
4 |
1 |
ReTurn from Subroutine |
Команды условных переходов по признакам | ||||||
BCC cad |
REL |
Если (C)=0, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Carry Clear |
BCS cad |
REL |
Если (C)=1, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Carry Set |
BEQ cad |
REL |
Если (Z)=1, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Equal |
BNE cad |
REL |
Если (Z)=0, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Not Equal |
BHCC cad |
REL |
Если (H)=0, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch Half Carry Clear |
BHCS cad |
REL |
Если (H)=1, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch Half Carry Set |
BMC cad |
REL |
Если (I)=0, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if interrupt Mask Clear |
BMS cad |
REL |
Если (I)=1, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if interrupt Mask Set |
BIL cad |
REL |
Если ()=0, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Low |
BIH cad |
REL |
Если ()=1, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if High |
при сравнении чисел без знака | ||||||
BLO cad |
REL |
Если (C)=1, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Lower |
BLS cad |
REL |
Если (C)|(Z)=1, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Lower or Same (BCS) |
BHI cad |
REL |
Если (C)|(Z)=0, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Higher |
BHS cad |
REL |
Если (C)=0, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Higher or Same (BCC) |
при сравнении чисел со знаком | ||||||
BPL cad |
REL |
Если (Z)=0, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Plus |
BMI cad |
REL |
Если (Z)=1, (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Minus |
BLT cad |
REL |
Если (N)Å(V)=1, (Операнды со знаком) (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Less Then |
BLE cad |
REL |
Если (Z)|(N)Å(V)=1, (Операнды со знаком) (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Less Then or Equal |
BGT cad |
REL |
Если (Z)|(N)Å(V)=0, (Операнды со знаком) (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Greater Then |
BGE cad |
REL |
Если (N)Å(V)=0, (Операнды со знаком) (PC)<-(PC)+rel |
------ |
3 |
2 |
Branch if Greater Then or Equal |
по предварительному сравнению | ||||||
CBEQA #d8,cad |
IMM, REL |
Если (A)=d8, (PC)<-(PC)+rel |
------ |
4 |
3 |
Compare, Branch if Equal |
CBEQX #d8,cad |
IMM, REL |
Если (X)=d8, (PC)<-(PC)+rel |
------ |
4 |
3 |
|
CBEQ ad8,cad |
DIR, REL |
Если (A)=(ad8), (PC)<-(PC)+rel |
------ |
5 |
3 |
|
CBEQ X+,cad |
IX+, REL |
Если (A)=((H:X)), (PC)<-(PC)+rel; (H:X)<-(H:X)+1 |
------ |
4 |
2 |
|
CBEQ of8,X+,cad |
IX8+ REL |
Если (A)=(of8+(H:X)), (PC)<-(PC)+rel (H:X)<-(H:X)+1 |
------ |
5 |
3 |
|
CBEQ of8,SP,cad |
SP8 REL |
Если (A)=(of8+(SP)), (PC)<-(PC)+rel |
------ |
6 |
4 |
|
по предварительному декременту | ||||||
DBNZA cad |
REL |
(A)<-(A)-1; Если (A)¹0, (PC)<-(PC)+rel |
------ |
3 |
2 |
Decrement, Branch if Not Zero |
DBNZX cad |
REL |
(H:X)<-(H:X)-1; Если (H:X)¹0,(PC)<-(PC)+rel |
------ |
3 |
2 |
|
DBNZ ad8,cad |
DIR, REL |
(ad8)<-(ad8)-1; Если (ad8)¹0,(PC)<-(PC)+rel |
------ |
5 |
3 |
|
DBNZ X,cad |
IX, REL |
((H:X))<-((H:X))-1; Если ((H:X))¹0, (PC)<-(PC)+rel; |
------ |
4 |
2 |
|
DBNZ of8,X,cad |
IX8 REL |
(of8+(H:X))<-(of8+(H:X))-1; Если (of8+(H:X)) ¹ 0, (PC)<-(PC)+rel |
------ |
5 |
3 |
|
DBNZ of8,SP,cad |
SP8 REL |
(of8+(SP))<-(of8+(SP))-1; Если (of8+(SP)) ¹ 0, (PC)<-(PC)+rel |
------ |
6 |
4 |
|