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


      ปกติการทำงานของโปรแกรมจะทำงานตามเรียงลำดับคำสั่งจนจบโปรแกรม ในบางกรณี อาจะมีความต้องการให้โปรแกรมกระโดดข้ามบางบรรทัดคำสั่ง หรือให้ย้อนกลับไปทำบางคำสั่งซ้ำใหม่ในลักษณะวนรอบ Z80 ได้จัดคำสั่งหรับการกระโดดทำงานเป็น 2 ลักษณะ คือ
      1.) คำสั่ง กระโดดแบบอ้างตำแหน่งแบบสมบูรณ์ (Absolute Jump) จะใช้คำสั่งเป็น JP ซึ่งลักษณะการกระโดดจะกระโดดไปยังตำแหน่งแอดเดรสหรือลาเบลที่ระบุ เช่น JP 2300H หรือ JR START
      2.) คำสั่งกระโดดแบบอ้างตำแหน่งแบบสัมพันธ์ (Relative Jump) จะใช้คำสั่งเป็น JR ซึ่งลักษณะการกระโดดจะอ้างเป็นระยะห่างจากตำแหน่งเดิมหรือลาเบลที่ระบุ เช่น JR 05H หรือ JR F3H โดยจะต้องมีค่าไม่เกิน FF (จะเห็นระยะห่างการกระโดดจะน้อยกว่าแบบ JR) ถ้าเป็นการกระโดดไปข้างหน้า ค่าระยะห่างจะเป็นบวกแต่ถ้าเป็นการกระโดดย้อนกลับไปค่าระยะห่างจะมีค่าเป็นลบ ซึ่งตำแหน่งคำนวณได้จากสูตร
ระยะห่างในการกระโดด = ตำแหน่งที่จะกระโดดไป – ตำแหน่งเดิม -2

      ในกรณีการใช้ภาษาแอสเซมบลีสามารถอ้างเป็นตำแหน่งลาเบลได้ทันที เช่น สามารถใช้คำสั่งเป็น JR START โดยตัวแปลกภาษาจะคำนวณค่าระหว่างให้โดยอัตโนมัติ
      ข้อดีของการกระโดดแบบ JR คือสามารถย้ายโปรแกรมไปใช้ในส่วนต่างๆได้ โดยไม่เกิดปัญหา เพราะการกระโดดไม่ได้อ้างเป็นตำแหน่งแอดเดรสโดยตรง แต่อ้างในลักษณะเป็นระยะห่างจากตำแหน่งเริ่มต้น นอกจากนี้ การกระโดดยังแบ่งได้เป็น 2 แบบ คือ การกระโดดแบบไม่มีเงื่อนไขและการกระโดดแบบมีเงื่อนไข
      การทำงานของซีพียูการปฏิบัติคำสั่งกระโดด คือในกรณีการกระโดดแบบ JR จะเป็นการกำหนดค่าในรีจิสเตอร์ PC ให้มีค่าตามที่ระบุ เช่น JP 2300H ก็จะเป็นการกำหนดให้ PC มีค่าเป็น 2300H เพื่อให้ซีพียูไปประมวลผลคำสั่งในแอดเดรสนั้น สำหรับการกระโดดแบบ JR ซึ่งกำหนดเป็นค่าระยะห่างก็จะเป็นการบวกค่าPC ด้วยค่าระหว่างห่างที่กำหนด เช่น เมื่อใช้คำสั่ง JR 05H ก็จะทำให้ PC = PC+05 คือกระโดดไปข้างหน้าอีก 5 แอดเดรส