คำสั่ง ADC


      เป็นคำสั่งในการบวกข้อมูลขนาด 8บิต แบบคิดตัวทดคือจะนำค่าข้อมูลใดๆ (S) มารวมกับค่าข้อมูลในรีจิสเตอร์ A และบวกเข้ากับค่าของแฟลกตัวทด Cy ซึ่งเกิดจากการบวกในหลักก่อนจากนั้นนำผลลัพธ์ที่ได้เก็บไว้ในรีจิสเตอร์ A

รูปแบบคำสั่ง       ADC A,S

ลักษณะการทำงาน       A ⬅ A+S+Cy

        โดย S หมายถึง r,n (HL),(IX + d) หรือ (IY + d)
      เราจะใช้คำสั่ง ADC A,S ในการบวกแบบหลายหลักโดยจะใช้ในการบวกของหลักที่ต่อจากการบวกในหลักแรกเพราะจะต้องนำตัวทดที่เกิดจากบวกมารวมด้วย

ตัวอย่างการใช้งาน
      จงเขียนโปรแกรมบวกเลขโดยให้ BC = ตัวตั้ง HL = ตัวบวก และ DE = ผลลัพธ์
           LD A,C  ; นำข้อมูลตัวตั้งหลักหน่วยมาไว้ในรีจิสเตอร์ A
           ADD A,L ; ทำการบวกข้อมูลในหลักแรกแบบไม่คิดตัวทด
           LD E,A   ; นำผลลัพธ์ในรีจิสเตอร์ A มาเก็บไว้ในรีจิสเตอร์ E
           LD A,B   ; นำข้อมูลตัวตั้งหลักต่อไปมาไว้ในรีจิสเตอร์ A
           ADC A,H ; ทำการบวกข้อมูลตัวตั้งกับตัวบวกและตัวทดจากหลักก่อน
           LD D,A   ; นำผลลัพธ์ในรีจิสเตอร์ A มาเก็บไว้ในรีจิสเตอร์ D

รูปแสดงตัวอย่างการบวกข้อมูลแบบคิดตัวทด

      พิจารณาการเก็บข้อมูลจะเห็นว่าขั้นตอนการบวกจะเริ่มจากบวกหลักแรกก่อน โดยนำข้อมูลในรีจิสเตอร์ C มาเก็บไว้ในรีจิสเตอร์ A ด้วยคำสั่ง LD A,C จากนั้นจึงนำมาบวกกับข้อมูลในรีจิสเตอร์ D ด้วยคำสั่ง ADD A,D จากนั้นจะนำผลลัพธ์ซึ่งอยู่ในรีจิสเตอร์ A ไปเก็บไว้ในรีจิสเตอร์ E ด้วยคำสั่ง LD E,A โดยการบวกนี้หากมีตัวทดเกิดขึ้นตัวทดจะถูกเก็บในแฟลก Cy ซึ่งเป็นบิทหนึ่งในรีจิสเตอร์ F สำหรับการบวกหลักถัดไป จะนำข้อมูลในรีจิสเตอร์ B มาเก็บใน A ก่อนด้วยคำสั่ง LD A,B ต่อจากนั้นจึงนำไปบวกกับข้อมูลในรีจิสเตอร์ H และข้อมูลใน Cy โดยใช้คำสั่ง ADC A,H แล้วจึงเก็บผลลัพธ์ไว้ในรีจิสเตอร์ D โดยใช้คำสั่ง LDD , A โดยการบวกนี้ ถ้ามีตัวทดเกิดขึ้นอีกก็จะนำไปเก็บใน Cy แทนตัวทดครั้งก่อน