งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

21/06/47Machine Structure, Machine Language, and Assembly Language 1 2.2.3 การแก้ไขแอดเดรส โดย การใช้อินเด็กรีจิสเตอร์ • การแก้ปัญหาที่ได้ผลดีที่สุด คือการใช้

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "21/06/47Machine Structure, Machine Language, and Assembly Language 1 2.2.3 การแก้ไขแอดเดรส โดย การใช้อินเด็กรีจิสเตอร์ • การแก้ปัญหาที่ได้ผลดีที่สุด คือการใช้"— ใบสำเนางานนำเสนอ:

1 21/06/47Machine Structure, Machine Language, and Assembly Language การแก้ไขแอดเดรส โดย การใช้อินเด็กรีจิสเตอร์ • การแก้ปัญหาที่ได้ผลดีที่สุด คือการใช้ อินเด็ก รีจิสเตอร์ • เมื่อต้องมีการแก้ไขแอดเดรส แอดเดรสนั้น มีค่า เท่ากับ ค่าของเบสรีจิสเตอร์ บวกด้วยค่าของอิน เด็กรีจิสเตอร์ บวกด้วยค่าของอ๊อฟเซท • เรายังใช้ชุดของ 3 คำสั่งเดิม คือคำสั่ง Load คำสั่งบวก 49 และคำสั่งเก็บข้อมูล เราใช้คำสั่ง วนลูปรอบ 3 คำสั่งนั้น • เมื่อมีการเปลี่ยนค่าในตัวอินเด็กรีจิสเตอร์ทีละ 4 ค่าแอดเดรสของคำสั่ง Load และ Store ก็จะ เปลี่ยนตามไปโดยปริยาย

2 21/06/47Machine Structure, Machine Language, and Assembly Language 2 Absolute address Relative Address Instructions Comments : : SR 4,4 L 2,904(4,1) A 2,900(0,1) ST 2,904(4,1) A 4,904(0,1) Branch to 0 : เคลียร์ Reg. 4 โหลด ข้อมูลจาก 904 บวก 49 เก็บข้อมูลจาก 904 เพิ่ม Index อีก 4

3 21/06/47Machine Structure, Machine Language, and Assembly Language 3 Absolute address Relative Address Instructions Comments : : SR 4,4 L 2,904(4,1) A 2,900(0,1) ST 2,904(4,1) A 4,904(0,1) Branch to 0 : เคลียร์ Reg. 4 โหลด ข้อมูลจาก 904 บวก 49 เก็บข้อมูลจาก 904 เพิ่ม Index อีก 4

4 21/06/47Machine Structure, Machine Language, and Assembly Language 4 Absolute address Relative Address Instructions Comments : : SR 4,4 L 2,904(4,1) A 2,900(0,1) ST 2,904(4,1) A 4,904(0,1) Branch to 0 : เคลียร์ Reg. 4 โหลด ข้อมูลจาก 904 บวก 49 เก็บข้อมูลจาก 904 เพิ่ม Index อีก 4

5 21/06/47Machine Structure, Machine Language, and Assembly Language 5 Absolute address Relative Address Instructions Comments : : SR 4,4 L 2,904(4,1) A 2,900(0,1) ST 2,904(4,1) A 4,904(0,1) Branch to 0 : เคลียร์ Reg. 4 โหลด ข้อมูลจาก 908 บวก 49 เก็บข้อมูลจาก 908 เพิ่ม Index อีก 4

6 21/06/47Machine Structure, Machine Language, and Assembly Language 6 Absolute address Relative Address Instructions Comments : : SR 4,4 L 2,904(4,1) A 2,900(0,1) ST 2,904(4,1) A 4,904(0,1) Branch to 0 : เคลียร์ Reg. 4 โหลด ข้อมูลจาก 912 บวก 49 เก็บข้อมูลจาก 912 เพิ่ม Index อีก 4

7 21/06/47Machine Structure, Machine Language, and Assembly Language 7 คำสั่งลูปวน ในหัวข้อนี้ เราจะกล่าวถึงการใช้คำสั่งลูปวนใน ภาษาเครื่อง 2 วิธี โดยการตั้งข้อสมมุติฐานเพิ่ม ดังนี้ – สมมุติฐานที่ 6. ที่ Relative address เก็บค่าของ 10 – สมมุติฐานที่ 7. ที่ Relative address เก็บค่าของ 1 ( สำหรับวิธีแรกเท่านั้น )

8 21/06/47Machine Structure, Machine Language, and Assembly Language 8 วิธีที่ 1 • ภายหลังจากที่ 4 คำสั่งพื้นฐานแรกทำงาน มัน จะเกิด Sequence ของคำสั่ง ที่มีการลบ 1 ออก จากที่เก็บหน่วยความจำชั่วคราว และตรวจสอบ ดูว่า ค่าที่เก็บอยู่ยังเป็นบวกหรือไม่ ถ้าเป็นบวก มันก็จะกลับขึ้นไปทำงานที่ Relative address ตำแหน่งที่ 2

9 21/06/47Machine Structure, Machine Language, and Assembly Language 9

10 21/06/47Machine Structure, Machine Language, and Assembly Language 10 วิธีที่ 2 • คำสั่ง BCT (Branch on Count ดังแสดงในรูป 2.13) จะทำหน้าที่ให้โปรแกรมวนจนครบลูป • รีจิสเตอร์ 3 จะมีค่าลดลงทีละ 1 จนมีค่าเหลือ 0 ในขณะที่ค่าของ รีจิสเตอร์ 3 เป็นบวก ค่าของ แอดเดรส คือ 6 บวกกับค่าของ รีจิสเตอร์ 1 เมื่อค่าของมันลดลงถึง 0 ก็จะไม่มีการวนลูปอีก • คอมพิวเตอร์เกือบทุกระบบ มีการใช้คำสั่ง ประเภท Branch เพื่อวนลูปแบบนี้

11 21/06/47Machine Structure, Machine Language, and Assembly Language 11

12 21/06/47Machine Structure, Machine Language, and Assembly Language 12 โปรแกรมที่ 2.13 • เราสามารถลดขนาดของโปรแกรม โดยที่ป็น ชุดคำสั่ง 26 ไบท์ และชุดข้อมูล 52 ไบท์ รวม เป็น 78 ไบท์ ซึ่งโปรแกรมแรกของเรา ใช้ ชุดคำสั่ง 120 ไบท์ และชุดข้อมูล 44 ไบท์ รวม เป็น 164 ไบท์ ทำให้ประหยัดเนื้อที่ไปถึง 86 ไบท์ หมายเหตุ โปรแกรมสามารถเคลื่อนย้ายไปวางยัง ตำแหน่งต่างๆ ของหน่วยความจำ ( เช่น 400 แทนที่จะเป็น 48) โดยเพียงแค่เปลี่ยนค่าของ รีจิสเตอร์ 1 เท่านั้น

13 21/06/47Machine Structure, Machine Language, and Assembly Language ภาษาแอสเซมบลี้ เมื่อผู้ใช้ต้องการติดต่อกับคอมพิวเตอร์ เขา สามารถติดต่อกับคอมพิวเตอร์ได้หลายภาษา

14 21/06/47Machine Structure, Machine Language, and Assembly Language 14 ข้อดี ของภาษาแอสเซมบลี้ • มันเป็น Mnemonic เช่น เราเขียน ST แทนที่ จะเขียน สำหรับคำสั่งเก็บข้อมูล • ใช้สัญลักษณ์แทนแอดเดรส แทนที่จะเป็น Absolute • อ่านเข้าใจได้ง่าย • การกำหนดข้อมูลให้กับโปรแกรม กระทำได้ ง่ายกว่า

15 21/06/47Machine Structure, Machine Language, and Assembly Language 15 ข้อเสีย ของภาษาแอสเซมบลี้ • ต้องการตัวแอสเซมเบลอร์ แปลง Source program ไปเป็น Object code

16 21/06/47Machine Structure, Machine Language, and Assembly Language โปรแกรมที่ใช้ภาษา แอสเซมบลี้ • ข้อสมมุติฐานต่างๆ ที่กำหนดไว้สำหรับการเขียน ภาษาเครื่อง ต้องถูกยกเลิก ตัวอย่างข้อสมมุติฐานอันหนึ่ง ก็คือ ค่าแอดเดรส เริ่มต้น ในหน่วยความจำอยู่ที่ Absolute แอดเดรส 48 ในฐานะของโปรแกรมเมอร์ เราไม่สามารถรู้ล่วงหน้าได้ ว่า โปรแกรมของเราจะถูกโหลดไปวางไว้ที่ไหนใน หน่วยความจำ ดังนั้นจึงเป็นหน้าที่ของเรา ที่จะต้องโหลดเบส รีจิสเตอร์ ด้วยแอดเดรสโปรแกรมของเราใน หน่วยความจำ ก่อนที่เราจะให้โปรแกรมทำงาน คำสั่ง BALR เป็นกลไกหนึ่ง ที่ใช้ในการโหลด เบส รีจิสเตอร์

17 21/06/47Machine Structure, Machine Language, and Assembly Language 17

18 21/06/47Machine Structure, Machine Language, and Assembly Language 18 คำสั่ง Pseudo-op •DC คำสั่งการกำหนดตัวคงที่ (Define constant) •DS คำสั่งการกำหนดที่เก็บ (Define storage) •F คำสั่งวางค่า ตัวเลข เช่น 10, 4, และ 49 ใน หน่วยความจำ ติดต่อกัน แบบ Fullword ตัวอย่าง เช่น DS 100F ทำให้ ตัวแอสเซมเบลอร์ จองที่เก็บข้อมูลแบบ Fullword จำนวน 100 ที่

19 21/06/47Machine Structure, Machine Language, and Assembly Language 19 คำสั่ง USING •USING เป็น Pseudo-op ที่บอกตัวแอสเซมเบลอร์ ว่า รีจิสเตอร์อะไร ใช้เป็นเบสรีจิสเตอร์ และค่าของ เบสรีจิสเตอร์เป็นเท่าไร ตัวอย่าง TEST BEGIN START BALR USING SR 15,0 BEGIN+2, 15 4, BALR SR 15,0 4,4 AssemblyRelativeMnemonic Program

20 21/06/47Machine Structure, Machine Language, and Assembly Language 20 คำสั่ง BALR •BALR เป็นคำสั่งที่ใช้โหลดรีจิสเตอร์ด้วยแอดเดรส ถัดไป และกระโดดไปที่แอดเดรสในฟิลด์ที่ 2 เมื่อ Operand ตัวที่ 2 เป็นรีจิสเตอร์ 0 ( ดังแสดง ) มันจะ ทำงานคำสั่งถัดไป ตัวอย่าง TEST BEGIN START BALR USING SR 15,0 BEGIN+2, 15 4, BALR SR 15,0 4,4 AssemblyRelativeMnemonic Program

21 21/06/47Machine Structure, Machine Language, and Assembly Language 21 คำสั่ง START 1.START เป็น Pseudo-op บอกตัวแอสเซมเบลอร์ ว่า โปรแกรมจะเริ่มต้นทำงานที่ตำแหน่งไหน และ ยอมให้โปรแกรมเมอร์ ตั้งชื่อโปรแกรมอีกด้วย ตัวอย่าง TEST BEGIN START BALR USING SR 15,0 BEGIN+2, 15 4, BALR SR 15,0 4,4 AssemblyRelativeMnemonic Program

22 21/06/47Machine Structure, Machine Language, and Assembly Language 22 คำสั่ง END 1.END เป็น Pseudo-op ที่บอกตัวแอสเซมเบลอร์ว่า คำสั่งสุดท้ายของโปรแกรมมาถึงแล้ว เครื่องจะหยุด ทำงานโปรแกรมนี้ : BASE : EQU END : 15 AssemblyRelativeMnemonic Program

23 21/06/47Machine Structure, Machine Language, and Assembly Language 23 คำสั่ง BR 14 I. เป็นคำสั่งที่โดด (Branch) ไปทำยังตำแหน่งแอดเดรสที่ บรรจุอยู่ใน รีจิสเตอร์ 14 II. ตามข้อตกลงทั่วไป ตอนเรียกใช้โปรแกรมย่อย รีจิสเตอร์ 14 จะใช้เก็บ ค่ารีเทอร์นแอดเดรส (return address) ตอนที่ทำคำสั่งในโปรแกรมย่อยเสร็จ • ตัวอย่าง : BCT BR LTORG 3, * : BCT BCR 3,6(0,15) 15,14 AssemblyRelativeMnemonic Program

24 21/06/47Machine Structure, Machine Language, and Assembly Language ตัวอย่างการใช้ Literals ตัวอย่าง A 2, =F’49’ Arguments คือ =F’49’ เป็น Literals ซึ่งทำให้ เกิดการสร้างที่เก็บข้อมูล บรรจุ 49

25 21/06/47Machine Structure, Machine Language, and Assembly Language 25


ดาวน์โหลด ppt 21/06/47Machine Structure, Machine Language, and Assembly Language 1 2.2.3 การแก้ไขแอดเดรส โดย การใช้อินเด็กรีจิสเตอร์ • การแก้ปัญหาที่ได้ผลดีที่สุด คือการใช้

งานนำเสนอที่คล้ายกัน


Ads by Google