80 likes | 224 Views
ปฏิบัติการแบบแยก. Branch Operation. ปฏิบัติการแบบแยก. เป็นคำสั่งที่ใช้เปลี่ยนลำดับของการกระทำการตาม เงื่อนไข แบ่งออกเป็น 3 ประเภท คำสั่งการกระโดด คำสั่งเรียกโปรแกรมย่อย คำสั่งกลับสู่โปรแกรมหลัก และคำสั่งเริ่มทำต่อ. คำสั่งการ กระโดด ( Jump Instructions ). แบ่งออกเป็น 2 กลุ่ม คือ
E N D
ปฏิบัติการแบบแยก Branch Operation
ปฏิบัติการแบบแยก • เป็นคำสั่งที่ใช้เปลี่ยนลำดับของการกระทำการตามเงื่อนไข แบ่งออกเป็น 3 ประเภท • คำสั่งการกระโดด • คำสั่งเรียกโปรแกรมย่อย • คำสั่งกลับสู่โปรแกรมหลัก และคำสั่งเริ่มทำต่อ
คำสั่งการกระโดด (Jump Instructions) • แบ่งออกเป็น 2 กลุ่ม คือ • กลุ่มกระโดดสมบูรณ์ (Absolute Jump) เป็นคำสั่งขนาด 3 ไบต์ ประกอบด้วยตัวถูกดำเนินการซึ่งจะกำหนดเลขที่อยู่ขนาด 16 บิต เมื่อกระทำคำสั่งลำดับโปรแกรมจะเปลี่ยนไปตำแหน่งที่กำหนด • กลุ่มกระโดดสัมพันธ์ (Relative Jump) เป็นคำสั่งขนาด 2 ไบต์ ประกอบด้วยตัวถูกดำเนินการซึ่งจะกำหนดระยะห่าง 8 บิต เพื่อแสดงการกระโดดไปข้างหน้าหรือถอยหลัง ในรูป 2’Complement
กลุ่มกระโดดสมบูรณ์ (Absolute Jump) • แบ่งออกเป็น 2 ประเภท • กลุ่มกระโดดสมบูรณ์ แบบไม่มีเงื่อนไข • กลุ่มกระโดดสมบูรณ์ แบบมีเงื่อนไข ใช้ร่วมกับสถานะแฟลก4 ตัว ได้แก่ S , Z , Cy , P/V ดังนี้ Opcode Operand Byte Description JP 16-bit 3 กระโดดแบบไม่มีเงือนไข ไปยังตำแหน่ง หน่วยความจำที่กำหนด JP C,16-bit 3 กระโดดเมื่อมีตัวทด JP Z,16-bit 3กระโดดเมื่อแฟลกZ เป็นศูนย์ JP NC,16-bit 3 กระโดดเมื่อไม่มีตัวทด JP NZ,16-bit 3 กระโดดเมื่อแฟลกZ ไม่เป็นศูนย์
ตัวอย่างที่ 1 จงเขียนคำสั่งเพื่อโหลดไบต์ฐานสิบหก 2 ไบต์ ได้แก่ Byte1 และ Byte2 ลงใรรีจีสเตอร์ B และ C ตามลำดับแล้วบวกไบต์เหล่านั้น ถ้าผลรวมมากกว่า 8 บิต ให้แสดงผล 00H เป็นเงื่อนไขค่าเกินที่เอาต์พอร์ต PORT1 และเคลียร์ตำแหน่งหน่วยความจำ OUTBUF ถ้าผลรมน้อยกว่า 8 บิต ให้เก็บผลรวมไว้ที่ตำแหน่งหน่วยความจำ OUTBUF กำหนด Byte1 = 9AH Byte2 = A7H PORT1 = 01H OUTBUF = 2050H
Label Opcode ,Operand Comment LD B,9AH LD C,A7H LD A,C ADD A,B JP NC,STORE LD A,00H OUT (PORT1),A STORE: LD (OUTBUF),A
กลุ่มกระโดดสัมพันธ์ (Relative Jump) • แบ่งออกเป็น 2 ประเภท • กลุ่มกระโดดสัมพันธ์ แบบไม่มีเงื่อนไข • กลุ่มกระโดดสัมพันธ์ แบบมีเงื่อนไข เราสามารถกำหนดเลขที่อยู่ใหม่ซึ่งเป็นลำดับของโปรแกรมโดยค่าออฟเซ็ต(ระยะห่าง) ขนาด 8 บิต ที่สัมพันธ์กับคำสั่งการกระโดด • ระยะห่างเป็นบวก หมายถึง การกระโดดไปข้างหน้า • ระยะห่างเป็นลบ หมายถึง การกระโดดถอยหลัง • d = ระยะห่าง = displacement
รายการคำสั่งกระโดดแบบสัมพันธ์ (Relative Jump) Mnemonics Byte Description JR d 2 กระโดดแบบสัมพันธ์แบบไม่มีเงื่อนไข JR Z,d 2กระโดดสัมพันธ์ เมื่อ Z=1 JR NZ,d2 กระโดดสัมพันธ์ เมื่อ Z=0 JR C,d2 กระโดดสัมพันธ์ เมื่อ Cy=1 JR NC,d2 กระโดดสัมพันธ์ เมื่อ Cy=0