1 / 8

ปฏิบัติการแบบแยก

ปฏิบัติการแบบแยก. Branch Operation. ปฏิบัติการแบบแยก. เป็นคำสั่งที่ใช้เปลี่ยนลำดับของการกระทำการตาม เงื่อนไข แบ่งออกเป็น 3 ประเภท คำสั่งการกระโดด คำสั่งเรียกโปรแกรมย่อย คำสั่งกลับสู่โปรแกรมหลัก และคำสั่งเริ่มทำต่อ. คำสั่งการ กระโดด ( Jump Instructions ). แบ่งออกเป็น 2 กลุ่ม คือ

gale
Download Presentation

ปฏิบัติการแบบแยก

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ปฏิบัติการแบบแยก Branch Operation

  2. ปฏิบัติการแบบแยก • เป็นคำสั่งที่ใช้เปลี่ยนลำดับของการกระทำการตามเงื่อนไข แบ่งออกเป็น 3 ประเภท • คำสั่งการกระโดด • คำสั่งเรียกโปรแกรมย่อย • คำสั่งกลับสู่โปรแกรมหลัก และคำสั่งเริ่มทำต่อ

  3. คำสั่งการกระโดด (Jump Instructions) • แบ่งออกเป็น 2 กลุ่ม คือ • กลุ่มกระโดดสมบูรณ์ (Absolute Jump) เป็นคำสั่งขนาด 3 ไบต์ ประกอบด้วยตัวถูกดำเนินการซึ่งจะกำหนดเลขที่อยู่ขนาด 16 บิต เมื่อกระทำคำสั่งลำดับโปรแกรมจะเปลี่ยนไปตำแหน่งที่กำหนด • กลุ่มกระโดดสัมพันธ์ (Relative Jump) เป็นคำสั่งขนาด 2 ไบต์ ประกอบด้วยตัวถูกดำเนินการซึ่งจะกำหนดระยะห่าง 8 บิต เพื่อแสดงการกระโดดไปข้างหน้าหรือถอยหลัง ในรูป 2’Complement

  4. กลุ่มกระโดดสมบูรณ์ (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 ไม่เป็นศูนย์

  5. ตัวอย่างที่ 1 จงเขียนคำสั่งเพื่อโหลดไบต์ฐานสิบหก 2 ไบต์ ได้แก่ Byte1 และ Byte2 ลงใรรีจีสเตอร์ B และ C ตามลำดับแล้วบวกไบต์เหล่านั้น ถ้าผลรวมมากกว่า 8 บิต ให้แสดงผล 00H เป็นเงื่อนไขค่าเกินที่เอาต์พอร์ต PORT1 และเคลียร์ตำแหน่งหน่วยความจำ OUTBUF ถ้าผลรมน้อยกว่า 8 บิต ให้เก็บผลรวมไว้ที่ตำแหน่งหน่วยความจำ OUTBUF กำหนด Byte1 = 9AH Byte2 = A7H PORT1 = 01H OUTBUF = 2050H

  6. 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

  7. กลุ่มกระโดดสัมพันธ์ (Relative Jump) • แบ่งออกเป็น 2 ประเภท • กลุ่มกระโดดสัมพันธ์ แบบไม่มีเงื่อนไข • กลุ่มกระโดดสัมพันธ์ แบบมีเงื่อนไข เราสามารถกำหนดเลขที่อยู่ใหม่ซึ่งเป็นลำดับของโปรแกรมโดยค่าออฟเซ็ต(ระยะห่าง) ขนาด 8 บิต ที่สัมพันธ์กับคำสั่งการกระโดด • ระยะห่างเป็นบวก หมายถึง การกระโดดไปข้างหน้า • ระยะห่างเป็นลบ หมายถึง การกระโดดถอยหลัง • d = ระยะห่าง = displacement

  8. รายการคำสั่งกระโดดแบบสัมพันธ์ (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

More Related