Operating System 2

Download Report

Transcript Operating System 2

Computer Architecture
and Assembly Language
By Juthawut Chantharamalee
Suan Dusit Rajabhat University (Computer Science)
1
บทที่ 7 โปรแกรมภาษาแอสเซมบลีเบื้องต้น
(Assembly Language Progamming)
บทที่ 2
Suan Dusit Rajabhat University (Computer Science)
2
รูปแบบของโปรแกรมภาษาแอสเซมบลี
 โปรแกรมทีท่ ำงำนในเครือ่ งคอมพิวเตอร์ซงึ่ ใช้หน่วยประมวลผลตระกูล 80x86 นัน้ จะ
มีกำรแบ่งโปรแกรมทัง้ หมดเป็ นเซกเมนต์ย่อย ๆ เช่น Code segment Data
segment หรือ Stack segment ดังนัน้ ในโปรแกรมภำษำแอสเซมบลีทเี่ รำ
เขียนจะประกอบไปด้วยเซกเมนต์ต่ำง ๆ เช่นเดียวกัน ภำยในเซกเมนต์ต่ำง ๆ ทีเ่ รำ
ประกำศเรำจะระบุขอ้ มูลและโปรแกรมทีจ่ ะอยู่ในเซกเมนต์นนั้
Suan Dusit Rajabhat University (Computer Science)
3
รูปแบบของโปรแกรมภาษาแอสเซมบลี
ตัวอย่ำง
Suan Dusit Rajabhat University (Computer Science)
4
การประกาศเซกเมนต์
การประกาศเซกเมนต์
กำรประกำศเซกเมนต์ในโปรแกรมภำษำเอสเซมบลี้ เรำใช้คู่คำสัง่ เทียม segment และ
ends โดยมีลกั ษณะกำรประกำศดังนี้
segment_name
segment
…
segment_name
ends
จำกตัวอย่ำงเรำได้ประกำศเซกเมนต์ cseg dseg และ sseg คำสัง่ เทียม
stack ระบุให้ระบบใช้เซกเมนต์ sseg เป็ นแสต็กของโปรแกรม คำสัง่ เทียม assume
เป็ นกำรระบุให้ assembler ได้ทรำบว่ำเซกเมนต์ทเี่ รำประกำศนัน้ จะให้ระบบพิจำรณำว่ำ
ทำหน้ำทีอ่ ะไรและมีเซกเมนต์รจี สิ เตอร์ใดเป็ นตัวเก็บค่ำเซกเมนต์
Suan Dusit Rajabhat University (Computer Science)
5
รูปแบบของโปรแกรมภาษาแอสเซมบลี
จำกตัวอย่ำง เรำประกำศให้ assembler ทรำบว่ำเซกเมนต์ cseg จะชีโ้ ดย
รีจสิ เตอร์ CS เซกมนต์ dseg จะชีโ้ ดย รีจสิ เตอร์ DS และเซกเมนต์ sseg จะชีโ้ ดย
รีจสิ เตอร์ SS คำสัง่ เทียม assume นีจ้ ะเป็ นกำรบอก assembler ให้พจิ ำรณำ
ตำมทีร่ ะบุเท่ำนัน้ ไม่ได้เป็ นกำรสัง่ ให้ assembler กำหนดค่ำต่ำง ๆ ให้โดยอัตโนมัต ิ
สังเกตได้จำกในตอนต้นของโปรแกรมเรำมีชุดคำสัง่ เพือ่ ปรับค่ำของรีจสิ เตอร์ DS ดังนี้
mov ax,dseg
mov ds,ax
ชุดคำสัง่ นีจ้ ะปรับค่ำของรีจสิ เตอร์ DS ให้ชไ้ ี ปที่ dseg สำหรับรีจสิ เตอร์ SS ระบบจะ
ปรับค่ำให้ชไ้ ี ปทีเ่ ซกเมนต์ทเี่ รำระบุไว้โดยคำสัง่ เทียม stack ส่วนกรณีของรีจสิ เตอร์ CS
นัน้ ระบบจะตัง้ ค่ำให้ตรงกับเซกเมนต์ทเี่ ริม่ ต้นโปรแกรม
Suan Dusit Rajabhat University (Computer Science)
6
รูปแบบของโปรแกรมภาษาแอสเซมบลี
โปรแกรมภำษำแอสเซมบลีจะประกอบไปด้วยกำรประกำศเซกเมนต์ต่ำง ๆ และจะสิน้ สุด
โปรแกรมที่ คำสัง่ เทียม end หลังคำสัง่ เทียม end เรำจะระบุจุดเริม่ ต้นของโปรแกรม
ในโปรแกรมตัวอย่ำงเรำระบุจุดเริม่ ต้นของโปรแกรมทีเ่ ลเบล start ทีเ่ รำประกำศไว้ท ี่
ตอนต้นของโปรแกรม กำรประกำศเลเบลเรำสำมำรถทำได้ดงั นี้
label_name:
ระบบจะจดจำตำแหน่งของเลเบลทีเ่ รำประกำศไว้และจะนำแอดเดรสของเลเบลไปแทนทีใ่ ห้โดย
อัตโนมัต ิ กำรทีโ่ ปรแกรม assembler จัดกำรเรือ่ งเกีย่ วกับเลเบลในโปรแกรม
ภำษำแอสเซมบลีนนั้ นับเป็ นกำรเพิม่ ควำมสะดวกให้กบั ผู เ้ ขียนโปรแกรมเป็ นอย่ำงมำก
Suan Dusit Rajabhat University (Computer Science)
7
รูปแบบของโปรแกรมภาษาแอสเซมบลี
การประกาศข้อมูล
ภำยในเซกเมนต์ขอ้ มูลเรำสำมำรถประกำศข้อมูลต่ำง ๆ ได้ จำกโปรแกรมตัวอย่ำงเรำ
ประกำศข้อมูลเป็ นข้อควำมทีจ่ ะให้โปรแกรมพิมพ์ออกมำ เรำจะศึกษำรูปแบบกำรประกำศ
ข้อมูลในบทต่อไป
การใส่หมายเหตุ
หลังเครือ่ งหมำย ‘;’ assembler จะตีควำมว่ำเป็ นหมำยเหตุ กำรใส่หมำยเหตุจะช่วย
ทำให้โปรแกรมอ่ำนง่ำยขึน้ จำกตัวอย่ำงโปรแกรมข้ำงต้น 3 บรรทัดแรกจะเป็ นหมำยเหตุ
Suan Dusit Rajabhat University (Computer Science)
8
รูปแบบของโปรแกรมภาษาแอสเซมบลี
การสั่งให้โปรแกรมจบการทางาน
โปรแกรมจะจบกำรทำงำนเมือ่ เรำสัง่ ให้โปรแกรมจบกำรทำงำนเท่ำนัน้ ถ้ำเรำไม่ได้สงั่ ให้จบกำร
ทำงำนเมือ่ จบโปรแกรมแล้ว หน่วยประมวลผลจะทำงำนคำสัง่ อืน่ ๆ ทีอ่ ยู่ในหน่วยควำมจำ
ต่อจำกโปรแกรมของเรำไปเรือ่ ยๆ ในโปรแกรม DEBUG เรำเรียกใช้คำสัง่ INT
20h เพือ่ ให้โปรแกรมจบกำรทำงำน แต่ในโปรแกรมภำษำแอสเซมบลีทวั่ ไปเรำจะเรียกใช้
บริกำรหมำยเลข 4Ch ของระบบปฏิบตั กิ ำร DOS โดยจำกโปรแกรมตัวอย่ำงเรำใช้
คำสัง่ ดังนี้
mov ax,4C00h
int 21h
Suan Dusit Rajabhat University (Computer Science)
9
รูปแบบของโปรแกรมภาษาแอสเซมบลี
ในโปรแกรมตัวอย่ำงนี้ เรำได้เรียกใช้บริกำรของ DOS ในกำรพิมพ์ขอ้ ควำมด้วย เรำ
เรียกใช้บริกำรหมำยเลข 9 โดยใช้คำสัง่
mov ah,9h
mov dx,offset msg1
int 21h
สำหรับกำรเรียกใช้บริกำรของ DOS เรำจะกล่ำวถึงในหัวข้อถัดไป
Suan Dusit Rajabhat University (Computer Science)
10
รูปแบบของโปรแกรมภาษาแอสเซมบลี
ตัวอย่ำงโครงร่ำงของโปรแกรมภำษำแอสเซมบลี
Suan Dusit Rajabhat University (Computer Science)
11
รูปแบบของโปรแกรมภาษาแอสเซมบลีแบบใหม่
ตัวอย่ำง
Suan Dusit Rajabhat University (Computer Science)
12
การเรียกใช้บริการของ DOS
เรำสำมำรถเรียกใช้บริกำรต่ำง ๆ ของ DOS ได้โดยผ่ำนทำงกำรขัดจังหวะหมำยเลข
21h DOS ได้จดั สรรบริกำร (function) ต่ำง ๆ มำกมำยให้กบั ผู เ้ ขียน
โปรแกรม. เมือ่ เรำเรียกใช้บริกำรเรำจะต้องระบุว่ำต้องกำรบริกำรใด. เรำระบุโดย
กำหนดค่ำหมำยเลขของบริกำรลงในรีจสิ เตอร์ AH พร้อมทัง้ ข้อมูลต่ำง ๆ ของกำร
เรียกใช้บริกำรนัน้ (พำรำมิเตอร์ต่ำง ๆ) รูปแบบคร่ำว ๆ ของกำรเรียกใช้บริกำรของ
DOS เป็ นดังนี้
mov ah,function_number ;(set function parameters)
int 21h
บริกำรต่ำง ๆ ของ DOS ทีส่ ำคัญ และพำรำมิเตอร์ของบริกำรต่ำง ๆ มีดงั ต่อไปนี้
Suan Dusit Rajabhat University (Computer Science)
13
การเรียกใช้บริการของ DOS
ตำรำง 7.1 บริกำรของ DOS ทีส่ ำคัญและพำรำมิเตอร์
Suan Dusit Rajabhat University (Computer Science)
14
การเรียกใช้บริการของ DOS
ขั้นตอนการแปลโปรแกรม
เรำจะต้องแปลโปรแกรมทีเ่ รำเขียนขึน้ ให้อยู่ในรูปแบบทีส่ ำมำรถทำงำนได้ โดยขัน้ ตอนกำรแปล
โปรแกรมเป็ นดังนี้
1. แปลโปรแกรมเป็ นแฟ้มเป้ ำหมำย (object file) นำมสกุล OBJ โดยใช้โปรแกรม
assembler ต่ำง ๆ เช่น Macro Assembler (MASM) หรือ Turbo
Assembler (TASM)
2. นำมำแฟ้มเป้ ำหมำยแฟ้มเดียวหรือหลำยแฟ้มมำเชือ่ มโยงเข้ำด้วยกันโดยใช้โปรแกรม
LINK
Suan Dusit Rajabhat University (Computer Science)
15
การเรียกใช้บริการของ DOS
ขั้นตอนการแปลโปรแกรม
เรำจะต้องแปลโปรแกรมทีเ่ รำเขียนขึน้ ให้อยู่ในรูปแบบทีส่ ำมำรถทำงำนได้ โดยขัน้ ตอนกำรแปล
โปรแกรมเป็ นดังนี้
1. แปลโปรแกรมเป็ นแฟ้มเป้ ำหมำย (object file) นำมสกุล OBJ โดยใช้โปรแกรม
assembler ต่ำง ๆ เช่น Macro Assembler (MASM) หรือ Turbo
Assembler (TASM)
2. นำมำแฟ้มเป้ ำหมำยแฟ้มเดียวหรือหลำยแฟ้มมำเชือ่ มโยงเข้ำด้วยกันโดยใช้โปรแกรม
LINK
Suan Dusit Rajabhat University (Computer Science)
16
การเรียกใช้บริการของ DOS
ตัวอย่างการแปลโปรแกรม
จำกโปรแกรมตัวอย่ำง สมมติว่ำเรำเก็บในแฟ้มชือ่ EX1.ASM เรำสำมำรถสัง่ แปล
โปรแกรมโดยใช้ Macro Assembler ได้ดงั นี้
Suan Dusit Rajabhat University (Computer Science)
17
การเรียกใช้บริการของ DOS
ถ้ำโปรแกรมมีขอ้ ผิดพลำด assembler จะแจ้งข้อผิดพลำดกลับมำให้ทรำบ เรำ
สำมำรถแก้ไขและแปลโปรแกรมใหม่ได้ เมือ่ เรำแปลโปรแกรมภำษำแอสเซมบลีเรียบร้อยแล้ว
เรำจะได้แฟ้มเป้ ำหมำยทีม่ นี ำมสกุลเป็ น OBJ เช่นจำกตัวอย่ำงเรำจะได้ EX1.OBJ
เรำจะให้โปรแกรม LINK เพือ่ แปลแฟ้มเป้ ำหมำย (Object file) ให้เป็ นโปรแกรมที่
สำมำรถทำงำนได้ ดังนี้
เรำจะได้แฟ้มทีม่ นี ำมสกุล EXE ซึง่ สำมำรถเรียกใช้ได้จำก DOS prompt
Suan Dusit Rajabhat University (Computer Science)
18
ตัวอย่างโปรแกรม
ตัวอย่ำงที่ 1
โปรแกรมนีร้ บั กำรกดปุ่มจำกผู ใ้ ช้โดยใช้บริกำรหมำยเลข 01h แล้วแสดงอักขระทีอ่ ่ำนได้โดยใช้บริกำรของ DOS
หมำยเลข 02h สังเกตว่ำโปรแกรมนีไ้ ม่มกี ำรใช้ขอ้ มูลในหน่วยควำมจำ ดังนัน้ จึงไม่ต้องประกำศเซกเมนต์ขอ้ มูล
Suan Dusit Rajabhat University (Computer Science)
19
ตัวอย่างโปรแกรม
ตัวอย่ำงที่ 2
โปรแกรมนีร้ บั กำรกดปุ่มจำกผู ใ้ ช้โดยใช้บริกำรหมำยเลข 01h แล้วแสดงอักขระทีม่ รี หัสแอสกีถดั จำกอักขระทีอ่ ่ำนได้ กำร
แสดงตัวอักษรใช้บริกำรของ DOS หมำยเลข 02h เช่นเดียวกับตัวอย่ำงที่ 1 โปรแกรมนีไ้ ม่มกี ำรใช้ขอ้ มูลใน
หน่วยควำมจำจึงไม่มกี ำรประกำศเซกเมนต์ขอ้ มูล โปรแกรมนีเ้ ขียนโดยใช้รูปแบบในกำรเขียนแบบเก่ำ
Suan Dusit Rajabhat University (Computer Science)
20
ตัวอย่างโปรแกรม
ตัวอย่ำงที่ 3
โปรแกรมนีร้ บั ตัวอักษรจำกผู ใ้ ช้ จำกนัน้ แปลงตัวอักษรเล็กให้เป็ นตัวอักษรใหญ่โดยกำรลบค่ำรหัสแอสกีด้วย 32 แล้ว
แสดงอักขระนัน้ กับผู ใ้ ช้
Suan Dusit Rajabhat University (Computer Science)
21
ตัวอย่างโปรแกรม
ตัวอย่ำงที่ 4
โปรแกรมนีท้ ำงำนเหมือนโปรแกรมในตัวอย่ำงที่ 3 แต่ไม่แสดงอักษรทีผ่ ู ใ้ ช้ป้อนให้ผูใ้ ช้เห็น โดยใช้บริกำรหมำยเลข 08h
แทนบริกำรหมำยเลข 01h ในตัวอย่ำงที่ 3
Suan Dusit Rajabhat University (Computer Science)
22
สรุป
 ภำษำแอสเซมบลี (Assembly Language) เป็ นภำษำทีใ่ ช้สญ
ั ญำลักษณ์ในกำร
สือ่ สำรควำมหมำยภำษำแอสเซมบลีมลี กั ษณะคำสัง่ ทีข่ น้ ึ กับเครือ่ งคอมพิวเตอร์ทใี่ ช้งำน
และมีกำรแปลคำสัง่ ให้เป็ นภำษำเครือ่ งนอกจำกภำษำเครือ่ ง และ ภำษำแอสเซมบลีแล้ว ก็
ยังมีภำษำระดับสูง เช่น Basic Cobol Fortran ซึง่ เป็ นภำษำทีม่ คี ำสัง่ ใกล้เคียง
กับภำษำอังกฤษมำกทำให้ผูเ้ ขียนโปรแกรมสำมำรถเขียนโปรแกรมได้สะดวกและรวดเร็ว
แต่ว่ำโปรแกรมทีเ่ ขียนด้วยภำษำระดับสูงต้องใช้เนือ้ ทีเ่ ก็บในหน่วยควำมจำเป็ นจำนวนมำก
อีกทัง้ ทำงำนได้ชำ้ กว่ำภำษำแอสเซมบลี ดังนัน้ ภำษำระดับสูงจึงไม่นยิ มนำมำประยุกต์ใช้
กับกำรทำงำนทีร่ ะบบกำรควบคุมทีม่ คี วำมสำคัญมำก
Suan Dusit Rajabhat University (Computer Science)
23
สรุป
ภำษำแอสเซมบลี เหมำะกับโปรแกรมทีใ่ ช้เนือ้ ทีใ่ นหน่วยควำมจำไม่มำกนัก ทัง้ ทำงำนได้
รวดเร็ว และในกำรควบคุมกำรทำงำนของเครือ่ งคอมพิวเตอร์ได้โดยตรง
คำสัง่ ปฏิบตั กิ ำรของภำษำแอสเซมบลี แบ่งออกเป็ น 4 ชนิดคือ
1. Machine instruction
2. Assembler instruction
3. Macro instruction
4. Pseudo instruction
Suan Dusit Rajabhat University (Computer Science)
24
The End
Lesson 7
Suan Dusit Rajabhat University (Computer Science)
25