คำสั่ง DEC dd


      ใช้ในการลดค่า รีจิสเตอร์ 16 บิตและรีจิสเตอร์คู่

รูปแบบการกระทำ       dd ⬅ dd - 1

      โดย dd คือ รีจิสเตอร์คู่ 16 บิท ได้แก่ BC,DE,HL และ IX,IY

ตัวอย่าง
      ถ้า BC = 2004H เมื่อใช้คำสั่ง DEC BC จะทำให้ BC มีค่าเป็น 2003H
  และ ถ้า BC = 2300H เมื่อใช้คำสั่ง DEC BC จะทำให้ BC มีค่าเป็น 22FFH

หมายเหตุ
      1.) ความแตกต่างของคำสั่งเพิ่มค่าและลดค่าแบบ 16 บิต จะแตกต่างกับคำสั่งเพิ่มและลดค่าแบบ 8 บิต ดังนี้คือ
- คำสั่งเพิ่มค่าแบบ 16 บิตนี้จะเพิ่มโดยปัดค่าไปยังรีจิสเตอร์ตัวหน้าด้วย เช่น ถ้า HL = 00FFH
      ถ้าใช้ คำสั่งเพิ่มค่าแบบ 8 บิต คือ INC L จะทำให้ HL = 0000H
      แต่ถ้าใช้ คำสั่งเพิ่มค่าแบบ 16 บิต คือ INC HL จะทำห็น HL = 0100H
- ผลลัพธ์จากการทำงานของคำสั่งเพิ่มค่าและลดค่า แบบ 16 บิต จะไม่มีผลใดๆกับแฟลกดังนั้นในการเขียนโปรแกรมตรวจสอบจึงควรระมัดระวังเรื่องดังกล่าวด้วย
      2.) ในการกบวกบางทีผลลัพธ์ที่เกิดขึ้นอาจจะเกินกว่า 8 บิตได้โดยบิตที่เกินมานี้จะถูกเก็บไว้ในแฟลก Cy ดังนั้นถ้าต้องการเก็บผลลัพธ์ที่ถูกต้องจะต้องทำการเก็บค่า Cy ด้วยโดยใช้คำสั่ง ADC A,0 (คือ A ⬅ A + 0 + Cy = Cy) ดังตัวอย่างต่อไปนี้
      ให้ ตัวตั้งอยู่ที่หน่วยความจำแอดเดรส 2200H
      ตัวบวกอยู่ที่หน่วยความจำแอดเดรส 2201H
      และให้เก็บผลลัพธ์ไว้ในหน่วยความจำแอดเดรส 2202H และ 2203H

การเขียนโปรแกรม
      LD A,(2200H) ; เก็บตัวตั้งใน 2200H ไว้ในรีจิสเตอร์ A
      LD HL,22001H ; ให้ HL ชี้ไปที่แอดเดรส 2201H
      ADD A,(HL)   ; ทำการบวกตัวตั้งเข้ากับตัวบวก A ⬅ A + (HL)
      LD (2202H),A ; เก็บค่าผลลัพธ์จากการบวกไว้ใน 2202H
      ADC A,0      ; นำค่า Cy มาไว้ใน AA ⬅ A + Cy + 0
      LD (2203H),A ; เก็บค่าผลลัพธ์ไว้ในหน่วยความจำ 2203H