staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine...

25
CS323-554 Systems Programming chapter 2 page _________________________________________________ ________________________________ Chapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซซซซซซซซซซซซซซซซซซซซซ ซซซซซซซซซซซซซซซซซซซซซซซซซซซซ, ซซซซซซซซซ ซซซซซซซซซซซซซซ ซซซซซซซซซซซซซซซซซซซซซซซ ซซซซซซซซซซซซซซซซซซ ซซซซ M68000 ซซซซซซซ , ซซซซซซซซซซซซซซซซ VAX , ซซซ IBM 360/370 ซซซซซซซซซซซซซซซซซซซซซซซซซซซซซ CISC (Complex Instruction Set Computer) ซซซซซซซซซซ ซ ซซซซ MIPS, SPARC ซซซ PowerPC ซซซซซซซซซซซซซซซซซ Siligon Graphic, Sun ซซซ Apple Macintosh ซซซซซซซซซ ซซซซซซซซซซซซซซซซซซซซซซซซซซซซซ RISC (Reduce Instruction Set Computer) ซซซซซซซซซซซซซซ RISC ซซซซซซซซซซซซซซซซซซซซ ซซซ 1. ซซซซซซซซซซซซซซซซซซ (pipeline) ซซซซซซซซซซซซซซซซซซซซซซ ซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซ ซ ซซซซซซซซซซซซซซซซซซซซซซ ซซซซซซซซซซซซซซซซซซซซซ ซ ซซซ ซซซซซซซซซซซซซซ (instruction fetch), ซซซซซซซซซซซซซซซซซซ (instruction decode), ซซซซซซซซซซซซซซซซซซซซซซซ (operand fetch), ซซซซซซซซซซ ซซซซซซซซซซ (instruction execute) ซซซ ซซซซซซซซ ซซซซซซซ (store result) ซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซ ซซซซซ ซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซซ ซซซซซซซซซ ซซซซซซซซซซซซซซซซซซซซซซซซซซซ ซซซซซซซซซซซซซซซซซซซ ซซซซซซซซ ซซซซซซซซซซซซซซซ 2.1 ซซซซซซซซซซซซซซซ ซซซซซซซซซซ ซซซซซซซ ซซซซซซซซซ ซซซซซซ ซซซ ซซซซซซซซซซซ ซซซซซซซซซซ ซซซซซซซ ซซซซซซซซซ ซซซซซซซซซ ซซซซซซซซซซซ ซซซซซซซซซซ ซซซซซซซซซซ ซซซซซซซซซ ซซซซซซซซซซ ซซซซซซซซซซ ซซซซซซซซซซ ซซซซซซซซซซ ซซซซซซซซซซ ซซซซซซซซซซ Computer Science, Prince of Songkhla University 1

Transcript of staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine...

Page 1: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

Chapter 2 Machine Structure, Machine Language, and Assembly Language2.1 CISC V.S. RISC

ซพียูีของบรษัิทอินเทล ซึ่งใชใ้นเครื่องไอบเีอ็มพซี,ี ซพียูีของบรษัิทโมโตโรลา ซึ่งใชใ้นเครื่องแอปเปิล มหีมายเลขท่ีสำาคัญ เชน่ M68000 เป็นต้น , ซพียูีของเครื่อง VAX , และ IBM 360/370

เป็นสถาปัตยกรรมแบบที่เรยีกวา่ CISC (Complex Instruction Set Computer) ซพียูีอ่ืน ๆ เชน่ MIPS, SPARC และ PowerPC ซึ่งใชก้ับเครื่อง Siligon Graphic, Sun และ Apple Macintosh ตามลำาดับ เป็นสถาปัตยกรรมแบบ

ที่เรยีกวา่ RISC (Reduce Instruction Set Computer) สถาปัตยกรรมแบบ RISC มคีณุสมบติัที่สำาคัญ คือ

.א การทำางานแบบสายท่อ (pipeline) สามารถปฏิบติัการกับคำาสัง่ได้มากกวา่หนึ่งคำาสัง่ พรอ้ม ๆ กันโดยแบง่รอบของการกระทำาการออกเป็นสว่นยอ่ย ๆ คือ สว่นดึงคำาสัง่

(instruction fetch), สว่นถอดรหสัคำาสัง่ (instruction decode), สว่นดึงตัวถกูดำาเนินการ (operand fetch), สว่นกระทำาการคำาสัง่

(instruction execute) และ สว่นเก็บผลลัพธ ์ (store result) แต่ละ สว่นจะทำางานพรอ้มกันอยา่งอิสระ สว่นไปนำาคำาสัง่มาจะไมร่อใหค้ำาสัง่ที่นำาเขา้มาทำางานเสรจ็ก่อน

แต่จะไปนำาคำาสัง่ถัดไปมาเลย ในทำานองเดียวกันกับสว่นอ่ืน ดังแสดงในรูปที่ 2.1

ไมใ่ชแ่บบสายท่อ

ดึงคำาสัง่ ถอดรหสั ดึงตัวถกู กระทำาการ เก็บผลลัพธ์ ดึงคำาสัง่ ถอดรหสั ดึงตัวถกู กระทำาการ เก็บผลลัพธ์

ดำาเนินการ ดำาเนินการ

แบบสายท่อ

ดึงคำาสัง่ ดึงคำาสัง่ ดึงคำาสัง่ ดึงคำาสัง่ ดึงคำาสัง่ ดึงคำาสัง่

ถอดรหสั ถอดรหสั ถอดรหสั ถอดรหสั ถอดรหสั ถอดรหสั

ดึงตัวถกู ดึงตัวถกู ดึงตัวถกู ดึงตัวถกู ดึงตัวถกู ดึง ตัวถกู

ดำาเนินการ ดำาเนินการ ดำาเนินการ ดำาเนินการ ดำาเนินการ ดำาเนินการ

กระทำาการ กระทำาการ กระทำาการ กระทำาการ กระทำาการ กระทำาการ

เก็บผลลัพธ์ เก็บผลลัพธ์ เก็บผลลัพธ์ เก็บ ผลลัพธ์ เก็บผลลัพธ์ เก็บผลลัพธ์

Computer Science, Prince of Songkhla University

1

Page 2: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________ 1 2 3 4 5 6 7 8 9 10

ระยะวดัเป็นรอบการทำางานของเครื่อง

รูปที่ 2.1 แสดงใหเ้หน็ถึงความแตกต่างระหวา่งการกระทำาการแบบสายท่อ กับที่ไมใ่ช่

ถ้าต้องกระทำาการกับคำาสัง่ 5 คำาสัง่ที่เรยีงติดต่อกัน จะเหน็ได้วา่การทำางานแบบสายท่อจะใชเ้วลา เพยีง 10 รอบการทำางานของเครื่อง แต่ต้องใชเ้วลาถึง 25 รอบ ถ้าไมใ่ชก้ารทำางานแบบสายท่อ อยา่งไร

ก็ตามการทำางานจรงิ ๆ ไมไ่ด้ทำาเรยีงตามลำาดับเสมอไป เมื่อมกีารกระโดดไปยงัคำาสัง่ที่ไมอ่ยูติ่ดกัน คำาสัง่ที่อยู่ ถัดจากคำาสัง่กระโดดจงึไมใ่ชค่ำาสัง่ถัดไป จำาเป็นต้องเอาคำาสัง่ที่นำามาแล้ว แต่ยงัทำางานไมค่รบรอบกระทำาการ

ทิ้งทัง้หมด จะเหน็ได้วา่โปรแกรมที่มคีำาสัง่กระโดดมาก ๆ จะสรา้งปัญหาใหก้ับสถาปัตยกรรมแบบนี้ เพราะทำาให้ เสยีเวลาในการนำาคำาสัง่มาแล้วต้องทิ้งไป

ข. คำาสัง่มขีนาดเท่ากัน ทำาใหไ้มต่้องรอการถอดรหสัคำาสัง่ สามารถรูเ้ลขที่อยูข่องคำาสัง่ที่อยูถ่ัดไป จะ ต่างกับสถาปัตยกรรมแบบ CISC ซึ่งมกัจะมขีนาดไมเ่ท่ากัน จงึจำาเป็นต้องถอดรหสัคำาสัง่ก่อน เพื่อจะได้รูว้า่

คำาสัง่ถัดไปอยูท่ี่ไหน อยา่งไรก็ตาม ขอ้ดีของคำาสัง่ที่มขีนาดไมเ่ท่ากัน คือ การใชเ้น้ือที่อยา่งประหยดัค. มเีรจสิเตอรอ์เนกประสงค ์ (general-purpose register) ค่อนขา้งมาก การ

คำานวณจะกระทำาระหวา่ง เรจสิเตอรเ์ป็นสว่นใหญ่ เพราะจะเรว็กวา่การคำานวณระหวา่งเรจสิเตอรก์ับหน่วยความ จำา การติดต่อกับหน่วยความจำา มเีพยีงคำาสัง่บรรจ ุ (load instruction) เพื่อนำาขอ้มูลจากหน่วย

ความจำาเขา้มายงัเรจสิเตอรใ์นซพียีู และคำาสัง่เก็บ (store instruction) เพื่อนำาขอ้มูลในเรจสิเตอร์ ไปเก็บในหน่วยความจำา เท่านัน้ ไมม่คีำาสัง่ที่คำานวณระหวา่งขอ้มูลในเรจสิเตอรก์ับในหน่วยความจำา บางครัง้จงึ

เรยีกสถาปัตยกรรมแบบน้ีวา่ ‘บรรจุ-เก็บ’” ต่างกับสถาปัตยกรรมแบบ CISC ซึ่งมคีำาสัง่ที่ใชค้ำานวณ ระหวา่งขอ้มูลในเรจสิเตอรก์ับในหน่วยความจำา ทำาใหม้วีธิกีารอ้างถึงเลขที่อยูใ่นหน่วยความจำาหลายรูปแบบ

สถาปัตยกรรมแบบ RISC มองวา่ตัวแปลชุดคำาสัง่สว่นใหญ่ผลิตคำาสัง่ภาษาเครื่องไมก่ี่รูปแบบ และเชื่อถือความสามารถของตัวแปลชุดคำาสัง่ ในการทำาคำาสัง่ภาษาเครื่องใหไ้ด้ผลดีที่สดุ สว่นสถาปัตยกรรม

แบบ CISC คิดถึงการประหยดัเนื้อที่ และความสามารถของคำาสัง่แต่ละคำาสัง่ หน่ึงคำาสัง่ของสถาปัตยกรรม แบบ CISC อาจทำางานได้เทียบเท่ากับหลาย ๆ คำาสัง่ของสถาปัตยกรรมแบบ RISC ขอ้โต้เถียงจงึมวีา่

การทำางานโดยใชค้ำาสัง่จำานวนมาก แต่ละคำาสัง่ทำางานน้อยแต่เรว็ กับใชค้ำาสัง่จำานวนน้อย แต่ละคำาสัง่ทำางานได้ มากกวา่ แต่ใชเ้วลามากกวา่ อันไหนจะเรว็กวา่กัน ยงัไมม่คีำาตอบที่ชดัเจน แต่แนวโน้มของสถาปัตยกรรมแบบ

RISC เริม่มมีากขึ้น

2.2 ประเภทของคอมพวิเตอร์ ประมาณปี ค.ศ. 1972 Flynn ได้เสนอแนวทางในการแบง่คอมพวิเตอรอ์อกเป็น 4 แบบ

ซึ่งยงัคงเป็นท่ีนิยมใชก้ันในปัจจุบนั ได้แก่ก. แบบหน่ึงสายคำาสัง่และหน่ึงสายขอ้มูล หรอื SISD (Single Instruction

stream Single Data stream) เป็นคอมพวิเตอรท์ี่มซีพียูีตัวเดียว มสีถาปัตยกรรมแบบที่กล่าวมาแล้วขา้งต้น

ข. แบบหน่ึงสายคำาสัง่และมากกวา่หนึ่งสายขอ้มูล หรอื SIMD (Single Instruction stream Multiple Data stream) เป็นคอมพวิเตอรท์ี่มซีพียูีมากกวา่หน่ึงตัว กระทำาการ

กับคำาสัง่เดียวกัน แต่ใชข้อ้มูลต่างกัน มหีน่วยความจำาที่เก็บเฉพาะคำาสัง่รว่มกัน และมหีน่วยที่ใชค้วบคมุซพียูี แต่ละตัว แต่ละซพียูีจะมหีน่วยความจำาเก็บเฉพาะขอ้มูลเป็นของตัวเอง ซพียูีจะมลัีกษณะพเิศษกวา่ซพียูีโดยทัว่

ๆ ไป ตัวอยา่งของคอมพวิเตอรแ์บบน้ี ได้แก่ DADO และ CM-5

Computer Science, Prince of Songkhla University

2

Page 3: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

ค. แบบมากกวา่หน่ึงสายคำาสัง่และหนึ่งสายขอ้มูล หรอื MISD (Multiple Instruction stream Single Data stream) ยงัไมม่คีอมพวิเตอรใ์ดจดัอยูใ่นกลุ่ม

น้ี แต่อาจจะมใีนอนาคตง. แบบมากกวา่หน่ึงสายคำาสัง่และมากกวา่หน่ึงสายขอ้มูล หรอื MIMD (Multiple

Instruction stream Multiple Data stream) เป็นคอมพวิเตอรท์ี่มหีลาย ซพียี ู ซพียูีแต่ละตัวกระทำาการกับคำาสัง่และขอ้มูลของตัวเอง ซพียูีจะเป็นแบบเดียวกันกับที่มใีชอ้ยูแ่ล้วใน

ปัจจุบนั แบง่ออกได้เป็นสองพวกยอ่ย คือ พวกที่ใชห้น่วยความจำารว่มกัน เรยีกวา่ มลัติโพรเซสเซอร ์(multiprocessor) ตัวอยา่งคอมพวิเตอรแ์บบน ี้ ได้แก ่ Sequent, Encore และ Ultracomputer และพวกที่ไมใ่ชห้น่วยความจำารว่มกัน เรยีกวา่ มลัติคอมพวิเตอร ์(multicomputer) ตัวอยา่งคอมพวิเตอรแ์บบน ี้ ได้แก ่ Cosmic Cube, Paragon XP/S และคอมพวิเตอรห์ลาย ๆ เครื่องที่ต่อกันเป็นเครอืขา่ย

คอมพวิเตอรแ์บบซพียูีหลายตัว ในอดีตแรก ๆ มกัจะเป็นแบบ SIMD แต่ดเูหมอืนวา่ในปัจจุบนั และแนวโน้มในอนาคตจะเป็นแบบ MIMD เพราะไมต้่องออกแบบซพียูีใหม่ และมคีวามคล่องตัวในการสรา้ง

ภาษาเชงิขนาน หรอืระบบปฏิบตัิการที่สามารถวิง่ได้หลาย ๆ โปรแกรมในเวลาเดียวกัน (ขนานกัน)2.3 Machine Structure, Machine Language, Assembly Language ของ IBM 360/370 ใหอ่้านในหนังสอืที่ใชเ้รยีน ซึ่งอยูใ่นบทที่ 2

2.3.1 ระบบตัวเลข คอมพวิเตอรแ์ทนขอ้มูลในรูประบบตัวเลขฐานสอง (binary number system) ซึ่ง

ประกอบด้วย 0 กับ 1 ตัวเลขหนึ่งตัวเรยีกวา่ หน่ึงบติ (bit ยอ่มาจาก BInary digiT) ระบบอ่ืน ๆ ได้แก่ ระบบตัวเลขฐานสบิ (decimal number system) ซึ่งประกอบด้วย 0 ถึง 9 ระบบ

ตัวเลขฐานแปด (octal number system) ซึ่งประกอบด้วย 0 ถึง 7 ระบบตัวเลขฐานสบิหก (hexadecimal number system) ซึ่งประกอบด้วย 0 ถึง 9 และ A ถึง F

การเปล่ียนตัวเลขจากระบบหน่ึงไปยงัอีกระบบหน่ึง หรอืเรยีกวา่ การเปล่ียนฐาน ทำาได้ ดังน้ี

การเปล่ียนจากเลขฐานสองใหเ้ป็นเลขฐานสบิ ใชส้ตูร

(bnb n-1 … b2b1b0.b-1b-2 …b-m)2=(bn2n+b n-1 2n-1 + … + b222 + b121+b0 + b-12-1 +b-2 2-2 + … + b-m2-m)10

เชน่ (101101.1011)2 = (25 + 0 + 1*23 +22 + 0 + 1 + 2-1 + 0 + 2-3 + 2-4)10 = (45.6875)10

หมายเหต ุการเปล่ียนจากเลขฐานแปดหรอืสบิหกใหเ้ป็นเลขฐานสบิ ใชส้ตูรเหมอืนกัน แต่เปล่ียนจาก 2 เป็น 8 และ 16 ตามลำาดับ โดยแทน A, B, C, D, E, F ด้วย 10, 11, 12, 13, 14, 15 ตามลำาดับ

Computer Science, Prince of Songkhla University

3

Page 4: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________ การเปล่ียนตัวเลขหน้าจุด จากเลขฐานสบิใหเ้ป็นเลขฐานสอง ใหใ้ช ้ 2 หาร ไปเรื่อย จนได้ผลลัพธเ์ป็น 0

ขณะที่หารใหจ้ดจำาเศษที่ได ้ นำาเศษที่ได้จากการหารมาเรยีงตามลำาดับ เริม่จากเศษที่ได้ครัง้สดุท้ายเรยีงไปยงัเศษที่ได้จากการหารครัง้แรก

เชน่ 2 ) 12361 เศษ 130 เศษ 115 เศษ 0 7 เศษ 1 3 เศษ 1 1 เศษ 1

0 เศษ 1(123)10 = (1111011)2

หมายเหต ุ การเปล่ียนตัวเลขหน้าจุด จากเลขฐานสบิใหเ้ป็นเลขฐานแปดหรอืสบิหก ใชส้ตูรเหมอืนกัน แต่ เปล่ียนจากการหารด้วย 2 เป็นการหารด้วย 8 และ 16 ตามลำาดับ โดยแทนเศษ 10, 11, 12,

13, 14, 15 ด้วย A, B, C, D, E, F ตามลำาดับ

การเปล่ียนตัวเลขหลังจุด จากเลขฐานสบิใหเ้ป็นเลขฐานสอง ใหค้ณูตัวเลขที่อยูห่ลังจุดทัง้หมดด้วย 2 ไป เรื่อย ๆ จนกวา่จะได้ผลลัพธเ์ป็นศูนย์ หรอืได้จำานวนตัวเลขหลังจุดทศนิยมตามที่ต้องการ แล้วนำาเลขหน้าจุดที่

ได้จากการคณูแต่ละครัง้ มาเรยีงกัน

เชน่ (0.6875)10 = (0. 1 0 1 1)2 .6875 * 2 1.3750 .3750 * 2 0.7500 .7500 * 2 1.5000 .5000 * 2 1.0000 .0000

Computer Science, Prince of Songkhla University

4

Page 5: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________หมายเหต ุ การเปล่ียนตัวเลขหลังจุด จากเลขฐานสบิใหเ้ป็นเลขฐานแปดหรอืสบิหก ใชส้ตูรเหมอืนกัน แต่

เปล่ียนจากการคณูด้วย 2 เป็นการคณูด้วย 8 และ 16 ตามลำาดับ โดยแทนตัวเลขที่อยูห่น้าจุดซึ่งเป็น10, 11, 12, 13, 14, 15 ด้วย A, B, C, D, E, F ตามลำาดับ

2.3.2 การแทนขอ้มูล อักขระ

แทนแบบ EBCDIC จำานวนเต็มมเีครื่องหมาย แทนแบบ two complementหมายเหต ุ มวีธิกีารแทนขอ้มูลจำานวนเต็มแบบมเีครื่องหมาย สามแบบ คือ

- sign magnitude ใชบ้ติซา้ยสดุ (most significant bit) แทน เครื่องหมาย 0 แทน บวก และ 1 แทน

ลบ บติที่เหลือใชแ้ทนขนาดของตัวเลข most significant bit least significant bit n-1 n-2 … 2 1 0

sign magnitude

เชน่ สมมุติวา่ใช้ จำานวนบติ 8 บติ แทนเลขจำานวน +5 และ –5 ได้เป็น 00000101 และ10000101 เป็นต้น

ถ้าใชจ้ำานวน n บติ จะแทนเลขจำานวนเต็มแบบมเีครื่องหมาย ได้ตัง้แต่ – (2n-1 – 1) ถึง +(2n-1- 1)

เชน่ n = 16 จะแทนเลขจำานวนเต็มมเีครื่องหมายได้ตัง้แต่ –32767 ถึง +32767 เป็นต้น โดยที่ 0 แทนได้ทัง้ +0 และ –0

- one complement ใชบ้ติซา้ยสดุ (most significant bit) แทน เครื่องหมาย 0 แทน บวก และ 1 แทน

ลบ เชน่กัน การแทนเลขบวก จะเหมอืนกับแบบ sign magnitude แต่การแทนตัวเลขลบ จะต่างกัน แบบ one complement จะแทนตัวเลขลบโดยการ ทำา complement (เปล่ียนจากเลข

0 เป็น 1 และ เปล่ียนจากเลข 1 เป็น 0) กับ magnitude เชน่ สมมุติวา่ใช้ จำานวนบติ 8 บติ แทนเลขจำานวน +5 และ –5 ได้เป็น 00000101 และ 11111010 เป็นต้น

ถ้าใชจ้ำานวน n บติ จะแทนเลขจำานวนเต็มแบบมเีครื่องหมาย ได้ตัง้แต่ – (2n-1 – 1) ถึง +(2n-1- 1)

เชน่ n = 16 จะแทนเลขจำานวนเต็มมเีครื่องหมายได้ตัง้แต่ –32767 ถึง +32767 เป็นต้น โดยที่ 0 แทนได้ทัง้ +0 และ –0

- two complement ใชบ้ติซา้ยสดุ (most significant bit) แทน เครื่องหมาย 0 แทน บวก และ 1 แทน

Computer Science, Prince of Songkhla University

5

Page 6: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

ลบ เชน่กัน การแทนเลขบวก จะเหมอืนกับแบบ sign magnitude แต่การแทนตัวเลขลบ จะต่างกัน แบบ two complement จะแทนตัวเลขลบโดยการ ทำา complement (เปล่ียนจากเลข 0 เป็น 1 และ เปล่ียนจากเลข 1 เป็น 0) กับ magnitude แล้วบวกด้วยหนึ่ง เชน่ สมมุติวา่ใช ้

จำานวนบติ 8 บติ แทนเลขจำานวน +5 และ –5 ได้เป็น 00000101 และ 11111011 เป็นต้น

ถ้าใชจ้ำานวน n บติ จะแทนเลขจำานวนเต็มแบบมเีครื่องหมาย ได้ตัง้แต่ – (2n-1) ถึง +(2n-1- 1)

เชน่ n = 16 จะแทนเลขจำานวนเต็มมเีครื่องหมายได้ตัง้แต่ –32768 ถึง +32767 เป็นต้น โดยที่ 0 แทนด้วย +0 เท่านัน้

จำานวนจรงิ- short form floating point

s c F

0 1 7 8 31

s เป็นเครื่องหมายของเลขจำานวนจรงิ 1 = บวก 0 = ลบc = characteristic แทนสว่นยกกำาลัง (exponent) ฐานสบิหก ทัง้ที่เป็นยกกำาลังเลขลบ

และยกกำาลังเลขบวก ใชจ้ำานวนบติ 7 บติ แทนดังน้ี

c exponent 0000000 -64 0000001 -63 … 0111111 +62 1111111 +63Note! it adds the bias value of 64 to the exponent before it is stored in the real format. 16-64 ถึง 16+63 ประมาณ 10-78 ถึง 10+78

F = fraction เป็นเลขฐานสบิหกที่เก็บหลัง hexadecimal point จำานวนสงูสดุ 6 หลัก แบบ normalized form คือ เลขตัวแรกที่อยูห่ลัง hexadecimal point ต้องไมใ่ช่ 0

ยกเวน้ค่า 0 ซึ่งจะแทนด้วย 0 ทัง้หมด เชน่ .0125 x 164 จะทำา normalized ก่อนได้เป็น .125 x 163 เป็นต้น

ตัวอยา่ง (42640000)16 = (0100 0010 0110 0100 0000 0000 0000 0000)2s = (0)2 = +

Computer Science, Prince of Songkhla University

6

Page 7: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________c = (1000010)2 = (66)10 exponent = (66-64)10 = (2)10 = (2)16F = (.0110 0100 0000 0000 0000 0000)2 = (.64)16

นัน่ คือ แทน +0.64x162 = [ 6x(1/161) + 4x(1/162) ] x 162 = (100)10- long form floating point

s c F

0 1 7 8 63 เหมอืนแบบแรก แต่ fraction เก็บได้ 14 หลัก

2.3.2 การแทนขอ้มูลด้วยเลขฐานสบิหก เพื่อใหม้นุษยเ์ขา้ใจได้ง่าย และใชจ้ำานวนตัวเลขที่แทนขอ้มูลน้อยลง จงึใชต้ัวเลขฐานสบิหกแทน โดยที่ตัวเลข

ฐานสอง 4 ตัว สามารถเขยีนแทนด้วยตัวเลขฐานสบิหกหน่ึงตัว ดังน้ี

ฐานสอง ฐานสบิหก 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8

1001 91010 A1011 B1100 C1101 D1110 E1111 F

เชน่ 0000 0011 1100 0011 ฐานสอง เท่ากับ 0 3 C 3 ฐานสบิหก

Computer Science, Prince of Songkhla University

7

Page 8: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________2.4 Machine Structure – Intel 8086/8088 – Pentium Pro หวัขอ้น้ีต้องการเปรยีบเทียบใหเ้หน็สถาปัตยกรรมแบบอ่ืน ที่ไมไ่ด้กล่าวถึงในหนังสอืเรยีน

2.4.1 IBM PC Architecture สถาปัตยกรรมของเครื่องไอบเีอ็มพซีี แสดงดังรูปที่ 2.2

ADDRESS BUS นาฬิกา ซพียูี DATA BUS CONTROL BUS

หน่วยความจำาหลักหน่วยรบัเขา้/สง่ออก

รูปที่ 2.2 สถาปัตยกรรมของเครื่องไอบเีอ็มพซีี

เครื่องไอบเีอ็มพซีใีชน้าฬิกาควบคมุรอบการทำางานของซพียูี สว่นซพียูีควบคมุหน่วยความจำาหลักและหน่วยรบัเขา้/ สง่ออก ผ่านทาง control bus สง่ผ่านเลขที่ทาง address bus และสง่ผ่าน

ขอ้มูลทาง data bus ตารางแสดงขนาดของ bus และ หน่วยความจำา

micro processor data bus width address bud width memory size8086 16 20 1M8088 8 20 1M80286 16 24 16M80386SX 16 24 16M80386DX 32 32 4G80486 32 32 4GPentium 64 32 4GPentium Pro 64 36 64G2.4.2 Intel 8086/8088 Registers

15 8 7 0 15 0AX AH AL Accumulator

CS Code Segment

Computer Science, Prince of Songkhla University

8

Page 9: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

BX BH BL Base DS Data Segment

CX CH CL Count SS Stack Segment

DX DH DL Data ES Extra Segment 15 0 15 0

BP Base Pointer IP Instruction Pointer

SP Stack Pointer 15 0SI Source Index FLAGS

Status WordDI Destination Index

รูปที่ 2.3 เรจสิเตอรข์องซพียูี 8086/8088

เรจสิเตอรท์ัง้หมดมขีนาด 16 บติ ยกเวน้เรจสิเตอร ์ AH AL BH BL CH CL DH และ DL มขีนาด 8 บติ เรจสิเตอร ์ AX (AH AL) BX (BH BL) CX(CH CL) และ

DX (DH DL) ใชเ้พื่อจุดประสงค์ในการคำานวณ เรจสิเตอร ์ BX และ BP ใชเ้ป็นเรจสิเตอรฐ์าน (base) เรจสิเตอร ์ BP และ SP ใชเ้ป็นเรจสิเตอรต์ัวช ี้ (pointer) เรจสิเตอร ์ SI และ DI ใช้

เป็นเรจสิเตอรด์รรชน ี (index) เรจสิเตอร ์ CS DS SS และ ES ใชเ้พื่อกำาหนดเซกเมนต ์ เรจสิ เตอร ์ IP ใชร้ว่มกับเรจสิเตอร ์ CS เพื่อคำานวณเลขที่เชงิกายภาพ (physical address) ของ

คำาสัง่ในหน่วยความจำา ที่จะกระทำาการต่อไป โดยการเล่ือนตำาแหน่งของบติในเซกเมนต์เรจสิเตอร ์ ในที่น ี้ คือ CS ไปทางซา้ย 4 บติ เติม 0 ที่ตำาแหน่งของบติทางขวาขณะที่เล่ือน แล้วนำาค่าน้ีบวกกับค่าออฟเซท็ (offset) ในที่นี้ คือ ค่าในเรจสิเตอร ์ IP ดังแสดงในรูปที่ 2.4 การคำานวณเลขที่เชงิกายภาพของขอ้มูล

ในหน่วยความจำา ก็ทำาในลักษณะน้ีเชน่กัน เพยีงแต่ใช ้ เรจสิเตอร ์ DS SS หรอื ES เป็นเซกเมนต์ และใช้ ค่าคงที่ หรอื ค่าในเรจสิเตอรอ่ื์น เป็นออฟเซท็ การกำาหนดเลขที่ของขอ้มูลในกองซอ้น ใชเ้รจสิเตอร ์ SS เป็น

เซกเมนต ์ รว่มกับ เรจสิเตอร ์ SP เป็นออฟเซท็ โดยเรจสิเตอร ์ SP จะชีไ้ปที่ตำาแหน่งบนสดุของกองซอ้น สว่นการกำาหนดเลขที่ของขอ้มูลอ่ืน ใชเ้รจสิเตอร์ DS หรอื ES เป็นเซกเมนต์ รว่มกับ ค่าคงที่หรอืค่าในเรจิ

สเตอรอ่ื์น เป็นออฟเซท็ เลขที่ในหน่วยความจำาจงึมกันิยมเขยีนอยูใ่นรูป เซกเมนต์:ออฟเซท็ เชน่ CS:IP SS:SP DS:0010 ES:0000 หรอื FF00:000A เป็นต้น 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 เซกเมนต์ 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ออฟเซท็

Computer Science, Prince of Songkhla University

9

Page 10: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

เลขที่เชงิกายภาพ

รูปที่ 2.4 วธิกีารคำานวณเลขที่เชงิกายภาพ

เรจสิเตอรตั์วสดุท้าย คือ FLAGS ใชเ้ก็บสภาวะต่าง ๆ ดังรูปที่ 2.5

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF

รูปที่ 2.5 เรจสิเตอร์ FLAGS

สภาวะในรูปที่ 2.5 มคีวามหมาย ดังน้ี- CF (Carry Flag) การคำานวณมกีารทด- OF (Overflow Flag) การคำานวณล้น- ZF (Zero Flag) ผลลัพธเ์ป็นศูนย์ หรอืการเปรยีบเทียบเท่ากัน- SF (Sign Flag) ผลลัพธ์ (หรอืการเปรยีบเทียบ) เป็นลบ- PF (Parity Flag) มบีติที่เป็น 1 จำานวนคู่- AF (Auxiliary carry Flag) การคำานวณเลขฐาน 10 ด้วยรหสัเลขฐาน 2

(BCD-Binary-Code Decimal) ต้องมกีารปรบัค่าใหถ้กูต้อง- DF (Direction Flag) ควบคมุทิศทางการเคล่ือนยา้ยขอ้มูล- IF (Interrupt Flag) ควบคมุการขดัจงัหวะ- TF (Trap Flag) ควบคมุการปฏิบตัิการของคำาสัง่ทีละคำาสัง่ มกัใชใ้นโปรแกรม

DEBUG

2.4.3 Intel 80386-Pentium Pro Registers32-bit names 16-bit names 8-bit names 31 15 8 7 0 15 0EAX AX AH AL Accumulator CS Code SegmentEBX BX BH BL Base

DS Data Segment

Computer Science, Prince of Songkhla University

10

Page 11: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________ECX CX CH CL Count SS

Stack SegmentEDX DX DH DL Data ES

Extra Segment 31 15 0 FSEBP BP Base Pointer GS Instruction PointerESP SP Stack Pointer ESI SI Source Index Status WordEDI DI Destination Index 31 15 0EIP IP Instruction

pointerEFLAGS FLAGS Flags

2.4.4 Addressing Modes

ก.1 วธิกีารกำาหนดเลขที่อยูโ่ดยเรจสิเตอร ์ (register) ตัวถกูดำาเนินการเขยีนอยูใ่นรูปของ

เรจสิเตอร์

ตัวอยา่ง 2.8MOV AX,CXINC CX

ในที่น้ี AX และ CX เขยีนด้วยวธิกีารกำาหนดเลขที่อยูโ่ดยเรจสิเตอร์

ก.2 วธิกีารกำาหนดเลขที่อยูโ่ดยทันที (immediate) ตัวถกูดำาเนินการเขยีนอยูใ่นรูป ของ

นิพจน์ค่าคงที่

นิพจน์ค่าคงที่มขีนาด 8 หรอื 16 บติ แทนค่าของขอ้มูล

ตัวอยา่ง 2.9

Computer Science, Prince of Songkhla University

11

Page 12: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

MOV AX,65535MOV BH,255MOV CX,4-2+5

ในที่น ี้ 65535, 255 และ 4-2+5 ( ค่า 7) เขยีนด้วยวธิกีารกำาหนดเลขที่อยูโ่ดยทันที เป็นค่าที่จะ นำาไปเก็บในเรจสิเตอร ์ AX, BH, และ CX ตามลำาดับ สว่น AX, BH และ CX เขยีนด้วยวธิกีาร

กำาหนดเลขที่อยูโ่ดยเรจสิเตอร์

ก.3 วธิกีารกำาหนดเลขที่อยูโ่ดยตรง (direct) ตัวถกูดำาเนินการเขยีนอยูใ่นรูปของ

ตำาแหน่งขอ้มูล +- นิพจน์ค่าคงที่

นิพจน์ค่าคงที่จะมหีรอืไมก่็ได ้ ค่าของตัวถกูดำาเนินการ ( ตำาแหน่งขอ้มูล บวกหรอืลบ กับนิพจน์ค่าคงที่) มี ขนาด 16 บติ แทนออฟเซท็ของขอ้มูลในหน่วยความจำา เลขที่เชงิกายภาพของขอ้มูลในหน่วยความจำา เกิด

จากการนำาค่าน้ีไปบวกกับค่าในเซกเมนต์เรจสิเตอรข์องขอ้มูล ตามวธิกีารคำานวณในรูปท ี่ 2.3 ค่าออฟเซท็ ขนาด 16 บตินี้ เรยีกอีกอยา่งหน่ึงวา่ เลขที่อยูย่งัผล (effective address) ซึ่งใชเ้ป็นค่า

ออฟเซท็ตามที่กล่าวมาแล้วขา้งต้น ถ้าไมก่ำาหนดเซกเมนต์เรจสิเตอรข์องขอ้มูลโดยชดัแจง้ การคำานวณเลขที่ เชงิกายภาพของขอ้มูล จะใชเ้รจสิเตอร์ DS เป็นเซกเมนต์ โดยปรยิาย

ตัวอยา่ง 2.10MOV AX,COUNTADD DX,ARRY+10....

COUNT DW 0ARRY DW 20 DUP(?)

ในที่น ี้ COUNT และ ARRY+10 เขยีนด้วยวธิกีารกำาหนดเลขที่อยูโ่ดยตรง ค่าน้ีไมไ่ด้เป็นค่าของ ขอ้มูล แต่เป็นเลขที่อยูย่งัผล ขอ้มูลที่จะนำามาดำาเนินการอยูท่ ี่ ตำาแหน่ง DS:COUNT และ ตำาแหน่ง

DS:ARRY+10 ตามลำาดับ จะเหน็ได้วา่ การอ้างถึงตำาแหน่งของขอ้มูลในโปรแกรม สามารถทำาได้โดย การกำาหนดตำาแหน่งด้วยสญัลักษณ์ผู้เขยีนไมต้่องกังวลวา่ โปรแกรมจะบรรจุที่ไหนในหน่วยความจำา

ก.4 วธิกีารกำาหนดเลขที่อยูโ่ดยเรจสิเตอรท์างอ้อม (register indirect) ตัวถกูดำาเนินการเขยีนอยูใ่นรูปของ

[ เรจสิเตอร์ ]

โดยที่ เรจสิเตอรอ์าจจะเป็น เรจสิเตอรฐ์าน (BX, BP) หรอื เรจสิเตอรด์รรชน ี (DI, SI) ที่เก็บเลขที่อยูย่งัผล ของขอ้มูลในหน่วยความจำา ถ้าไมก่ำาหนดเซกเมนต์เรจสิเตอรข์องขอ้มูลโดยชดัแจง้ การคำานวณเลข

Computer Science, Prince of Songkhla University

12

Page 13: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

ที่เชงิกายภาพของขอ้มูล จะใชเ้รจสิเตอร ์ SS เป็นเซกเมนต์ เมื่อใชเ้รจสิเตอร ์ BP มฉิะนัน้จะใช ้ DS โดยปรยิาย

ตัวอยา่ง 2.11MOV AX,[BX]ADD CX,[DI]

ในที่น้ี ขอ้มูลที่จะนำามาดำาเนินการ ของคำาสัง่แรกจะอยูท่ี่ DS:BX สว่นคำาสัง่ที่สอง จะอยูท่ี่ DS:DI

ก.5 วธิกีารกำาหนดเลขที่อยูโ่ดยเรจสิเตอรส์มัพนัธ ์ (register relative) ตัวถกูดำาเนินการเขยีนอยูใ่นรูปของ

ตำาแหน่งขอ้มูล [ เรจสิเตอร์ +- นิพจน์ค่าคงที่ ] หรอื [ เรจสิเตอร์ +- นิพจน์ค่าคงที่ ]

โดยท ี่ เรจสิเตอรอ์าจจะเป็น เรจสิเตอรฐ์าน ฺ(BX, BP) หรอื เรจสิเตอรด์รรชน ี (DI, SI) นิพจน์ค่า คงที่จะมหีรอืไมก่็ได ้ เลขที่อยูย่งัผลเกิดจากการบวกค่าในเรจสิเตอร ์ กับ ระยะหา่ง

(displacement) ขนาด 8 หรอื 16 บติ ในรูปแบบแรก ระยะหา่ง คือ ตำาแหน่งขอ้มูล บวก หรอืลบ กับนิพจน์ค่าคงที่ สว่นในรูปแบบที่สอง ระยะหา่ง คือ นิพจน์ค่าคงที่ ท่ีจะนำาไปบวกกับค่าในเรจสิเตอร ์

ถ้าไมก่ำาหนดเซกเมนต์เรจสิเตอรข์องขอ้มูลโดยชดัแจง้ การคำานวณเลขที่เชงิกายภาพของขอ้มูล จะใชเ้รจสิ เตอร์ SS เป็นเซกเมนต์ เมื่อใชเ้รจสิเตอร์ BP มฉิะนัน้จะใช้ DS โดยปรยิาย

ตัวอยา่ง 2.12MOV AX,VAR_X[BX]MOV BL,MESG[SI+10H]MOV CX,[BX-1]

...VAR_X DW 1,2,3MESG DB ‘Hello’

ในตัวอยา่งนี้ คำาสัง่แรกมตีำาแหน่งขอ้มูลที่จะนำามาดำาเนินการอยูท่ ี่ DS:VAR_X+BX เชน่ ถ้า BX มี ค่าเป็น 0, 1, หรอื 2 ขอ้มูลที่ตำาแหน่งดังกล่าว จะเป็น 1, 2, หรอื 3 ตามลำาดับ เป็นต้น

ก.6 วธิกีารกำาหนดเลขที่อยูโ่ดยฐานดรรชนี (base indexed) ตัวถกูดำาเนินการเขยีนอยูใ่นรูปของ

[ เรจสิเตอรฐ์าน ] [ เรจสิเตอรด์รรชนี ]

Computer Science, Prince of Songkhla University

13

Page 14: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

เลขที่อยูย่งัผล เกิดจากการบวกค่าในเรจสิเตอรฐ์าน กับค่าในเรจสิเตอรด์รรชน ี ถ้าไมก่ำาหนดเซกเมนต์เรจสิ เตอรโ์ดยชดัแจง้ การคำานวณเลขที่เชงิกายภาพของขอ้มูล จะใชเ้รจสิเตอร ์ SS เป็นเซกเมนต ์ เมื่อใชเ้รจสิ

เตอร์ BP มฉิะนัน้จะใช้ DS โดยปรยิาย

ตัวอยา่ง 2.13MOV AX,[BP][DI]

ในที่น้ี ตำาแหน่งของขอ้มูลที่จะนำามาดำาเนินการจะอยูท่ี่ SS:BP+DI

ก.7 วธิกีารกำาหนดเลขที่อยูโ่ดยฐานดรรชนีสมัพนัธ ์ (relative based indexed) ตัวถกูดำาเนินการเขยีนอยูใ่นรูปของ

ตำาแหน่งขอ้มูล [ เรจสิเตอรฐ์าน +- นิพจน์ค่าคงที่ ] [ เรจสิเตอรด์รรชนี +- นิพจน์ค่า คงที่ ]

หรอื [ เรจสิเตอรฐ์าน +- นิพจน์ค่าคงที่ ] [ เรจสิเตอรด์รรชนี +- นิพจน์ค่าคงที่ ]

นิพจน์ค่าคงที่จะมหีรอืไมก่็ได ้ เลขที่อยูย่งัผล เกิดจากการบวกค่าในเรจสิเตอรฐ์าน กับค่าในเรจสิเตอรด์รรชนี กับระยะหา่ง เชน่เดียวกัน ถ้าไมก่ำาหนดเซกเมนต์เรจสิเตอรโ์ดยชดัแจง้ การคำานวณเลขที่เชงิกายภาพของ

ขอ้มูล จะใชเ้รจสิเตอร์ SS เป็นเซกเมนต์ เมื่อใชเ้รจสิเตอร์ BP มฉิะนัน้จะใช้ DS โดยปรยิาย

ตัวอยา่ง 2.14MOV AX,DATA[BX+10][SI-2]MOV DX,[BP+2][DI]

ในตัวอยา่งน ี้ คำาสัง่แรกมตีำาแหน่งขอ้มูลอยูท่ ี่ DS:BX+10+SI-2 และคำาสัง่ที่สองมตีำาแหน่งขอ้มูล อยูท่ี่ SS:BP+2+DI

2.4.5 Instruction Template คำาสัง่ของ 8086/8088 มขีนาดตัง้แต ่ 1 ถึง 6 ไบต ์ คำาสัง่บางคำาสัง่ใชเ้พื่อจุดประสงค์

เฉพาะ ดังนัน้ 1 ไบต์ก็เพยีงพอสำาหรบัคำาสัง่เหล่าน้ี เชน่machine code symbolic instruction commenttemplate40 INC AX ; increment AX01000reg50 PUSH AX ; push AX01010regFD STD ; set direction flag11111101

Computer Science, Prince of Songkhla University

14

Page 15: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

จะเหน็วา่ สองคำาสัง่แรกม ี operand หนึ่งตัวเป็นเรจสิเตอร ์ สว่นคำาสัง่ท่ีสามไมจ่ำาเป็นต้องม ีoperand แต่ทกุคำาสัง่ต้องมสีว่น operation code เพื่อบอกใหรู้ว้า่จะทำาอะไร คำาสัง่ของ 8086/8088 มลัีกษณะแปลกนิดหน่อย คือ ไมไ่ด้กำาหนดตายตัววา่ operation code จะมี

ขนาดกี่บติ อยา่งไรก็ตามจะเริม่จากบติซา้ยสดุเสมอ กรณีท่ีม ี operand จะมหีน่ึงหรอืสองตัว และอาจจะเป็น immediate operand,

register, หรอื memory reference จงึได้มกีารสรา้ง template ขึ้น และใสค่่าของ operand ตาม addressing mode ที่ต้องการลงบน template

Immediate แทนด้วยค่าซึ่งเป็นเลขฐานสองขนาด 8 หรอื 16 บติ เก็บอยูใ่นคำาสัง่โดยตรง

Register คำาสัง่ที่อ้างถึงเรจสิเตอร์ จะแทนเรจสิเตอรด์้วยค่าต่าง ๆ ดังน้ี

- ถ้าอ้างถึงเรจสิเตอรท์ัว่ ๆ ไปท่ีไมใ่ชเ่ซกเมนต์เรจสิเตอร์ ต้องมี w-bit เพื่อบอกวา่เป็นเรจสิเตอรข์นาด 8 หรอื 16 บติ ดังน้ี

reg w = 0 w = 1000 AL AX001 CL CX010 DL DX011 BL BX100 AH SP101 CH BP110 DH SI111 BH DI

ตัวอยา่งMOV AH,01H ; 10110 100 00000001 =

2 bytes long w reg immediate (8 bits)

MOV CX,01F2H ; 10111 001 00000001 11110010 = 3 bytes long

w reg immediate (16 bits)

- ถ้าอ้างถึงเซกเมนต์เรจสิเตอร ์( ใชร้ว่มกับ addressing mode ที่จะกล่าวต่อไป)sg0 ES

Computer Science, Prince of Songkhla University

15

Page 16: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

01 CS10 SS11 DS

Addressing Mode เป็นการผสมกันระหวา่ง immediate, register หรอื memory reference ดังที่กล่าวแล้วในหวัขอ้ 3.2

ถ้าเป็น immediate ก็จะใสค่่าเลขฐานสองขนาด 8 หรอื 16 บติ ตามที่กล่าวมาแล้วขา้งต้น แต่ถ้าเป็น เรจสิเตอรห์รอืหน่วยความจำา จะมกีารแทนค่าดังตารางขา้งล่างmod 00 01 10 11

r/m w = 0 w = 1 000 [BX]+[SI] [BX]+[SI]+d8 [BX]+[SI]+d16 AL AX 001 [BX]+[DI] [BX]+[DI]+d8 [BX]+[SI]+d16 CL CX 010 [BP]+[SI] [BP]+[SI]+d8 [BP]+[SI]+d16 DL DX 011 [BP]+[DI] [BP]+[DI]+d8 [BP]+[DI]+d16 BL BX 100 [SI] [SI]+d8 [SI]+d16 AH SP 101 [DI] [DI]+d8 [DI]+d16 CH BP 110 d16 [BP]+d8 [BP]+d16 DH SI 111 [BX] [BX]+d8 [BX]+d16 BH DI memory mode register modeหมายเหต ุd8 และ d16 หมายถึง displacement ขนาด 8 และ 16 ตามลำาดับ

ตัวอยา่งLEA DX,mem ; 10001101 00 010 110

mmmmmmmm mmmmmmmm mod reg r/m

displacement 16 bits

นอกจากน ี้ ยงัม ี d-bit ใชส้ำาหรบักำาหนดทิศทางซา้ยกับขวาหรอื source กับ destination หรอื operand1 กับ operand2ตัวอยา่ง

ADD BX,AX ; 00000011 11 011 000 dw mod reg r/m

Computer Science, Prince of Songkhla University

16

Page 17: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

ในตัวอยา่งนี้ d = 1 หมายถึง mod(11) และ reg(011) เป็น operand1 และ r/m (000) เป็น operand2

2.4.6 ตัวอยา่ง ภาษาแอสเซมบลี 8086/8088

source code name ex3-2.asmpage ,80

title Hello World Program

; This program displays "Hello, world!"

display equ 9h ;display output functiondoscall equ 21h ;DOS interrupt number

data_seg segmenthello_message db 'Hello, world!', 0dh, 0ah, '$'data_seg ends

code_seg segment assume cs:code_seg, ds:data_segstart: mov ax,data_seg mov ds,ax

mov ah,display mov dx,offset hello_message int doscall

mov ax,4c00h int doscallcode_seg endsend start

listing

Microsoft MACRO Assembler Version 3.00 Page1-1

Computer Science, Prince of Songkhla University

17

Page 18: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________Hello World Program 09-29-99

page ,80 title Hello World Program ; This program displays "Hello, world!" = 0009 display equ 9h ;display output functio

n = 0021 doscall equ 21h ;DOS interrupt number 0000 data_seg segment 0000 48 65 6C 6C 6F 2Chello_message db 'Hello, world!', 0dh, 0ah, '$' 20 77 6F 72 6C 64 21 0D 0A 24 0010 data_seg ends 0000 code_seg segment assume cs:code_seg, ds:data_seg 0000 start: 0000 B8 ---- R mov ax,data_seg 0003 8E D8 mov ds,ax 0005 B4 09 mov ah,display 0007 BA 0000 R mov dx,offset hello_message 000A CD 21 int doscall 000C B8 4C00 mov ax,4c00h 000F CD 21 int doscall 0011 code_seg ends end start

Microsoft MACRO Assembler Version 3.00 PageSymbols

Computer Science, Prince of Songkhla University

18

Page 19: staff.cs.psu.ac.thstaff.cs.psu.ac.th/iew/cs323-554/chapter2.doc · Web viewChapter 2 Machine Structure, Machine Language, and Assembly Language 2.1 CISC V.S. RISC ซ พ ย ของบร

CS323-554 Systems Programming chapter 2 page_________________________________________________________________________________

-1Hello World Program 09-29-99

Segments and Groups: N a m e Size AlignCombine Class

CODE_SEG . . . . . . . . . . . . 0011PARA NONE

DATA_SEG . . . . . . . . . . . . 0010PARA NONE

Symbols: N a m e TypeValue Attr

DISPLAY. . . . . . . . . . . . . Number 0009DOSCALL. . . . . . . . . . . . . Number 0021HELLO_MESSAGE. . . . . . . . . .L BYTE 0000

DATA_SEGSTART. . . . . . . . . . . . . . L NEAR 0000

CODE_SEG

49698 Bytes free

Warning SevereErrors Errors 0 0

Computer Science, Prince of Songkhla University

19