วันพฤหัสบดีที่ 20 กันยายน พ.ศ. 2555

กลุ่มคำสั่งการโอนย้ายข้อมูล

กลุ่มคำสั่งการโอนย้ายข้อมูล  
     การโอนย้ายข้อมูล คือ เป็นความสามารถที่สำคัญที่สุด การที่คอมพิวเตอร์จะสามารถประมวลผลได้รวดเร็วนั้น ก็ขึ้นอยู่กับความสามารถในการโอนย้ายข้อมูลนั่นเองการโอนย้ายข้อมูลใน CPU Z - 80 นั้น สามารถแบ่งออกได้เป็น 6 ชนิด คือ
1.การโอนย้ายข้อมูลระหว่างรีจิสเตอร์หรือ หน่วยความจำกับค่าคงที่
2. การโอนย้ายข้อมูลระหว่างรีจิสเตอร์ด้วยกัน
3. การโอนย้ายข้อมูลระหว่างรีจิสเตอร์ กับหน่วยความจำ
4. การโอนย้ายข้อมูลระหว่างหน่วยความจำตำแหน่งต่าง ๆ
5. การโอนย้ายข้อมูลระหว่างรีจีสเตอร์กับหน่วยอินพุท เอาท์พุท
6. การโอนย้ายข้อมูลระหว่างหน่วยความจำกับหน่วยอินพุท เอาท์พุท
 

ความหมายและชนิดของข้อมูลในไมโครโปรเซสเซอร์ Z-80

คำสั่งการ โอนย้ายข้อมูลระหว่างรีจิสเตอร์หรือหน่วยความจำกับค่าคงที่

คำสั่งการโอนย้ายข้อมูลระหว่างรีจิสเตอร์กับรีจิสเตอร์  
     ในการโอนย้ายข้อมูลระหว่างรีจิสเตอร์ภายใน CPU เบอร์ Z-80 นี้จะใช้คำสั่ง LD ทำการโอนย้าย ในคำสั่งต่างๆนั้นจะใช้ตัวกระทำ (Operand) 2 ตัว คือ ซอร์ท (Source) หมายถึง ตำแหน่งข้อมูลเดิมที่จะย้ายและตำแหน่งที่ข้อมูลจะย้ายไปเก็บหรือรับข้อมูลจะเรียกว่า "Destination" รูปแบบของคำสั่งกลุ่มนี้ คือ LD r , s
 
           r คือ รีจิสเตอร์ต่างๆของ CPU Z-80 ที่เป็นตัวรับข้อมูล ( Destination )
           s คือ รีจิสเตอร์ต่างๆของ CPU Z-80 ที่จะเป็นข้อมูลที่จะถูกย้ายไป

ตัวอย่าง การโอนย้ายข้อมูลระหว่าง Reg. B เข้าไปใน Reg. A เขียนคำสั่ง คือ LD A,B
           คำสั่ง LD A,B มีรหัสเฮ็กซ์ = 78H เมื่อ CPU Z-80 พบคำสั่ง 78H CPU จะนำข้อมูลใน Reg. B เข้ามาเก็บใน Reg. A แสดงการทำงานให้เห็นได้ ดังรูป
แสดงการโอนย้ายข้อมูล รีจิสเตอร์ B เก็บในรีจิสเตอร์ A
ตัวอย่าง การโอนย้ายข้อมูลระหว่าง Reg. C เข้าไปเก็บใน Reg. B เขียนคำสั่ง คือ LD B,C
          คำสั่ง LD B, C มีรหัสเฮ็กซ์ = 41H เมื่อ CPU Z-80 พบคำสั่ง 41H CPU จะนำข้อมูลใน Reg. C เข้ามาเก็บใน Reg. B แสดงการทำงานให้เห็นได้ ดังรูป
แสดงการโอนย้ายข้อมูลรีจิสเตอร์ C เก็บในรีจิสเตอร์ B

ตัวอย่าง การโอนย้ายข้อมูลระหว่าง Reg. D เข้าไปเก็บใน Reg. C เขียนคำสั่ง คือ LD C,D
           คำสั่ง LD C, D มีรหัสเฮ็กซ์ = 4AH เมื่อ CPU Z-80 พบคำสั่ง 4AH CPU จะนำข้อมูลใน Reg. D เข้ามาเก็บใน Reg. C แสดงการทำงานให้เห็นได้ ดังรูป

แสดงการโอนย้ายข้อมูลรีจิสเตอร์ D เก็บในรีจิสเตอร์ C
คำสั่งการโอนย้ายข้อมูลระหว่างรีจิสเตอร์กับหน่วยความจำ
        ในการโอนย้ายข้อมูลแบบนี้จะทำได้ 2 วิธี คือ การย้ายข้อมูลในรีจิสเตอร์ไปเก็บในหน่วยความจำ และการย้ายข้อมูลจากหน่วยความจำไปเก็บในรีจิสเตอร์
การโอนย้ายข้อมูลในรีจิสเตอร์ไปเก็บในหน่วยความจำ
        เป็นการนำข้อมูลในรีจิสเตอร์ต่างๆออกมาเก็บไว้ในหน่วยความจำภายนอก ตัวอย่าง เช่น คำสั่ง LD (1004 H ) , A
        คำสั่ง LD (1004 H ) , A มีรหัสเฮ็กซ์ = 32H 04H 10H เมื่อ CPU Z-80 พบคำสั่ง 32H ตามด้วย Operand 04H 10H CPUจะนำข้อมูลใน Reg. A ออกมาเก็บในหน่วยความจำภายนอกที่ตำแหน่งแอดเดรส 1004H แสดงการทำงานให้เห็นได้ ดังรูป
แสดงการนำข้อมูลในรีจิสเตอร์มาเก็บในหน่วยความจำ
ตัวอย่าง การกำหนดข้อมูล 16 บิท จากรีจิสเตอร์ไปเก็บลงในหน่วยความจำ เช่น คำสั่ง LD (1004),HL
          คำสั่ง LD (1004),HL มีรหัสเฮกซ์ = 22H 04H 10H เมื่อ CPU Z-80 พบคำสั่ง 22H ตามด้วย Operand 04H 10H CPUจะนำข้อมูลในReg.H กับ Reg. L ออกมาเก็บในหน่วยความจำภายนอกที่แอดเดรส 1004H และ 1005H ตามลำดับ แสดงการทำงานให้เห็นดังรูป
แสดงการนำข้อมูล 16 บิท มาเก็บในหน่วยความจำ

การโอนย้ายข้อมูลจากหน่วยความจำไปเก็บในรีจิสเตอร์
         เป็นการนำข้อมูลที่อยู่ในแอดเดรสต่างๆเข้ามาไว้ในรีจิสเตอร์ภายใน CPU ดังตัวอย่างเช่น LD A,(1004H)
          คำสั่ง LD A,(1004H) มีรหัสเฮกซ์ = 3AH 04H 10H เมื่อ CPU Z-80 พบคำสั่ง 3AH CPU จะทราบว่าต้องนำข้อมูลเข้าไปเก็บใน Reg. A โดยข้อมูลนั้น CPU จะนำ Operand 2 ตัวที่เขียนถัดมาจาก OP.Code 3AH รวมเป็นแอดเดรส แล้วนำข้อมูลแอดเดรสนี้มาเก็บใน Reg.A แสดงการทำงานให้เห็นดังรูป
แสดงการนำข้อมูลหน่วยความจำไปเก็บในรีจิสเตอร์
คำสั่งการโอนย้ายข้อมูลระหว่างหน่วยความจำตำแหน่งต่างๆ  
         คำสั่งการโอนย้ายข้อมูลระหว่างหน่วยความจำกับหน่วยความจำ เป็นการนำข้อมูลจากหน่วยความจำไปเก็บในหน่วยความจำตำแหน่งต่างๆตามคำสั่ง เช่น คำสั่ง LD (IX+05) , 88H (เป็นการนำข้อมูล 88H ในหน่วยความจำ ไปเก็บยังตำแหน่ง (IX+05) ในหน่วยความจำ )
        คำสั่ง LD (IX+05) , 88H มีรหัสเฮ็กซ์ = DDH 36H 05H 88H เมื่อ CPU Z-80 พบคำสั่ง DDH 36H CPUจะนำข้อมูล 88H จากหน่วยความจำที่แอดเดรสต่อจาก OP. Code DDH 36H เข้าไปเก็บในหน่วยความจำที่ตำแหน่งแอดเดรสถูกชี้โดย Reg. (IX+05) แสดงการทำงานให้เห็นได้ ดังรูป 


 แสดงการโอนย้ายข้อมูลระหว่างหน่วยความจำ กับ หน่วยความจำ
การสลับข้อมูล   
        การสลับข้อมูล จะมีคำสั่งสลับข้อมูลได้แก่ EX และ EXX ซึ่งใช้สลับข้อมูลระหว่างชุดรีจิสเตอร์หลัก(MAIN Reg.) กับชุดรีจิสเตอร์สำรอง(ALTERNATE Reg.) คำสั่ง EX และ EXX จะทำงานได้รวดเร็วเพราะเป็นการแลกเปลี่ยนข้อมูลระหว่างรีจิสเตอร์ ซึ่งอยู่ภายใน CPU เช่นกัน
ตัวอย่างเช่น  
คำสั่ง EX DE, HL ใช้สลับข้อมูลระหว่างคุ่ Reg. DE กับ Reg. HL
คำสั่ง EX AF,AF ใช้สลับข้อมูลระหว่างคุ่ Reg. AF กับ Reg. AF
คำสั่ง EXX ใช้สลับข้อมูลทั้งชุดของ Reg. BC , DE และ HL กับชุด Reg. ของ BC' , DE' และ HL' 
คำสั่งที่กล่าวมานี้สามารถแสดงให้เห็นได้ดังรูป
แสดงการสลับข้อมูลของคำสั่ง EX และ EXX
คำสั่งการสลับข้อมูล EX (SP) , HL มีการทำงานดังนี้
         คำสั่ง EX (SP) , HL มีรหัสเฮ็กซ์ = E3H เมื่อ CPU Z-80 พบคำสั่ง E3H CPUจะนำข้อมูลคู่ Reg. HL มาสลับกับข้อมูลที่ถูกชี้โดย Reg. SP ที่มีข้อมูลอยู่ในหน่วยความจำ แสดงการทำงานให้เห็นได้ ดังรูป
แสดงการสลับข้อมูลของคำสั่ง EX (SP) , HL
การโอนย้ายข้อมูลโดยใช้ Stack  
         การโอนย้ายข้อมูลโดยใช้ Stack จะมีคำสั่งที่ใช้เก็บข้อมูลจาก Reg. ไปไว้ใน Stack ได้แก่ คำสั่ง PUSH และ POP
        คำสั่ง PUSH มีประโยชน์เมื่อเราต้องการเก็บข้อมูลจาก Reg. ไปใว้ใน Stack เพื่อจะได้ใช้ Reg. ทำงานอื่น เมื่อทำงานอื่นเสร็จแล้ว เราใช้คำสั่งเรียกข้อมูล (POP) จาก Stack กลับคืนไปยัง Reg. คำสั่ง PUSH และ POP จะเป็นการโหลดข้อมูลระหว่าง Reg. กับหน่วยความจำ
ตัวอย่างของคำสั่ง PUSH เช่น PUSH BC
         คำสั่ง PUSH BC มีรหัสเฮกซ์ = C5H เมื่อ CPU Z-80 พบคำสั่ง C5H CPUจะนำข้อมูล Reg. B และ Reg. C ออกมาเก็บไว้ในย่านแอดเดรสของReg. SP โดยค่าของ SP จะเป็นแอดเดรสบอกตำแหน่งที่จะนำข้อมูลไปเก็บไว้ แสดงการทำงานให้เห็นได้ดังรูป
 

แสดงการทำคำสั่ง PUSH
ตัวอย่างของคำสั่ง POP เช่น POP BC  
         คำสั่ง POP BC มีรหัสเฮกซ์ = C1H เมื่อ CPU Z-80 พบคำสั่ง C1H CPUจะนำข้อมูล ที่อยู่ในหน่วยความจำ ที่ระบุตำแหน่งแอดเดรสโดย Reg. SP นำข้อมูลจากหน่วยความจำมาเก็บไว้ใน Reg. BC แสดงการทำงานให้เห็นได้ดังรูป 

แสดงการทำคำสั่ง POP



 
 



 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น