2.2 ภาษาเครื่อง (Machine language)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
คณิตคิดเร็วโดยใช้นิ้วมือ
Advertisements

โปรแกรมฝึกหัด การเลื่อนและคลิกเมาส์
ที่ โรงเรียน เฉลี่ย 1 บ้านหนองหว้า บ้านสะเดาหวาน
Machine Structure, Machine Language, and Assembly Language
โครงสร้างโปรแกรมภาษา C
วิชา องค์ประกอบศิลป์สำหรับคอมพิวเตอร์ รหัส

โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ไม่อิงพารามิเตอร์เบื้องต้น
พลังงานในกระบวนการทางความร้อน : กฎข้อที่หนึ่งของอุณหพลศาสตร์
การซ้อนทับกัน และคลื่นนิ่ง
2.2.3 การแก้ไขแอดเดรส โดยการใช้อินเด็กรีจิสเตอร์
Computer Programming 1 1.หากต้องการพิมพ์ให้ได้ผลลัพธ์ดังนี้ต้องเขียน code อย่างไร (ใช้for)
เรื่อง การคูณ สื่อการสอนวิชาคณิตศาสตร์ โดย ครูเพ็ญพิมล สิทธิวรเกียรติ
เปรียบเทียบจำนวนประชากรทั้งหมดจากฐาน DBPop Original กับจำนวนประชากรทั้งหมดที่จังหวัดถือเป็นเป้าหมาย จำนวน (คน) 98.08% % จังหวัด.
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
LAB # 3 Computer Programming 1
ทศนิยมและเศษส่วน F M B N โดย นางสาวสุพรรษา ธรรมสโรช.
บทที่ 1 อัตราส่วน.
เนื้อหา ประเภทของโปรแกรมภาษา ขั้นตอนการพัฒนาโปรแกรม
NUMBER SYSTEM เลขฐานสิบ (Decimal Number) เลขฐานสอง (Binary Number)
จำนวนนับใดๆ ที่หารจำนวนนับที่กำหนดให้ได้ลงตัว เรียกว่า ตัวประกอบของจำนวนนับ จำนวนนับ สามารถเรียกอีกอย่างว่า จำนวนเต็มบวก หรือจำนวนธรรมชาติ ซึ่งเราสามารถนำจำนวนนับเหล่านี้มา.
Arrays.
Macro Language and the Macro Processor
Use Case Diagram.
C Programming Lecture no. 6: Function.
SCC : Suthida Chaichomchuen
Addressing Modes Assembly Programming.
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 ตัวดำเนินการ และ นิพจน์
บรรณารักษชำนาญการพิเศษ
จำนวนทั้งหมด ( Whole Numbers )
เรื่อง ความรู้เกี่ยวกับการจัดเก็บภาษีสุรา
เทคนิค การเติมเต็ม พลังชีวิตให้สำเร็จ 100%
อาร์เรย์และข้อความสตริง
บทที่ 7 คำสั่งสำหรับเขียนโปรแกรม
แนวทางการปฏิบัติโครงการจูงมือ น้องน้อยบนดอยสูง 1.
โครงสร้างข้อมูลแบบคิว
ค33211 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 5
ข้อ 1 โจทย์ ชาย อายุ 59 ปี มีไข้ ตรวจชีพจร และฟังได้หัวใจเต้นไม่ส่ำเสมอ ทำ ECG ดังแสดง จงอ่าน ECG นี้โดยละเอียด.
ณัฏฐวุฒิ เอี่ยมอินทร์
การแจกแจงปกติ.
VMVM. นี่คือเอกสารที่นำเสนออย่างเป็นลำดับ สำหรับตัวอย่างการทำงานของ page fault ISR ที่สนับสนุนหน่วยความจำ เสมือน เราจะเคลื่อนย้าย dirty bit จาก page table.
Vm.odp. Detailed VM Example ตัวอย่างการทำงานของ page fault ISR ที่ จะสนับสนุนการทำงานของหน่วยความจำ เสมือน โดยการย้ายบิตที่ไม่จำเป็นออก จากหน้าเว็บ เนื่องจากว่ามันทำให้สับสน.
การหาผลคูณและผลหารของเลขยกกำลัง
บทที่ 3 การทำงานกับฟอร์ม (Form)
โปรแกรม Microsoft Access
บทที่ 4 การทำงานกับรายงาน (Report)
F M B N สมบัติของจำนวนนับ ตัวคูณร่วมน้อย (ค.ร.น.).
ตัวประกอบ (Factor) 2 หาร 8 ลงตัว 3 หาร 8 ไม่ลงตัว 4 หาร 8 ลงตัว
สรุปสถิติ ค่ากลาง ค่าเฉลี่ยเลขคณิต เรียงข้อมูล ตำแหน่งกลาง มัธยฐาน
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
คณิตศาสตร์ (ค33101) หน่วยการเรียนรู้ที่ 7 เรื่อง สถิติ
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
ณ โรงแรมมารวยการ์เด็น ธันวาคม 2555
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
แบบฝึกหัด จงหาคำตอบที่ดีที่สุด หรือหาค่ากำไรสูงสุด จาก
Recursive Method.
ชื่อผลงานวิจัย : พฤติกรรมการใช้จ่ายกองทุนเงินให้กู้ยืมเพื่อการศึกษา ของนักศึกษาวิทยาลัยอาชีวศึกษาพณิชยการจรัลสนิทวงศ์
โครงสร้างข้อมูลแบบลิงก์ลิสต์
การค้นในปริภูมิสถานะ
สื่อการสอนด้วยโปรมแกรม “Microsoft Multipoint”
การปรับเงินเดือน กรณีที่เงินเดือนยังไม่ถึงขั้นต่ำของระดับ
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
โครงสร้างข้อมูลแบบ สแตก (stack)
ต้นไม้ Tree [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
ผลการประเมิน คุณภาพการศึกษาขั้นพื้นฐาน ปีการศึกษา
ใบสำเนางานนำเสนอ:

2.2 ภาษาเครื่อง (Machine language) จากรูป แสดงลำดับของเลข 0 และ 1 นำไปใช้งานโดย CPU เป็นคำสั่ง Load ข้อมูล และ Mnemonic form ที่ใช้แทนคำสั่งดังกล่าวนี้ 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language ตัวอย่าง จงเขียนโปรแกรม ที่บวกตัวเลข 49 กับข้อมูลแบบ Fullword ที่เก็บเรียงแถวติดกัน 10 ตัว โดยอยู่ภายใต้ข้อสมมุติฐานต่อไปนี้ ข้อสมมุติฐานที่ 1: เลข 10 จำนวน ที่จะนำมาบวก เป็นแบบ Fullword เรียงติดกัน มีแอดเดรสเริ่มต้นแบบ Absolute ที่ 952 ข้อสมมุติฐานที่ 2: โปรแกรมอยู่ในหน่วยความจำ เริ่มต้นที่แอดเดรส 48 ข้อสมมุติฐานที่ 3: เลข 49 เป็นข้อมูลแบบ Fullword อยู่ที่ Absolute แอดเดรส 948 ข้อสมมุติฐานที่ 4: รีจิสเตอร์ 1 บรรจุข้อมูล 48 13/06/47 Machine Structure, Machine Language, and Assembly Language

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

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

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Hexa Decimal Instructions : 948 952 956 960 964 968 972 976 980 984 988 900 904 908 912 916 920 924 928 932 936 940 00000031 00000005 00000007 00000009 0000000C 00000008 0000000A 0000000F 00000100 00000003 00000004 49 5 7 9 12 8 10 15 16 3 4 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Hexa Decimal Instructions : 948 952 956 960 964 968 972 976 980 984 988 900 904 908 912 916 920 924 928 932 936 940 00000031 00000036 00000007 00000009 0000000C 00000008 0000000A 0000000F 00000100 00000003 00000004 49 54 7 9 12 8 10 15 16 3 4 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Hexa Decimal Instructions : 948 952 956 960 964 968 972 976 980 984 988 900 904 908 912 916 920 924 928 932 936 940 00000031 00000036 00000038 00000009 0000000C 00000008 0000000A 0000000F 00000100 00000003 00000004 49 54 56 9 12 8 10 15 16 3 4 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Hexa Decimal Instructions 48 52 56 : 948 952 956 960 964 968 972 976 980 984 988 4 8 900 904 908 912 916 920 924 928 932 936 940 58201388 5A201384 5201388 00000031 00000005 00000007 00000009 0000000C 00000008 0000000A 0000000F 00000100 00000003 00000004 L 2,904(0,1) A 2,900(0,1) ST 2,904(0,1) 49 5 7 9 12 10 15 16 3 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Hexa Decimal Instructions 48 52 56 : 948 952 956 960 964 968 972 976 980 984 988 4 8 900 904 908 912 916 920 924 928 932 936 940 58201388 5A201384 5201388 00000031 00000036 00000007 00000009 0000000C 00000008 0000000A 0000000F 00000100 00000003 00000004 L 2,904(0,1) A 2,900(0,1) ST 2,904(0,1) 49 54 7 9 12 10 15 16 3 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Hexa Decimal Instructions 48 52 56 60 64 68 : 948 952 956 960 964 968 972 976 980 984 988 4 8 12 16 20 900 904 908 912 916 920 924 928 932 936 940 58201388 5A201384 5201388 5820138C 5020138C 00000031 00000036 00000007 00000009 0000000C 00000008 0000000A 0000000F 00000100 00000003 00000004 L 2,904(0,1) A 2,900(0,1) ST 2,904(0,1) L 2,908(0,1) ST 2,908(0,1) 49 54 7 9 10 15 3 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Hexa Decimal Instructions 48 52 56 60 64 68 : 948 952 956 960 964 968 972 976 980 984 988 4 8 12 16 20 900 904 908 912 916 920 924 928 932 936 940 58201388 5A201384 5201388 5820138C 5020138C 00000031 00000036 00000038 00000009 0000000C 00000008 0000000A 0000000F 00000100 00000003 00000004 L 2,904(0,1) A 2,900(0,1) ST 2,904(0,1) L 2,908(0,1) ST 2,908(0,1) 49 54 9 10 15 3 13/06/47 Machine Structure, Machine Language, and Assembly Language

2.2.1 หนทางยาวไกล ไม่มีลูปวนซ้ำ (Long Way, No Looping) ปัญหาของโปรแกรมที่แล้ว 1) ถ้าเราต้องการโปรเซสข้อมูล 300 ตัว (แทนที่จะเป็น 10 ตัว เหมือนครั้งแรก) ที่เก็บสำหรับคำสั่ง จะเป็น (3 คำสั่ง) x (ความยาวของแต่ละคำสั่ง) x (จำนวนข้อมูลทั้งหมด) = 3,600 ไบท์ ดังนั้น คำสั่งก็จะ ทับข้อมูลของเราในหน่วยความจำ 13/06/47 Machine Structure, Machine Language, and Assembly Language

ปัญหาของโปรแกรมที่แล้ว (ต่อ) 2) ระยะทางจาก คำสั่งแรก จนถึงข้อมูลตัวสุดท้าย ควรจะเป็น 4,800 ไบท์ แต่เนื่องจาก ข้อมูลมันเอง กินพื้นที่ 4 x 300 = 1,200 ไบท์ การใช้รีจิสเตอร์ เป็น Base รีจิสเตอร์ จึงเป็นไปไม่ได้ที่จะ Access ข้อมูล ตั้งแต่หัวถึงท้ายพร้อมกัน ถ้าเขียนภาษาเครื่อง และจะต้องนึกอยู่เสมอว่าตัวเลขที่มากที่สุด ที่เป็นไปได้คือ 212-1 หรือ 4,095 ซึ่งอาจไม่สามารถ Access ข้อมูลได้ทั่วถึงทั้งหมดพร้อมกัน 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Relocation ถ้าโปรแกรมก่อนหน้านี้ ถูก Load ไปไว้ที่แอดเดรส 336 (แทนที่จะเป็นแอดเดรส 48 เหมือนก่อนหน้า) มันยังคงทำงานได้อย่างถูกต้อง ถ้าค่าในรีจิสเตอร์ 1 ถูกเปลี่ยนให้เป็น 336 การย้ายโปรแกรมไปยังตำแหน่งต่างๆ ในหน่วยความจำ เรียกว่า การ Relocation โดยปกติ Base รีจิสเตอร์ จะถูกใช้ในการ Relocation นี้ 13/06/47 Machine Structure, Machine Language, and Assembly Language

2.2.2 การเปลี่ยนค่าแอดเดรส โดยการใช้คำสั่งเสมือนเป็นข้อมูล 2.2.2 การเปลี่ยนค่าแอดเดรส โดยการใช้คำสั่งเสมือนเป็นข้อมูล สมมติว่า มีนักศึกษาของ MIT คนหนึ่งต้องการออกเดทกับหญิงสาว ขั้นตอนการออกเดทของเขา อาจจะเขียนเป็นโปรแกรมได้ดังนี้ 1 2 3 4 5 เช่าสูท เหน็บ Slide rule โทรหา Nancy ถ้าถูกปฏิเสธ เปลี่ยน 3 เป็น Marry กลับไปทำ 1 13/06/47 Machine Structure, Machine Language, and Assembly Language

2.2.2 การเปลี่ยนค่าแอดเดรส โดยการใช้คำสั่งเสมือนเป็นข้อมูล (ต่อ) 2.2.2 การเปลี่ยนค่าแอดเดรส โดยการใช้คำสั่งเสมือนเป็นข้อมูล (ต่อ) สมมติว่า มีนักศึกษาของ MIT คนหนึ่งต้องการออกเดทกับหญิงสาว ขั้นตอนการออกเดทของเขา อาจจะเขียนเป็นโปรแกรมได้ดังนี้ 1 2 3 4 5 เช่าสูท เหน็บ Slide rule โทรหา Marry ถ้าถูกปฏิเสธ เปลี่ยน 3 เป็น Jane กลับไปทำ 1 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 52 56 60 64 68 72 76 80 : 944 948 952 956 960 964 968 972 976 980 984 988 4 8 12 16 20 24 28 32 896 900 904 908 912 916 920 924 928 932 936 940 L 2,904(0,1) A 2,900(0,1) ST 2,904(0,1) L 2,0 (0,1) A 2,896(0,1) ST 2,0 (0,1) L 2,8 (0,1) ST 2,8 (0,1) Branch to 0 49 5 7 9 10 15 3 บวก 49 ให้กับ 904 เพิ่ม Load อีก 4 เพิ่ม Store อีก 4 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 52 56 60 64 68 72 76 80 : 944 948 952 956 960 964 968 972 976 980 984 988 4 8 12 16 20 24 28 32 896 900 904 908 912 916 920 924 928 932 936 940 L 2,904(0,1) A 2,900(0,1) ST 2,904(0,1) L 2,0 (0,1) A 2,896(0,1) ST 2,0 (0,1) L 2,8 (0,1) ST 2,8 (0,1) Branch to 0 49 5 7 9 10 15 3 บวก 49 ให้กับ 904 เพิ่ม Load อีก 4 เพิ่ม Store อีก 4 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 52 56 60 64 68 72 76 80 : 944 948 952 956 960 964 968 972 976 980 984 988 4 8 12 16 20 24 28 32 896 900 904 908 912 916 920 924 928 932 936 940 L 2,904(0,1) A 2,900(0,1) ST 2,904(0,1) L 2,0 (0,1) A 2,896(0,1) ST 2,0 (0,1) L 2,8 (0,1) ST 2,8 (0,1) Branch to 0 49 54 7 9 10 15 3 บวก 49 ให้กับ 904 เพิ่ม Load อีก 4 เพิ่ม Store อีก 4 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 52 56 60 64 68 72 76 80 : 944 948 952 956 960 964 968 972 976 980 984 988 4 8 12 16 20 24 28 32 896 900 904 908 912 916 920 924 928 932 936 940 L 2,904(0,1) A 2,900(0,1) ST 2,904(0,1) L 2,0 (0,1) A 2,896(0,1) ST 2,0 (0,1) L 2,8 (0,1) ST 2,8 (0,1) Branch to 0 49 54 7 9 10 15 3 บวก 49 ให้กับ 904 เพิ่ม Load อีก 4 เพิ่ม Store อีก 4 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 52 56 60 64 68 72 76 80 : 944 948 952 956 960 964 968 972 976 980 984 988 4 8 12 16 20 24 28 32 896 900 904 908 912 916 920 924 928 932 936 940 L 2,908(0,1) A 2,900(0,1) ST 2,904(0,1) L 2,0 (0,1) A 2,896(0,1) ST 2,0 (0,1) L 2,8 (0,1) ST 2,8 (0,1) Branch to 0 49 54 7 9 10 15 3 บวก 49 ให้กับ 904 เพิ่ม Load อีก 4 เพิ่ม Store อีก 4 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 52 56 60 64 68 72 76 80 : 944 948 952 956 960 964 968 972 976 980 984 988 4 8 12 16 20 24 28 32 896 900 904 908 912 916 920 924 928 932 936 940 L 2,908(0,1) A 2,900(0,1) ST 2,904(0,1) L 2,0 (0,1) A 2,896(0,1) ST 2,0 (0,1) L 2,8 (0,1) ST 2,8 (0,1) Branch to 0 49 54 7 9 10 15 3 บวก 49 ให้กับ 904 เพิ่ม Load อีก 4 เพิ่ม Store อีก 4 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 52 56 60 64 68 72 76 80 : 944 948 952 956 960 964 968 972 976 980 984 988 4 8 12 16 20 24 28 32 896 900 904 908 912 916 920 924 928 932 936 940 L 2,908(0,1) A 2,900(0,1) ST 2,908(0,1) L 2,0 (0,1) A 2,896(0,1) ST 2,0 (0,1) L 2,8 (0,1) ST 2,8 (0,1) Branch to 0 49 54 7 9 10 15 3 บวก 49 ให้กับ 904 เพิ่ม Load อีก 4 เพิ่ม Store อีก 4 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language Absolute address Relative Address Instructions Comments 48 52 56 60 64 68 72 76 80 : 944 948 952 956 960 964 968 972 976 980 984 988 4 8 12 16 20 24 28 32 896 900 904 908 912 916 920 924 928 932 936 940 L 2,908(0,1) A 2,900(0,1) ST 2,908(0,1) L 2,0 (0,1) A 2,896(0,1) ST 2,0 (0,1) L 2,8 (0,1) ST 2,8 (0,1) Branch to 0 49 54 9 10 15 3 บวก 49 ให้กับ 904 เพิ่ม Load อีก 4 เพิ่ม Store อีก 4 13/06/47 Machine Structure, Machine Language, and Assembly Language

แอดเดรส เปลี่ยนได้อย่างไร เพื่อที่จะดูการทำงานของโปรแกรม เราต้องนึกอยู่เสมอว่า ค่าที่บรรจุอยู่ในตำแหน่ง 48 (ดังรูปที่ 2.1 ไม่ใช่ L 2, 904(0,1) แต่มันเป็น 13/06/47 Machine Structure, Machine Language, and Assembly Language

Machine Structure, Machine Language, and Assembly Language ปัญหา การใช้คำสั่งเป็นเสมือนข้อมูลไม่ใช่เทคนิคการเขียนโปแกรมที่ดี เพราะว่าในระยะยาว การแก้ไขบำรุงรักษา (Maintenance) โปรแกรมจะลำบาก มันจะยากต่อการทำความเข้าใจว่าเริ่มแรกเลย ผู้เขียนต้องการจะทำอะไร ในกรณีของระบบ Multiprocessing (หลายงาน บนระบบที่มีโปรเซสเซอร์มากกว่า 1 ตัว ทำงานพร้อมกัน) มันจะขัดแย้งกับกับกฎของ โค้ดบริสุทธิ์ (Pure code) หรือที่เรียกว่า เข้าใหม่ได้หลายครั้ง (Re-entrant code) เป็นโค้ดที่ ไม่มีการแก้ไขตัวมันเอง 13/06/47 Machine Structure, Machine Language, and Assembly Language