คำสั่ง XOR


      เป็นคำสั่งสำหรับการกระทำทางลอจิกแบบ Exclusive OR ระหว่างข้อมูลในรีจิสเตอร์ A กับค่าข้อมูลที่กำหนด

รูปแบบคำสั่ง       XOR S

      S หมายถึง รีจิสเตอร์ 8 บิต (r), ข้อมูลขนาด 8 บิต (n) และหน่วยความจำ (HL)

ลักษณะการกระทำ          A ⬅ A XOR S

      การ XOR จะกระทำแบบบิตต่อบิตโดยถ้าค่าอินพุตเหมือนกันจะได้เอาท์พุตเป็น 0 ถ้าค่าอินพุตต่างกันจะได้ผลลัพธ์เป็น 1 ผลลัพธ์ของการกระทำจะเก็บไว้ในรีจิสเตอร์ A

ตัวอย่าง
      LD A,47H ; A = 47H     = 0100 0111B
      XOR 0FH ; XOR 0FH    = 0000 1111B
      จะได้ผลลัพธ์ในรีจิสเตอร์ A = 0100 1000B
                               = 4 8 H

      การกระทำคำสั่งทางลอจิก มีความพิเศษประการหนึ่งคือ จะเป็นการล้าง (Clear) ข้อมูลในแฟลก Cy ของรีจิสเตอร์ F ไปด้วยในตัว ดังนั้น ในการเขียนโปรแกรมเราจึงมักพบคำสั่งในลักษณะแปลกๆเช่น AND A หรือ OR A ซึ่งเป็นการนำข้อมูลในรีจิสเตอร์ A มา AND หรือ OR กับตัวเอง ซึ่งถ้าพิจารณาทางด้านผลลัพธ์แล้วจะไม่มีอะไรเปลี่ยนแปลง เนื่องจากการ AND หรือ OR ตัวเองของรีจิสเตอร์ A ผลลัพธ์ใน A ก็จะยังมีค่าเท่าเดิมทุกประการ
      เช่น ถ้าให้ A = 1010 0111B
            ND กับ 1010 0111B
         ผลลัพธ์ = 1010 0111B คงเดิม

      ดังนั้นจุดประสงค์ของการใช้คำสั่งดังกล่าว คือต้องการล้างข้อมูลในแฟลก Cy ให้เป็นมีค่าเป็นศูนย์ และถ้าใช้ คำสั่ง XOR A นอกจากจะเป็นการล้างข้อมูล Cy แล้ว ก็จะทำให้ค่าข้อมูลในรีจิสเตอร์ A เป็น ศูนย์ด้วย เพราะเป็นการกระทำ XOR ด้วยค่าที่ตรงกัน
      เช่น ถ้าให้ A = 1010 0111B
           XOR กับ 1010 0111B
         ผลลัพธ์ = 0000 0000B = 00H