กลุ่มคำสั่งการกระโดด


คำจำกัดความของตัวแปร
                                  Rd คือ รีจีสเตอร์ R0 - R31
                    Rr  คือ รีจีสเตอร์ R0 - R31
                    K  คือ ค่าคงที่ขนาด 8 บิท
                                 X  คือ รีจีสเตอร์ X
                    Y  คือ รีจีสเตอร์ Y
                    q  คือ ค่าระยะห่าง มีค่า 0 - 63 
                    Z  คือ รีจีสเตอร์ Z
                    k  คือ ตำแหน่งหน่วยความจำใน SRAM                                   
                    k  คือ ตำแหน่งในหน่วยความจำ 0 - 65565
                    P  คือ รีจีสเตอร์ Input / Output                                
RJMP k
                    คำสั่งกระโดดแบบ Relative
                    k  คือ ตำแหน่งหน่วยความจำใน SRAM                               
IJMP k
                    คำสั่งกระโดดไปยังตำแหน่งหนาวยความจำที่ถูกชี้โดยรีจีสเตอร์ Z  
                    k  คือ ตำแหน่งหน่วยความจำใน SRAM
RCALL k
                    คำสั่งกระโดดไปยังโปรแกรมย่อย ที่ k
                    k  คือ ตำแหน่งหน่วยความจำใน SRAM
ICALL
                    คำสั่งกระโดดไปทำงานโปรแกรมย่อยที่ชี้ตำแหน่งโดยรีจีสเตอร์ Z   
RET
                   คำสั่งกลับจากโปรแกรมย่อย 
RETI
                   คำสั่งกลับจากโปรแกรมบริการอินเตอร์รัพท์  
CPSE Rd,Rr
                   คำสั่งเปรียบเทียบข้อมูลในรีจีสเตอร์ Rd กับข้อมูลในรีจีสเตอร์ Rr โดยถ้าข้อมูลในรีจีสเตอร์ทั้ง 2 มีค่าเท่ากัน CPU ข้ามการทำคำสั่ง
ถัดไป 1 คำสั่ง
                                 Rd  คือ รีจีสเตอร์ R0 - R31
                    Rr  คือ รีจีสเตอร์ R0 - R31 
CP Rd,Rr
                   คำสั่งเปรียบเทียบข้อมูลในรีจีสเตอร์ Rd และข้อมูลในรีจีสเตอร์ Rr โดยจะมีผลต่อ Flag  Z,N,V,C,H
                    Rd คือ รีจีสเตอร์ R0 - R31
                    Rr  คือ รีจีสเตอร์ R0 - R31
                    Z,N,V,C,H  คือ รีจีสเตอร์ Z,N,V,C,H
CPC Rd,Rr
                   คำสั่งเปรียบเทียบข้อมูลในรีจีสเตอร์ Rd กับข้อมูลในรีจีสเตอร์ Rr และ Carry Flag โดยมีการกระทำ Rd - Rr - C ซึ่งทำให้มี
ผลกับ Flag  Z,N,V,C,H
                    Rd คือ รีจีสเตอร์ R0 - R31
                    Rr  คือ รีจีสเตอร์ R0 - R31
                    Z,N,V,C,H  คือ รีจีสเตอร์ Z,N,V,C,H
CPI Rd,K
                   คำสั่งเปรียบเทียบข้อมูลในรีจีสเตอร์ Rd กับค่าคงที่ โดย CPU จะกระทำ Rd - k ซึ่งมีผลต่อ Flag  Z,N,V,C,H 
                    Rd คือ รีจีสเตอร์ R0 - R31
                    k  คือ ตำแหน่งหน่วยความจำใน SRAM 
SBRC Rr,b
                    เมื่อ CPU ทำคำสั่ง SBRC จะทำให้ CPU ข้ามการทำคำสั่งถัดไป 1 คำสั่ง ถ้าบิทที่ b ในรีจีสเตอร์ Rr มีค่าเป็น 0  
                    Rr  คือ รีจีสเตอร์ R0 - R31
                    b    คือ จำนวน bit
SBRS Rr,b
                    เมื่อ CPU ทำคำสั่ง SBRS จะทำให้ CPU ข้ามการทำคำสั่งถัดไป 1 คำสั่ง ถ้าบิทที่ b ในรีจีสเตอร์ Rr ถูก SET
                    Rr  คือ รีจีสเตอร์ R0 - R31
                    b    คือ จำนวน bit
SBIC P,b
                    เมื่อ CPU ทำคำสั่ง SBIC จะทำให้ CPU ข้ามการทำคำสั่งถัดไป 1 คำสั่ง ถ้าบิทที่ b ในรีจีสเตอร์ I/O ที่ P เคลียร์
                                   P    คือ รีจีสเตอร์ Input/output 
                     b    คือ จำนวน bit
SBIS P,b
                    เมื่อ CPU ทำคำสั่ง SBIS จะทำให้ CPU ข้ามการทำคำสั่งถัดไป 1 คำสั่ง ถ้าบิทที่ b ในรีจีสเตอร์ I/O ที่ P ถูก SET
                      P    คือ รีจีสเตอร์ Input/output 
                      b    คือ จำนวน bit
BRBS s,k
                    เป็นคำสั่งกระโดดข้ามไปทำคำสั่งในตำแหน่งที่ PC ชี้ ถ้า Flag Status ในรีจีสเตอร์ SREG ถูก SET {(SREG(s)) = 1 } 
โดยค่าใน PC = PC + k + 1 
BRBC s,k
                    เป็นคำสั่งกระโดดข้ามไปทำคำสั่งในตำแหน่งที่ PC ชี้ ถ้า Flag Status ในรีจีสเตอร์ SREG ถูก เคลียร์ {(SREG(s)) = 0 } 
โดยค่าใน PC = PC + k + 1
BRBQ k
                     เป็นคำสั่งกระโดดข้ามไปทำคำสั่งในตำแหน่งที่ PC ชี้ ถ้า Zero flag เซ็ต (Z = 1) โดยค่าใน PC = PC + k + 1  
BRNE k
                     เป็นคำสั่งกระโดดข้ามไปทำคำสั่งในตำแหน่งที่ PC ชี้ ถ้า Zero flag เซ็ต (Z = 1) โดยค่าใน PC = PC + k + 1  
BRCS k
                     เป็นคำสั่งกระโดดข้ามไปทำคำสั่งในตำแหน่งที่ PC ชี้ ถ้า Zero flag เซ็ต (Z = 1) โดยค่าใน PC = PC + k + 1  
BRCC k
                     เป็นคำสั่งกระโดดข้ามไปทำคำสั่งในตำแหน่งที่ PC ชี้ ถ้า Zero flag เซ็ต (Z = 1) โดยค่าใน PC = PC + k + 1  
BRLO k
                     เป็นคำสั่งกระโดดข้ามไปทำคำสั่งในตำแหน่งที่ PC ชี้ ถ้า Zero flag เซ็ต (Z = 1) โดยค่าใน PC = PC + k + 1  
BRMI k
                     เป็นคำสั่งกระโดดข้ามไปทำคำสั่งในตำแหน่งที่ PC ชี้ ถ้า Zero flag เซ็ต (Z = 1) โดยค่าใน PC = PC + k + 1  
BRPL k
                     เป็นคำสั่งกระโดดข้ามไปทำคำสั่งในตำแหน่งที่ PC ชี้ ถ้า Zero flag เซ็ต (Z = 1) โดยค่าใน PC = PC + k + 1  
BRGE k
                     เป็นคำสั่งกระโดดข้ามไปทำคำสั่งในตำแหน่งที่ PC ชี้ ถ้า Zero flag เซ็ต (Z = 1) โดยค่าใน PC = PC + k + 1  
BRLT k
                     เป็นคำสั่งกระโดดข้ามไปทำคำสั่งในตำแหน่งที่ PC ชี้ ถ้า Zero flag เซ็ต (Z = 1) โดยค่าใน PC = PC + k + 1  
BRSH k
                     เป็นคำสั่งกระโดดไปยังหน่วยความจำตำแหน่ง PC = PC + k + 1  
BRSC k
                     เป็นคำสั่งกระโดดไปยังหน่วยความจำตำแหน่ง PC = PC + k + 1  ถ้า Half Carry Flag Set
BRTS k
                     เป็นคำสั่งกระโดดไปยังหน่วยความจำตำแหน่ง PC = PC + k + 1  ถ้า T Flag Set
BRTC k
                     เป็นคำสั่งกระโดดไปยังหน่วยความจำตำแหน่ง PC = PC + k + 1  ถ้า T Flag Clear
BRVS k
                     เป็นคำสั่งกระโดดไปยังหน่วยความจำตำแหน่ง PC = PC + k + 1  ถ้า Overflow Flag Set
BRVC k
                     เป็นคำสั่งกระโดดไปยังหน่วยความจำตำแหน่ง PC = PC + k + 1  ถ้า Overflow Flag Clear
BRIE k
                     เป็นคำสั่งกระโดดไปยังหน่วยความจำตำแหน่ง PC = PC + k + 1  ถ้า Interrupt Enable บิท(I = 1)
BRID k
                     เป็นคำสั่งกระโดดไปยังหน่วยความจำตำแหน่ง PC = PC + k + 1  ถ้า Interrupt Disable บิท(I = 0)