2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
Advertisements

ชนิดของข้อมูลในโปรแกรม Interactive C
Machine Structure, Machine Language, and Assembly Language
Introduction to C Introduction to C.
โครงสร้างโปรแกรมภาษา C
วิชา องค์ประกอบศิลป์สำหรับคอมพิวเตอร์ รหัส

การซ้อนทับกัน และคลื่นนิ่ง
เลขฐานต่าง ๆ อ.มิ่งขวัญ กันจินะ.
Computer Programming 1 1.หากต้องการพิมพ์ให้ได้ผลลัพธ์ดังนี้ต้องเขียน code อย่างไร (ใช้for)
ชื่อสมบัติของการเท่ากัน
เรื่อง การคูณ สื่อการสอนวิชาคณิตศาสตร์ โดย ครูเพ็ญพิมล สิทธิวรเกียรติ
โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures
รหัสระหว่างกลาง (Intermediate code)
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
CS Assembly Language Programming
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
2.2 ภาษาเครื่อง (Machine language)
LAB # 3 Computer Programming 1
Week 6 ประกาศค่าตัวแปร.
ภาษาคอมพิวเตอร์.
เนื้อหา ประเภทของโปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม
จำนวนนับใดๆ ที่หารจำนวนนับที่กำหนดให้ได้ลงตัว เรียกว่า ตัวประกอบของจำนวนนับ จำนวนนับ สามารถเรียกอีกอย่างว่า จำนวนเต็มบวก หรือจำนวนธรรมชาติ ซึ่งเราสามารถนำจำนวนนับเหล่านี้มา.
บทที่ 5 โหลดเดอร์ (Loader) Loader.
Macro Language and the Macro Processor
Use Case Diagram.
ขั้นตอนการแปลงไฟล์.
Operating System ฉ NASA 4.
C Programming Lecture no. 6: Function.
SCC : Suthida Chaichomchuen
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
Addressing Modes Assembly Programming.
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 ตัวดำเนินการ และ นิพจน์
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
จำนวนทั้งหมด ( Whole Numbers )
CS Assembly Language Programming
การใช้งานเบื้องต้นของเครื่องคิดเลขทางการเงิน
บทที่ 17 คำสั่งตารางและการสร้างแมคโคร
โครงสร้างข้อมูลแบบคิว
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ค33211 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 5
ภาควิชาวิศวกรรมไฟฟ้า คณะวิศวกรรมศาสตร์ มหาวิทยาลัยสยาม
การแจกแจงปกติ.
Flow Chart INT1103 Computer Programming
ปฏิบัติการแบบแยก Branch Operation.
ประวัติและขั้นตอนการพัฒนาโปรแกรมภาษาซี
เขียนโปรแกรมเพื่อแสดงข้อมูลพนักงาน ด้วย ADO.NET vs. DataReader
Vm.odp. Detailed VM Example ตัวอย่างการทำงานของ page fault ISR ที่ จะสนับสนุนการทำงานของหน่วยความจำ เสมือน โดยการย้ายบิตที่ไม่จำเป็นออก จากหน้าเว็บ เนื่องจากว่ามันทำให้สับสน.
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
วิชาคณิตศาสตร์ ชั้นประถมศึกษาปีที่6
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
บทที่ 9 พอยเตอร์. สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อ การศึกษาเท่านั้น พอยเตอร์ (Pointer) พอยเตอร์คือต้นฉบับของชนิดข้อมูล เป็นชนิด ข้อมูลที่สร้างจากข้อมูลมาตรฐานชนิดหนึ่ง.
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
Recursive Method.
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
ความรู้พื้นฐานเกี่ยวกับการโปรแกรมคอมพิวเตอร์
วิธีเรียงสับเปลี่ยนและวิธีจัดหมู่
การปรับเงินเดือน กรณีที่เงินเดือนยังไม่ถึงขั้นต่ำของระดับ
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
โครงสร้างข้อมูลแบบ สแตก (stack)
ผลการประเมิน คุณภาพการศึกษาขั้นพื้นฐาน ปีการศึกษา
ใบสำเนางานนำเสนอ:

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

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 50 54 58 62 : 948 952 956 960 964 968 972 976 980 984 988 2 6 10 14 900 904 908 912 916 920 924 928 932 936 940 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 49 5 7 9 12 8 15 16 3 4 เคลียร์ Reg. 4 โหลด ข้อมูลจาก 904 บวก 49 เก็บข้อมูลจาก 904 เพิ่ม Index อีก 4 21/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 50 54 58 62 : 948 952 956 960 964 968 972 976 980 984 988 2 6 10 14 900 904 908 912 916 920 924 928 932 936 940 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 49 5 7 9 12 8 15 16 3 4 เคลียร์ Reg. 4 โหลด ข้อมูลจาก 904 บวก 49 เก็บข้อมูลจาก 904 เพิ่ม Index อีก 4 21/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 50 54 58 62 : 948 952 956 960 964 968 972 976 980 984 988 2 6 10 14 900 904 908 912 916 920 924 928 932 936 940 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 49 7 9 12 8 15 16 3 4 เคลียร์ Reg. 4 โหลด ข้อมูลจาก 904 บวก 49 เก็บข้อมูลจาก 904 เพิ่ม Index อีก 4 21/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 50 54 58 62 : 948 952 956 960 964 968 972 976 980 984 988 2 6 10 14 900 904 908 912 916 920 924 928 932 936 940 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 49 56 9 12 8 15 16 3 4 เคลียร์ Reg. 4 โหลด ข้อมูลจาก 908 บวก 49 เก็บข้อมูลจาก 908 เพิ่ม Index อีก 4 21/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 50 54 58 62 : 948 952 956 960 964 968 972 976 980 984 988 2 6 10 14 900 904 908 912 916 920 924 928 932 936 940 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 49 56 12 8 15 16 3 4 เคลียร์ Reg. 4 โหลด ข้อมูลจาก 912 บวก 49 เก็บข้อมูลจาก 912 เพิ่ม Index อีก 4 21/06/47 Machine Structure, Machine Language, and Assembly Language

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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