เอกสารประกอบการสอน รายวิชา...

226
เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษาแอสเซมบลี (Microprocessor and Assembly Language) จุฑาวุฒิ จันทรมาลี วท.บ., วท.ม.(วิทยาการคอมพิวเตอร์) คณะวิทยาศาสตร์และเทคโนโลยี มหาวิทยาลัยราชภัฏสวนดุสิต 2557

Upload: others

Post on 28-May-2020

6 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

เอกสารประกอบการสอน

รายวชา ไมโครโพสเซสเซอรและภาษาแอสเซมบล (Microprocessor and Assembly Language)

จฑาวฒ จนทรมาล

วท.บ., วท.ม.(วทยาการคอมพวเตอร)

คณะวทยาศาสตรและเทคโนโลย มหาวทยาลยราชภฏสวนดสต 2557

Page 2: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(1)

ค ำน ำ

เอกสารประกอบการสอนวชา ไมโครโพสเซสเซอรและภาษาแอสเซมบล รหสวชา 4122705 จดไดวาเปนรายวชาทมความส าคญตอการผลตบณฑตดานคอมพวเตอร ตามหลกสตรวทยาศาตรบณฑต สาขาวชาวทยาการคอมพวเตอร นอกจากนนเอกสารประกอบการสอนเลมนไดเรยบเรยงขนเพอใหครอาจารยและบคคลทวไปไดศกษาและคนควาเพมพนความรและประสบการณเกยวกบทกษะและเทคนครวมทงไดศกษาการใชงานไมโครโพสเซสเซอรและภาษาแอสเซมบล ทงภาคทฤษฎและปฏบต สาระส าคญของเอกสารประกอบการสอนเลมน ประกอบดวย 18 บท ไดแก ระบบคอมพวเตอร ไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร ระบบจ านวน ภาษาส าหรบเขยนโปรแกรมคอมพวเตอร สถาปตยกรรมคอมพวเตอรเบองตน สถาปตยกรรมคอมพวเตอรเบองตน ค าสงโอนยายขอมล แฟลกและค าสงคณตศาสตร โปรแกรมภาษาแอสแซมบลเบองตน การประกาศขอมล ค าสงกระโดดและค าสงการกระท าซ า โครงสรางควบคม โปรแกรมยอยเบองตน การกระท าระดบบต การอางแอดเดรส การขดจงหวะ ค าสงจดการกบสายขอมล ค าสงตารางและการสรางแมคโคร ค าสงตารางและการสรางแมคโครและการฝกทกษะการเขยนโปรแกรมภาษาแอสเซมบลเบองตนซงการเรยบเรยงประมวลเอกสารประกอบการสอนตามเนอหาดงกลาวขางตนนน ผเขยนไดค านงถงการจดการเรยนการสอนทเนนผ เรยนเปนส าคญตามพระราชบญญตการศกษาแหงชาต รวมทงเนอหามความทนสมยทนเหตการณ ครอบคลมตามสาระการเรยนรท พงม และน าทกษะและเทคนคสมยใหมทเกยวของมาน าเสนอประกอบ เพอใหเกดความชดเจนในองคความรของศาสตร ดานคอมพวเตอร ผ เขยนหวงวาเอกสารประกอบการสอนเลมนคงมประโยชนกบทานผอานบางตามโอกาสอนสมควร จฑาวฒ จนทรมาล 17 มนาคม 2557

Page 3: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(2)

สำรบญ

หนำค ำน ำ (1) สำรบญ (2) สำรบญภำพ (6) สำรบญตำรำง (8) แผนบรหำรกำรสอนประจ ำวชำ (9) แผนบรหำรกำรสอนประจ ำบทท 1 1บทท 1 ระบบคอมพวเตอร 2 องคประกอบของระบบคอมพวเตอร 2 ชนดของคอมพวเตอร 3 โครงสรางของฮารดแวรของระบบคอมพวเตอร 5 ระบบซอฟตแวรของคอมพวเตอร 7 แผนบรหำรกำรสอนประจ ำบทท 2 10 บทท 2 ไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร 11 ไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร 11 ชนดของไมโครโพรเซสเซอร 12 โครงสรางสถาปตยกรรมของไมโครโพรเซสเซอร 13 การเกดอนเตอรรพต 17 รจสเตอรของซพย 8086 18 การระบต าแหนงในรจสเตอร 22 การเขาถงขอมลในหนวยความจ า 23 แผนบรหำรกำรสอนประจ ำบทท 3 28บทท 3 ระบบจ ำนวน 29 ความหมายของตวเลขในหลกตาง ๆ 29 การแปลงคาจากเลขฐานสบเปนเลขฐานสอง 29 การบวกและการลบเลขฐานสอง 30 การคณและการหารเลขฐานสอง 31 เลขฐานแปดและเลขฐานสบหก 32 บต, ไบต, เวรด และดบเบลเวรด 33 ระบบเลข 2’ Complement 34 ระบบเลข BCD (Binary Code Decimal) 34 มาตรฐาน IEEE 754 35แผนบรหำรกำรสอนประจ ำบทท 4 37บทท 4 ภำษำส ำหรบเขยนโปรแกรมคอมพวเตอร 38 ภาษาตางๆ ส าหรบคอมพวเตอร 38 ระดบของภาษาสาหรบเขยนโปรแกรม 38

Page 4: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(3)

หนำ การ แปลภาษาส าหรบคอมพวเตอร 38 ภาษาแอสเซมบล 39 แผนบรหำรกำรสอนประจ ำบทท 5 41บทท 5 สถำปตยกรรมคอมพวเตอรเบองตน 42 หนวยประมวลผลกลาง 42 หนวยความจ า 43 การเชอมตอระหวางอปกรณตาง ๆ 43 สถาปตยกรรมของระบบไมโครโปรเซสเซอรตระกล 80x86 44แผนบรหำรกำรสอนประจ ำบทท 6 52บทท 6 ค ำสงโอนยำยขอมล 53 ค าสงในการโยนยายขอมล ค าสง MOV 53 เครองมอในการทดลองการโปรแกรมภาษาแอสเซมบล 56 ค าสงในการโยนยายขอมล ค าสงทวไป 56แผนบรหำรกำรสอนประจ ำบทท 7 66บทท 7 แฟลกและค ำสงคณตศำสตร 67 แฟลก (Flags) 67 ค าสงทางคณตศาสตร 70 กลมค าสงบวกและลบ 70 กลมค าสงคณและหาร 72 กลมค าสงแปลงขนาดตวเลข 73แผนบรหำรกำรสอนประจ ำบทท 8 79บทท 8 โปรแกรมภำษำแอสแซมบลเบองตน 80 รปแบบของโปรแกรมภาษาแอสเซมบลแบบเกา 80 รปแบบของโปรแกรมภาษาแอสเซมบลแบบใหม 83 การเรยกใชบรการของ DOS 84 ขนตอนการแปลโปรแกรม 85 ตารางรหสแอสก 89แผนบรหำรกำรสอนประจ ำบทท 9 91บทท 9 กำรประกำศขอมล 92 การประกาศขอมล 92 การอางใชขอมลทประกาศไว 94 การอางต าแหนงของขอมล 95 การประกาศขอมลส าหรบการใชบรการของ DOS หมายเลข 09h และ 0Ah 96 การใชบรการของ DOS หมายเลข 09h : การพมพขอความ 96 การใชบรการของ DOS หมายเลข 0Ah : การอานขอความ 97

Page 5: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(4)

หนำ แผนบรหำรกำรสอนประจ ำบทท 10 100บทท 10 ค ำสงกระโดดและค ำสงกำรกระท ำซ ำ 101 ค าสงกระโดด 101 ค าสงวนรอบ 103แผนบรหำรกำรสอนประจ ำบทท 11 111บทท 11 โครงสรำงควบคม 112 การสรางโครงสรางการตดสนใจแบบ if-then-else 112 การสราง repeat until loop 113 การสราง while loop 114 การสราง for loop 115แผนบรหำรกำรสอนประจ ำบทท 12 119บทท 12 โปรแกรมยอยเบองตน 120 ค าสงทรองรบการเรยกโปรแกรมยอย 120 การประกาศโปรแกรมยอย 120 ค าสงเกบขอมล (PUSH) และดงขอมล (POP) จากแสตก 122 ตวอยางการใชงานโปรแกรมยอย 124แผนบรหำรกำรสอนประจ ำบทท 13 127บทท 13 กำรกระท ำระดบบต 128 ค าสงทางตรรกศาสตร 108 การประยกตใชงานค าสงทางตรรกศาสตร 130 ค าสงเลอนบต 131 ตวอยางการใชงานค าสงเลอนบต 131 การประยกตใชงานค าสงเลอนบต 133 ค าสงหมนบต 133 ค าสงหมนบตทผานแฟลกทด 134 ตวอยางการใชงานค าสงเกยวกบการประมวลผลระดบบต 135แผนบรหำรกำรสอนประจ ำบทท 14 139บทท 14 กำรอำงแอดเดรส 140 การอางแอดเดรส 140 แบบการอางแอดเดรส 140แผนบรหำรกำรสอนประจ ำบทท 15 147บทท 15 กำรขดจงหวะ 148 กระบวนการขดจงหวะใน 8086 148 ค าสงตดตอกบอปกรณใน 8086 151

Page 6: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(5)

หนำ แผนบรหำรกำรสอนประจ ำบทท 16 159บทท 16 ค ำสงจดกำรกบสำยขอมล 160 ค าสง MOVS 161 ค าสง REP 161 ค าสง STOS 162 ค าสง LODS 163 ค าสง REPZ 165 ค าสง CMPS 165 ค าสง REPNZ 166 ค าสง SCAS 166แผนบรหำรกำรสอนประจ ำบทท 17 169บทท 17 ค ำสงตำรำงและกำรสรำงแมคโคร 170 ค าสง XLAT 170 แมคโคร 170 พารามเตอรของแมคโคร 171 การใช LABEL ในแมคโคร 172 แมคโครกบโปรแกรมยอย 174 แผนบรหำรกำรสอนประจ ำบทท 18 176 บทท 18 กำรฝกทกษะกำรเขยนโปรแกรมภำษำแอสเซมบลเบองตน 177 การดาวนโหลดและตดตงโปรแกรม MASM32 177 การดาวนโหลดและตดตงโปรแกรม EditPlus 197บรรณำนกรม 213

Page 7: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(6)

สำรบญภำพ

ภำพท หนำ 1.1 แสดงโครงสรางของฮารดแวรของระบบคอมพวเตอร 6 1.2 แสดงแผนภมหวหอม 8 2.1 แสดงบลอกไดอะแกรมของไมโครโพรเซสเซอร 11 2.2 แสดงไมโครคอนโทรลเลอร (Microcontroller) 12 2.3 แสดง Block Diagram ของ ซพย (CPU 8086) 14 2.4 แสดงสถานะแฟลก (Flag Status) ทใชในการตรวจสอบการทางานของซพย (CPU 8086) 15 2.5 แสดงการเกดอนเตอรรพต ทต าแหนง 0000- 03FF ขนาด 1 กโลไบต (1Kbytes) 18 2.6 แสดงรจสเตอรทใชในไมโครโพรเซสเซอร 8086 19 2.7 แสดงโครงสรางรจสเตอรของ 8086 กบการค านวณหาคาต าแหนงในหนวยความจ า 20 2.8 แสดงการแบงกลมของ Segment Register 21 2.9 แสดงต าแหนงเหมอนกบ Paragraph ใน Segment Register 21 2.10 แสดงการบวกคาในรจสเตอร CS และ IP เพอค านวณหา Physical Address 22 2.11 แสดงการบวกคาในรจสเตอร DS กบ EA เพอหา Physical Address 23 2.12 แสดงวธการเขาถงขอมลในหนวยความจ าโดยตรง (Direct Addressing Mode) 24 2.13 แสดงวธการเขาถงขอมลในหนวยความจ าโดยออม (Indirect Addressing Mode) 24 2.14 แสดงวธการเขาถงขอมลในหนวยความจ าโดยใชสแตก (Stack Addressing Mode) 25 5.1 แสดงขนตอนการท างานของหนวยประมวลผล 42 5.2 แสดงการเชอมตอของอปกรณตาง ๆ ผานระบบบส 43 5.3 แสดงการแปลงแอดเดรสจากแบบเซกเมนต : ออฟเซต เปน แอดเดรสขนาด 20 บต 45 5.4 แสดงลกษณะการเหลอมกนของเซกเมนต 46 5.5 แสดงการท างานแบบไปปไลนเทยบกบการท างานแบบปกต 49 5.6 แสดงลกษณะของบสทมการใชหนวยความจ าแคช 50 6.1 แสดงการเรยงไบตขอมลในหนวยความจ า 55 7.1 แสดงแฟลกตาง ๆ 67 9.1 แสดงการจดเรยงขอมลในหนวยความจ าจากการประกาศในสวนของโปรแกรมท 9.2 93 9.2 แสดงการเปลยนแปลงคาหลงการท างานของโปรแกรมท 9.5 95 11.1 แสดงโครงสรางควบคมแบบ repeat until 113 11.2 แสดงโครงสรางควบคมแบบ while 114 11.3 แสดงโครงสรางควบคมแบบ for loop 115 12.1 แสดงการท างานของแสตก 102 12.2 แสดงการเปลยนแปลงของแสตกในการเรยกใชโปรแกรมยอย 103 13.1 แสดงขนตอนการแปลงคาของ AL 130 13.2 แสดงลกษณะของการเลอนบต 131

Page 8: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(7)

หนำ 13.3 แสดงลกษณะของการเลอนบต และการหมนบต 133 13.4 แสดงลกษณะการท างานของค าสงหมนบต 133 13.5 แสดงลกษณะการท างานของค าสงหมนบตทผานแฟลกทด 134 15.1 แสดงการเกบต าแหนงทอยของคาสงถดไป (return address) บน stack 149

Page 9: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(8)

สำรบญตำรำง

ตำรำงท หนำ

2.1 แสดงชนดของการอางองหนวยความจ าในเซกเมนตรจสเตอร 22 7.1 แสดงค าสงส าหรบการก าหนดคาแฟลกแฟลกตาง ๆ 69 7.2 แสดงผลกระทบของค าสงตาง ๆ ตอแฟลก 75 8.1 แสดงบรการของ DOS ทส าคญและพารามเตอร 84 8.2 แสดงตารางรหสแอสก 89 9.1 แสดงค าสงเทยมส าหรบการระบขนาดขอมลในการจองหนวยความจ า 92 10.1 แสดงค าสงกระโดดตางๆ 101 13.1 แสดงคาของการกระท าทางตรรกศาสตร 128 13.2 แสดงผลของการใชค าสงทางตรรกศาสตรกบขอมล 130 13.3 แสดงตวอยางผลลพธของการเลอนบตของขอมลตาง ๆ 132 13.4 แสดงตวอยางผลลพธของการเลอนบตแบบคดเครองหมาย 132

Page 10: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(9)

แผนบรหำรกำรสอนประจ ำวชำ

รำยวชำ ไมโครโพสเซสเซอรและภาษาแอสเซมบล รหสวชำ 4122705 (Microprocessor and Assembly Language) จ ำนวนหนวยกต – ช.ม. 3 (2-2-5) เวลำเรยน 45 ชวโมง/ภำคเรยน ค ำอธบำยรำยวชำ ศกษาความรทวไปเกยวกบไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร โครงสรางของไมโครโพรเซสเซอร การเกดอนเทอรรพต การตดตอสอสารกบหนวยความจ า การตดตอรบสงขอมลกบอปกรณภายนอก การเขยนภาษาแอสแซมบลเพอใชในการควบคมไมโครคอนโทรลเลอรและไมโครโพรเซสเซอร วตถประสงคทวไป 1.1 เพอใหผเรยนมความรความเขาใจ เกยวกบไมโครโพรเซสเซอรและไมโครคอนโทรลเลอรโครงสราง ของไมโครโพรเซสเซอร การเกดอนเทอรรพต การเกดอนเตอรรพต รจสเตอรของซพย 8086 การระบต าแหนงในรจสเตอร การเขาถงขอมลในหนวยความจ า 1.2 เพอใหผเรยนมความรความเขาใจ สามารถทจะใชโปรแกรมดบก (Debug) ในการตรวจสอนการ ท างานในระดบบตค าสงและการจดการกบบตขอมลได 1.3 เพอใหผเรยนมความรความเขาใจสามารถเขยนภาษาโปรแกรมแอสแซมบลเบองตนได เนอหำ บทท 1 ระบบคอมพวเตอร 4 คาบ/สปดาห อธบายถงองคประกอบของระบบคอมพวเตอร ชนดของคอมพวเตอร ตลอดจนโคร งสรา ง ของฮารดแวรและซอฟตแวรทน ามาใชรวมกบระบบคอมพวเตอร บทท 2 ไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร 4 คาบ/สปดาห อธบายถงของแตกตางระหวางไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร ชนดของไมโคร โพรเซสเซอร โครงสรางสถาปตยกรรมของไมโครโพรเซสเซอร การเกดอนเตอรรพต การระบ ต าแหนงในรจสเตอรและการเขาถงขอมลใน หนวยความจ า บทท 3 ระบบจ ำนวน 4 คาบ/สปดาห อธบายความหมายของตวเลขในหลกตาง ๆ การแปลงคาจากเลขฐานสบเปนเลขฐานสอการ บวกและการลบเลขฐานสอง การคณและการหารเลขฐานสอง เลขฐานแปดและเลขฐานสบ หก บต, ไบต, เวรด และดบเบลเวรด ระบบเลข 2’ Complement ระบบเล BCD (Binary Code Decimal) และมาตรฐาน IEEE 754 บทท 4 ภำษำส ำหรบเขยนโปรแกรมคอมพวเตอร 4 คาบ/สปดาห อธบายภาษาตาง ๆ ส าหรบคอมพวเตอร ระดบของภาษาส าหรบเขยนโปรแกรมกาแปลภาษา ส าหรบคอมพวเตอรและภาษาแอสเซมบล บทท 5 สถำปตยกรรมคอมพวเตอรเบองตน 4 คาบ/สปดาห อธบายหนวยประมวลผลกลาง หนวยความจ า การเชอมตอระหวางอปกรณตาง ๆ และ สถาปตยกรรมของระบบไมโครโปรเซสเซอรตระกล 80x86

Page 11: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(10)

บทท 6 ค ำสงโอนยำยขอมล 4 คาบ/สปดาห อธบายค าสงในการโยนยายขอมล การใชค าสง MOV เครองมอในการทดลองการโปรแกรม ภาษาแอสเซมบล ค าสงในการโยนยายขอมล และค าสงทวไป บทท 7 แฟลกและค ำสงคณตศำสตร 4 คาบ/สปดาห อธบายการท างานของแฟลก (Flags) ค าสงทางคณตศาสตร กลมค าสงบวกและลบ กลม ค าสงคณและหาร กลมค าสงแปลงขนาดตวเลข

บทท 8 โปรแกรมภำษำแอสแซมบลเบองตน 4 คาบ/สปดาห อธบายรปแบบของโปรแกรมภาษาแอสเซมบล แบบเกา เปรยบเทยบกบรปแบบของ โปรแกรมภาษาแอสเซมบลแบบใหม ขนตอนการแปลโปรแกรม การเรยกใชบรการของ DOS ตารางรหสแอสก บทท 9 กำรประกำศขอมล 4 คาบ/สปดาห อธบายรปแบบและวธการประกาศขอมล การอางใชขอมลทประกาศไว การอางต าแหนงของ ขอมล การประกาศขอมลส าหรบการใชบรการของ DOS หมายเลข 09h และ 0Ah การใช บรการของ DOS หมายเลข 0Ah : การอานขอความ และหมายเลข 09h : การอานพมพ ขอความ บทท 10 ค ำสงกระโดดและค ำสงกำรกระท ำซ ำ 4 คาบ/สปดาห

อธบายค าสงกระโดดแบบไมมเงอนไข ค าสงกระโดดทพจารณาคาจากแฟลก ค าสงกระโดดทพจารณาคาจากรจสเตอร มความรและความเขาใจเกยวกบกลมค าสงวนรอบ เชน LOOP LOOPZ และ LOOPNZ เปนตน

บทท 11 โครงสรำงควบคม 4 คาบ/สปดาห อธบายการสรางโครงสรางการตดสนใจแบบ if-then-else การสราง repeat until loop การสราง while loop และการสราง for loop บทท 12 โปรแกรมยอยเบองตน 4 คาบ/สปดาห อธบายค าสงทรองรบการเรยกโปรแกรมยอย การประกาศโปรแกรมยอย ค าสงเกบขอมล (PUSH) และดงขอมล (POP) จากแสตกและตวอยางการใชงานโปรแกรมยอย บทท 13 กำรกระท ำระดบบต 4 คาบ/สปดาห อธบายค าสงทางตรรกศาสตร การประยกตใชงานค าสงทางตรรกศาสตร การใชค าสงเลอน บต ตวอยางการใชงานค าสงเลอนบต การประยกตใชงานค าสงเลอนบต ค าสงหมนบต ค าสงหมนบตทผานแฟลกทด ตวอยางการใชงานค าสงเกยวกบการประมวลผลระดบบต บทท 14 กำรอำงแอดเดรส 4 คาบ/สปดาห อธบายเกยวกบการอางแอดเดรสในเซกเมนตทงส คอ CS, DS, SS และ ES การประยกตใช งานค าสงในการอางแอดเดรสแบบตาง ๆ บทท 15 กำรขดจงหวะ 4 คาบ/สปดาห อธบายกระบวนการขดจงหวะและการใชค าสงตดตอกบอปกรณใน 8086 บทท 16 กำรจดกำรกบสำยขอมล 4 คาบ/สปดาห อธบายค าสงจดการสายขอมลตางๆ เชน ค าสง MOVS, ค าสง REP, ค าสง STOS, ค าสง LODS, ค าสง REPZ, ค าสง CMPS, ค าสง REPNZ และค าสง SCAS เปนตน

Page 12: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(11)

บทท 17 ค ำสงตำรำงและกำรสรำงแมคโคร 4 คาบ/สปดาห อธบายค าสง XLAT ความหมายขอดและขอเสยของการใชแมคโคร พารามเตอรของแมค โครการใช LABEL ในแมคโครและแมคโครกบโปรแกรมยอย บทท 18 กำรฝกทกษะกำรเขยนโปรแกรมภำษำแอสเซมบลเบองตน 4 คาบ/สปดาห อธบายมวธการดาวนโหลดและตดตงโปรแกรม MASM32 รวมถงวธการดาวนโหลดและ ตดตงโปรแกรม EditPlus การประยกตใชงานค าสงและฝกทกษะการเขยนโปรแกรม ภาษาแอสเซมบลและตรวจสอนความถกตองของโปรแกรมทเขยนขนมาเบองตนได

Page 13: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

(12)

วธสอนและกจกรรม - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอกำรเรยนกำรสอน - สออเลกทรอนกส - ตอบค าถาม - ภาพ - เอกสารอางองประกอบการคนควา กำรวดผลและประเมนผล 1. กำรวดผล 1.1 คะแนนระหวางภาครวม รอยละ 60 1.1.1 คะแนนเขาชนเรยน รอยละ 10 1.1.2 คะแนนจดท ารายงายกลม รอยละ 10 1.1.3 คะแนนฝกปฏบตการ รอยละ 10 1.1.4 คะแนนสอนกลางภาค รอยละ 30 1.2 คะแนนสอนปลายภาครวม รอยละ 40 1.2.1 คะแนนเขาสอนปลายภาค รอยละ 30 1.2.2 คะแนนฝกปฏบตการ รอยละ 10 2. กำรประเมนผล

ระดบคะแนน ควำมหมำยของผลกำรเรยน คำระดบคะแนน คำรอยละ A ดเยยม 4.0 90 - 100

B+ ดมาก 3.5 85 – 89 B ด 3.0 75 – 84

C+ ดพอใช 2.5 70 – 74 C พอใช 2.0 60 – 69

D+ ออน 1.5 55 – 59 D ออนมาก 1.0 50 – 54 E ตก 0.0 0 – 49

Page 14: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

1

แผนบรหารการสอนประจ าบทท 1 หวขอเนอหา - องคประกอบของระบบคอมพวเตอร - ชนดของคอมพวเตอร - โครงสรางของฮารดแวรของระบบคอมพวเตอร - ระบบซอฟตแวรของคอมพวเตอร วตถประสงคเชงพฤตกรรม - ใหความหมายองคประกอบของระบบคอมพวเตอรได - สามารถแยกชนดของคอมพวเตอรตามรปแบบและวธการน าไปใชงานได - อธบายโครงสรางของฮารดแวรของระบบคอมพวเตอร - มความรและความเขาใจเกยวกบระบบซอฟตแวรของคอมพวเตอร วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - ตอบค าถาม - ภาพ - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 15: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

2

คอมพวเตอร คอ อปกรณทมนษยสรางขนเพออ านวยความสะดวกและชวยในการท างานของมนษย โดย

มการใชงานทแตกตางกนออกไป พฒนาการของคอมพวเตอรมมาอยางตอเนองจนในปจจบนคอมพวเตอรเปนทนยม และราคาถกลงมากเมอเทยบกบสมยกอน อกทงความสามารถและประสทธภาพของคอมพวเตอรกเพมขนทงในดานความเรวในการประมวลผลขอมล ความสามารถในการเกบขอมลและปลอดภยเพมมากขนดวย 1.1 องคประกอบของระบบคอมพวเตอร 1.1.1 ฮารดแวร (hardware) ซงเปนอปกรณทเราสามารถจบตองได ฮารดแวร แบงเปน 5 ประเภท อปกรณรบขอมล (input), อปกรณสงขอมล (output), อปกรณประมวลผลขอมล (system unit), อปกรณเกบขอมล (storage device), และอปกรณทใชในการสอสารขอมล (communication device) 1.1.2 ซอฟตแวร (software) คอ ชดของค าสงทเปนตวก าหนดการท างานตางๆ ของคอมพวเตอร สามารถเรยกไดอกอยางหนงวา โปรแกรม เชน window, winamp, winzip, wordprocessor, powerdvd เปนตน 1.1.3 สวนบคคล (peopleware) คอ บคคลทเกยวของกบคอมพวเตอร เชน บคคลทวไป, นกเขยนโปรแกรม, นกวเคราะหระบบ เปนตน 1.1.4 ขอมล (data) คอ ขอมลทเกบอยในคอมพวเตอรเพอไวใชงานตอไป ซงสามารถเปนได ทง รหสตางๆ ตวอกขระ ตวเลข รปภาพ เสยง และ วดโอ เปนตน

1.2 ชนดของคอมพวเตอร เราสามารถแบงคอมพวเตอรตามรปแบบการใชงานไดเปน 5 ชนด ไดแก 1.2.1 คอมพวเตอรสวนบคคล (personal computer) เปนคอมพวเตอรทสามารถท างานไดทง รบขอมลเขา ประมวลผล สงขอมลออก และเกบขอมล ดวยตวเอง 1.2.2 คอมพวเตอรพกพา (mobile computer) และอปกรณพกพา (mobile device) เปนคอมพวเตอรสวนบคคลทผใชสามารถพกพาไปไหนกได และอปกรณพกพา หมายถง อปกรณเกยวกบคอมพวเตอรทมขนาดเลกพอทคณสามารถถอไวในมอได 1.2.3 เครองใหบรการขนาดกลาง (midrange servers) เปนคอมพวเตอรทมขนาดใหญ และมประสทธภาพในการค านวณสง ซงสามารถรองรบการท างานของเครองคอมพวเตอรทเชอมโยงกนบนเนตเวรค (network) มากกวาพนเครองในเวลาเดยวกน 1.2.4 เมนเฟรม (mainframe) เปนคอมพวเตอรทมขนาดใหญ ราคาแพง และมประสทธภาพสง ทสามารถรองรบการท างานของเครองคอมพวเตอรบนเครอขายมากกวาพนเครอง ในเวลาเดยวกน และสามารถเกบขอมล ค าสงตางๆ ไดมหาศาล 1.2.5 ซปเปอรคอมพวเตอร (supercomputer) เปนคอมพวเตอรทมการท างานทเรวทสดในบรรดาประเภทของคอมพวเตอรทกลาวมา มประสทธภาพสงสด และราคาแพงทสด คอมพวเตอรประเภทนใชส าหรบการท างานทมการค านวณทซบซอนมากๆ

บทท 1 ระบบคอมพวเตอร (Computer System)

Page 16: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

3

ชนดของคอมพวเตอร สามารถแบงไดตามขนาดและการใชงานของคอมพวเตอรไดดงน ซปเปอรคอมพวเตอร (super computer)

ซปเปอรคอมพวเตอรเปนคอมพวเตอรทมขนาดใหญ มสมรรถนะสง สามารถประมวลไดเรว และม

ความสามารถในการเกบขอมลขนาดใหญ เชน สถตประชากร การขดเจาะน ามน คอมพวเตอรชนดนมราคาแพงทสด สวนใหญจะใชงานในองคกรทมการท างานทตองการความเรวสง เชน งานวเคราะหภาพถายจากดาวเทยมอตนยมวทยา หรอดาวเทยมส ารวจทรพยากร งานวเคราะหพยากรณอากาศ งานท าแบบจ าลองโมเลกล ของสารเคม งานวเคราะหโครงสรางอาคาร ทซบซอน ปจจบนประเทศไทย มเครองซเปอรคอมพวเตอร Cray YMP ใชในงานวจย อยทหองปฏบตการคอมพวเตอรสมรรถภาพสง (HPCC) ศนยเทคโนโลย อเลกทรอนกส และคอมพวเตอรแหงชาต ผใชเปนนกวจยดานวศวกรรม และวทยาศาสตรทวประเทศ บรษทผผลตทเดนๆ ไดแก บรษทเครย รเสรซ (Cray Research), บรษท เอนอซ (NEC) เปนตน

เมนเฟรม (mainframe)

เมนเฟรมเปนคอมพวเตอรขนาดใหญ แตเลกกวา และมสมรรถนะต ากวาซปเปอรคอมพวเตอร มราคาแพง นยมใชงานกบธรกจขนาดใหญ เชน ธนาคาร โรงแรม หรอ ใชเปนเซรฟเวอรขององคการขนาดใหญ เปนตนไดชอวาเมนเฟรมคอมพวเตอร กเพราะครงแรกทสรางคอมพวเตอรลกษณะนไดสรางไวบนฐานรองรบ ทเรยกวา คสซ (Chassis) โดยมชอเรยกฐานรองรบนวา เมนเฟรม นนเอง คอมพวเตอรเมนเฟรม ทมชอเสยงมาก คอ เครองของบรษท IBM

Page 17: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

4

มนคอมพวเตอร (minicomputer)

DEC PDP 8 ป 1965 มนคอมพเตอรเปนคอมพวเตอรทมสมรรถนะต ารองลงมาจากเมนเฟรม คอท างานไดชากวา แตราคา

ยอมเยาวกวาเมนเฟรม ใชในธรกจขนาดกลางและเลกทตองการความสามารถในการประมวลผลสงและราคาไมสงเกนไป เชน ตามองคกร และสถานศกษาระดบอดมศกษา ตางๆ เปนตน

ไมโครคอมพวเตอร (microcomputer) หรอ คอมพวเตอรสวนบคคล (personal computer)

คอมพวเตอรสวนบคคล หรอ คอมพวเตอรแบบตงโตะ(Desktop computer) หาซอไดงาย ราคาไมแพง มขนาดเลกกวามนคอมพวเตอร บคคลทวไปสามารถซอไวใชงาน หรอ เพอความบนเทง ได เหมาะกบการใชงานทไมจ าเปนตองใชความเรวสงมาก แตในปจจบนความสามารถในการท างานของคอมพวเตอรสวนบคคลไดพฒนาสงขนมาก และราคาไมแพง ท าใหเปนทนยมในปจจบน อกทงยงไดรบการพฒนาไปอยางรวดเรวมากบางเครองมความสามารถมากกวาเครองเมนเฟรมในสมยแรกๆ เสยอกดวยราคาทถกกวาหลายรอยเทาทเดยว และยงไดมการพฒนาคอมพวเตอรสวนบคคลในรปแบบทพกพาสะดวกไดแก

โนตบค (Notebook Computer, Laptop)

เปนคอมพวเตอรสวนบคคลขนาดเลกประมาณสมดโนต โดยทวไปมราคาสงกวาและประหยดไฟมากกวา

Page 18: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

5

คอมพวเตอรตงโตะ มแบตเตอรรในตว สามารถพกพาไปทใดกได และเปดใชไดไมจ าเปนตองมแหลงจายไฟ สวนใหญสามารถเปดใชไดประมาณ 4 ชวโมง ปจจบนไดพฒนาใหมขนาดบางและน าหนกเบา อกทงยงมความสามารถเทยบเทากบคอมพวเตอรตงโตะอกดวย

เทบเลต (tablet PC)

มลกษะคลายกระดานเขยนตวหนงสอ สามารถใชงานไดเหมอนสมดจดบนทกหรอสมดโนต โดยคณสามารถวาด หรอเขยนตวหนงสอลงไปบนหนาจอไดเลย ไมจ าเปนตองใชคยบอรดเหมาะส าหรบคนทชอบเขยนมากกวาชอบพมพในปจจบนเทบเลตสามารถบนทกเสยงไดดวย

พดเอ (PDA: Personal Digital Assistant)

เปนคอมพวเตอรขนาดเลกเทาฝามอ ความสามารถในการประมวลนอยกวาคอมพวเตอรสวนบคคลทวไป แตยงสามารถดหนง ฟงเพลง เลนอนเตอรเนตได มปฏทน และสมดนดหมาย บางรนสามารถเปนโทรศพทเคลอนทไดดวย มอปกรณรบเขา คอ สไตลลส (stylus) ซงมลกษณะคลายปากกา เวลาใชจะอาศยแรงกดลงไปบนหนาจอ พดเอ บางรนสามารถสงงานดวยเสยงได

1.3 โครงสรางของฮารดแวรของระบบคอมพวเตอรโดยทวไปแลวคอมพวเตอรแตละรนแตละยหอ กจะมการวางสวนประกอบตาง ๆ ไมเหมอนกน แตถาเรามองโครงสรางของคอมพวเตอรในรปแบบ Module แลวจะเหนสวนประกอบตาง ๆ ทมรปแบบเหมอนกนดงน

Page 19: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

6

รปท 1.1 แสดงโครงสรางของฮารดแวรของระบบคอมพวเตอร

1.3.1 หนวยประมวลผลกลาง (Central Processing Unit : CPU) หนวยประมวลผลกลางจดไดวาเปนสวนทส าคญทสดของคอมพวเตอร เปรยบเสมอนเปนสมองของเครองคอมพวเตอร โดยท าหนาทในการค านวณคาตาง ๆ ตามค าสงทไดรบ และควบคมการท างานของสวนประกอบอน ๆ ทงหมด ในระบบไมโครคอมพวเตอร หนวยประมวลผลกลางจะถกสรางใหอยในรป วงจรรวม (Integrated Circuit: IC) เพยงตวเดยวท าใหงายในการน าไปใชงาน ภายในหนวยประมวลผลกลางมสวนประกอบยอย ๆ สามสวนคอ

- หนวยค านวณทางคณตศาสตรและตรรกะ (Arithmetic and Logic Unit : ALU) เปนหนวยทท าหนาทประมวลผลโดยใชวธทคณตศาสตร เชน บวก ลบ คณ หาร หรอ ท าหนาทประมวลผลทางตรรกะ เชน AND OR NOT COMPLEMENT เปนตน รวมทงยงท าหนาทในการเปรยบเทยบคาตาง ๆ อกดวย

- หนวยเกบขอมลชวคราว (Register) เปนหนวยความจ าขนาดเลก ท าหนาทเปนทพกขอมล ชวคราวกอนทจะถกน าไปประมวลผล โดยปกตแลวในหนวยประมวลผลกลางจะม Register ส าหรบเกบขอมลไมเกน 64 ตว การอางองขอมลของ Register จะมความเรวเทากบความเรวของหนวยประมวลผลกลาง เพราะเปนหนวยความจ าสวนทอยภายในตวหนวยประมวลผลกลางจงไมตองไปอางองถงภายนอกหนวยประมวลผล

- หนวยควบคม (Control Unit) เปนเสมอนหนวยบญชาการของระบบคอมพวเตอรทงหมด ท าหนาทก าหนดจงหวะการท างานตาง ๆ ของคอมพวเตอรไมเวนแมแตสวนประกอบอน ๆ ของ CPU นอกจากนยงท าหนาทควบคมการสงขอมลระหวางหนวยตาง ๆ ในคอมพวเตอร

หนวยประมวลผลกลาง Central Processing Unit

หนวยน าขอมลเขา Input Unit

หนวยแสดงผล Output Unit

หนวยความจ า Memory Unit

Register ALU

Control Unit

Page 20: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

7

1.3.2 หนวยความจ า (Memory Unit) เปนหนวยทท าหนาทเกบขอมลของระบบคอมพวเตอร ไมวาจะเปนตวเลขหรอขอความแมกระทงค าสง

ตางๆ ในโปรแกรมทจะใชสงงานระบบคอมพวเตอร โดยทวไปแลวหนวยความจ าจะถกสรางมาบน IC เพอใหมความจสงแตมขนาดเลก ขอมลทเกบในหนวยความจ าจะมสถานะเพยงแคเปดวงจร (0) หรอปดวงจร (1) เทานน หนวยความจ าสามารถแบงออกไดเปนสองประเภทใหญ ๆ คอ

- ROM (Read Only Memory) เปนหนวยความจ าสวนท CPU สามารถอานขอมลออกมาใชงานไดตามกรรมวธปกต แตเมอตองการจะเขยนขอมลลงไปจะตองใชวธพเศษ ท าใหตองมวงจรในการเขยนขอมลโดยเฉพาะ ขอดของหนวยความจ าแบบนกคอ ขอมลทเขยนลงไปแลวจะคงอยไปตลอดแมวาจะปดเครองคอมพวเตอรไปแลวกตาม ดงนน ROM จงมกจะถกใชเกบโปรแกรมส าหรบเรมตนการท างานของเครองคอมพวเตอร

- RAM (Random Access Memory) เปนหนวยความจ าท CPU สามารถอานเขยนขอมลไดดวยกรรมวธปกตของระบบ ท าใหสามารถเปลยนแปลงขอมลไดตลอดเวลา RAM จงมกจะถกน าไปใชเกบขอมลระหวางการท างานของระบบ แต RAM กมขอเสยคอขอมลทเกบไวทงหมดจะสญหายไปทนททหยดจายไฟใหกบหนวยความจ า

1.3.3 หนวยน าขอมลเขาและหนวยแสดงผล (I/O Unit) เปนหนวยทเปรยบเสมอนประสาทของเครองคอมพวเตอร ท าหนาทรบการตดตอจากภายนอกเขาสระบบ

และแสดงผลทไดจากการท างานของระบบออกสภายนอก เชน คยบอรด, จอภาพ, ล าโพง, Disk Drive เปนตน โดยปกตแลวเรามกจะแบงความหรหราของเครองคอมพวเตอรโดยดจากหนวยน าขอมลเขาและหนวยแสดงผลเปนสวนใหญ เชน ขนาดของจอภาพ, ความจของ Disk เปนตน

1.4 ระบบซอฟตแวรของคอมพวเตอร

เมอคอมพวเตอรไมมซอฟตแวรกไมตางไปจากเครองประดบราคาสงชนหนงเทานน โดยปกตแลวราคาของระบบคอมพวเตอรสวนใหญจะเปนราคาของซอฟตแวร และเปนสวนทจะก าหนดอนาคตของระบบคอมพวเตอรวาจะอยในตลาดไดนานเทาใด

ความหมายของซอฟตแวรมไดหลายแบบตามแตจะใชค าพดใด ซงความหมายโดยรวมกคอ “ซอฟตแวรหมายถง กลมของค าสงทก าหนดการท างานของคอมพวเตอรเพอใหบรรลจดประสงคทตองการ” การพฒนาระบบซอฟตแวรใหกบคอมพวเตอรเครองหนง มกจะมการก าหนดประเภทของซอฟตแวรออกเปน 3 ประเภทคอ

1.4.1 ซอฟตแวรระบบ (System Software) เปนซอฟตแวรสวนทท าหนาทควบคมการท างานของฮารดแวรโดยตรงเพอท าใหระบบคอมพวเตอรโดยรวมมประสทธภาพสงทสด และยงท าหนาทใหบรการการสงงานฮารดแวรของซอฟตแวรประเภทอน ๆ เพออ านวยความสะดวกในเรองของการรวมรายละเอยดการสงงานทซบซอนใหเหลอเพยงการสงงานงาย ๆ เชน การอานไฟลจากดสกกสามารถสงงานดวยค าสงงาย ๆ เพยงค าสงเดยวใหซอฟตแวรระบบสงงานฮารดแวรสวนทท าหนาทจดการกบดสกในเรองรายละเอยดตอไป

Page 21: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

8

1.4.2 System Library เปนสวนทรวบรวมการค าสงการท างานทสลบซบซอนขนมาจากซอฟตแวร ระบบ ท าหนาทใหบรการการ

ท างานกบซอฟตแวรประยกตตอไป เชน ในซอฟตแวรระบบอาจจะมค าสงแคอานเขยนไฟล แตใน System Library อาจจะมค าสงทจดการกบไฟลหลาย ๆ ไฟลในรปแบบของฐานขอมลเปนตน 1.4.3 ซอฟตแวรประยกต (Application Software)

เปนซอฟตแวรทพฒนาขนเพอใชกบงานดานใดดานหนงโดยเฉพาะ ซอฟตแวรประยกตอาจจะเปนซอฟตแวรทพฒนาขนมาเองหรอซอมาในรปโปรแกรมส าเรจรปกได ปจจบนโปรแกรมส าเรจรปของระบบไมโครคอมพวเตอรมอยมากมายในหลายดาน เชน Microsoft Office เปนตน

ความสมพนธกนของสวนประกอบตาง ๆ ความสมพนธกนระหวางฮารดแวรและซอฟตแวรประเภทตาง ๆ สามารถทจะแสดงอยในรปของแผนภม หวหอมได โดยฮารดแวรจะอยชนในสด ถดมาจะเปนสวนของซอฟตแวรระบบ System Library และซอฟตแวรประยกตตามล าดบ โดยระบบในชนนอกจะเรยกใชการบรการของระบบในชนในกวาลงไปและคอยใหบรการแกระบบในชนทอยถดออกมาจากตวเอง

User

ซอฟตแวรประยกต ซอฟตแวรประยกต System Library System Library ซอฟตแวรระบบ เครองคอมพวเตอร

รปท 1.2 แสดงแผนภมหวหอม

Page 22: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

9

สรป ระบบคอมพวเตอร ประกอบไปดวยสวนส าคญหลายสวน เชน ฮารดแวร (hardware) ซอฟทแวร (software) สวนบคคล (peopleware) และขอมล (data) เปนตน ซงแตละสวนมความสมพนธกนและสามารถท างานโดยประสานงานกนเพอท าใหระบบคอมพวเตอรท างานไดอยางมประสทธภาพสงทสด ชนดของคอมพวเตอร นอกจากนเรายงสามารถแบงคอมพวเตอรตามรปแบบการใชงานไดเปน 5 ชนด ไดแกคอมพวเตอรสวนบคคล(personal computer) คอมพวเตอรพกพา (mobile computer) และอปกรณพกพา (mobile device) เครองใหบรการขนาดกลาง (midrange servers) เมนเฟรม (mainframe) และซปเปอรคอมพวเตอร (supercomputer) ค าถามทบทวน 1. จงอธบายสวนประกอบของระบบคอมพวเตอรวาควรมสวนประกอบอยางนอยทสดอะไรบาง 2. ชนดของคอมพวเตอร สามารถแบงไดตามขนาดและการใชงานของคอมพวเตอรไดเปนอยางไร 3. ถาเรามองโครงสรางของคอมพวเตอรในรปแบบ Module แลวจะเหนสวนประกอบตาง ๆ ทมรปแบบ เหมอนกนอยางไร จงอธบายพรอมยกตวอยางประกอบ 4. การก าหนดประเภทของซอฟตแวร แบงเปนกประเภท อะไรบาง

Page 23: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

10

แผนบรหารการสอนประจ าบทท 2 หวขอเนอหา - ไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร - ชนดของไมโครโพรเซสเซอร - โครงสรางสถาปตยกรรมของไมโครโพรเซสเซอร - การเกดอนเตอรรพต - รจสเตอรของซพย 8086 - การระบต าแหนงในรจสเตอร - การเขาถงขอมลในหนวยความจ า วตถประสงคเชงพฤตกรรม - เขาใจความหมายและขอแตกตางระหวางไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร - ชนดของไมโครโพรเซสเซอรและโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอร - อธบายและท าความเขาใจการเกดอนเตอรรพต รจสเตอรของซพย 8086 การระบต าแหนงในรจสเตอร และการเขาถงขอมลในหนวยความจ า วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 24: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

11

คอมพวเตอรมการพฒนาอยางตอเนองเรมตงแตยคแรกทมการใชหลอดสญญากาศแทนวงจรในการ

ค านวณตอมาในป ค.ศ. 1954 ไดมการคดคนการใชทรานซสเตอรแทนหลอดสญญากาศ โดยบรษท Taxas Instrument และในชวงทศวรรษท 1950 นเองกไดมการคดคนวงจรรวม (Integrated Circuit) ขนมาใชในกบเครองคอมพวเตอร จงท าใหเครองคอมพวเตอรมขนาดเลกลงและใชพลงงานไฟฟานอยลง มความเรวเพมมากขน และมการพฒนาวงจรรวมขนาดใหญทเรยกวา Very Large Scale Integrated Circuit ท าใหสามารถรวมการประมวลผลทงหมดไวในชพตวเดยว เชน ไมโครโพรเซสเซอรตระกลเพนเทยม (Pentium) ของบรษทอนเทล (Intel Corporation) และสามารถรวมไมโครโพรเซสเซอร หลายๆ ตวใหสามารถท างานรวมกนไดในเวลาเดยวกน นอกจากนนจ านวนขอมลทใชในการประมวลผลกดพฒนาขนอยางตอเนองจาก 8 บต มาเปน 32 บต และ 64 บต ตามล าดบ 2.1 ไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร ไมโครโพรเซสเซอร (Microprocessor) เปนอปกรณอเลกทรอนกสชนดหนงซงมลกษณะวงจรรวม (Integrated Circuit) หรอชพ (Chip) โครงสรางภายในจะมวงจรรวมขนาดใหญประกอบไปดวย หนวยค านวณทางคณตศาสตร (Arithmetic Unit) รจสเตอร (Register) บสขอมล (Data Bus) บสควบคม (Control Bus) บสทอย (Address Bus) รวมกนเปนหนวยประมวลผลกลาง (Central Processing Unit) เพอท าหนาทในการประมวลผลตามโปรแกรมค าสงทปอนเขามา แสดงไดดงรปท 2.1

รปท 2.1 แสดงบลอกไดอะแกรมของไมโครโพรเซสเซอร (Block Diagram of Microprocessor)

บทท 2 ไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร (Microprocessor and Microcontroller)

Page 25: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

12

ไมโครคอนโทรลเลอร (Microcontroller) เปนชพประมวลผลประเภทหนงซงท าหนาตามโปรแกรมหรอขดค าสงทเขยนขนมา ภายในประกอบดวยวงจรรวมขนาดใหญ (Very Large Scale Integrated Circuit) ประกอบไปดวย หนวยค านวณทางคณตศาสตร (Arithmetic Unit) รจสเตอร (Register) บสขอมล (Data Bus) บสควบคม (Control Bus) บสทอย (Address Bus) รวมกนเปนหนวยประมวลผลกลาง (Central Processing Unit) หนวยความจ า (Memory) วงจรนบ (Counter Circuit) วงจรจบเวลา (Timing Circuit) หรอวงจรอนๆ รวมอยในชพไมโครคอนโทรลเลอร แสดงไดดงรปท 2.2

รปท 2.2 แสดงไมโครคอนโทรลเลอร (Microcontroller)

2.2 ชนดของไมโครโพรเซสเซอร จดแบงตามลกษณะการใชงานได 3 ประเภท 2.2.1 Dedicated or Embedded Controller เปนไมโครโพรเซสเซอรทใชในอปกรณอเลกทรอนกสโดยเฉพาะท เชน ใชในการควบคมการท างานของเครองซกผา เตาไมโครเวฟ เครองคดเลข และอนๆ โดยมากมกจะเรยกไมโครโพรเซสเซอร ประเภทนวา “ไมโครคอนโทรลเลอร (Micro Controller)” เชน TMS-1000 ของบรษท Texas Instrument ส าหรบบรษท Intel ไดเรมพฒนาจาก ชปขนาด 4 bits และในป 1976 บรษท Intel ไดเปดตว 8048 ซงเปนไมโครคอนโทรลเลอรขนาด 8 bits ทม RAM, ROM และ I/O port ภายในชปตวเดยวกน ในปจจบนม 8096 ซงมทง 16-bit CPU, RAM, ROM, UART, Port, Timer และ analog-to-digital converter ขนาด 16-bit ภายในชปตวเดยว 2.2.2 Bit-slice Processor

เปนไมโครโพรเซสเซอรทไดรบการพฒนาใหสามารถน าฟงกชนบางอยางทไมมในไมโครคอนโทรลเลอร เชน ฟงกชนการท างานแบบ Multiplexer และ Sequencer เขามาท างานบนชพประมวลผลได และสามารถควบคมการท างานดวยโปรแกรม โดยโปรแกรมส าหรบฟงกชนการท างานตางๆ เหลานน จะเรยกวา “Micro Code” 2.2.3 General-purpose Processor

เปนไมโครโพรเซสเซอรทใชในอปกรณอเลกทรอนกสโดยทวไป ซงควบคมการท างานดวยโปรแกรม แบง ตามรนทพฒนาโดยบรษทอนเทล ((Intel Corporation) ผผลต โดยมการพฒนามาตงแตรน 4040 ซงเปนไมโครโพรเซสเซอรขนาด 4 บต และพฒนาเปนรน Pentium จ าแนกไดดงน

Page 26: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

13

8086 ม data bus ขนาด 16 bits ดงนนจงสามารถ อาน/เขยนขอมลไดครงละ 16 bit 8086 ม data bus ขนาด 16 bits ดงนนจงสามารถ อาน/เขยนขอมลไดครงละ 16 bits หรอ 8 bits

8086 ม address bus ขนาด 20 bits ดงนนจงสามารถระบต าแหนงในหนวยความจ าไดสงสด 220 หรอ 1,048,576 ต าแหนง โดยแอดเดรสแตละต าแหนงจะจดเกบขอมลขนาด 8 bits ขอมลขนาด 16 bit word จะถกจดเกบไวในหนวยความจ า ต าแหนงทแอดเดรสอยตอจากกน ดงนน ถาไบตแรกของ word ถกจดเกบไวใน memory address เลขค 8086 จะสามารถอานไดภายในการปฏบตเพยงครงเดยว แตถาไบตแรกของ word ถกจดเกบไวใน memory address เลขค 8086 จะอานขอมลนนโดยใช Bus Operation 2 ครง (อานทละ byte)

8088 เปนไมโครโพรเซสเซอรขนาด 16 bit (ALU, รจสเตอรภายใน และชดค าสง (Instruction) จะมขนาด 16

bit word เชนเดยวกบ 8086) - 8088 ม data bus ขนาด 8 bits ดงนนจงสามารถอาน หรอเขยนขอมลไดครงละ 8 bits เทานน ใน การอาน/เขยนขอมลหรอชดค าสงขนาด 16 bits จะตองใช Bus Operation 2 ครง - 8088 ม address bus ขนาด 20 bits ดงนนจงสามารถ address ต าแหนงในหนวยความจ าไดสงสด 220 หรอ 1,048,576 ต าแหนง 80186 และ 80188 เปนไมโครโพรเซสเซอรทปรบปรงมาจาก 8086 และ 8088 นอกจากทงคจะเปน

CPU ขนาด 16 bit แลว ยงม programmable peripheral devices บรณาการรวมอยใน package เดยวกน ชดค าสงตางๆ ใน 80186 และ 80188 เปน superset ของชดค าสงของ 8086 และ 8088 ซงหมายความวาชดค าสงเดมใน 8086 และ 8088 ยงคงสามารถท างานไดใน 80186 และ 80188 โดยมชดค าสงเพมเตมไมมากนก ดงนนโปรแกรมทเขยนใหสามารถท างานไดใน 8086 หรอ 8088 จะยงคงสามารถท างานไดใน 80186 และ 80188 (เรยกวา upward compatible) แตโปรแกรมทเขยนใหท างานบน 80186 และ 80188 อาจจะไมสามารถท างานไดใน 8086 และ 8088

80286 เปนไมโครโพรเซสเซอร ทปรบปรงมาจาก 8086 (มการปรบปรงในระดบสง) ทไดรบการ ออกแบบใหใชเปน CPU ในเครองไมโครคอมพวเตอรทมความสามารถในการท างานแบบ Multi-user/ Multitasking การท างานของ 80286 ใน real address mode จะมฟงกชนการท างานเหมอน 8086 ความเรวสงการท างานใน virtual address mode จะมคณสมบตในการแยกโปรแกรมประยกตของ ผใชออกจากระบบปฏบตการ เพอไมใหสวนของโปรแกรมไปท าลายโปรแกรมระบบได 80386 และ 80486 เปนไมโครโพรเซสเซอร ขนาด 32 bit ซงสามารถระบต าแหนงของแอดเดรสใน

หนวยความจ าไดสงสดถง 4GB และมการน าเทคโนโลย RISC (Reduced Instruction Set Computer) มาใช ท าใหมคณสมบตทซบซอนเพมมากขนในเรองของการท างานแบบ Multi-user/ Multitasking

2.3 โครงสรางสถาปตยกรรมของไมโครโพรเซสเซอร ไมโครโพรเซสเซอรตระกลของ Intel จะมโครงสรางสถาปตยกรรมในลกษณะเดยวกน ส าหรบการเรมตน เราจะศกษาโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรจาก 8086 เพอใหเขาใจไดโดยงาย และไมซบซอนมากนกและกอนทจะเขาไปถงการเขยนโปรแกรมส าหรบท างานบน 8086 จะตองทราบโครงสรางการท างาน

Page 27: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

14

ภายใน ไมวาจะเปน ALU, Flag, Register, Instruction Byte Queue และ Segment Register 38 CPU 8086 มแอดเดรส 20 เสน (Address Bus 20 bits) ท าใหสามารถอางถงแอดเดรสได 1,045,576 ไบต (หรอ 1 MB - เมกะไบต) หรอมากเปน 16 เทา ของไมโครโปรเซสเซอรขนาด 8 บต และม data bus ขนาด 16 บต จงท าให CPU 8086 สามารถเรยกขอมลไดทละ 1 เวรด หรอ 2 ไบต และยงเตรยมพรอมส าหรบการท างานแบบหลาย CPU รวมทงการท างานรวมกบอปกรณอนไดดวย แสดงไดดงรปท 2.3

รปท 2.3 แสดง Block Diagram ของ ซพย (CPU 8086) 8086 แบงสวนตามฟงกชนการท างานทเปนอสระตอกนออกเปน 2 สวน คอ BIU (Bus Interface Unit) และ EU (Execution Unit) เพราะจะท าใหความเรวในการท างานสงขน - BIU จะท าหนาทสงคาแอดเดรสเพอไป fetch ค าสงจากหนวยความจ า, อานขอมลจากหนวยความจ า และพอรต, และเขยนขอมลไปยงหนวยความจ า และพอรต - EU ของ 8086 จะบอก location ทจะไป fetch instruction, decode instruction และ execute instruction 2.3.1 EU (Execution Unit) ประกอบดวย - Control Circuitry ท าหนาทควบคม Operation ภายในทงหมด - Instruction Decoder ท าหนาทแปลความหมายของชดค าสงทน ามาจาก Memory ใหเปนล าดบของภาษาเครองท EU สามารถปฏบตได

Page 28: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

15

- ALU มขนาด 16 bits ซงมฟงกชนในการ Add (บวก), Subtraction (ลบ), AND, OR, XOR, increment, decrement, complement และ shift - Flag Register เปน flip-flop ทแสดงสถานะของการ execute instruction หรอการควบคมการท างานของชดค าสง Flag Register ขนาด 16 บต ใน EU จะบรรจ active flag 9 ตว โดยเปน flag แสดงสถานะ (Condition flags) จ านวน 6 บต และ flag ควบคม (Control flags) จ านวน 3 บต ส าหรบบตสวนทเหลอกไมไดใชประโยชนใดๆ แสดงไดดงรปท 2.4

รปท 2.4 แสดงสถานะแฟลก (Flag Status) ทใชในการตรวจสอบการท างานของซพย (CPU 8086) แฟลกแสดงสถานะ (Conditional Flag) มทงหมด 6 ตว จะถกใชในการแสดงเงอนไขบางอยางทสรางโดยชดค าสงในการ SET หรอ RESET คา Flag เหลาน จะด าเนนการโดย EU บนพนฐานของผลลพธของการค านวณ เชน carry out flag จะถก set ใหมคาเปน 1 หากผลลพธของการบวกเลขฐาน 2 จ านวน 16 bits มตวทดหลกเพมเตมจากบตทมความส าคญสงสด หรอ MSB (Most Significant Bit) - CF (Carry Flag) จะถก SET เมอม CARRY OUT ของ MSB - PF (Parity Flag) จะถก SET เมอผลลพธม parity เปน EVEN - AF (Auxiliary Carry Flag) ส าหรบ BCD - ZF (Zero Flag) จะถก SET เมอผลลพธ = 0 - SF (Sign Flag) เปนคา MSB ของผลลพธ (0 เปนคาบวก และ 1 เปนคาลบ) - OF (Overflow Flag) จะถก SET เมอผลลพธเกดการ Overflow แฟลกควบคม (Control Flag) มทงหมด 3 ตว จะถกใชในการควบคมการปฏบตทแนนอนของโพรเซสเซอร ซง แฟลกเหลานจะถก SET หรอ RESET โดยเจตนาของชดค าสงทใสไวในโปรแกรม - TF (Trap Flag) ถกน ามาใชส าหรบโปรแกรมทท างานในลกษณะ Single Step - IF (Interrupt Flag) ถกใชในการก าหนดใหอนญาตหรอปฏเสธการอนเตอรรพตโปรแกรม - DF (Direction Flag) ถกน ามาใชกบชดค าสงทเปน String

Page 29: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

16

แฟลก (flag) จะไดถกออกแบบมาเพอแสดงผลของการกระท าทางคณตศาสตรและลอจก สถานะทเปนไปไดของflag จะมไดแคสองสถานะ คอ ถกเซตท าใหมคาเปน 1 หรอถกรเซตใหมคาเปน 0 แฟลกตวทด (carry flag) จะสดงลกษณะบอกการทดหรอ การขอยมของบตสงสดของผลลพธ , แฟลกพารต (parity flag) จะใชแสดงจ านวนคหรอคของตวเลขทเปน 1 ในรจสเตอร ถาเปนค flag นจะถกเซตเปน 1, แฟลกตวทดชวย (auxiliary carry flag) จะใชงานแบบ "decimal adjust" ในการค านวณ BCD, แฟลกศนย (zero flag) จะมคาเปน 1 เมอผลลพธเปนศนยแฟลกเครองหมาย (sign flag) จะไดรบการเซตเมอผลลพธเปนเลขจ านวนลบ , โอเวอรโฟลวแฟลก (OF) ใชเพอแสดงวามความผดพลาดในการค านวณ เนองจากการใสเครองหมายของผลลพธ เชนถามการบวกเลข +127 กบ+2 ผลลพธทไดถาคดค านวณแบบมเครองหมายจะไดค าตอบเปน –127 ซงผดความหมาย เมอเกดเหตการณในลกษณะน 8086 จะเซตโอเวอรโฟลวแฟลกใหเปน 1 แฟลกควบคมทศทาง (direction flag) จะก าหนดทศทางของกลมค าสงเกยวกบสตรง วาจะมทศทางการท างานจากแอดเดรสมากไปนอยหรอจากแอดเดรสนอยไปมาก แฟลกอนเตอรรพต (IE) ถาถกเซตเปน 1 แสดงวาจะยอมรบอนเตอรรพตจากภายนอก โดยหยดการท างานตามปกตของโปรแกรมไวกอน และ Tap flag (TF) จะท าให 8086 ท างานแบบทละค าสงเพอการแกไขโปรแกรม 2.3.2 BIU (Bus Interface Unit) ประกอบดวย - Queue : BIU จะจดเกบชดค าสงท fetch มาจากหนวยความจ าไดสงสด 6 ค าสง โดยจะใชเทคโนโลยทเรยกวา FIFO (First-In First-Out) เมอ EU พรอมทจะท างานกบชดค าสงตอไปกเพยงแตน าขอมลและชดค าสงมาจาก Queue โดยไมตองไปยงเกยวกบ Bus จงสามารถท างานไดเรวขนอกหลายเทา แทนทจะตองรอการอานขอมลและชดค าสงมาจากหนวยความจ าภายนอก เวนแตวาเมอเมอพบค าสง JMP (Jump) หรอ CALL ทตองเรยกขอมลมาจากแอดเดรสทก าหนดไวในโปรแกรม คณสมบตในการ Fetch ค าสงตอไปมาเกบไวใน Queue ในขณะท EU ก าลงexecute ค าสงอนอย เรยกวา Pipelining - Segment Register : BIU จะสงคา address ขนาด 20 bits ออกไป ดงนนจงสามารถทจะระบต าแหนงใน Memory ได แตอยางไรกตาม 8086 จะสามารถท างานกบ segment 4 สวน ในหนวยความจ า (สวนละ 65,536 bytes = 64 Kbyte) ดงนนภายในหนวยความจ าขนาด 1 Mbyte (1,045,576 bytes) จงตองม segment register 4 ตว เพอจดเกบคาแอดเดรสจดเรมตนของแตละ Segment ในหนวยความจ า ท 8086 ใชในการท างาน - CS (Code Segment) - SS (Stack Segment) - ES (Extra Segment) - DS (Data Segment) Segment Register ถกใชในการจดเกบคาแอดเดรสขนาด 16 bits ของจดเรมตนของแตละสวน ตวอยางเชน Code Segment Register จะจดเกบคาแอดเดรสเรมตนของหนวยความจ าสวนท BIU fetch instruction มา โดย BIU จะใสคา 0 ใหกบ 4 bits สดทายของแอดเดรสขนาด 20 bits เชนถา code segment register มคา 348A (Hex) แสดงวาสวนในหนวยความจ า ทจดเกบโปรแกรมจะเรมตนท address 348A0 (Hex) จงหมายความวาแตละสวนขนาด 64 K สามารถทจะอยต าแหนงใดในหนวยความจ าขนาด 1 MB Stack เปนสวนของหนวยความจ าทแยกไวตางหาก เพอจดเกบคาแอดเดรสเรมตนของโปรแกรมยอยและเกบขอมลทใชในโปรแกรมยอย ในขณะทท าการ execute Subprogram หรอ Procedure

Page 30: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

17

2.4 การเกดอนเตอรรพต (Interrupt Handle) การอนเตอรรพตของ 8086 อาจจะมาจากหลาย ๆ แหลงได เชนอนเตอรรพตทมาจากอปกรณภายนอกอนเตอรรพตทาง software หรออนเตอรรพตทมาจากตว CPU 8086 เองกได อนเตอรรพตจากอปกรณภายนอกจะเขามาทางขา 2 ขา คอ INTR (interrupt request) และ NMI(non-maskable interrupt) โดยท INTR จะถกก าหนดใหท างานไดโดยค าสง IE (interrupt enable flag) ทเปนสวนหนงของ 8086 flag ถา flag IE ถกเซตจะ ท าให 8086 สามารถจะรบอนเตอรรพตจาก INTR ได แตถา IF ถกเคลยร 8086 จะไมรบอนเตอรรพตจาก INTR สวน NMI จะเปนอนเตอรรพตทไมสามารถจะหยดได มกจะใชในกรณทเกดเหตการณส าคญ เชน เกดความผดพลาดของพารตหนวยความจ า (memory parity) หรอเกดไฟตก เปนตน INTO (interrupt overflow) คอ อนเตอรรพตของ 8086 ทเกดจากขอผดพลาดของการหารและการท างานทละขน ขอผดพลาดจากการหาร (divide error) เกดขนเนองจากผลของการหารอาจจะมคามากกวาเนอทซงเตรยมไวเปนทเกบผลลพธ หรออาจจะเกดจากการหารดวยเลข 0 สวนลกษณะของการท างานทละขน (single step) จะเปนอนเตอรรพตทเกดเนองจากการ execute ค าสงทละค าสง เหตการณนเกดขนเนองจาก TF (trap flag) ในรจสเตอรแฟลกถกเซตใหเปน 1 เมอเกดอนเตอรรพตเหลานขนมาแลวกจะเกดเหตการณเฉพาะอยางขนถามการอนเตอรรพตจากภายนอก ค าสงชดสดทายจะถก execute จนเสรจสนกอน (ยกเวน ถาเปนค าสง MOV หรอ POP จะมการ execute ค าสง ตอไปกอนแลวจงหยด) อนเตอรรพตทกตวจะท าการเกบคาของแฟลกรจสเตอรไวในสแตก เสรจแลว 8086 จะท าการรเซตแฟลก IF และ TF ใหเปน 0 ทงนเพอปองกน INTR อนพตทเขามาใหม และปองกนการเกดการท างานทละขนในขณะทอยในโปรแกรมอนเตอรรพต เนองจากการทแฟลกถกเกบคาไวหลงจากโปรแกรมอนเตอรรพตสนสดแลวคาตาง ๆ ทเกบไวจะถกดงกลบมาใชงานได จากนน 8086 จะท าการเกบคาของ CS และ IP ลงบนสแตกเพอทจะเกบต าแหนงของแอดเดรสสงกลบ (return address) ในลกษณะเดยวกบค าสง CALL และในขนตอนสดทาย CS และ IP จะถกอานจากตาราง interrupt vector (ขนกบหมายเลขอนเตอรรพต) ตาราง interrupt vector กคอบรเวณของเนอทของหนวยความจ าเรมตงแตแอดเดรส 0000 จ านวน หนงกโลไบต ดงแสดงไดดงรปท 2.5 อนเตอรรพตแตละตวจะชไปยงต าแหนงทแนนอนและสามารถทจะกระโดดไปถงทก าหนดไดโดยอตโนมต เมอเกดอนเตอรรพตจากลกษณะของ divide error จะท าให เกดอนเตอรรพต 0, single-step จะเปนอนเตอรรพต 1, อนเตอรรพตแบบ Non-maskable เปนแบบอนเตอรรพต 2 , bread-point จะเกดอนเตอรรพต 3 , และการเกด over flow จะเปนอนเตอรรพต 4 สวน อนเตอรรพต 5 ถง 31 เตรยมไวส าหรบ ผใชจะก าหนดเอาเองภายหลง สวน อนเตอรรพตทเหลอเราอาจจะควบคมโดยใชค าสง INTR หรอ INT ได ส าหรบ INTR จะตอบรบสญญาณอนเตอรรพตจากภายนอก สวน INT จะรบไดโดยตวค าสง นนเอง CPU 8086 สามารถทจะรบรชนดของการอนเตอรรพตไดโดยการคณคาของค าสง ดวย 4 ผลลพธทไดจะบอกต าแหนงของตารางอนเตอรรพต ซงคาของตารางจะถกสงคาไปยง CS และ IP คาตาง ๆในตาราง เราจะตองเปนผก าหนดโดยก าหนดเปนคาของเซกเมนตและคาของออฟเซตทแสดงต าแหนงของอนเตอรรพตรทน เชน อนเตอรรพตทแอดเดรส 0-3 จะถกตองก าหนดเปนคาบอกแอดเดรสของ CS และ IP เพอจะชรทนของ divide error เปนตน อนเตอรรพตรทน จะตองเรมตนดวยการเกบคาของรจสเตอรตาง ๆไวกอน เพราะเราไมทราบวาจะเกดอนเตอรรพตเมอถงจดใด และเราไมตองการท าใหคา รจสเตอรตาง ๆ เสยไปและเราตอง ปดทายรทนดวยค าสงIRET ค าสงนจะท างานเหมอนค าสง RET ธรรมดาแตจะท าการอานคาของแฟลกออกมาจากสแตกดวย

Page 31: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

18

รปท 2.5 แสดงการเกดอนเตอรรพต ทต าแหนง 0000- 03FF ขนาด 1 กโลไบต (1Kbytes)

2.6 รจสเตอรของซพย 8086 (CPU 8086 Register) CPU 8086 ประกอบดวยรจสเตอรทเกยวของ ออกเปน 2 กลม (แสดงไดดงรปท 2.6) ดงน 2.6.1 กลมขอมล (Data Group Register) แบงออกเปน 2.6.1.1 รจสเตอรทวไป (General-Purpose Register) 2.6.1.2 รจสเตอรตวช (Instruction Pointer Register) 2.6.1.3 แฟลก (flag) 2.6.2 กลมก าหนดเซกเมนต (Segment Register) แบงออกเปน 2.6.2.1 รจสเตอรก าหนดเซกเมนต (Segment Register)

Page 32: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

19

รปท 2.6 แสดงรจสเตอรทใชในไมโครโพรเซสเซอร 8086 2.6.1.1 รจสเตอรทวไป (General-Purpose Register) รจสเตอรทมอยทงหมดของ 8086 เปนรจสเตอรขนาด 16 บต ซงกลมขอมลจะแบงยอยออกเปน 1. รจสเตอร AX (Accumulator) หรอแอกคมวเลเตอร จะประกอบดวย AH และ AL โดย AX ท า หนาทในการใชคณหารหรอเปนรจสเตอรเกยวกบอนพตเอาตพตทเปนเวรดสวน AL ท าหนาทใชในการ ค านวณ คณหาร หรอท างานเกยวกบอนพต (Input) เอาตพท (Output) แปลง ขอมลจดการค านวณ แบบตวเลขฐานสบแบบ 8 บต และ AH ใชเปนรจสเตอรในการคณและหารได 2. รจสเตอร BX (Base Register) หรอเบสรจสเตอรใชในการแปลงขอมล 3. รจสเตอร CX (Counter Register) หรอรจสเตอรตวนบใชในค าสงจดการเกยวกบสตรง และการท า ลป CL ใชเปนตวแปรส าหรบการเลอนบตหรอหมนบต 4. รจสเตอร DX (Data Register) หรอรจสเตอรขอมลใชในค าสง คณ หารเปนเวรด (Words) หรอใช ในรปแบบอางอนพตเอาตพตแบบออม แสดงไดดงรปท 2.6 2.6.1.2 รจสเตอรตวช (Instruction Pointer Register) รจสเตอรใชงานทวไปในกลมตวชและอนเดกซ ประกอบดวย SP หรอสแตกพอยนเตอรใชกบค าสงสแตก ส าหรบรจสเตอรตนทางหรอ SI (Source Index) รจสเตอร ปลายทางหรอ DI (Destination Index) จะใชกบ

Page 33: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

20

ค าสงทเกยวกบสตรง และเบสพอยนเตอรหรอ BP (base pointer) รจสเตอรเหลานสามารถทจะน ามาใชเปนตวอางถง Physical address ไดดวยวธการตางๆ ดงแสดงไดดงรปท 2.7

รปท 2.7 แสดงโครงสรางรจสเตอรของ 8086 กบการค านวณหาคาต าแหนงในหนวยความจ า

อธบายจากรปท 2.7 รจสเตอรขนาด 16 บต 4 ตว ในกลมขอมล ไดแก AX (Accumulator), BX (Base), CX (Counter) และ DX (Data) ยงถกแบงออกเปนครงบน (AH, BH, CH และ DH) และครงลาง (AL, BL, CL และ DL) รจสเตอรเหลานอาจจะท างานในลกษณะ เปนเวรดหรอไบตกได ในกลมนถอวาเปนรจสเตอร ขอมลรจสเตอรในกลม pointer และ index มกจะน าไปใชในการอาง Physical address และยงใชในการปฏบตทางคณตศาสตรและลอจกไดรจสเตอร BP และ SP ใชในการชคาต าแหนงในสแตก (Stack Address) เพอจะท าการเกบต าแหนง address กลบจากโปรแกรมยอย (Subprogram) โดยใชหลกการเหมอนสแตก (Stack) ของ CPU 8 บต สวน BP นนจะใชส าหรบเปน ตวบวก เพอชคาสแตกอกทหนง เพอจะเปนวธทจะอ านวยความสะดวกในการสงคา พารามเตอรเขาสโปรแกรมโดยผานทางสแตก ซงชวยในการสงคาของตวแปรระหวางโปรแกรมไดด รจสเตอร SI และ DI จะท าการตดตอกบหนวยความจ าได ซงจะใชงานไดดในกลมค าสงพวก สตรงและการ ท างานเปน block หรอ การเชอมโยงขอมลในโครงสรางแบบ array ในการ fetch ค าสงของ 8086 จะใช IP (instruction pointer) ขนาด 16 บต เปนตวชต าแหนง address ของค าสงถดไปทจะถกท างาน ซงความจรงแลวคาใน IP ไมไดก าหนดต าแหนงโดยตรง แตจะมการค านวณมากอน 2.6.2.1 รจสเตอรก าหนดเซกเมนต (Segment Register) ประกอบดวยรจสเตอรยอยม 4 ตว คอ CS (code segment), DS (data segment), SS (stack segment) และ ES (extra segment) ซงจะน ามาใชในหลกการแบบบลอกแอดเดรสของ 8086 หนวยความจ า (Memory) จะไดรบการจดสรรเปนสวนใหญ ๆ คอ code (หรอชดค าสง), ขอมล (ตวเลข หรอตวอกษร) และสแตกส าหรบการเกบคาแอดเดรสกลบคนจากโปรแกรมยอยเพอทจะปองกนการสบสน จงก าหนดคาใหแยกกนไดซง 8086 จะมองลกษณะของหนวยความจ า โดยแบงหนวยความจ าเปนกลม ๆ ในรปแบบของ เซกเมนต ในหนงเซกเมนตจะชไดถง 64 กโลไบต โดยเซกเมนตรจสเตอรทงสตว จะแสดงแอดเดรสเรมตนของหนวยความจ าทจะตดตอดวย สงเกตไดจากรปท 2.8 รจสเตอร CS จะบรรจคาแสดงแอดเดรสเรมตนของโปรแกรม, DS จะเกบคา

Page 34: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

21

Data segment ในขณะนน,SS จะเกบคา Stack segment ในขณะนน และ ES จะก าหนด Segment ของขอมลรวมทเรยกวา Global Data Segment แสดงไดดงรปท 2.8

รปท 2.8 แสดงการแบงกลมของ Segment Register

เซกเมนตจะแสดงต าแหนงเหมอนกบ Paragraph โดยจะเลอนไปทางซาย 4 บต เพอทจะก าหนด หรออางแอดเดรสใหครบ 20 เสน โดยจดเรมตนของ Paragraph จะตองม 4 บต หลงสดเปน 0 เชน เปน 00000H, 00010H , 00020H เปนตน จากรป คาของ SS จะชต าแหนงของเซกเมนตคา D89F0 สงเกตเหนวาสวนพนท ของหนวยความจ าอาจจะสลบหรอใชบรเวณเดยวกนของหนวยความจ าไดแสดงไดดงรปท 2.8

รปท 2.9 แสดงต าแหนงเหมอนกบ Paragraph ใน Segment Register

เพอทจะท าการตดตอกบขอมลหนงไบตหรอหนงเวรดนน 8086 ไดเตรยมคาออฟเซต เพอใชอางต าแหนงตงแตจดเรมตนของเซกเมนตแอดเดรส ต าแหนงใด ๆ จะไดมาจากการบวกคา เซกเมนต รจสเตอรกบคาของออฟเซต 16 บต เชนถาเซกเมนตมคา E89F จะใหออฟเซตมคา 0003H จะท าใหการอางแอดเดรสไปท 89F3 การจะใชเซกเมนตรจสเตอรและคาออฟเซตตวใดนนจะขนอยกบชนดของค าสงดวย ดงแสดงในตารางท 2.1

Page 35: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

22

ตารางท 2.1 แสดงชนดของการอางองหนวยความจ าในเซกเมนตรจสเตอร 2.7 การระบต าแหนงในรจสเตอร (Addressing Data in Register) การเขาถงขอมลในรจสเตอรนบวาเปนหวใจส าคญในการเขยนโปรแกรมควบคมการท างานของไมโครโพรเซสเซอร 8086 สามารถ access เขาไปในสวนของโปรแกรม โดยใชคาในรจสเตอร โดย CS + IP -> physical address (20 bits) แสดงไดดงรปท 2.10

รปท 2.10 แสดงการบวกคาในรจสเตอร CS และ IP เพอค านวณหา Physical Address

ในการ Access เขาไปยงขอมล เพอน ามาใชในการท างาน เรยกวา “addressing mode” ซงใน ภาษาแอสเซมบล ใชค าสง MOV: format -- MOV destination, source เมอชดค าสงนถก execute 8086 จะ ท าการคดลอก word หรอ byte จากต าแหนงตนทางไปยงจดหมายปลายทาง Addressing Mode ใชในการระบ ต าแหนงของ operand ใน Memory ซงสามารถแบงวธการเขาถงหนวยความจ าไดดงน คอ 2.7.1 Immediate Addressing Mode เปนวธการอยางงายในการก าหนดแอดเดรสในรจสเตอร กลาวคอสามารถก าหนด operand ซงเปนคาแอดเดรสใหกบชดค าสงภาษาแอสเซมบลไดโดยตรง ตวอยางเชน ถาโปรแกรมตองการทจะใสคา 437B (Hex) ลง ใน CX Register กสามารถใชค าสง MOV CX, 437B (Hex) ไดโดยตรง

ชนดของการอางองหนวยความจ า คาเซกเมนตปกต คาเซกเมนตทเลอกได คาออฟเซต

คา Fetch ค าสง การท า Stack ก าหนดตวแปร สตรงตนทาง

สตรงปลายทาง Base Register (BP)

CS SS DS DS ES SS

- -

CS, ES, SS CS, ES, SS

- CS, ES, SS

IP SP

คา Address ทก าหนด SI DI

คา Address ทก าหนด

Page 36: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

23

2.7.2 Register Addressing Mode ในกรณทใชคาในรจสเตอรเปน operand ของชดค าสง เชน MOV CX, AX คอการคดลอก เนอหาหรอขอมล(Content or Data) ทอยใน AX Register มาไวใน CX Register ใชในกรณทจ านวน bit เทากนเทานน ในกรณทรจสเตอรมขนาดไมเทากนจะไมสามารถใชค าสง MOV CX, AL ได ทงนเนองจากหากใชค าสงน 8086 จะพยายามทจะท าส าเนาขอมล (Copy Data) ในรปแบบ byte-type (AL) เขาไปเกบในรจสเตอรซงเปนรปแบบ word-type (CX) ซงเปนไปไมได อยางไรกตามหากใชค าสง MOV AL, CX กยงเปนไปไมได เนองจากถงแมวาขนาดของรจสเตอรจะสามารถรองรบขอมลได แต 8086 จะไมทราบวาผเขยนโปรแกรมตองการทจะน าขอมลส าเนาไปเกบไวในครงใดของรจสเตอร CX ในกรณเชนน โดยทวไป Assembler จะตรวจสอบพบ และจะบอกใหทราบวา Type error ดงนนการทจะคดลอกไบตจาก AL ไปเกบยงไบตสงของ CX จะใชค าสง MOV CH, AL และหากตองการคดลอกไบตจาก AL ไปเกบยงไบตต าของ CX จะใชค าสง MOV CL, AL 2.8 การเขาถงขอมลในหนวยความจ า (Addressing Data in Memory) ทผานมาไดกลาวถง Addressing Mode ทจะระบต าแหนงของ operand ในหนวยความจ า ในกรณทตองการทจะเขาถงขอมลในหนวยความจ า 8086 จะตองสราง physical address (20 bits) ซงสามารถท าไดโดยการรวม Effective address (16 bits) เขากบ Segment Base Address (16 bits) แสดงไดดงรปท 2.11

รปท 2.11 แสดงการบวกคาในรจสเตอร DS กบ EA เพอหา Physical Address วธการเขาถงขอมลในหนวยความจ าในไมโครโพรเซสเซอร 8086 แบงไดเปน 4 วธ คอ 2.8.1 วธการเขาถงขอมลในหนวยความจ าโดยตรง (Direct Addressing Mode) เปนวธการเขาถงขอมลในหนวยความจ าทงายทสด ซงสามารถท าไดโดยการน าคา effective address (16 bits) ใสเขาไปในชดค าสงโดยตรง ตวอยางเชนค าสง MOV BL, [437A (Hex)] – 8086 จะคดลอก Low byte -> Low address (437A) และ High byte -> High address (437B) ดงนนในกรณทตองการ Load รจสเตอร R1 ดวยคาทอยในแอดเดรส 1000 จะมการท างานแสดงไดดงรปท 2.12

Page 37: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

24

รปท 2.12 แสดงวธการเขาถงขอมลในหนวยความจ าโดยตรง (Direct Addressing Mode)

2.8.2 วธการเขาถงขอมลในหนวยความจ าโดยออม (Indirect Addressing Mode) เปนวธการเขาถงขอมลในหนวยความจ าทแตกตางจาก Direct Addressing ตรงทแทนทจะใสคา effective address (16 bits) เขาไปในชดค าสงโดยตรง แตจะใสคา Address ของหนวยความจ าในต าแหนงทจดเกบ effective address เขาไปในชดค าสง จะเหนไดวาวธการน คาในแอดเดรสทระบจะเปนแอดเดรสทบรรจคาทตองการไว เราเรยกแอดเดรสภายในแอดเดรสทระบวา “ตวช (Pointer)” เชนถาตองการ Load รจสเตอร R1 ดวยคาในแอดเดรสทแอดเดรส 1000 ก าหนดไว จะมการท างานแสดงไดดงรปท 2.13

รปท 2.13 แสดงวธการเขาถงขอมลในหนวยความจ าโดยออม (Indirect Addressing Mode)

2.8.3 วธการเขาถงขอมลในหนวยความจ าโดยใชตวช (Indexing Addressing Mode) บางครงในการท างานซงตองการกระท าบางอยางกบชดขอมลเปนจ านวนมากทมโครงสรางการจดเกบไวเปนล าดบ อาจจะสามารถท าไดโดยใชวธ Indirect Addressing แตอยางไรกตามหากตองการ Load คา 2 คาจาก 2 แอดเดรส เขามาในรจสเตอรตวเดยวกน จ าเปนตองใช Pointer 2 ตว และทกครงท Pointer เลอนไปชท แอดเดรสหนง Pointer จะถกเพมคาขน 1 เพอชไปยงแอดเดรสถดไป จงสามารถท างานกบชดขอมลทมโครงสรางการจดเกบเปนล าดบได แตอยางไรกตามเนองจาก Pointer เปนสวนหนงของขอมล ไมไดเปนสวนของโปรแกรม

Page 38: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

25

ดงนนผอนจะไมสามารถทราบไดวาโปรแกรมนนตองการใชท าอะไรแน การแกปญหาอยางหนงคอการใชรจสเตอรเพมขนมาจากเดมอก 1 ตว เรยกวา “Index Register” โดยจะท าหนาทในการจดเกบคาดชนแอดเดรสของชดขอมลเพอใหสะดวกตอการเรยกใช ในปจจบนไดมการพฒนารจสเตอรชนดนใหมขดความสามารถในการเพม หรอลดคาลงครงละ 1เพอใหสามารถจดการกบชดขอมลทมโครงสรางการจดเกบเรยงเปนล าดบไดโดยอตโนมต จงท าใหมความสามารถในการ Address โดยอตโนมตเรยกวา “autoindexing” 2.8.4 วธการเขาถงขอมลในหนวยความจ าโดยใชสแตก (Stack Addressing Mode) เปนวธการเขาถงขอมลในหนวยความจ าโดยใชสแตก (Stack Addressing) ซงสแตกประกอบดวยขอมลทถกจดเกบเรยงเปนล าดบไวในหนวยความจ า โดยขอมลแรกจะถกใส (Push) เขาไปในสแตก และจะลงไปอยทสวนลางสดของสแตก ขอมลตอๆ ไปกจะถกน าไปจดเกบในแอดเดรสถดมา การทจะเขาไปเรยกขอมลในสแตกจงจ าเปนตองมแอดเดรสทระบวาเปนสวนบนสดของสแตก ซงเรยกวา “Stack Pointer” กระบวนการเขาไปยงสแตกสามารถท าไดโดยน าคา SS (Stack Segment ) + SP (Stack Pointer) -> Physical address (Stack’s top address) แสดงไดดงรปท 2.14

รปท 2.14 แสดงวธการเขาถงขอมลในหนวยความจ าโดยใชสแตก (Stack Addressing Mode)

Page 39: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

26

สรป ไมโครโพรเซสเซอร (microprocessor) เปนอปกรณอเลกทรอนกสชนดหนงซงมลกษณะวงจรรวม(Integrated Circuit) หรอชพ (Chip) โครงสรางภายในจะมวงจรรวมขนาดใหญ สวนไมโครคอนโทรลเลอร (microcontroller) เปนชพประมวลผลประเภทหนงซงท าหนาตามโปรแกรมหรอขดค าสงทเขยนขนมา ภายในประกอบดวยวงจรรวมขนาดใหญ (Very Large Scale Integrated Circuit) การน าไมโครโพรเซสเซอร หลายๆ ตวใหสามารถท างานรวมกนไดในเวลาเดยวกน ท าใหประสทธภาพการท างานและความเรวนนเพมมากขน นอกจากนนจ านวนขอมลทใชในการประมวลผลกไดถกพฒนาเพมมากขนจาก 8 บต มาเปน 32 บต และ 64 บต ตามล าดบและจะถกพฒนาเพมมากขนอยางตอเนองในอนาคต ชนดของไมโครโพรเซสเซอร จดแบงตามลกษณะการใชงานได 3 ประเภท คอ 1. Dedicated or Embedded Controller 2. Bit-slice Processor 3. General-purpose Processor CPU 8086 ประกอบดวยรจสเตอรทเกยวของ ออกเปน 2 กลม คอ 1. กลมขอมล (Data Group Register) แบงออกเปน 1.1 รจสเตอรทวไป (General-Purpose Register) 1.2 รจสเตอรตวช (Instruction Pointer Register) 1.3 แฟลก (flag) 2. กลมก าหนดเซกเมนต (Segment Register) แบงออกเปน 2.1 รจสเตอรก าหนดเซกเมนต (Segment Register)

Page 40: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

27

ค าถามทบทวน 1. จงอธบายขอแตกตางทระหวางไมโครโพรเซสเซอรและไมโครคอนโทรลเลอร 2. ไมโครโพรเซสเซอร จดแบงออกตามลกษณะการใชงานไดกประเภทอะไรบาง 3. จงอธบายโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอร 8086 วาประกอบดวยอะไรบางพรอมวาดรป ประกอบการอธบาย 4. จงอธบายขอแตกตางทส าคญของไมโคโพรเซสเซอร 8086 และ 8088 5. ถา Code Segment ของโปรแกรมใน 8086 เรมตนท 90400H คาทถกจดเกบในรจสเตอร CS คอคาใด 6. ถา Code Segment ของโปรแกรมใน 8086 เรมตนท 90400H จงหา Physical Address ของหนวยความจ าทจะถก Fetch เขามาใชงาน ถาในขณะนนรจสเตอร IP เกบคา 0345CH 7. ถา Stack Segment Register มคา 0500H และ Stack Pointer Register มคา 8225H จงหา Physical Address สวนบนสดของสแตก (Top of Stack) 8. จงอธบายขอไดเปรยบของการใชรจสเตอรในหนวยประมวลผลกลาง (CPU) เปนทเกบขอมลชวคราว แทนทจะเกบขอมลไวในหนวยความจ า 9. จงอธบายการปฏบตการของไมโครโพรเซสเซอร 8086 เมอ Execute ค าสงตางๆ ตอไปน 9.1 MOV BX, 08FF 9.2 MOV AX, 0ABH 9.3 MOV DX, CL 9.4 MOV BX, AX 10. จงอธบายความแตกตางระหวางค าสง MOV AX, 1234H กบ MOV AX, [1234H]

Page 41: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

28

แผนบรหารการสอนประจ าบทท 3 หวขอเนอหา - ความหมายของตวเลขในหลกตาง ๆ - การแปลงคาจากเลขฐานสบเปนเลขฐานสอง - การบวกและการลบเลขฐานสอง - การคณและการหารเลขฐานสอง - เลขฐานแปดและเลขฐานสบหก - บต, ไบต, เวรด และดบเบลเวรด - ระบบเลข 2’ Complement - ระบบเลข BCD (Binary Code Decimal) - มาตรฐาน IEEE 754

วตถประสงคเชงพฤตกรรม - เขาใจความหมายของตวเลขในหลกตาง ๆ - สามารถแยกบต, ไบต, เวรด, ดบเบลเวรด และท าความเขาใจได - อธบายและท าความเขาใจระบบเลข 2’ Complement ระบบเลข BCD และมาตรฐาน IEEE 754 ได

วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 42: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

29

คอมพวเตอรเปนเครองจกรทกลไกการท างานพนฐานเปนสองสถานะ (Binary) คอเปดวงจรกบปดวงจร ซง

สามารถแทนสถานะดงกลาวไดดวยตวเลขโดดสองตวคอ 0 กบ 1 ขอมลแบบอนของคอมพวเตอรจะเกดจากการประกอบรวมกนของเลข 0 กบ 1 เทานน เราเรยกระบบเลขจ านวนทประกอบดวยตวเลข 0 กบ 1 เทานนวา “เลขฐาน 2”

สวนการนบของมนษยโดยปกตนน เราจะมตวเลขโดดอยสบตวคอ 0, 1, 2, 3, 4, 5, 6, 7, 8, และ 9 ซงจะประกอบรวมกนเปนระบบเลขจ านวนทเรยกกนวา “เลขฐาน 10” จะเหนวาระบบเลขจ านวนทใชในคอมพวเตอรมความแตกตางจากระบบเลขจ านวนทมนษยใชกนโดยปกต ดงนนเราจะตองเรยนรถงทกษะในการค านวณของระบบเลขจ านวนทงสองแบบรวมถงวธการเปลยนระบบเลขจ านวนไปมา 3.1 ความหมายของตวเลขในหลกตาง ๆ

ในระบบเลขฐานสบนน คาของเลขโดด ณ ต าแหนงใด กคอคาของเลขโดดนนคณดวยสบยกก าลงของต าแหนงนน เชน 12345 หมายความวา คา 5 อยในต าแหนงหลกหนวยซงคาของสบยกก าลงของหลกหนวยคอ 100 คา 4 อยในต าแหนงของหลกสบ (101) คา 3 อยในต าแหนงของหลกรอย (102) คา 2 อยในต าแหนงของหลกพน (103) และคา 1 อยในต าแหนงของหลกหมน (104) ซง 12345 สามารถเขยนอยในรปผลบวกทางคณตศาสตรไดดงน

12345 = (1 x 104) + (2 x 103) + (3 x 102) + (4 x 101) + (5 x 100) = 10000 + 2000 + 300 + 40 + 5 จะเหนวาเลขก าลงของสบจะเรมตนจากศนยทหลกหนวย แลวเพมขนหนงทกครงในหลกถดมาทางดาน

ซายมอ ในกรณทเลขเปนจ านวนทศนยม ใหเรมก าลงศนยทหลกหนวย แลวลดก าลงลงหนงทกครงในหลกถดไปทางดานขวามอ สวนทางดานซายมอกจะเปนไปในรปแบบเดม เชน 12.34 จะสามารถเขยนไดเปน

12.34 = (1 x 101) + (2 x 100) + (3 x 10-1) + (4 x 10-2) = 10 + 2 + 0.3 + 0.04 เราสามารถใชหลกการเดยวกนนกบเลขฐานสองเพอหาคาของจ านวนดงกลาวในรปของเลขฐานสบ (ใน

ความเปนจรงแลวสามารถทจะน าไปใชไดกบเลขทกฐาน) เชน 1011.012 จะเขยนไดเปน 1011.012 = (1 x 23) + (0 x 22) + (1 x 21) + (1 x 20) + (0 x 2-1) + (1 x 2-2) = 8 + 0 + 2 + 1 + 0 + 0.25 = 11.25

3.2 การแปลงคาจากเลขฐานสบเปนเลขฐานสอง การแปลงเลขฐานสบเปนฐานสองจะมขนตอนอยสองขนตอนคอ การแปลงเลขสวนทอยหนาทศนยมและ

การแปลงเลขสวนทอยหลงทศนยม

บทท 3 ระบบเลขจ านวน (Numeric System)

Page 43: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

30

การแปลงเลขในสวนทอยหนาทศนยม ใหน าเลขดงกลาวมาหารดวยสองไปเรอย ๆ จนกวาจะไดผลลพธเปนศนย โดยการหารแตละครงจะไดเศษเปน 0 หรอ 1 ล าดบของเศษทเกดขนกคอก าลงของเลขสอง กลาวคอ เศษทไดจากการหารครงแรกจะเปนเลขในหลก 20, เศษทเกดจากการหารครงทสองจะเปนเลขในหลก 21 เรอยไป

ตวอยาง จงเปลยนคา 1310 ใหเปนเลขฐานสอง 2 13 6 เศษ 1 3 เศษ 0 1 เศษ 1 0 เศษ 1 1310 = 11012 สวนการแปลงเลขหลงจดทศนยมนน จะใชวธคณตวเลขนนดวยสองไปเรอย ๆ จนกวาจะมเลขหลงจด

ทศนยมเปนศนย ซงในการคณแตละครงอาจจะมการทดคาหลงจดทศนยมขนมาเปนตวเลข 1 หนาจดทศนยมหรอไมกได ในการคณแตละครงกเทากบวาเราเลอนการค านวณจากหลกแรกหลงจดทศนยม (2-1) ไปยงหลกตอไป

ตวอยาง จงเปลยนคา 0.2510 ใหเปนเลขฐานสอง 0.25 x 2 0.50 x 2 1.00 .01 0.2510 = 0.012 ดงนนจากตวอยางขางตนสามารถสรปไดวา 13.2510 = 1101.012

3.3 การบวกและการลบเลขฐานสอง

การบวกเลขฐานสองมหลกการเหมอนกบการบวกเลขฐานสบ การบวกเลขในฐานสบนนเมอผลบวกในหลกใดมคามากกวา 9 กจะตองมการทดเลข 1 ไปยงหลกถดไป ซงหลกเกณฑการทดเลขนยงสามารถใชไดกบเลขฐานสอง เพยงแตวาเลขโดดทสงทสดของเลขฐานสองคอ 1 ดงนนถาผลบวกมคาเกน 1 กจะมการทดไปยงหลกถดไปทางซาย รปแบบการบวกเปนดงน

Page 44: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

31

0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 ทด 1 ตวอยาง จงบวกเลข 1011.1012 กบ 110.0112 1 0 1 1 . 1 0 1 + 1 1 0 . 0 1 1 1 0 0 1 0 . 0 0 0 การลบเลขเปนการด าเนนการทผกผนกบการบวก ในการลบ ถามการลบเลขทมากกวาจากเลขทนอยกวา

ตองมการขอยมจากเลขในหลกถดไปทางซายมา 1 รปแบบการลบเปนดงน 0 - 0 = 0 0 - 1 = 1 ขอยม 1 1 - 0 = 1 1 - 1 = 0 ตวอยาง จงลบเลข 1001.11 กบ 101.1 1 0 0 1 . 1 1 - 1 0 1 . 1 0 1 0 0 . 0 1

3.4 การคณและการหารเลขฐานสอง

การคณและการหารของเลขฐานสอง กมหลกการเชนเดยวกบเลขฐานสบ เพยงแตมสตรคณแคแม 0 กบ 1 เทานน อกทงการหารดวยศนยกไมมความหมายเชนเดยวกบการหารในระบบเลขฐานสบ ตารางการคณและการหารของระบบเลขฐานสองคอ

0 x 0 = 0 0 x 1 = 0 1 x 0 = 0 1 x 1 = 1 0 1 = 0 1 1 = 1

Page 45: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

32

ตวอยาง จงคณเลขฐานสอง 1.01 x 10.1 1 . 0 1 x 1 0 . 1 0 1 0 1 0 0 0 1 0 1 1 1 . 0 0 1 จงหารเลขฐานสอง 11001 101 101 101 11001 101 101 101

3.5 เลขฐานแปดและเลขฐานสบหก

ถงแมวาระบบคอมพวเตอรจะเขาใจแตระบบเลขฐานสองเพยงอยางเดยว แตในทางปฏบตจะเกดปญหากบผใชงานคอมพวเตอรเปนอยางมาก เนองจากระบบเลขฐานสองมจ านวนเลขโดดนอยจงตองมจ านวนหลกมากขนเพอแทนคาตวเลขตาง ๆ ท าใหจดจ าไดยาก จงมความพยายามในการรวมหลกของเลขฐานสองหลาย ๆ หลกเขาดวยกนเปนเลขฐานทใหญขน เพอใหงายตอการจดจ า ซงการแปลงเลขฐานทไดนกลบเปนเลขฐานสองจะท าไดอยางงายดายเนองจากแตละหลกของเลขฐานดงกลาวแทนเลขฐานสองทมจ านวนหลกแนนอน

โดยปกตแลวเรามกจะรวมเลขฐานสองจ านวนสามหรอสหลกเปนเลขฐานใหม เมอเรารวมเลขฐานสอง 3 หลกจะไดเลขทม 8 รปแบบแตกตางกนคอ 000, 001, 010, 011, 100, 101, 110, และ 111 ซงเราสามารถใชตวเลขโดด 0 ถง 7 แทนเลขฐานสองในแตละแบบได ซงระบบเลขจ านวนทมตวเลขโดด 8 ตวกคอเลขฐานแปดนนเอง โดยทเลขโดดแตละเลขของระบบเลขฐานแปดจะแทนรปแบบของเลขฐานสองจ านวนสามหลกทมคาเทากน

ในท านองเดยวกน ถาเรามเลขฐานสองจ านวนสหลก กจะไดเลขฐานสองทม 16 รปแบบแตกตางกน ซงสามารถใชเลขฐานสบหกแทนแตละรปแบบของเลขฐานสองได แตเนองจากเรามเลขโดดใชงานกนแคสบตว ดงนนจงมการน าตว A – F มาแทนคาเลขโดดทมคา 10 – 15 แทน ท าใหเลขฐานสบหกมเลขโดดคอ 0 – 9 และ A – F

เลขฐานสบ เลขฐานสอง เลขฐานแปด เลขฐานสบหกๆ 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4

Page 46: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

33

เลขฐานสบ เลขฐานสอง เลขฐานแปด เลขฐานสบหกๆ 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F

ในการแปลงเลขฐานสองใหเปนเลขฐานแปดหรอฐานสบหกนน เราจะตองจบกลมเลขฐานสองใหไดจ านวนหลกตามทเลขโดดของฐานทเราจะแปลงไป เชน จบกลมสามหลกส าหรบการแปลงเปนฐานแปด เปนตน การจบกลมจะเรมจบจากหลกทางดานขวามอสดกอน ในกรณทเหลอเลขไมครบจ านวนหลกทตองการใหเตมศนยไปทางดานซายมอเรอย ๆ จนกวาจะไดจ านวนหลกทตองใช จากนนจงแปลงฐานเลขโดยแปลงทละกลมกจะไดเลขฐานแปดหรอฐานสบหกตามตองการ

ตวอยาง จงแปลงเลขฐานสอง 1011011 ใหเปนเลขฐานแปดและฐานสบหก แปลงเปนเลขฐานแปด แปลงเปนเลขฐานสบหก 001 011011 01011011 1 3 3 5 B 10110112 = 1138 = 5B16

3.6 บต, ไบต, เวรด และดบเบลเวรด ขอมลตาง ๆ ในระบบคอมพวเตอรมกจะไมไดมาจากเลขฐานสองเพยงแคหลกเดยว เพอความสะดวกใน

การเรยกและความกะทดรดของจ านวนทจะตองใชเรยก (คงไมสะดวกนกถาตองมการเรยกกนวา เลขฐานสอง 32 หลก) ดงนนจงไดมการตงชอเฉพาะเรยกกลมของเลขฐานสองทมจ านวนหลกตงแตหนงหลกขน โดยชอตาง ๆ มดงน

เลขฐานสองหนงหลกเรยก หนง “บต” (bit) 4 บต เทากบ หนง “นบเบล” (nibble) [ไมคอยนยมใชกนนก] 2 นบเบล เทากบ หนง “ไบต” (byte) 2 ไบต เทากบ หนง “เวรด” (word) 2 เวรด เทากบ หนง “ดบเบลเวรด” (double word)

Page 47: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

34

3.7 ระบบเลข 2’ Complement การค านวณเลขฐานสองทเราคนเคยกน มกจะเปนเลขฐานสองทมคาเปนบวกอยเสมอ แตในความเปนจรง

เรามการใชงานจ านวนทงทเปนบวกและลบ ดงนนระบบคอมพวเตอรจงตองมกลไกบางอยางเพอระบเครองหมายของตวเลขตาง ๆ ทอยในระบบ หนงในวธการระบเครองหมายของตวเลขในระบบคอมพวเตอรทไดรบความนยมมากทสดกคอ วธ 2’ Complement

วธ 2’ Complement จะเรมจากการก าหนดจ านวนหลกสงสดของตวเลข (จ านวนบตสงสด) กระบวนการทางคณตศาสตรใด ๆ กตาม ถาท าใหเกดการทดเลขเลยบตซายสดทก าหนด เลขทดดงกลาวจะหายไป เชน ถาก าหนดใหตวเลขมทงหมด 4 บต 1111 บวกกบ 0001 จะเทากบ 0000 ไมใช 10000 เปนตน แตถามการขอยมจากหลกหนาสดทเปนศนย ใหถอเสมอนวามหลกทเปนคา 1 อยถดออกไปจากบตสงสดทก าหนดไว แลวท าการขอยมตามปกต เชน ถาตองการลบตวเลขขนาด 4 บต 0100 ดวย 0111 จะถอวาเลข 0100 เสมอนเปน (1)0100 แลวจงลบกนตามปกต เปนตน

ขอก าหนดขอทสองของ 2’ Complement คอบตทถกก าหนดใหเปนบตนยส าคญสงทสดจะเปนบตทบอกเครองหมายของตวเลข เชน ก าหนดใหใชตวเลขขนาด 6 บต ดงนนบดท 5 (เรมนบทางขวาสดเปนบตท 0) จะเปนบตทระบเครองหมายของตวเลขนน เปนตน โดยการระบเครองหมายจะใชมาตรฐานวา “ถาบตหนาสดเปน 0 หมายถงเปนเลขบวก ถาบตหนาสดเปนหนงหมายถงเปนเลขลบ” ดงนนจงไมสามารถใชบตทกบตทก าหนดใหในการเกบคาตวเลขได

ขอก าหนดขอทสามของ 2’ Complement คอ คาตวเลขทเกบอยเมอบวกกบคาทมเครองหมายตรงกนขามกนตามแบบวธการบวกเลขฐานสองปกต จะตองไดผลลพธเปนศนย (แตจะมบตทดทหลดหายทางซายมอสด) เชน ถาก าหนดใหเปนตวเลขขนาด 4 บต 1011 จะเทากบคา –5 เพราะถาบวกกบ 0101 แลวจะได (1)0000 โดยเลขทดดานหนาสดจะหายไป เปนตน

จากขอก าหนดทงหมดขางตน ถาก าหนดใหตวเลขทใชมขนาด 1 ไบต จะสามารถเกบคาบวกระหวาง 0 (00000000) ถง 127 (01111111) และคาลบระหวาง –1 (11111111) ถง –128 (10000000)

การน าเลข 2’ Complement ไปบวกหรอลบกน จะสามารถท าไดตามวธการปกต แตจะผลลพธสดทายจะตองเปนไปตามขอก าหนดของ 2’ Complement ทงสามขอ ส าหรบการคณและการหารนนจะตองแยกคาสมบรณ (Absolute) ออกมาคณหารกน แลวจงน าเครองหมายมาคดภายหลง แตมขอควรระวงคอ ถา เปนการคณกนระหวางตวเลขขนาด 1 ไบตดวยกน ผลลพธทไดจะตองใชทเกบขนาด 2 ไบต (ดตวอยางในเรองการคณเลขฐานสอง) ซงมากเกนกวาทจะเกบได ดงนนถาตองการเกบผลลพธไวเปนขนาด 1 ไบต กจะตองใหตวตงและตวคณมขนาดไมเกน 1 นบเบล (4 บต) 3.8 ระบบเลข BCD (Binary Code Decimal)

ระบบเลข BCD มชอเรยกอกชอหนงวา Packed Decimal เปนวธการหนงทจะท าใหการแปลงเลขระหวางฐานสองกบฐานสบงายขนโดยใชวธเดยวกบการสรางเลขฐานสบหก โดยจดกลมใหเลขฐานสอง 4 บต เปนเลขฐานสบ 1 หลก แตจ านวนเลขโดดของเลขฐานสบมคานอยกวารปแบบของเลขฐานสองทเปนไปไดใน 4 บต ดงนนจงมเลขฐานสองบางรปแบบทไมไดถกใชงาน สาเหตทตองจดกลมเลขฐานสองใหเปน 4 บตแทนทจะเปนคาอน ๆ เพราะจ านวนเลขโดดของเลขฐานสองมคาเทากบ 10 ซงอยระหวาเลขฐานสอง 3 บตกบ 4 บต นนเอง

Page 48: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

35

ปกตแลวเรามกจะไมน าเลข BCD ไปค านวณแบบซบซอน มกจะน าไปบวกลบกนเทานนซงการบวกลบกนของเลข BCD จะตองท าทละ 1 นบเบล และตองปรบคาผลลพธเพอเลยงเลขฐานสองทไมไดใชงานดวย 3.9 มาตรฐาน IEEE 754

มาตรฐาน IEEE754 เปนมาตรฐานทถกก าหนดขนโดยหนวยงานชอ IEEE (…) เพอเปนมาตรฐานในการเกบเลขทศนยม (Floating Point) ในระบบคอมพวเตอร โดยมาตรฐาน IEEE754 จะเกบเลขทศนยมฐานสบในรป (-1 x S)1.M x 2E-B

โดยท S เปนตวระบเครองหมายของตวเลข ถาเปน 0 จะเปนบวก ถาเปน 1 จะเปนลบ 1.M เปนฐานของเลขยกก าลง อยในรป 1.XXXX E เปนตวยกก าลงของสอง ไวส าหรบระบต าแหนงของทวนยม

B เปนคา BIAS เพอใหคาของ E ไมตดลบ จะมคาคงทส าหรบทกหมายเลข (คาของ B จะถกก าหนดมาแลวคอ 127 ส าหรบ IEEE754 ขนาด 32 bit)

เชน 2.5 จะสามารถเขยนไดเปน (-1 x 0)1.010 x 2128-B ในการเกบคาตาง ๆ จะเกบอยในรป S-M-E โดย S จะมขนาด 1 บต สวน M และ E จะมขนาดแตกตางกน

ไปหลายขนาด ขนอยกบความละเอยดทตองการ มาตรฐาน IEEE754 นอกจากจะสามารถแทนคาเลขทศนยมปกตแลว ยงมขอก าหนดทสามารถใชแทนสงท

เรยกกนวา NaN (Not a Number) เชน คาอนฟนต ดวย การค านวณเลขตามมาตรฐาน IEEE754 มความซบซอนมาก ดงนนจงไมขอกลาวในทน

Page 49: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

36

สรป

ระบบจ านวนเลขทใชกบคอมพวเตอร จะท างานบนพนฐานของสองสถานะ (Binary) คอเปดวงจรกบปดวงจร ซงสามารถแทนสถานะดงกลาวไดดวยตวเลขโดดสองตวคอ 0 กบ 1 เราเรยกระบบเลขจ านวนทประกอบดวยตวเลข 0 กบ 1 นวา “เลขฐาน 2” ขอมลตาง ๆ ในระบบคอมพวเตอรมกจะไมไดมาจากเลขฐานสองเพยงแคหลกเดยว เพอความสะดวกในการเรยกและความกระทดรดของจ านวนทจะตองใชเรยก (คงไมสะดวกนกถาตองมการเรยกกนวา เลขฐานสอง 32 หลก) ดงนนจงไดมการตงชอเฉพาะเรยกกลมของเลขฐานสองทมจ านวนหลกตงแตหนงหลกขน โดยชอตาง ๆ มดงนคอ บต, ไบต, เวรด และดบเบลเวรด

ค าถามทบทวน 1. จงเปลยนคา 12310 ใหเปนเลขฐานสอง 2. จงเปลยนคา 0.12510 ใหเปนเลขฐานสอง 3. จงคณเลขฐานสอง 1.101 x 10.11 4. จงเปลยนคา CAT16 ใหเปนเลขฐานแปด 5. จงแปลงเลขฐานสอง 110111011 ใหเปนเลขฐานแปดและฐานสบหก

Page 50: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

37

แผนบรหารการสอนประจ าบทท 4 หวขอเนอหา - ภาษาตาง ๆ ส าหรบคอมพวเตอร - ระดบของภาษาส าหรบเขยนโปรแกรม - การแปลภาษาส าหรบคอมพวเตอร - ภาษาแอสเซมบล วตถประสงคเชงพฤตกรรม - เขาใจความหมายและประวตความเปนมาของภาษาตาง ๆ ส าหรบคอมพวเตอร - รและเขาใจขนตอนตาง ๆ ในการแปลสญลกษณตาง ๆ ใหกลายเปนภาษาเครอง วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 51: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

38

ดงทไดกลาวมาแลววา คอมพวเตอรสามารถท างานไดกบระบบเลขฐานสองเพยงอยางเดยว ซงเลขฐานสอง

ดงกลาว ไมไดหมายถงขอมลเทานน แตยงหมายถงค าสงตาง ๆ ของเครองคอมพวเตอรดวย ดงนนถาเราตองการเขยนโปรแกรมขนมาสกหนงโปรแกรม เราจะตองเรยบเรยงค าสงตาง ๆ ใหอยในรปของล าดบของเลขฐานสองตาง ๆ ตามแตผทผลตเครองคอมพวเตอรนนจะก าหนดไว จะเหนวาการเขยนโปรแกรมแบบนไมมความสะดวกเลย จงมผคดคนภาษาส าหรบเขยนโปรแกรมขนมาเพอใหงายในการเขยนโปรแกรม 4.1 ภาษาตาง ๆ ส าหรบคอมพวเตอร

ในบรรดาภาษาส าหรบเขยนโปรแกรมนน ภาษาส าหรบการเขยนโปรแกรมดวยเลขฐานสองหรอฐานสบหก เปนภาษาทเกาแกทสดซงเครองคอมพวเตอรสามารถจะเขาใจและปฏบตตามไดเลยทนท เราเรยกภาษาแบบนวา “ภาษาเครอง” ซงภาษาดงกลาวไมสอความหมายทชดเจนกบมนษยซงเปนผทเขยนโปรแกรม จงมการคดคนสญลกษณตาง ๆ ขนมาแทนทภาษาเครอง โดยสญลกษณทคดขนในตอนแรกจะเปนการแทนคาภาษาเครองหนงค าสงตอสญลกษณหนงตว เชน 00111110 แทนวา LD A เปนตน ซงเรยกภาษาสญลกษณแบบนวา “ภาษานโมนค (Mnemonic)” หรอ “ภาษาแอสเซมบลพนฐาน” แตทวาสญลกษณทไดน กยงยากทจะใชเขยนโปรแกรม จงไดมการสรางสญลกษณค าสงใหมใหมความงายขน โดยเทยบเคยงสญลกษณกบภาษาองกฤษเพอใหสอความหมายมากทสด จงเกดเปนภาษาส าหรบเขยนโปรแกรมขนมากมายหลายภาษาขนอยกบสญลกษณและรปแบบทใช เชน Fortran, C, Pascal, และ Basic เปนตน

4.2 ระดบของภาษาส าหรบเขยนโปรแกรม

เมอมการสรางสญลกษณแทนภาษาเครอง ท าใหมการแบงระดบของภาษาส าหรบเขยนโปรแกรมออกเปนระดบตาง ๆ สองระดบคอ ภาษาระดบสง และภาษาระดบต า

ภาษาระดบสงเปนภาษาทเนนการสอความหมายกบผเขยนโปรแกรมเปนหลก ท าใหภาษาในระดบนมความงายในการเขยนและท าความเขาใจ สวนภาษาระดบต าเนนทความงายทเครองคอมพวเตอรจะน าค าสงตาง ๆ ไปปฏบตซงมอยดวยกนแคสองภาษาคอ ภาษาเครองกบภาษาแอสเซมบล

ในต าราบางเลมไดกลาวถงภาษาระดบกลาง ซงเปนระดบพเศษอกระดบโดยเปนระดบทมความสมดลกนระหวางความงายในการเขยนกบความงายในการน าไปใหเครองคอมพวเตอรปฏบต แตในทางปฏบตจรงเราไมสามารถหาจดสมดลกนจรง ๆ ของคณสมบตทงสองได ดงนนจงไมสามารถแบงแยกระดบกลางออกมาไดอยางเดดขาด ซงภาษาทไดรบการกลาวถงวาเปนภาษาระดบกลางกคอภาษา C 4.3 การแปลภาษาส าหรบคอมพวเตอร

ภาษาส าหรบเขยนโปรแกรมทอยในรปของสญลกษณตาง ๆ นน ไมสามารถน าไปใหเครองคอมพวเตอรปฏบตไดทนท เพราะเครองคอมพวเตอรเขาใจแตภาษาเครองเทานน ดงนนเราจะตองมขนตอนตาง ๆ ในการแปลสญลกษณตาง ๆ ใหกลายเปนภาษาเครอง ซงขนตอนการแปลจะมสองแบบคอ

บทท 4 ภาษาส าหรบเขยนโปรแกรมคอมพวเตอร (Language for Computer Programming)

Page 52: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

39

Interpret เปนการแปลแบบค าสงตอค าสง โดยดงสญลกษณของภาษาระดบสงมาทละค าสงแลวแปลค าสงนน จากนนจงสงค าสงทแปลไดไปใหเครองคอมพวเตอรท างานทนท เมอคอมพวเตอรท างานเสรจแลวจง จะเรมแปลค าสงถดไปเรอย ๆ โดยไมมการเกบภาษาเครองของค าสงทแปลไปแลว ดงนนถามการวนทค าสงใด ซ าแลวซ าอก กจะตองแปลค าสงนนใหมทกครงทท างานผานค าสงนน ขอดของการแปลแบบนคอค าสงตาง ๆ จะผานขนตอนตาง ๆ อยางสมบรณในขนตอนการแปลภาษา จงสามารถพบขอผดพลาดไดงาย

Compile เปนกระบวนการแปลสญลกษณของภาษาระดบสงเปนภาษาเครองทเดยวทงโปรแกรม แลวจงน าผลลพธทไดทงหมดไปใหเครองคอมพวเตอรปฏบตตอเนองกนไปโดยไมมการแปลสญลกษณใด ๆ อก ซงภาษาเครองทไดอาจจะถกเกบไวเพอน ากลบมาใหเครองคอมพวเตอรท างานไดอกโดยทไมตองผานกระบวนการแปลภาษาอกครง สญลกษณของภาษาระดบสงแตละตวจะถกแปลเปนภาษาเครองเพยงครงเดยว ดงนนเมอเครองคอมพวเตอรท างานตามโปรแกรมทเขยนไว จงท างานดวยความเรวสงกวาการแปลแบบ Interpret แตวธนกมขอเสยคอ ขอผดพลาดบางประการของโปรแกรมจะตรวจพบเมอเครองคอมพวเตอรท างานตามโปรแกรมแลวเทานน ซงเมอมการแกไขใหถกตอง กจะตองมการแปลสญลกษณทงหมดใหมอกครง

Assembling จรง ๆ แลว Assembling เปนการ Compile โปรแกรมแบบหนง แตถกตงชอใหมตามชอของภาษาทถกน ามาแปลซงกคอภาษาแอสเซมบล การท างานของ Assembling มกจะอยในรปการแทนคาสญลกษณตาง ๆ โดยเทยบกบตาราง เพราะภาษาแอสเซมบลเปนการแทนคาภาษาเครองในแบบค าสงตอค าสงนนเอง

4.4 ภาษาแอสเซมบล

ภาษาแอสเซมบลจรง ๆ แลวกคอภาษานโนนคทมการเพมเตมค าสงพเศษในการจดการเรองการอางองหนวยความจ านนเอง ภาษาแอสเซมบลจดเปนภาษาระดบต าภาษาหนง ซงสญลกษณทใชมกจะถกก าหนดโดยผผลต IC หนวยประมวลผลกลาง ดงนนเมอมการเปลยนหนวยประมวลผลกลาง ภาษาแอสเซมบลทใช กจะตองเปลยนตามไปดวย เมอเราพฒนาโปรแกรมเปนภาษาแอสเซมบลแลว กตองน าไป Assembling ดวยตวแปลภาษาชอ Assembler ซงจะแปลภาษาแอสเซมบลใหเปนภาษาเครองอกทหนง

ขอด ของการใชภาษาแอสเซมบลคอ - สามารถสงงานระบบคอมพวเตอรไดโดยตรง - สามารถเขยนใหไดโปรแกรมภาษาเครองทมขนาดเลกทสดได - โปรแกรมภาษาเครองทไดจะท างานไดรวดเรว

ขอเสย ของการใชภาษาแอสเซมบลคอ - เปนภาษาระดบต าท าใหพฒนาโปรแกรมไดยาก - เหมาะกบการพฒนาโปรแกรมทไมใหญมาก - ไมมโครงสรางขอมลในระดบสง - โปรแกรมทพฒนาขนจะไมสามารถน าไปใชกบหนวยประมวลผลกลางแบบอนได

Page 53: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

40

สรป ภาษาส าหรบการเขยนโปรแกรมดวยเลขฐานสองหรอฐานสบหก เปนภาษาทเกาแกทสดซงเครอง

คอมพวเตอรสามารถจะเขาใจและปฏบตตามไดเลยทนท เราเรยกภาษาแบบนวา “ภาษาเครอง” ซงภาษาดงกลาวไมสอความหมายทชดเจนกบมนษยซงเปนผท เขยนโปรแกรม จงมการคดคนสญลกษณตาง ๆ ขนมาแทนทภาษาเครอง โดยสญลกษณทคดขนในตอนแรกจะเปนการแทนคาภาษาเครองหนงค าสงตอสญลกษณหนงตว เชน 00111110 แทนวา LD A เปนตน ซงเรยกภาษาสญลกษณแบบนวา “ภาษานโมนค (Mnemonic)” หรอ “ภาษาแอสเซมบลพนฐาน” แตทวาสญลกษณทไดน กยงยากทจะใชเขยนโปรแกรม จงไดมการสรางสญลกษณค าสงใหมใหมความงายขน โดยเทยบเคยงสญลกษณกบภาษาองกฤษเพอใหสอความหมายมากทสด จงเกดเปนภาษาส าหรบเขยนโปรแกรมขนมากมายหลายภาษาขนอยกบสญลกษณและรปแบบทใช เชน Fortran, C, Pascal, และ Basic เปนตน และในปจจบนกมการพฒนาภาษาโปรแกรมขนมาอกมายหมายเพอใหเหมาะสมกบการใชงานในดานตางๆ เชน Java, C++, PHP, Perl, Visual Basic, C#, Python, Delphi/Kylix เปนตน ค าถามทบทวน 1. ภาษานโมนค (Mnemonic) เรยกอกอยางหนงวาภาษาอะไรและมความส าคญอยางไรในการเขยนภาษา โปรแกรมในยคแรกๆ 2. การสรางสญลกษณแทนภาษาเครอง ท าใหมการแบงระดบของภาษาส าหรบเขยนโปรแกรมออกเปนกระดบ อะไรบาง 3. Interpret และ Compile แตกตางกนอยางไรจงอธบาย 4. จงอธบายขอดและขอเสยขอดของการใชภาษาแอสเซมบล

Page 54: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

41

แผนบรหารการสอนประจ าบทท 5 หวขอเนอหา - หนวยประมวลผลกลาง - หนวยความจ า - การเชอมตอระหวางอปกรณตาง ๆ - สถาปตยกรรมของระบบไมโครโปรเซสเซอรตระกล 80x86

วตถประสงคเชงพฤตกรรม - เขาใจความหมายและขนตอนการท างานของหนวยประมวลผลกลาง - รและเขาใจการเกบขอมลในหนวยความจ า - รและเขาใจความหมายของการเชอมตอระหวางอปกรณตางๆ เชน Address Bus, Data Bus และ Control Bus เปนตน - สามารถอธบายสถาปตยกรรมของระบบไมโครโปรเซสเซอรตระกล 80x86 ได วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 55: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

42

ระบบคอมพวเตอรประกอบดวยหนวยประมวลผลกลาง (CPU) หนวยความจ า (Memory) อปกรณรบขอมล (Input Units) และอปกรณแสดงผล (Output Unit) ในบทนเราจะเรมพจารณาการเชอมโยงของอปกรณตาง ๆ และโครงสรางภายในขององคประกอบเหลานน

5.1 หนวยประมวลผลกลาง

หนวยประมวลผลกลางมหนาทประมวลผลขอมลตาง ๆ ในระบบคอมพวเตอร โดยหนวยประมวลผลกลางจะท างานตามโปรแกรมทระบโดยผใช ขนตอนการท างานของหนวยประมวลผลกลางมลกษณะเปนวงรอบ โดยขนแรกหนวยประมวลผลกลางจะอานค าสงจากหนวยความจ า (fetch) จากนนหนวยประมวลผลกลางจะตความค าสงนน (decode) และในขนตอนสดทายหนวยประมวลผลกลางกจะประมวลผลตามค าสงทอานเขามา (execute) เมอท างานเสรจหนวยประมวลผลกจะเรมอานค าสงเขามาอกครง ขนตอนดงกลาวมลกษณะแสดงไดดงรปท 5.1

รป 5.1 แสดงขนตอนการท างานของหนวยประมวลผล หนวยประมวลผลกลางจะท างานตามชดค าสง (instructions) ทอานขนมาจากหนวยความจ าหลก

เทานน เราจะเรยกสถาปตยกรรมของระบบคอมพวเตอรทมการเกบโปรแกรมและขอมลไวในหนวยความจ าหลก โดยทหนวยประมวลผลจะท างานกบหนวยความจ าเทานนวา Stored Program Architecture หรอคอมพวเตอรแบบวอนนอยแมน (von Neumann Computer) โดยตงเปนเกยรตใหกบ John von Neumann 1

ชดค าสงของคอมพวเตอร โดยทวไปจะประกอบดวยสวนยอย ๆ 2 สวนคอ สวน Opcode ซงเปนสวนทระบประเภทของการประมวลผล และสวน Operand ซงเปนสวนทระบขอมลส าหรบการประมวลผลตามทระบใน opcode

โดยปกตแลว เรานยมใชไมโครโปรเซสเซอรท าหนาทเปนหนวยประมวลผลกลางในระบบคอมพวเตอร ดงนนการทเราอางถงไมโครโปรเซสเซอรเราจะอางถงในหนาททเปนหนวยประมวลผลกลาง โดยค าสองค านอาจใชแทนกนได

1 ผบกเบกเทคโนโลยคอมพวเตอรเชอวาชอของคอมพวเตอรแบบวอนนอยแมน ใหเกยรตกบ von Neumann ผเขยนแนวคดเกยวกบคอมพวเตอรรปแบบนมากไป โดยใหความส าคญกบ J.Presper Eckert และ John Mauchly วศวกรผสรางเครองคอมพวเตอรลกษณะนขนมานอยเกนไป

บทท 5 สถาปตยกรรมคอมพวเตอรเบองตน (Introduction to computer architecture)

Decode

Fetch

Execute

Page 56: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

43

5.2 หนวยความจ า

การเกบขอมลในหนวยความจ ามหนวยทเลกทสดในการเกบขอมลคอบต แตในการเรยกขอมลจากหนวยความจ านนจะกระท าในรปของขอมลทมขนาดใหญกวา คอจะมขนาด 8 บต หรอ 1 ไบท ภายในหนวยความจ าของระบบคอมพวเตอรหนง ๆ จะประกอบดวยหนวยยอย ๆ ขนาด 8 บตเหลานอยมากมาย หนวยยอย ๆ เหลานจะมหมายเลขเฉพาะตว เพอใหหนวยประมวลผลสามารถใชอางถงเมอจะอาน หรอเขยนขอมลลงไปในหนวยยอยหนวยนน หมายเลขนเราเรยกวา แอดเดรส (Address) ดงนนการทหนวยประมวลผลจะอางถงขอมลขอมลหนงทเกบอยในหนวยความจ าไดนน หนวยประมวลผลจะตองระบแอดเดรสของขอมลชนนนใหไดดวย

5.3 การเชอมตอระหวางอปกรณตาง ๆ

บส (Bus) : ชองทางสอสาร อปกรณตาง ๆ จะเชอมตอกบโดยผานทางกลมของสายสญญาณ ทเราเรยกวา “บส” อปกรณตาง ๆ จะ

สงและรบสญญาณผานทางกลมสายสญญาณชดเดยวกน แสดงดงรปท 5.2

รปท 5.2 แสดงการเชอมตอของอปกรณตาง ๆ ผานระบบบส เราสามารถแบงกลมของบสออกเปน 3 กลม คอ

บสขอมล (Data bus) ใชส าหรบสงรบขอมล บสต าแหนง หรอ แอดเดรสบส (Address bus) ใชส าหรบสงรบต าแหนงส าหรบอางองขอมล

จากหนวยความจ า หรอ จากอปกรณ I/O บสควบคม (Control bus) ใชส าหรบสงสญญาณควบคม

แอดเดรสบส (Address bus) ในระบบคอมพวเตอรทหนวยประมวลผลเชอมตอกบอปกรณอน ๆ ผานทางบส ขอมลตาง ๆ ทสง/รบ

กนระหวางอปกรณตาง ๆ นนจะสงผานทางบสขอมล ดงนนการทหนวยประมวลผลจะตดตอกบหนวยความจ าหรออปกรณรบและแสดงผลขอมลทตองการไดนน ทงหนวยความจ า และ อปกรณรบหรอแสดงผลขอมลทกอปกรณ จะตองมหมายเลขเฉพาะ หมายเลขนส าหรบหนวยความจ ากคอแอดเดรส สวนอปกรณอนพตและอปกรณเอาทพตกมหมายเลขเฉพาะส าหรบอปกรณหนง ๆ เชนเดยวกน โดยเรยกวา หมายเลข I/O (I/O

CPU Memory

I/O

I/O

I/O

Data bus

Control bus Address bus

Page 57: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

44

address) เมอหนวยประมวลผลตองการตดตอกบหนวยความจ าทต าแหนงใด หรอตดตอกบอปกรณใดกจะสงแอดเดรสของหนวยความจ านน หรอของอปกรณนนมา ในการเลอกวาหมายเลขแอดเดรสทสงมาเปนของหนวยความจ าหรอของอปกรณอนพตเอาทพต หนวยประมวลผลจะสงสญญาณระบมาทางสญญาณในบสควบคม 5.4 สถาปตยกรรมของระบบไมโครโปรเซสเซอรตระกล 80x86

5.5.1 ความเปนมา ไมโครโปรเซสเซอรตระกล 80x86 เปนไมโครโปรเซสเซอรทพฒนาขนโดยบรษท Intel โดยมการพฒนา

มาตงแตรน 4040 ซงเปนไมโครโปรเซสเซอรขนาด 4 บต จนกระทงในปจจบนไดพฒนาเปนไมโครโปรเซสเซอรรน Pentium รายละเอยดคราว ๆ ของไมโครโปรเซสเซอรรนตาง ๆ เปนดงตอไปน

8086 เปนไมโครโปรเซสเซอรขนาด 16 บต รนแรกท Intel ผลตขน สามารถอางหนวยความจ าได 1 MB มรจสเตอรภายในขนาด 16 บต

8088 เนองจากในขณะนนอปกรณตาง ๆ โดยมากเปนอปกรณขนาด 8 บต บรษท Intel จงไดผลตไมโครโปรเซสเซอร 8088 ซงมสถาปตยกรรมภายในเหมอน 8086 แตมการตดตอกบระบบภายนอกเปนแบบ 8 บต

80186 เปนหนวยประมวลผลซงเพมการจดการเกยวกบอปกรณรอบขางเขาไป เพอใหเปนหนวยประมวลผลส าหรบงานควบคมตาง ๆ

80286 เปนหนวยประมวลผลขนาด 16 บตทมความเรวในการท างานสงขน ขยายขอบเขตการอางหนวยความจ าเปน 24 เมกะไบต และมการเพมความสามารถในการจดการหนวยความจ า

80386 เปนหนวยประมวลผลขนาด 32 บต อางหนวยความจ าไดถง 4 กกะไบต มความสามารถในการจดการหนวยความจ าทซบซอน และสามารถใชหนวยความจ าแบบเสมอนได มาตรฐานของชดค าสงและกรรมวธในการจดการหนวยความจ าของหนวยประมวลผลรนนยงคงใชเปนมาตรฐานอยจนถงปจจบนน ยกตวอยางเชน แมแตระบบปฏบตการ Windows 95 ยงสามารถน ามาท างานไดบนหนวยประมวลผลรนน แตจะท างานไดชามากเทานนเอง

80386SX เปนหนวยประมวลผลซงมสถาปตยกรรมภายในเหมอน 80386 แตมระบบบสภายนอกเปน 16 บต หนวยประมวลผลรนนไดรบการออกแบบขนดวยสาเหตคลายกบ 8088

80486 ไดรบการพฒนาตอจากรน 80386 โดยทางบรษท Intel ไดมการเพมหนวยประมวลผลเลขทศนยมเขาไป

80486SX เปนหนวยประมวลผลรน 80486 ซงตดความสามารถในสวนของการประมวลผลเลขทศนยมออก

Pentium, Pentium Pro, Pentium II เปนหนวยประมวลผลรนลาสดของบรษท Intel มการเพมความสามารถในการประมวลผลใหสงขน โดยใชเทคโนโลยตาง ๆ เชนการประมวลผลแบบไปปไลน การประมวลผลแบบซเปอรสเกลาร เปนตน

นอกจากไมโครโปรเซสเซอรตระกล 80x86 แลว ยงมหนวยประมวลผลกลางทผลตและพฒนาโดยบรษทตาง ๆ อกหลายตระกลเชน ตระกล 68000 และ PowerPC ของบรษทโมโตโรลาตระกล Alpha ของบรษท DEC และตระกล Sparc ของบรษท Sun Microsystem เปนตน

Page 58: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

45

ในการศกษาบทนจะศกษาเกยวกบสถาปตยกรรมของระบบไมโครโปรเซสเซอร 8086 เทานน 5.5.2 ลกษณะทวไปของไมโครโปรเซสเซอร 8086

ระบบบส ไมโครโปรเซสเซอร 8086 มแอดเดรสบสขนาด 20 บต ท าใหสามารอางแอรดเดรสได 1 เมกะไบต และ

มบสขอมลขนาด 16 บต ซงท าใหการอานและเขยนขอมลท าไดครงละ 2 ไบต หนวยประมวลผลทางคณตศาสตรและตรรกศาสตรภายใน 8086 สามารถประมวลผลไดกบขอมลขนาด 16 บต รจสเตอรภายในไมโครโปรเซสเซอร 8086 มขนาด 16 บต

การจดการหนวยความจ า ภายในหนวยประมวลผล 8086 มรจสเตอรขนาด 16 บต แตมแอดเดรสบสขนาด 20 บต ดวยสาเหต

ดงกลาวหนวยประมวลผลจะไมสามารถเกบต าแหนงขอมลภายในหนวยความจ าไดภายในรจสเตอรเพยงตวเดยว ดงนนการจดเกบต าแหนงของขอมลภายในหนวยความจ าใน 8086 จงตองเกบดวยรจสเตอร 2 ตว โดยมวธการจดเกบแบบ เซกเมนต : ออฟเซต (segment : offset) แอดเดรสทแทจรง (physical address) ขนาด 20 บต จะถกจดเกบดวยรจสเตอรขนาด 16 บต 2 ตว คาทเกบในรจสเตอรตวแรกเรยกวาเซกเมนต (segment) สวนคาทเกบในรจสเตอรอกตวเรยกวาออฟเซต (offset)

การอางถงต าแหนงภายในหนวยความจ าแบบเซกเมนต : ออฟเซตนน อาจเปรยบไดเสมอนกบการทเราแบงหนวยความจ าเปนสวนยอย ๆ โดยสวนยอยนเราจะเรยกวา เซกเมนต การทเราจะอางถงต าแหนงใด ๆ เราจะอางถงเซกเมนตทต าแหนงขอมลนนอย และระบระยะหางของหนวยความจ าทคดเทยบกบจดเรมตนของเซกเมนตทเราระบไป

การแปลงแอดเดรสทเกบอยในรปของ เซกเมนต : ออฟเซต เปนแอดเดรสขนาด 20 บต มขนตอนดงน 1. เลอนบตของคาเซกเมนตไปทางซาย 4 บต ดงนนจากขอมล 16 บต เราจะไดขอมล 20 บต ทม 4

บตทางขวาเปน 0 ในทกหลก 2. น าคาออฟเซตมาบวกเขากบคาเซกเมนตทเลอนบตแลว จะไดแอดเดรสขนาด 20 บต ทจะน าไปอาง

ต าแหนงทแทจรงของขอมล ขนตอนทงสองแสดงไดดงรปท 5.3

รปท 5.3 แสดงการแปลงแอดเดรสจากแบบเซกเมนต : ออฟเซต เปน แอดเดรสขนาด 20 บต

YYYY

XXXX00

ZZZZZZ

YYYY XXXX ออฟเซต เซกเมนต

physical address

Page 59: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

46

ตวอยาง เชน 123Ah : 22B6h แปลงเปนแอดเดรสขนาด 20 บตไดดงน เลอนบตของ 123Ah ไป 4 บต ได 123A0h น า 22B6h มาบวก 22B6h จะไดแอดเดรสขนาด 20 บตคอ 14656h

ในทางกลบกนทต าแหนง แอดเดรส 14656h กจะสามารถอางแบบ เซกเมนต : ออฟเซต ไดเปน 123Ah : 22B6h เชนเดยวกน แต ต าแหนงแอดเดรส 14656h สามารถอางแบบ เซกเมนต : ออฟเซต คาอนกไดเชน 1465h : 0006h หรอ 1460h : 0056h และยงอางโดยใชคเซกเมนต : ออฟเซต คอน ๆ ไดอกหลายค

ผลจากการใชการอางแอดเดรสแบบ เซกเมนต : ออฟเซต ท าใหลกษณะของหนวยความจ าท 8086 มองเหนจะมลกษณะเปนสวน ๆ ทอางองตามคาของเซกเมนต โดยแตละสวนนจะมขนาดสวนละ 64 กโลไบท สวนของหนวยความจ าขนาด 64 กโลไบตน เรยกวา เซกเมนต การจดเรยงตวของเซกเมนตตาง ๆ ในหนวยความจ าจะจดเรยงเปนสวน ๆ ทมการเหลอมกนแสดงไดดงรปท 5.4

รปท 5.4 แสดงลกษณะการเหลอมกนของเซกเมนต เนองจากการอางถงขอมลใด ๆ ในหนวยความจ าของไมโครโปรเซสเซอร 8086 จะตองอางต าแหนงเปนค

เซกเมนต : ออฟเซต การอางถงขอมลในต าแหนงตาง ๆ อาจท าไดยงยากเพราะตองมการระบทงเซกเมนตและออฟเซต ในไมโครโปรเซสเซอร 8086 จงไดออกแบบรจสเตอรพเศษขน 4 ตวเพอใชเกบคาของเซกเมนตตาง ๆ ทก าลงใชงานอยในขณะนน กลมของรจสเตอรนนเรยกวา เซกเมนตรจสเตอร ซงไดแก CS (Code segment) DS (Data segment) ES (Extra segment) และ SS (Stack segment) เซกเมนตรจสเตอรทง 4 ตวนจะใชประกอบกบคาออฟเซตตาง ๆ เพอระบต าแหนงของ โปรแกรม (code) ขอมล (data) และแสตก (stack) สวนรจสเตอร ES มหนาทเกบเซกเมนตของขอมลทใชในการสงงานค าสงพเศษบางประเภท เชน ค าส งเกยวกบขอความ

ดงนนเราจะเหนไดวา ถงแมไมโครโปรเซสเซอร 8086 จะสามารถมองหนวยความจ าไดรวมถง 1 เมกะไบต แตโปรแกรมทท างานอยจะมองเหนหนวยความจ าไดพรอม ๆ กนแคเพยง 4 เซกเมนตเทานน นนคอ เซกเมนตของโปรแกรม เซกเมนตของขอมล 2 เซกเมนต และ เซกเมนตของแสตก

แสตก (Stack) ภายในหนวยความจ าของระบบไมโครโปรเซสเซอร 8086 จะมหนวยความจ าสวนหนงทถกกนเนอทไว

ส าหรบเปน แสตกโดยเซกเมนตของแสตกจะถกชโดยรจสเตอร SS ลกษณะเฉพาะของหนวยความจ าแบบแสตกคอการทระบบจะเกบขอมลและอานขอมลออกไปแบบ เขากอน ออกทหลง (First In Last Out : FILO) โดยอาจมองลกษณะเหมอนการวางซอนขอมลเหมอนซอนจาน ขอมลทถกน ามาเกบกอนจะอยทางดานลาง ขอมลถดไป

0 1 2 3 4

Page 60: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

47

จะวางซอนอยดานบน ขอมลทอยทางดานลางจะไมสามารถอานออกไปไดถามขอมลอนทเกบทหลงและยงไมไดอานออกไป ระบบจะใชแสตกในการเรยกโปรแกรมยอย และเราจะศกษาเกยวกบแสตกโดยละเอยดอกครงในสวนของโปรแกรมยอย

5.5.3 รายละเอยดของสวนประกอบภายในไมโครโปรเซสเซอร

หนวยประมวลผลทางคณตศาสตรและตรรกศาสตร (ALU) ไมโครโปรเซสเซอร 8086 ม ALU ทสามารถประมวลผลไดครงละ 16 บต ดวยความสามารถในการ

ประมวลผลทละ 16 บตน ท าใหเราเรยกไมโครโปรเซสเซอร 8086 วาเปนไมโครโปรเซสเซอรขนาด 16 บต หนวยความจ าชวคราว (รจสเตอร --- Register) รจสเตอรใน 8086 มทงขนาด 16 บต และ 8 บต โดยจะแบงเปนกลม ๆ ไดดงน

1.รจสเตอรส าหรบใชงานทวไป (General-Purpose Registers) รจสเตอรในกลมน ผเขยนโปรแกรมสามารถน าไปใชงานไดตามความตองการ โดยในกลมนจะม รจสเตอรขนาด 16 บต อย 4 ตว โดยรจสเตอรขนาด 16 ทง 4 ตวจะแบงไดเปนรจสเตอรขนาด 8 บตอก 8 ตว รจสเตอรขนาด 16 บตและครจสเตอรขนาด 8 บต มดงตอไปน

1.1. รจสเตอร AX (Accumulator Register) AX AH AL

1.2. รจสเตอร BX (Base Register) BX BH BL

1.3. รจสเตอร CX (Counter Register) CX CH CL

1.4. รจสเตอร DX (Data Register) DX DH DL

ส าหรบรจสเตอรทง 4 ตวน นอกจากจะมไวส าหรบใชงานทวไปไดแลว ยงมหนาทเฉพาะอน ๆ

อก ซงจะกลาวถงไนบทตอ ๆ ไป 2. รจสเตอรส าหรบอางอง (Index Register) ไมโครโปรเซสเซอร 8086 มรจสเตอรส าหรบอางอง 2 ตว คอ SI (Source Index) และ DI (Destination Index) รจสเตอรในกลมนใชส าหรบการอางต าแหนงแบบอางอง และใชในค าสงทเกยวกบขอความ แตผใชสามารถน าไปใชงานทวไปไดดวยเชนกน

Page 61: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

48

รจสเตอรส าหรบการช (Pointer Register) รจสเตอรกลมนคอ SP และ BP รจสเตอร SP ใชประกอบกบรจสเตอร SS มหนาทชต าแนงปจจบนของแสตก รจสเตอร BP สวนใหญจะใช เพอชต าแหนงของแสตกเชนเดยวกน แตนยมใชในสวนของการสงพารามเตอรในโปรแกรมยอย 3. เซกเมนตรจสเตอร (segment register) เซกเมนตรจสเตอรทง 4 ตวคอ CS DS ES และ SS ใชประกอบกบคาของออฟเซต เพอชต าแหนงของ โปรแกรม ขอมลปรกต ขอมลพเศษ และ แสตก ตามล าดบ 4. แฟลก (flag)

ไมโครโปรเซสเซอร 8086 จะเกบลกษณะของผลลพธของการค านวณทางคณตศาสตรไวใน แฟลก 5. รจสเตอรอน ๆ ของระบบ นอกเหนอจากรจสเตอรตาง ๆ ทผใชสามารถก าหนดและใชงานไดแลว ยงมรจสเตอรอกกลมหนงซงผเขยนโปรแกรมไมสามารถเรยกใชได รจสเตอรในกลมน เชน IP ซงเปนรจสเตอรทใชประกอบกบ CS เพอชต าแหนงของค าสงทจะท างานตอไปหรอ IR ซงรจสเตอรทเกบค าสงปจจบนทไมโครโปรเซสเซอรอาน (fetch) ขนมาจากหนวยความจ า

5.5.4 โหมดการอางแอดเดรส

ไมโครโปรเซสเซอร 8086 สามารถอางถงขอมลไดหลายแบบ โดยวธการตาง ๆ ท 8086 อางถงขอมลนน เรารวมเรยกวาโหมดการอางแอดเดรส (Addressing mode) ซงรปแบบท 8086 อางถงขอมลนนแบงเปนกลม ๆ ได 3 กลมใหญ ๆ คอ กลมทอางถงขอมลในรจสเตอร กลมทอางถงขอมลทระบในค าสง และกลมทอางถงขอมลในหนวยความจ า เราจะศกษาเรองของโหมดการอางแอดเดรสอยางละเอยดอกครงในบทถด ๆ ไป 5.5.5 การอนเตอรรพท (Interrupt)

การอนเตอรรพท หรอการขดจงหวะ คอการสงใหหนวยประมวลผลหยดการท างานชวคราว แลวกระโดดไปท างานบางอยางเพอตอบสนองการขดจงหวะนน ตวอยางของการขดจงหวะ เชน อปกรณบางชนไดร บขอมล หรอ ขอมลไดรบเขยนเกบลงในฮารดดสกเรยบรอยแลว เปนตน เมอหนวยประมวลผลตอบสนองการขดจะหวะเรยบรอยแลว กจะคนสสถานะเดมและกลบไปประมวลผลงานเกาทประมวลผลคางไว เสมอนไมมอะไรเกดขน การขดจงหวะนมสองประเภทคอ ซอฟตแวรอนเตอรรพท และ ฮารดแวรอนเตอรรพท เรานยมใชซอฟตแวรอนเตอรรพทในการเรยกใชการบรการตาง ๆ ของระบบ สวนฮารดแวรอนเตอรรพทจะนยมใชในการแจงการเปลยนสถานะของอปกรณอนพตเอาทพต ตาง ๆ 5.5.6 สถาปตยกรรมของระบบคอมพวเตอรสมยใหม

เทคโนโลยของสถาปตยกรรมคอมพวเตอรสมยใหมไดพฒนาไปอยางรวดเรวมาก เครองคอมพวเตอรทเราใชในปจจบนมประสทธภาพมากกวาเครองคอมพวเตอรทวไปเมอ 2-3 ปกอนหลายเทา ทงนเนองจากมการวจยและสรางหนวยประมวลผลกลางและระบบคอมพวเตอรทมประสทธภาพสงขนมาก

Page 62: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

49

เทคโนโลยของหนวยประมวลผลกลาง หนวยประมวลผลแบบ RISC

ชดค าสงของหนวยประมวลผลยคเกามลกษณะเปนแบบ CISC : Complex Instruction Set Computer นนคอชดค าสงจะหนง ๆ จะมความซบซอนมาก การทชดค าสงซบซอนท าใหการออกแบบสวนควบคมภายในหนวยประมวลผลท าไดยาก ในปจจบนหนวยประมวลผลตาง ๆ ไดเปลยนแนวทางในการพฒนาไปเปนแบบ RISC : Reduced Instruction Set Computer โดยเนนชดค าสงทมความซบซอนนอยลง แตมความเรวในการท างานสงขน การท าใหชดค าสงมรปแบบทงายขนท าใหการออกแบบสวนควบคมท า ไดงายขน และยงท าใหสามารถใชวธการแบบไปปไลน (Pipeline) และซปเปอรสเกลาร (Superscalar) ในการเพมประสทธภาพของหนวยประมวลผลไดงายขนดวย

ไปปไลน (Pipeline) หนวยประมวลผลรนใหมจะมการประมวลผลแบบไปปไลน กลาวคอจะมการ fetch decode และ

execute ค าสงเหลอมกนแสดงไดดงรปท 5.5 การประมวลผลเหลอมกนนท าใหประสทธภาพของการประมวลผลสงขนมาก

i i F D X F D X F D X F D X F D X F D X t t

ล าดบการท างานเมอท างานแบบปกต ล าดบการท างานเมอท างานแบบไปปไลน รปท 5.5 แสดงการท างานแบบไปปไลนเทยบกบการท างานแบบปกต

ซเปอรสเกลาร (Superscalar) ในหนวยประมวลผลทมประสทธภาพสงบางรน จะประมวลผลชดค าสงหลายชดค าสงไดพรอมกน การทหนวยประมวลผลประมวลผลค าสงไดหลายชดพรอมกนนเรยกวา ซเปอรสเกลาร

ระบบบสสมยใหม ระบบคอมพวเตอรสมยกอน หนวยประมวลผลมความเรวในการประมวลผลไมมากนกท าใหการโอนยาย

ขอมลระหวางหนวยประมวลผลกบหนวยความจ ากระท าไดโดยไมกอใหเกดการเสยเวลา แตการพฒนาของหนวยประมวลผลเปนไปอยางรวดเรวกวาการพฒนาของหนวยความจ ามากท าใหปจจบนอตราการประมวลผลของหนวยประมวลผลสงกวาอตราการโอนยายขอมลระหวาหนวยประมวลผลกบหนวยความจ ามาก สถานการณเชนนกอใหเกดปญหาในรปแบบคอขวด (Bottleneck problem) ขน นนคอจดเชอมตอระหวางหนวยความจ ากบหนวยประมวลผลท าใหประสทธภาพของระบบลดลง เราเรยกคอขวดระหวางหนวยประมวลผลกบหนวยความจ าวา คอขวดของวอนนอยแมน (von Neumann Bottleneck)

Page 63: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

50

วธการแกปญหานคอการใชหนวยความจ าทมความเรวสงมากขนาดเลกมาเปนบฟเฟอร (ทพกขอมลชวคราว) ระหวางหนวยความจ าและหนวยประมวลผล หนวยความจ าทมความเรวสงนเรยกวา หนวยความจ าแคช (cache memory) ในหนวยประมวลผลปจจบนหลายรน ไดมการบรรจหนวยความจ าแคชลงไปภายในไมโครโปรเซสเซอรดวย ลกษณะของบสทมการใชหนวยความจ าแคชเปนแสดงไดดงรปท 5.6

CPU CACHE MEMORY

รปท 5.6 แสดงลกษณะของบสทมการใชหนวยความจ าแคช

Page 64: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

51

สรป สถาปตยกรรมไมโคร (Micro Architecture) เปนลกษณะของ เครองคอมพวเตอรสวนใหญทมการใชงานมาตงแตยคเรมตน จนถงยคปจจบน ไดรบการออกแบบโครงสรางและการท างานโดยจอนวอนนวแมน(John Von Neumann ) ซงเปนผน าในการออกแบบเครองคอมพวเตอร โดยเครองคอมพวเตอร ทเขาไดออกแบบ มสวนประกอบทส าคญ 3 อยางดวยกนคอ หนวยประมวลผลกลาง (Central Processing Unit), หนวยความจ า (Main Memory) และ หนวยเชอมตออปกรณภายนอก (Input/Output) ส าหรบไมโครโปรเซสเซอร ในตระกล x86 ออกแบบโดยใชหลกการเดยวกนกบท วอนนวแมนไดก าหนดไว กลาวคอ การประมวลผลทงหมด ทหนวยประมวลผลกลาง ส าหรบขอมล ไมวาจะเปนขอมลทใชส าหรบประมวลผล หรอขอมลทเปนค าสงกตาม จะถกเกบไวในหนวยความจ าจนกวาจะมการเรยกใชงานจากหนวยประมวลผลกลาง ส าหรบสวนตอเชอมกบอปกรณภายนอกนน การท างานของหนวยประมวลผลกลางกจะคลายกบการท างานกบหนวยความจ า ทงนเพราะทงหนวยความจ าและอปกรณภายนอก เมอมการท างานกบหนวยประมวลผลกลางกมลกษณะของการเรยกใชขอมลและน า ขอมลไปเกบ ตางกนเพยงสถานท และ วธการเขาถงเทานน บสของระบบ หนวยงานตาง ๆ ภายในเครองคอมพวเตอรนน ตอเชอเขาดวยกนดวยระบบบส ส าหรบโปรเซสเซอรในตระกล 80x86 มดวยกน 3 กลมอนไดแก ดาตาบส (Data Bus) แอดเดรสบส (Address Bus) และคอมโทรลบส (Control Bus) เปนตน ค าถามทบทวน 1. ขนตอนการท างานของหนวยประมวลผลมทงหมดกขนตอนอะไรบาง 2. เราสามารถแบงกลมของบสออกเปนกกลมอะไรบาง จงยกตวอยางพรอมวาดรปประกอบ ค าอธบาย 3. จงแสดงวธการแปลงแอดเดรส 234Ah : 44B6h เปนแอดเดรสขนาด 20 บต 4. โปรเซสเซอรในตระกล 80x86 ประกอบไปดวยกลมขอมลอะไรบาง จงยกตวอยางพรอมวาดรปประกอบ ค าอธบาย 5. รจสเตอรใน 8086 มทงขนาด 16 บต และ 8 บต แบงเปนกลม ๆ ไดอยางไรบาง 6. จงอธบายความแตกตางระหวางหนวยประมวลผลแบบ RISC กบแบบ CISC 7. วธการท างานแบบไปปไลน (Pipeline) และซปเปอรสเกลาร (Superscalar) แตกตางกนอยางไร

Page 65: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

52

แผนบรหารการสอนประจ าบทท 6 หวขอเนอหา - ค าสงในการโยนยายขอมล ค าสง MOV

- เครองมอในการทดลองการโปรแกรมภาษาแอสเซมบล - ค าสงในการโยนยายขอมล ค าสงทวไป

วตถประสงคเชงพฤตกรรม - เขาใจความหมายและขนตอนการท างานของค าสงในการโยนยายขอมล - รและเขาใจ สามารถใชงานโปรแกรม DEBUG ภาษาแอสเซมบลได - รและเขาใจการใชงานค าสงทวไปและการ DEBUG เพอตรวจสอบความถกตองของค าสงโปรแกรม ภาษาแอสเซมบลได วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 66: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

53

ในบทนจะเรมศกษาเกยวกบค าสงภาษาแอสเซมบลเบองตน โดยจะเปนค าสงเกยวกบการโอนยายขอมล

ทงจากรจสเตอรและหนวยความจ า ในตอนทายของบทนจะเปนการแนะน าโปรแกรม DEBUG ซงจะเปนเครองมอทเราจะใชทดลองการโปรแกรมภาษาแอสเซมบลเบองตน 6.1 ค าสงในการโยนยายขอมล ค าสง MOV

ค าสง MOV เปนค าสงทใชส าหรบการคดลอกขอมลจากแหลงขอมลตนทางไปยงแหลงขอมลปลายทาง โดยมรปแบบดงน

MOV reg, reg MOV reg, mem MOV mem, reg MOV reg, imm MOV mem, imm

reg : register mem : memory imm : immediate (คาคงท)

ในการคดลอกขอมลจะกระท าจากโอเปอรแรนด (operand) ตวหลงไปยงโอเปอรแรนดตวหนา สงเกต

วา เราไมสามารถคดลอกขอมลจากหนวยความจ าไปยงหนวยความจ าได

ขอจ ากดของค าสง MOV * โอเปอรแรนดทงสองตวตองมขนาดเทากน * ไมสามารถคดลอกคาคงท (immediate) ไปยงเซกเมนตรจสเตอรไดโดยตรง ตองกระท าผานทาง

รจสเตอรอน ๆ เชน AX เปนตน * ในการคดลอกคาคงทไปยงหนวยความจ าจะตองระบขนาดของหนวยความจ าดวย

ตวอยาง MOV AX,100h MOV BX,AX MOV DX,BX

ก าหนดคารจสเตอร AX ใหเปน 100h จากนนคดลอกคาจาก AX ไปยง BX และคดลอกจาก BX ไปยง DX ตามล าดบ

MOV AX,1234h MOV DX,5678h MOV AL,DL

ก าหนดคา 1234h ใหกบ AX และ 5678h ใหกบ DX จากนน คดลอกคาในรจสเตอร DL (มคาเทากบ 78h เพราะอะไร?) ไปใหกบรจสเตอร AL และคดลอกคาจาก

บทท 6 ค าสงโอนยายขอมล (Command Transfer)

Page 67: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

54

MOV BH,DH

DH (มคาเทากบ 56h เพราะอะไร?) ไปยงรจสเตอร DH

MOV AX,1000h MOV [100h],AX MOV BX,[100h]

ก าหนดคา 1000h ใหกบ AX จากนนคดลอกขอมลจาก AX ไปยงหนวยความจ าต าแหนง offset ท 100h และคดลอกขอมลจากหนวยความจ าต าแหนงนนมายง BX

MOV BYTE PTR [200h],10h MOV WORD PTR [300h],10h

ก าหนดคา 10h ไปยงต าแหนงในหนวยความจ าท offset 200h โดยโอนยายขอมลแบบขนาด 1 Byte และก าหนดคา 10h ทมขนาด 1 word (0010h) ไปยงต าแหนงในหนวยความจ าท offset 300h

MOV AX,2300h MOV DS,AX

ก าหนดคา 2300h ใหกบรจสเตอร DS โดยตองก าหนดผานรจสเตอรขนาด 16 บตตวอน (ในทนคอ AX)

การโอนยายขอมลระหวางรจสเตอรกบรจสเตอร การโอนยายขอมลระหวางรจสเตอรสามารถท าไดถาขนาดของรจสเตอรทงคเทากน แตยงมเซกเมนต

รจสเตอรบางตวซงไมควรเขาไปก าหนดคาโดยตรง เชน CS หรอ SS ครจสเตอร 16 บต กบ 8 บต ในการใชงานรจสเตอรทวไปเราจะตองค านงถงเรองของครจสเตอร 16 บต กบ 8 บตดวย จากทเราได

ทราบมาแลววารจสเตอร 8 บตทเราใชไดนน เปนสวนหนงของรจสเตอรทวไปขนาด 16 บต เชน รจสเตอร AH เปนไบตสงรจสเตอร AX (บตท 8-15) เปนตน ดงนนถาเราก าหนดคาใหกบรจสเตอร 8 บตกจะมการเปลยนแปลงกระทบถงรจสเตอร 16 บตทรจสเตอรนนประกอบอยดวย และในทางกลบกน การเปลยนแปลงคาในรจสเตอร 16 บตกมผลกระทบมาถงรจสเตอร 8 บตดวย

ตวอยาง ค าสง คาในรจสเตอรหลงการท างานของค าสง MOV AX,1000h MOV AL,3Ah MOV AH,AL MOV AX,234h

AX = 1000h AX = 103Ah AX = 3A3Ah AX = 234h

AH = 10h AH = 10h AH = 3Ah AH = 02h

AX = 00h AX = 3Ah AX = 3Ah AX = 34h

การโอนยายขอมลกบหนวยความจ า

โดยปกตการโอนยายขอมลกบหนวยความจ านน เราจะระบเฉพาะออฟเซตของหนวยความจ าทเราตองการจะโอนยายขอมลดวย ออฟเซตนนจะถกน ามาประกอบกบเซกเมนตรจสเตอร DS เพอเปนต าแหนงในหนวยความจ าทแทจรงทจะอานเขยนขอมลดวย

ตวอยาง

Page 68: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

55

โปรแกรม ต าแหนง คาในหนวยความจ าหลงการท างานของค าสงท MOV AX,1234h DS: 1,2 3 4 5 6 7 8,9 MOV BX,6789h MOV [100h],AH MOV [101h],BL MOV [102h],BX MOV [104h],AX MOV [105h],BH MOV AX,[104h] MOV BL,[103h]

100h 101h 102h 103h 104h 105h 106h

? ? ? ? ? ? ?

12h ? ? ? ? ? ?

12h 89h ? ? ? ? ?

12h 89h 89h 67h ? ? ?

12h 89h 89h 67h 34h 12h ?

12h 89h 89h 67h 34h 67h ?

12h 89h 89h 67h 34h 67h ?

หลงการท างาน รจสเตอร AX มคาเทากบ 6734h และ BX มคาเทากบ 3467h

ขอสงเกตในการจดเรยงไบตเมอเกบขอมลในหนวยความจ า สงเกตวาในการเกบคาในหนวยความจ าเมอเราเกบคาเปน 16 บต การเรยงไบตในหนวยความจ าจะเกบคา

ในไบตทมนยส าคญสงไวในไบตทมแอดเดรสสงกวา และไบตทมนยส าคญต าไวในแอดเดรสทมแอดเดรสต ากวา แสดงไดดงรปท 6.1

12h 34h 34h

12h

รปท 6.1 แสดงการเรยงไบตขอมลในหนวยความจ า ลกษณะของการเกบขอมลโดยเรยงไบตทมนยส าคญต าไวทแอดเดรสต าและไบตทมนยส าคญสงไวท

แอดเดรสสงเราเรยกวาเปนการเรยงแบบ C ในการก าหนดออฟเซตของหนวยความจ าทจะอานและเขยนขอมลนน จากตวอยางขางตนเราระบโดยใส

หมายเลขออฟเซตโดยตรง แตเราสามารถระบออฟเซตโดยผานทางคาในรจสเตอร BX (base register) ไดอกทางหนง

ตวอยาง MOV BX,100h MOV AX,[BX] MOV BX,102h MOV [BX],DX

การก าหนดคาคงทใหกบหนวยความจ า

Page 69: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

56

การก าหนดคาคงทใหกบหนวยความจ าสามารถกระท าได แตจะตองมการระบขนาดของขอมลทจะคดลอกสหนวยความจ า เพอทจะปองกนการสบสนดงตวอยางเชน ค าสง MOV [100h],10h จากค าสงดงกลาว แอสเซมเบลอรจะไมสามารถทราบไดเลยวาการคดลอกขอมลจะเปนในลกษณะของ 8 บต หรอ 16 บต

ในการระบขนาดของการคดลอกขอมลเราจะใช keyword วา BYTE PTR (Byte Pointer) หรอ WORD PTR (Word Pointer) ส าหรบระบวาการอางถงหนวยความจ าในต าแหนงนนเปนแบบไบต หรอ เวรด

ตวอยาง MOV BYTE PTR [100h],10h MOV WORD PTR [102h],10h MOV BX,104h MOV WORD PTR [BX],2345h

6.2 เครองมอในการทดลองการโปรแกรมภาษาแอสเซมบล : โปรแกรม DEBUG โปรแกรม DEBUG เปนโปรแกรมสารพดประโยชนส าหรบการทดลองเกยวกบการเขยนโปรแกรม

ภาษาแอสเซมบล โปรแกรมนมอยทงในระบบปฏบตการ DOS และ Windows เมอเราเรยกโปรแกรม DEBUG โดยพมพ DEBUG ท DOS prompt เราจะเปนเครองหมายเตรยมพรอม

ของโปรแกรม DEBUG เปนเครองหมายขด -

เราสามารถจะพมพค าสงตาง ๆ ลงไปไดท prompt น 6.3 ค าสงในการโยนยายขอมล ค าสงทวไป

ค าสงแสดงความชวยเหลอ : ? เราสามารถสงใหโปรแกรม DEBUG แสดงรายการค าสงตาง ๆ ไดโดยใชค าสง ? ค าสงจดการกบรจสเตอร : R (register) ค าสง R คอค าสงใหโปรแกรม DEBUG แสดงคาในรจสเตอรรวมถงก าหนดคาใหกบรจสเตอรตาง ๆ ดวย

ถาเราใชค าสง R โดยไมระบชอรจสเตอร โปรแกรม DEBUG จะแสดงคาในรจสเตอรออกมาให -R AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=12AF ES=12AF SS=12AF CS=12AF IP=0100 NV UP EI PL NZ NA PO NC 12AF:0100 5F POP DI - โปรแกรม DEBUG จะแสดงทงคาในรจสเตอร ค าสงถดไปทจะท างาน รวมถงแฟลกตาง ๆ ดวย เรา สามารถระบชอรจสเตอรตอทายค าสง R เพอก าหนดคาใหกบรจสเตอรนน ดงตวอยาง

Page 70: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

57

-RCX CX 0000 :100 -R AX=0000 BX=0000 CX=0100 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=12AF ES=12AF SS=12AF CS=12AF IP=0100 NV UP EI PL NZ NA PO NC 12AF:0100 5F POP DI -

ค าสงแสดงคาในหนวยความจ า : D (dump)

เราสามารถสงใหโปรแกรม DEBUG แสดงคาขอมลในหนวยความจ าได โดยใชค าสง D (dump) เราสามารถระบต าแหนงของหนวยความจ าทเรมตนแสดงขอมลได ถาเราไมก าหนดโปรแกรม DEBUG จะแสดงคาในหนวยความจ าถดจากต าแหนงเกาทแสดงไว

-D100 12AF:0100 C7 06 16 00 6E 30 26 C7-06 18 00 C7 40 26 8B 06 ....n0&.....@&.. 12AF:0110 08 00 26 03 06 0C 00 26-3B 06 06 00 34 00 9E 12 ..&....&;...4... . . . 12AF:0170 C2 02 00 90 C8 04 00 00-57 56 8B 7E 0A 57 E8 57 ........WV.~.W.W -

การทดลองโปรแกรมภาษาแอสเซมบลใน DEBUG

เราสามารถปอนโปรแกรมภาษาแอสเซมบลเบองตนไดในโปรแกรม DEBUG และสามารถสงใหโปรแกรมนนท างานเพอสงเกตผลการท างานได เรายงสามารถถงสงใหโปรแกรมท างานทละบรรทดไดดวย ค าสงส าหรบแปลโปรแกรมภาษาแอสเซมบล : A (assemble)

เราใชค าสง A (assemble) เพอสงใหโปรแกรม DEBUG รบค าสงภาษาแอสเซมบลแลวแปลค าสงนนเปนภาษาเครองเกบไวในหนวยความจ าได ในการสงค าสง assemble เราสามารถระบต าแหนงทโปรแกรมภาษาเครองทแปลแลวจะถกเขยนลงไปได ถาเราไมระบต าแหนงลงไปโปรแกรมทเขยนจะถกเกบไวทต าแหนงถดจากการแปลครงสดทาย ในการปอนโปรแกรมเราสามารถปอนโปรแกรมตอเนองไปไดเรอย ๆ เมอปอนเสรจแลวใหกดปม Enter วางไปหนงบรรทดโปรแกรม DEBUG จะแสดง prompt เพอรบค าสงใหมตอไป

A100

Page 71: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

58

12AF:0100 mov ax,10 12AF:0103 mov bx,20 12AF:0106 mov [200],ax 12AF:0109 mov [202],bx 12AF:010D mov bx,204 12AF:0110 mov cx,1234 12AF:0113 mov [bx],cx 12AF:0115 int 20 12AF:0117 -

ขอสงเกต ตวเลขตาง ๆ ในโปรแกรม DEBUG จะถอวาเปนเลขฐานสบหกทงหมด ถาเราปอนโปรแกรมผด โปรแกรม DEBUG จะรายงานวาโปรแกรมผดใหเราทราบและปอนเขาไปใหม

ค าสงส าหรบแสดงโปรแกรมภาษาแอสเซมบลจากภาษาเครอง : U (unassemble)

เราสามารถสงใหโปรแกรม DEBUG แสดงค าสงภาษาเครองทอยในหนวยความจ าเปนรหสค าสงภาษา แอสเซมบลไดโดยใชค าสง unassemble เราสามารถระบต าแหนงทจะเรมแสดงได

-U100 12AF:0100 B81000 MOV AX,0010 12AF:0103 BB2000 MOV BX,0020 12AF:0106 A30002 MOV [0200],AX 12AF:0109 891E0202 MOV [0202],BX 12AF:010D BB0402 MOV BX,0204 12AF:0110 B93412 MOV CX,1234 12AF:0113 890F MOV [BX],CX 12AF:0115 CD20 INT 20 12AF:0117 26 ES: 12AF:0118 3B060600 CMP AX,[0006] 12AF:011C 3400 XOR AL,00 12AF:011E 9E SAHF 12AF:011F 12FE ADC BH,DH -

โปรแกรม DEBUG จะแสดงทงรหสภาษาเครองและรหสนโมนค (รหสภาษา assembly) ดวย

การสงใหโปรแกรมท างาน

Page 72: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

59

เราสามารถสงใหโปรแกรมท างานไดทงสน 3 รปแบบโดยโปรแกรมจะเรมท างานทต าแหนง CS:IP เทานน ค าสงเรมท างาน : G (go)

เมอเราสงใหโปรแกรมท างานโดยใชค าสง g โปรแกรมจะเรมท างานทนท และโปรแกรมจะท างานจนกระทงจบ

-G Program terminated normally -

ขอสงเกต โปรแกรมตวอยางจะมค าสง INT 20h ระบอยตอนทาย ค าสงนเปนค าสงเรยกใชบรการของระบบเพอทจะจบโปรแกรม ถาไมมค าสงนปดทาย โปรแกรมจะท างานตามค าสงตอไปเรอย ๆ จนกวาจะพบค าสงทสงใหโปรแกรมหยดการท างาน ดงนนเวลาเราทดลงโปรแกรมใน DBUG เราควรจะใสค าสง INT 20h ปดทายไวทกครง

ค าสงตามรอยการท างาน (ค าสงใหท างานทละบรรทดแบบทหนง) : T (trace)

ถาเราสงค าสงนโปรแกรมจะท างานไปหนงค าสงแลวจะกลบมาทโปรแกรม DEBUG และแสดงคาของรจสเตอรตาง ๆ รวมถงผลจากค าสงนนทนท ท าใหเราสามารถตรวจสอบสถานะของโปรแกรมไดตลอดขนตอนการท างาน

-T AX=0010 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=12AF ES=12AF SS=12AF CS=12AF IP=0103 NV UP EI PL NZ NA PO NC 12AF:0103 BB2000 MOV BX,0020 -T AX=0010 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=12AF ES=12AF SS=12AF CS=12AF IP=0106 NV UP EI PL NZ NA PO NC 12AF:0106 A30002 MOV [0200],AX DS:0200=0010

ในการท างานโดยค าสง T โปรแกรมทท างานจะหยดการท างานกลบมาทโปรแกรม DEBUG ภายหลงการ

ท างานของทก ๆ ค าสง รวมถงในกรณทเราเรยกโปรแกรมยอย หรอเรยกใชบรการของระบบดวย เราตองการใหโปรแกรมท างานไปหยดทบรรทดถดไปเลยโดยไมตองค านงถงการเรยกโปรแกรมยอยตาง ๆ เราสามารถใชค าสง P (proceed) แทนค าสง trace ได

ค าสงท างานตอจนถงบรรทดถดไป (ค าสงใหท างานทละบรรทดแบบทสอง) : P (proceed)

Page 73: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

60

ผลโดยทว ๆ ไปของค าสงนเหมอนกบการใชค าสง T แตการใชค าสงนจะสะดวกกวาเมอโปรแกรมทท างานมการเรยกโปรแกรมยอย หรอมการเรยกใชบรการจากระบบ โดยโปรแกรมจะกลบมาท DEBUG เมอท างานถงบรรทดถดไป

การตงคาใหกบรจสเตอร IP

เนองจากโปรแกรม DEBUG จะประมวลผลค าสงทต าแหนง CS:IP เสมอ แตเมอโปรแกรมท างานเสรจ รจสเตอร IP จะชทออฟเซตของค าสงถดไปซงเปนค าสงทไมใชสวนของโปรแกรมของเรา ดงนนภายหลงการท างานของโปรแกรม เราควรจะตรวจสอบวารจสเตอร IP ชไปยงจดเรมตนของโปรแกรมทเราเขยนไวหรอไม ซงโดยปกตแลวโปรแกรมจะเรมตนทออฟเซต 100h ถา รจสเตอร IP ชไปทอน เราสามารถตงคาใหบรจสเตอร IP ไดโดยใชค าสง R

-RIP IP 0106 :100 -

ตวอยางการทดลองโปรแกรมภาษาแอสเซมบล

เราจะยกตวอยางการทดลองโปรแกรมภาษาแอสเซมบลตอไปนดวยโปรแกรม DEBUG ตวอยางโปรแกรม

MOV AX,5678h MOV BX,204h MOV CX,1234h MOV [200h],CX MOV [202h],AH MOV [203h],AL MOV [BX],AX MOV DX,[202h] MOV [204h],10h

ปอนโปรแกรม เราสามารถทจะปอนโปรแกรมและสงให DEBUG แปลโปรแกรมลงในหนวยความจ าโดยใชค าสง A ถา

เราไมระบแอดเดรสเรมตนในครงแรกโปรแกรมจะถกแปลลงในต าแหนง CS:100h และถาเปนการสงครงถดไปโปรแกรมจะแปลลงไปตอเนองกบการสงครงกอน

-A100 14FF:0100 mov ax,5678 14FF:0103 mov bx,204 14FF:0106 mov cx,1234

Page 74: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

61

14FF:0109 mov [200],cx 14FF:010D mov [202],ah 14FF:0111 mov [203],al 14FF:0114 mov [bx],ax 14FF:0116 mov dx,[202] 14FF:011A mov [204],10 ^ Error ในระหวางการปอนโปรแกรมอาจมขอผดพลาดขนโปรแกรม DEBUG จะแสดงขอความขนดงตวอยาง

จากโปรแกรมดงกลาวเราจะตองระบขนาดของการคดลอกขอมลดวย เราสามารถใสค าสงทแกไขแลวลงไปใหมไดทนท

14FF:011A mov word ptr [204],10 14FF:0120

เมอใสโปรแกรมเสรจจะตองกดปม Enter วาง ๆ ไปเพอบอกโปรแกรม DEBUG วาโปรแกรมสนสดแลว

เราสามารถเรยกดโปรแกรมทเราใสลงไปไดดวยค าสง U -U 14FF:0100 B87856 MOV AX,5678 14FF:0103 BB0402 MOV BX,0204 14FF:0106 B93412 MOV CX,1234 14FF:0109 890E0002 MOV [0200],CX 14FF:010D 88260202 MOV [0202],AH 14FF:0111 A20302 MOV [0203],AL 14FF:0114 8907 MOV [BX],AX 14FF:0116 8B160202 MOV DX,[0202] 14FF:011A C70604021000 MOV WORD PTR [0204],0010 -

เราจะเหนทงโปรแกรมภาษาแอสเซมบลและโปรแกรมภาษาเครองทแปลแลว ตดตามการท างานของโปรแกรม

เราสามารถสงใหโปรแกรมท างานโดยใชค าสง G (go) และตรวจสอบคาในหนวยความจ าได แตโปรแกรมทจะทดลองนนตองมการสงใหโปรแกรมจบการท างาน มฉะนนโปรแกรมจะท างานเลยไปถงโปรแกรมอน ๆ ทอยในหนวยความจ า ดงนนเราอาจจะใสค าสง INT 20h ปดทายโปรแกรมไวเพอสงใหโปรแกรมจบการท างาน จากตวอยางแอดเดรสถดไปของค าสงคอออฟเซตท 0120h (สามารถหาไดโดยใชค าสง U แลวสงเกออฟเซตของตค าสงอน ๆ ถดจากโปรแกรมทเราปอน) ดงนนเราจะปอนค าสง INT 20h ลงไปทแอดเดรสน

-A120

Page 75: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

62

14FF:0120 int 20 14FF:0122 -U100 14FF:0100 B87856 MOV AX,5678 14FF:0103 BB0402 MOV BX,0204 14FF:011A C70604021000 MOV WORD PTR [0204],0010 -U11A 14FF:011A C70604021000 MOV WORD PTR [0204],0010 14FF:0120 CD20 INT 20 ...

เมอเราใสค าสงใหโปรแกรมจบการท างานแลว เราสามารถทใชค าสง G (go) เพอสงใหโปรแกรมท างานได และใชค าสง D (dump) เพอสงเกตคาในหนวยความจ า หรอ ค าสง R (register) เพอสงเกตคาในรจสเตอรได

-G Program terminated normally -D200 14FF:0200 34 12 56 78 10 00 DA EB-04 9D F8 EB 02 9D F9 89 4.Vx............ 14FF:0210 36 8A DB 5E 5F 5A 59 C3-53 51 52 57 56 9C E8 6E 6..^_ZY.SQRWV..n 14FF:0220 00 83 3E 7A DB 40 7D 57-8A F7 8B 1E 7A DB FF 06 ..>z.@}W....z... 14FF:0230 7A DB B8 BA D8 E8 95 00-C7 47 07 00 00 F6 C6 01 z........G...... 14FF:0240 74 03 89 6F 07 89 4F 05-88 77 02 8B 36 84 DB 89 t..o..O..w..6... 14FF:0250 37 03 36 5C D8 2B F7 89-77 03 8B 36 8A DB 89 77 7.6\.+..w..6...w 14FF:0260 09 8B F7 8B 3E 84 DB 03-F9 3B 3E 80 DB 7D 15 2B ....>....;>..}.+ 14FF:0270 F9 FC F3 A4 B0 00 AA 89-3E 84 DB 9D F8 EB 0A B8 ........>....... -R AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=14FF ES=14FF SS=14FF CS=14FF IP=0100 NV UP EI PL NZ NA PO NC 14FF:0100 B87856 MOV AX,5678

สงเกตวาเมอเรากลบมายงโปรแกรม DEBUG หลงจากโปรแกรมทเราปอนท างานเรยบรอยแลว รจสเตอร

ตาง ๆ จะถกก าหนดคาเรมตองใหมรวมทงรจสเตอร IP ดวย ดงนนเราสามารถสงเกตผลของการท างานไดจากคาหนวยความจ าเทานน เราสามารถสงใหโปรแกรมท างานทละบรรทดโดยใชค าสง T หรอ P เราจะตองระวงในเรองของการตงคาเรมตนของรจสเตอร IP ใหมาชทต าแหนงเรมตนของโปรแกรมดวย

-T

Page 76: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

63

AX=5678 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=14FF ES=14FF SS=14FF CS=14FF IP=0103 NV UP EI PL NZ NA PO NC 14FF:0103 BB0402 MOV BX,0204 -T AX=5678 BX=0204 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=14FF ES=14FF SS=14FF CS=14FF IP=0106 NV UP EI PL NZ NA PO NC 14FF:0106 B193412 MOV CX,1234 -T AX=5678 BX=0204 CX=1234 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=14FF ES=14FF SS=14FF CS=14FF IP=0109 NV UP EI PL NZ NA PO NC 14FF:0109 890E0002 MOV [0200],CX DS:0200=1234 -T AX=5678 BX=0204 CX=1234 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=14FF ES=14FF SS=14FF CS=14FF IP=010D NV UP EI PL NZ NA PO NC 14FF:010D 88260202 MOV [0202],AH DS:0202=56 -T AX=5678 BX=0204 CX=1234 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=14FF ES=14FF SS=14FF CS=14FF IP=0111 NV UP EI PL NZ NA PO NC 14FF:0111 A20302 MOV [0203],AL DS:0203=78 -T AX=5678 BX=0204 CX=1234 DX=7856 SP=FFEE BP=0000 SI=0000 DI=0000 DS=14FF ES=14FF SS=14FF CS=14FF IP=0120 NV UP EI PL NZ NA PO NC 14FF:0120 CD20 INT 20 -P Program terminated normally -

สงเกตวาในค าสงสดทายเราใชค าสง P เพราะค าสง INT 20h เปนการเรยกใชบรการของระบบ และ

โปรแกรมจะกระโดดไปท างานทโปรแกรมยอยของระบบซงอาจจะยาวมาก ถาเราใชค าสง T เราจะไดเหนการกระโดดไปท างานน และเราสามารถใชค าสง G เพอใหโปรแกรมท างานจนจบตอจากนนกได

-T

Page 77: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

64

AX=5678 BX=0204 CX=1234 DX=7856 SP=FFE8 BP=0000 SI=0000 DI=0000 DS=14FF ES=14FF SS=14FF CS=14FF IP=0120 NV UP DI PL NZ NA PO NC 14FF:0120 CD20 INT 20 -T AX=5678 BX=0204 CX=1234 DX=7856 SP=FFE2 BP=0000 SI=0000 DI=0000 DS=14FF ES=14FF SS=14FF CS=00C9 IP=0FA8 NV UP DI PL NZ NA PO NC 00C9:0FA8 90 NOP -T AX=5678 BX=0204 CX=1234 DX=7856 SP=FFE2 BP=0000 SI=0000 DI=0000 DS=14FF ES=14FF SS=14FF CS=00C9 IP=0FA9 NV UP DI PL NZ NA PO NC 00C9:0FA9 90 NOP -T AX=5678 BX=0204 CX=1234 DX=7856 SP=FFE2 BP=0000 SI=0000 DI=0000 DS=14FF ES=14FF SS=14FF CS=00C9 IP=0FAA NV UP DI PL NZ NA PO NC 00C9:0FAA E8DB00 CALL 1088 -G Program terminated normally -

ขอสงเกต เราควรจะพจารณาคาของรจสเตอร CS และ IP กอนทจะเรมสงใหโปรแกรมท างานใหมเสมอ

โดยปกตในโปรแกรม DEBUG คาของรจสเตอร CS จะมคาเทากนกบเซกเมนตรจสเตอรตวอน ๆ (DS ES และ SS) และเรานยมปอนโปรแกรมทจะทดลองลงในต าแหนง CS:100h

Page 78: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

65

สรป ค าสงภาษาแอสเซมบลเบองตน โดยจะเปนค าสงเกยวกบการโอนยายขอมล ซงมอยดวยกน 2 แบบ คอ 1. การโอนยายขอมลระหวางรจสเตอรกบรจสเตอร เปนการโอนยายขอมลระหวางรจสเตอรสามารถท าไดถาขนาดของรจสเตอรของทงคเทากน แตยงมเซกเมนตรจสเตอรบางตวซงไมควรเขาไปก าหนดคาโดยตรง เชน CS หรอ SS 2. การโอนยายขอมลกบหนวยความจ า โดยปกตการโอนยายขอมลกบหนวยความจ านน เราจะระบเฉพาะออฟเซตของหนวยความจ าทเราตองการจะโอนยายขอมลดวย ออฟเซตนนจะถกน ามาประกอบกบเซกเมนตรจสเตอร DS เพอเปนต าแหนงในหนวยความจ าทแทจรงทจะอานเขยนขอมลดวย

ดบก (Debug) คอ โปรแกรมทพฒนาเพอแกไขปญหาพนฐานในระบบปฏบตการดอส (DOS = Disk Operation System) เปนโปรแกรมส าหรบแกไขแฟมอยางงาย เปนค าสงภายนอก (External Command) ของดอส (DOS) ทนยมใชงานในกลมนกพฒนามาตงแตยคระบบปฏบตการดอส เครองมอในการทดลองการโปรแกรมภาษาแอสเซมบลกคอโปรแกรม DEBUG เปนโปรแกรมสารพดประโยชนส าหรบการทดลองเกยวกบการเขยนโปรแกรมภาษาแอสเซมบล โปรแกรมนมอยทงในระบบปฏบตการ DOS และ Windows ค าถามทบทวน 1. จงใหค าจ ากดความของค าวาโอเปอรแรนด (operand) 2. โปรแกรม DEBUG คออะไรและมหนาทอยางไรในภาษาโปรแกรมภาษาแอสเซมบล 3. รจสเตอร AX มหนาทอยางไรในค าสง MOV 4. ค าสงตอไปนท างานอยางไร

- ค าสง G (go) - ค าสง D (dump) - ค าสง R (register)

5. ค าสง A (assemble) มหนาทและท างานอยางไร 6. ค าสงภาษาแอสเซมบลทใชส าหรบการโอนยายขอมลมกแบบอะไรบาง

Page 79: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

66

แผนบรหารการสอนประจ าบทท 7 หวขอเนอหา - แฟลก (Flags) - ค าสงทางคณตศาสตร - กลมค าสงบวกและลบ - กลมค าสงคณและหาร - กลมค าสงแปลงขนาดตวเลข

วตถประสงคเชงพฤตกรรม - เขาใจความหมายของแฟลกแตละบตใน 8086

- รและเขาใจ สามารถใชงานค าสงทางคณตศาสตรได - รและเขาใจการใชงานกลมค าสงตางๆ ในภาษาโปรแกรมภาษาแอสเซมบล เชน กลมค าสงบวก และ

ลบ กลมค าสงคณและหารและกลมค าสงแปลงขนาดตวเลข เปนตน วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 80: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

67

ในบทนจะศกษาเกยวกบการใชค าสงค านวณทางคณตศาสตรและการแสดงสถานะของผลลพธของการค านวณนนในแฟลก สถานะทเกบในแฟลกจะใชส าหรบการจดการกบผลการค านวณนน ๆ รวมถงใชในค าสงเกยวกบการกระโดดแบบมเงอนไขดวย 7.1 แฟลก (Flags)

แฟลกเปรยบเสมอนรจสเตอรตวหนง แตแทนทจะใชเกบคาตาง ๆ แฟลกจะเกบสถานะของการค านวณทางคณตศาสตรทผานมา ตวอยางของสถานะของการค านวณ เชน การมบตทด มการเกบคาลนหลกหรอผลลพธมคาเปนศนยเปนตน ใน 8086 แฟลกจะมขนาด 16 บต โดยในแตละบตจะเกบคาของสถานะการค านวณแบบหนง ๆ แสดงไดดงรปท 7.1

- - - - O D I T S Z - - A P - C0123456789101112131415

CarryParityAuxiliaryZeroSignTrapInterruptDirectionOverflow

รปท 7.1 แสดงแฟลกตาง ๆ คาในบตของแฟลกนน ๆ จะมคาเปน 1 เมอสถานะนนเปนจรง เราจะเรยกสถานะทแฟลกเปน 1 วา แฟลก

เซต (flag set) และถาแฟลกมคาเปนศนยเราจะเรยกวาแฟลกเคลยร (flag cleared) โดยทวไปแลวค าสงทจะมผลกบแฟลกจะเปนค าสงเกยวกบการค านวณทางคณตศาสตร สวนค าสงในกลมของการโอนยายขอมล เชน ค าสง MOV จะไมเปลยนแปลงคาในแฟลก ความหมายของแฟลกแตละบตเปนดงตอไปน 1. แฟลกศนย (Zero flag) แฟลกศนยจะมคาเปนหนง (flag set) เมอผลการค านวณมคาเทากบศนย ตวอยางค าสง

MOV AX,100h MOV BX,80h

Z-flag = ? Z-flag = ?

บทท 7 แฟลกและค าสงคณตศาสตร (Flags and Mathematics Instruction)

Page 81: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

68

SUB AX,BX SUB AX,BX MOV CX,80h ADD AX,CX SUB AX,BX

Z-flag = 0 {AX=80h} Z-flag = 1 {AX=0h} Z-flag = 1 Z-flag = 0 {AX=80h} Z-flag = 1 {AX=0h}

2. พารตแฟลก (Parity flag) พารตแฟลกจะมคาเปนหนงเมอในผลลพธมจ านวนบตทมคาเปน 1 เปนจ านวนค ตวอยางค าสง

MOV AL,34h MOV BL,11h ADD AL,BL ADD AL,6 SUB AL,BL MOV CL,10h ADD AL,CL

P-flag = ? P-flag = ? P-flag = 0 {AL=45h[0100 0101b]} P-flag = 1 {AL=4Bh[0100 1011b]} P-flag = 1 {AL=3Ah[0011 1010b]} p-flag = 1 p-flag = 0 {AL=4Ah[0100 1010b]}

3. แฟลกเครองหมาย แฟลกเครองหมายจะเซตเมอผลลพธมคาเปนลบ (เมอคดวาผลลพธนนเกบตวเลขแบบคดเครองหมายแบบ 2’Complement) ตวอยางค าสง

MOV AL,50h ADD AL,50h ADD AL,0A0h SUB AL,10h ADD AL,0B0h

S-flag = ? S-flag = 1 {AL=0A0h[1010 0000b]} S-flag = 0 {AL=40h[0100 0000b]} S-flag = 0 {AL=30h[0011 0000b]} S-flag = 1 {AL=0E0h[1110 0000b]}

4. แฟลกทด (Carry flag) แฟลกทดจะเซตเมอการค านวณมการทดหรอมการยม ในการพจารณาเราจะพจารณาคาของขอมลแบบไมคดเครองหมาย แฟลกทดนยงใชในการเกบบตขอมลในค าสงเกยวกบการเลอนบตดวย ตวอยางค าสง

MOV AL,60h ADD AL,60h ADD AL,60h SUB AL,15h SUB AL,15h

C-flag = ? C-flag = 0 {AL=0C0h} C-flag = 1 {AL=20h,0C0+60=120h} C-flag = 0 {AL=0Ah} C-flag = 1 {AL=F5h,0Ah-15h=0F5h}

Page 82: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

69

5. โอเวอรโฟลแฟลก (Overflow flag) ในการพจารณาโอเวอรโฟลแฟลกเราจะพจารณาคาของขอมลเปนแบบคดเครองหมาย โดยโอเวอรโฟลแฟลกจะมคาเปนหนงเมอผลลพธมความผดพลาด เชน การบวกคาทมากกวาขอบเขตท าใหผลลพธทได มเครองหมายทผดเปนตน

ตวอยางค าสง

MOV AL,0E3h ADD AL,79h ADD AL,60h SUB AL,20h SUB AL,20h ADD AL,9Ah

O-flag = ? O-flag = 0 {AL=5Ch,-29+121 = 92[5Ch]} O-flag = 1 {AL=0BCh,0BCh=-68 <> 92+96=188} O-flag = 0 {AL=9Ch,9Ch=-100 = -68-32} O-flag = 1 {AL=7Ch,7Ch=124 <> -100-32=-132 O-flag = 0 {AL=16h,16h=22 = 124-102

6. แฟลกเสรม (Auxiliary Flag) แฟลกเสรมจะเปนแฟลกทใชในการปรบคาของการค านวณเลขแบบ BCD 7. แฟลกทศทาง (Direction Flag) แฟลกทศทางเปนแฟลกทใชในการระบทศทางของการปรบคารจสเตอรดชนในการประมวลผลค าสงเกยวกบสายขอมล 8. แทรปแฟลก (Trap Flag) แทรปแฟลกเปนแฟลกทใชระบใหหนวยประมวลผลสรางสญญาณขดจงหวะเมอประมวลผลค าสงเสรจสนหนงค าสง โดยแฟลกนจะใชในการตรวจสอบการท างานของโปรแกรม 9. อนเตอรรพทแฟลก (Interrupt Flag) แฟลกนใชระบวาหนวยประมวลผลจะตอบสนองการขดจงหวะจากอปกรณฮารดแวรหรอไม

ค าสงเกยวกบการก าหนดคาของแฟลก เราสามารถก าหนดคาของแฟลกทด แฟลกทศทาง และอนเตอรรพทแฟลกไดโดยใชค าสงตอไปน

ตารางท 7.1 ค าสงส าหรบการก าหนดคาแฟลก

แฟลก ค าสงในการเซต ค าสงในการเคลยร carry flag STC CLC direction flag STD CLD interrupt flag STI CLI

Page 83: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

70

7.2 ค าสงทางคณตศาสตร

ค าสงทางคณตศาสตรใน 8086 ทเราจะศกษาในวชานแบงไดเปนกลมใหญ ๆ 3 กลมดงน 7.2.1 กลมค าสงบวกและลบ ค าสงเพมและลดคา : INC [Increment] และ DEC [Decrement]

ค าสง INC จะเพมคาของโอเปอรแรนดขนหนง สวนค าสง DEC จะลดคาของโอเปอรแรนดลงหนง ค าสงนมผลกระทบกบแฟลกทงหมดยกเวนแฟลกทด. รปแบบของทวไปของค าสง INC และ DEC เปนดงน INC register DEC register INC memory DEC memory ตวอยางค าสง MOV AL,10h INC AL MOV BX,200h MOV WORD PTR [BX],10h DEC WORD PTR [BX]

รจสเตอร AL = 11h

ขอมลแบบเวรดทต าแหนง [DS:BX] = 0Fh ค าสงบวกและบวกรวมตวทด : ADD [Addition] และ ADC [Add with carry]

ค าสงบวกจะน าคาของโอเปอรแรนดตวทสองมาบวกกบคาของโอเปอรแรนดตวทหนง แลวน าคาทไดเกบในโอเปอรแรนดตวทหนง. ค าสง ADD และ ADC มผลกระทบกบแฟลกทางคณตศาสตรทกแฟลก เรานยมใชค าสง ADC ในการบวกขอมลทตองน าบตททดจากการบวกครงกอนมารวมดวย เชน การบวกขอมลทเกบอยในหลายรจสเตอรตอเนองกนเปนตน

รปแบบของทวไปของค าสง ADD และ ADC เปนดงน ADD register,number ADC register,number ADD memory,number ADC memory,number ADD register,register ADC register,register ADD register,memory ADC register,memory ADD memory,register ADC memory,register

ตวอยางค าสง MOV AL,10h ADD AL,20h MOV BX,200h MOV WORD PTR [BX],10h ADD WORD PTR [BX],70h MOV AX,5678h MOV DX,1234h ADD AX,4321h ADC DX,8765h

รจสเตอร AL = 30h

ขอมลแบบเวรดทต าแหนง [DS:BX] = 80h

เราจะบวก 1234 5678h เขากบ 8765 4321h โดย ผลลพธทได 16 บตบนจะเกบทรจสเตอร DX สวน 16 บตลางจะเกบทรจสเตอร AX สงเกตวาเราจะใชค าสง ADC ในการบวกครงทสองเพอน าตวทดจากการบวกครงแรกมารวมดวย

Page 84: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

71

ค าสงลบและลบรวมตวยม : SUB [Substraction] และ SBB [Subtract with borrow]

ค าสง SUB และ SBB จะท างานคลายกบค าสง ADD และ ADC เพยงแตเปนการน าคาในโอเปอรแรนดตวทสองไปลบออกจากโอเปอรแรนดตวทหนง ลกษณะของการใชงานค าสง SBB จะคลายคลงกบการใชค าสง ADC นนคอจะนยมใชในกรณทมการลบเลขทเกบอยในรจสเตอรหลายตวตอเนองกน รปแบบของค าสง SUB และ SBB จะมลกษณะเชนเดยวกบค าสง ADD และค าสง ADC โดยมรปแบบทงหมดดงน SUB register,number SBB register,number SUB memory,number SBB memory,number SUB register,register SBB register,register SUB register,memory SBB register,memory SUB memory,register SBB memory,register ตวอยางค าสง MOV CX,10h SUB CX,[200h] MOV BX,202h MOV DX,345h SUB WORD PTR [BX],DX MOV AX,0AAFFh MOV DX,0BBCCh SUB BX,AX SBB CX,DX

รจสเตอร CX จะถกลดคาลงเทากบขอมลแบบเวรดใน แอดเดรส [DS:200h].

ขอมลแบบเวรดทต าแหนง [DS:BX] มคาลดลง 345h

เราจะลบคาของขอมลขนาด 32 บตทเกบท CX BX ดวยคาขนาด 32 บตในรจสเตอร DX และ AX

ค าสงเปรยบเทยบ : CMP [Compare]

ค าสง CMP จะมการท างานเหมอนกบค าสง SUB ทกประการ แตจะไมมการเปลยนคาในโอเปอรแรนดใด ๆ โดยผลลพธทแทจรงของค าสงนคอการเปลยนคาในแฟลกตาง ๆ เพอแสดงผลลพธของการลบ เราจะใชค าสงนในการเปรยบเทยบคาตาง ๆ และน าผลทไดในแฟลกไปใชในการก าหนดเงอนไขของการกระโดด รปแบบของค าสง CMP จะเหมอนค าสง SUB โดยมรปแบบทวไปเปนดงน CMP register,number CMP memory,number CMP register,register CMP register,memory CMP memory,register ตวอยางค าสง MOV CX,10h CMP CX,20h MOV BX,40h CMP BX,40h

CX จะมไมมการเปลยนแปลง แตจะมการเปลยนแปลงของ แฟลก โดย S-flag=1, C-flag=1, O-flag=0

Z-flag=1

Page 85: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

72

MOV AX,30h CMP AX,20h

S-flag=0, C-flag=0, O-flag=0.

ค าสงเปลยนเครองหมาย : NEG [Negation] ค าสงเปลยนเครองหมายจะเปลยนคาในโอเปอรแรนดซงจะพจารณาเปนตวเลขแบบคดเครองหมายเปนคาลบของคานน. โดยการเปลยนคานนจะเปลยนแบบ 2’s complement ผลจากค าสงนจะท าใหแฟลกทดมคาเปน 1 เสมอ รปแบบของค าสง NEG NEG register NEG memory ตวอยางค าสง MOV CX,10h NEG CX MOV AX,0FFFFh NEG AX MOV BX,1h NEG BX

CX = 0FFF0h

AX = 1

BX = 0FFFFh

7.2.2 กลมค าสงคณและหาร ค าสงคณแบบคดเครองหมายและไมคดเครองหมาย : IMUL [Integer multiplication] และ MUL [Multiplication]

การคณใน 8086 นนคาของตวตงของการคณ และคาผลลพธของการคณนนจะตองเกบในรจสเตอรทก าหนดไว โดยขนกบขนาดของการคณ รจสเตอรทก าหนดไวเปนดงน การคณขอมล 8 บต : ตวตง AL ผลลพธ AX. การคณขอมล 16 บต : ตวตง AX ผลลพธ DX, AX [16 บตบนท DX 16 บตลางท AX] เราจะระบตวคณและขนาดของการคณทโอเปอรแรนดของค าสง IMUL หรอ MUL ทงสองค าสงมรปแบบดงน IMUL register MUL register IMUL memory MUL memory ตวอยางค าสง MOV AL,17h MOV CL,13h IMUL CL MOV BX,1234h IMUL BX

เราจะคณ 17h ดวย 13h แบบ 8 บต

ผลลพธทไดจะมขนาด 16 บต เกบทรจสเตอร AX เราจะน าผลลพธทไดจาก 17h คณ 13h มาคณดวย 1234h คาใน DX,AX มคาเทากบ (17h x 13h) x 1234h

ค าสง MUL และ IMUL จะมผลกระทบกบแฟลกทดและโอเวอรโฟลแฟลกเทานน

Page 86: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

73

ค าสงหารแบบคดเครองหมายและไมคดเครองหมาย : IDIV [Integer division] และ DIV [Division] เชนเดยวกบค าสงคณ ตวตงและผลลพธส าหรบการประมวลผลค าสงหารใน 8086 จะตองเกบรจสเตอรซงก าหนดไว โดยจะขนกบขนาดของการหารตวเลขเชนเดยวกน การหารขอมล 8 บต : ตวตง AX ผลลพธ AL เศษ AH การหารขอมล 16 บต : ตวตง DX, AX ผลลพธ AX เศษ DX ค าสง IDIV และ DIV มรปแบบดงน IDIV register DIV register IDIV memory DIV memory ตวอยางค าสง MOV AX,4022h MOV DX,0000h MOV CX,1000h DIV CX MOV BL,3h DIV BL

เราจะหาร 4022h ดวย 1000h การหารดงกลาวเปนการหารแบบ 16 บตดงนนเราจงตองก าหนดคาตวตงใน DX,AX

ผลลพธจากการหารจะมขนาด 16 บต เกบทรจสเตอร AX โดยเศษจะเกบท DX. AX = 4 และ DX = 22h

เราจะน าผลลพธทไดจากมาหารดวย 3h คาใน AL จะเกบผลหารซงมคาเทากบ 1 และ AH จะเกบเศษโดยจ ามคาเทากบ 1

ค าสง DIV และ IDIV จะไมมผลกระทบกบแฟลกใด ๆ แตถาในการหารมการหารดวยศนย หรอเกดการหารทไมสามารถเกบผลลพธลงในรจสเตอรทตองการได เชนการหาร 1234 5678h ดวย 2h หนวยประมวลผลจะสรางสญญาณการขดจงหวะขนเพอแจงกบโปรแกรมทจดการระบบตอไป การเกดการขดจงหวะในลกษณะนเราเรยกวาเกด Exception

7.3 กลมค าสงแปลงขนาดตวเลข จากขอจ ากดของการใชค าสงหารทตวตงจะตองมขนาดมากกวาตวหาร ท าใหในบางครงทเราตองการหารขอมลทมขนาดเทากน เราจะตองแปลงตวตงใหมขนาดทเหมาะสมเสยกอน ส าหรบการแปลงขนาดของเลขไมคดเครองหมายนน เราสามารถกระท าไดโดยก าหนดใหขอมลนยส าคญสงทขยายเพมมานนมคาเปนศนย ตวอยางเชน การขยาย AL ทเปนตวเลขแบบไมคดเครองหมายใหเปนขอมล 16 บตใน AX สามารถกระท าไดโดยก าหนดคาศนยใหกบ AH แตในกรณของตวเลขแบบคดเครองหมายนนถาตวเลขมคาเปนลบการก าหนดคาศนยใหกบขอมลนยส าคญสงทขยายเพมมานน จะท าใหคาของเลขทไดมความผดพลาดได ในการขยายขนาดของเลขคดเครองหมายเราจงตองใชค าสงทเหมาะสม ค าสงแปลงจากไบตเปนเวรด : CBW [Convert byte to word]

ค าสงนจะแปลงเลขแบบคดเครองหมายขนาด 8 บตใน AL เปนเลขคดเครองหมายขนาด 16 บตใน AX รปแบบของค าสง CBW

Page 87: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

74

ตวอยางค าสง MOV AL,22h CBW MOV AL,F0h CBW

AL = 22h เมอแปลงแลว AX=0022h AL = F0h = -16 เมอแปลงแลว AX=FFF0h = -16

ค าสงแปลงจากเวรดเปนดบเบลเวรด : CWD [Convert word to doubleword] ค าสงนจะแปลงเลขแบบคดเครองหมายขนาด 16 บตใน AX เปนเลขคดเครองหมายขนาด 32 บตใน DX,AX

รปแบบของค าสง CWD ตวอยางค าสง MOV AX,3422h CWD MOV AX,FFF0h CWD

AX = 3422h เมอแปลงแลว DX = 0000h , AX=3422h

AX = FFF0h = -16 เมอแปลงแลว DX = FFFFh, AX=FFF0h

ตวอยางการใชค าสงทางคณตศาสตร ตวอยางท 1

ค านวณคา AL2 + BL2 คดตวเลขแบบไมคดเครองหมายโดยใหผลลพธเปนเลข 16 บต เกบทรจสเตอร AX MUL AL MOV CX, AX MOV AL, BL MUL BL ADD AX, CX

หาคา AL*AL เสยกอน

จากนนน าไปเกบไวท CX เนองจากรจสเตอร AL ตองใชในการค านวณ BL*BL. ไดผลลพธแลวน าคา AL*AL ทเกบใน CX มาบวก

ตวอยางท 2 ค านวณคา (CL*BL+DX)/SI โดยคดเปนเลขคดเครองหมาย MOV AL,CL MUL BL ADD AX,DX CWD IDIV SI

หาคาของ CL*BL โดยผลลพธทไดเกบใน AX.

จากนนน า DX มาบวกเขากบ AX ขยายขอมลใน AX เปน 32 บตใน DX,AX เพอทจะไดน า SI มาหาร ผลลพธทไดอยท AX เศษของการหารเกบท DX

Page 88: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

75

ตวอยางท 3 ค านวณคา (DX+AX*BX)/(DI-CX) โดยคดเปนเลขคดเครองหมาย MOV SI,DX MUL BX ADD AX,SI ADC DX,0 SUB DI,CX IDIV DI

น าคาของ DX ไปเกบท SI เสยกอนเนองจาก DX จะถก ใชในการค านวณ AX*BX. เมอค านวณ AX*BX แลวน า SI มาบวกโดยตองน าตวทดของการบวก SI กบ AX มาทดยง DX ดวย ลบ DI ดวย CX น าไปหาร

ผลกระทบของค าสงทางคณตศาสตรตอแฟลก ตารางท 7.2 ผลกระทบของค าสงตาง ๆ ตอแฟลก

Flag affected Instruction Z-flag C-flag S-flag O-flag A-flag

ADD yes yes yes yes yes ADC yes yes yes yes yes SUB yes yes yes yes yes SBB yes yes yes yes yes INC yes no yes yes yes DEC yes no yes yes yes NEG yes yes yes yes yes CMP yes yes yes yes yes MUL no yes no yes no IMUL no yes no yes no DIV no no no no no IDIV no no no no no CBW no no no no no CWD No no no no no

ตวอยางของการเปลยนแปลงของแฟลกในการท างานของค าสงตาง ๆ ตวอยางท 1

Instruction Z-flag C-flag O-flag S-flag P-flag หมายเหต MOV AX,7100h ? ? ? ? ? MOV BX,4000h ? ? ? ? ? ADD AX,BX 0 0 1 1 1 AX=0B100h ADD AX,7700h 0 1 0 0 1 AX=2800h SUB AX,2000h 0 0 0 0 0 AX=0800h SUB AX,1000h 0 1 0 1 0 AX=F800h ADD AX,0800h 1 1 0 0 1 AX=0000h

Page 89: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

76

ตวอยางท 2 Instruction Z-flag C-flag O-flag S-flag P-flag หมายเหต

MOV AL,10 ? ? ? ? ? ADD AL,F0h 0 0 0 1 1 AL=0FAh ADD AL,6 1 1 0 0 1 AL=0 SUB AL,5 0 1 0 1 0 AL=0FBh INC AL 0 0 0 1 1 AL=0FCh ADD AL,10 0 1 0 0 1 AL=6h ADD AL,FBh 0 1 0 0 0 AL=1h DEC AL 1 0 0 0 1 AL=0h DEC AL 0 0 0 1 1 AL=0FFh INC AL 1 0 0 0 1 AL=0

หมายเหต ค าสง DEC และ INC ไมกระทบแฟลกทด ตวอยางท 3

Instruction Z-flag C-flag O-flag S-flag P-flag หมายเหต MOV AL,120 ? ? ? ? ? ADD AL,15 0 0 1 1 1 AL=87h=-121 NEG AL 0 1 0 0 0 AL=79h SUB AL,130 0 1 1 1 0 AL=0F7h

หมายเหต ค าสง NEG ท าใหแฟลกทดมคาเปน 1 เสมอ

Page 90: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

77

สรป

แฟลก (Flags) เปนรจสเตอรขนาด 16 บตทใชบงบอกผลลพธทไดจากการค านวณ ค าสงทเกยวของกบการค านวณจะสงผลกระทบใหแฟลกเปลยนแปลงคาไป การคดลอกขอมลจะไมท าใหแฟลกเปลยนแปลง คาแฟลกเปรยบเสมอนรจสเตอรตวหนง แตแทนทจะใชเกบคาตาง ๆ แฟลกจะเกบสถานะของการค านวณทางคณตศาสตรทผานมา ตวอยางของสถานะของการค านวณ เชน การมบตทด มการเกบคาลนหลก หรอผลลพธมคาเปนศนยเปนตน ใน 8086 แฟลกจะมขนาด 16 บต โดยในแตละบตจะเกบคาของสถานะการค านวณแบบหนง ๆ ดงรป

- - - - O D I T S Z - - A P - C0123456789101112131415

CarryParityAuxiliaryZeroSignTrapInterruptDirectionOverflow

ค าสงทางคณตศาสตรใน 8086 ทเราจะศกษาในวชานแบงไดเปนกลมใหญ ๆ 3 กลม คอ 1. กลมค าสงบวกและลบ ประกอบไปดวย 1.1 ค าสงเพมและลดคา : INC [Increment] และ DEC [Decrement] 1.2 ค าสงบวกและบวกรวมตวทด : ADD[Addition] และ ADC [Add with carry] 1.3 ค าสงลบและลบรวมตวยม : SUB [Substraction] และ SBB [Subtract with borrow] 1.4 ค าสงเปรยบเทยบ: CMP [Compare] 1.5 ค าสงเปลยนเครองหมาย : NEG [Negation] 2. กลมค าสงคณและหาร ประกอบไปดวย 2.1 ค าสงคณแบบคดเครองหมายและไมคดเครองหมาย: IMUL [Integer multiplication] และ MUL [Multiplication] 2.2 ค าสงหารแบบคดเครองหมายและไมคดเครองหมาย: IDIV [Interger division] และ DIV [Division] 3. กลมค าสงแปลงขนาดตวเลข ประกอบไปดวย 3.1 ค าสงแปลงจากไบตเปนเวรด : CBW [Convert byte to word] 3.2 ค าสงแปลงจากเวรดเปนดบเบลเวรด : CWD [Convert word to doubleword]

Page 91: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

78

ค าถามทบทวน 1.จงอธบายความหมายและหนาทของแฟลก (Flags) แตละบตวาตอไปน 1.1 แฟลกศนย (Zero flag) 1.2 พารตแฟลก (Parity flag) 1.3 แฟลกทด (Carry flag) 1.4 แฟลกเครองหมาย (Sign-flag) 1.5 โอเวอรโฟลแฟลก (Overflow flag) 1.6 แฟลกเสรม (Auxiliary Flag) 1.7 แฟลกทศทาง (Direction Flag) 1.8 แทรปแฟลก (Trap Flag) 1.9 อนเตอรรพทแฟลก (Interrupt Flag) 2. จงอธบายความแตกตางระหวางค าสงลบ SUB และลบรวมตวยม SBB 3. จงอธบายความแตกตางระหวางค าสงคณแบบคดเครองหมาย IMUL และไมคดเครองหมาย MUL 4. จงอธบายความหมายของค าสงเปรยบเทยบ CMP และค าสงแปลงจากไบตเปนเวรด CBW 5. จากตวอยางค าสงขางลางจงอธบายความหมายของค าสงแตละบรรทด ตวอยางค าสง

MOV AL,25h MOV CL,13h IMUL CL MOV BX,3456h IMUL BX

6. จากตวอยางค าสงขางลางจงอธบายความหมายของค าสงแตละบรรทด ตวอยางค าสง

MOV AX,2513h MOV DX,0000h MOV CX,1000H DIV CX

MOV BL,3h DIV BL 7. จากตวอยางค าสงขางลางจงอธบายความหมายของค าสงแตละบรรทด ตวอยางค าสง MOV AL,11h

CBW MOV AL,A0h CBW

Page 92: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

79

แผนบรหารการสอนประจ าบทท 8 หวขอเนอหา - รปแบบของโปรแกรมภาษาแอสเซมบลแบบเกา - รปแบบของโปรแกรมภาษาแอสเซมบลแบบใหม - การเรยกใชบรการของ DOS - ขนตอนการแปลโปรแกรม - ตารางรหสแอสก

วตถประสงคเชงพฤตกรรม - เขาใจรปแบบของการเขยนโปรแกรมภาษาแอสเซมบล การประกาศเซกเมนตแบบตางๆ เชน เซกเมนต cseg dseg และ sseg เปนตน

- สามารถและเขาใจการประกาศขอมล การใสหมายเหต และการสงใหโปรแกรมจบการท างาน - สามารถและเขาใจการเรยกใชบรการของ DOS และอานตารางรหสแอสกได

วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 93: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

80

ในบทนจะศกษาการเขยนโปรแกรมภาษาแอสเซมบลแบบเตมรปแบบ นนคอจะเขยนโปรแกรมภาษาแอสเซมบลทเปนโปรแกรมทท างานไดจรง มการก าหนดรปแบบตางๆ ครบถวน โปรแกรมภาษาแอสเซมบลทจะเขยนตอไปนไมไดท างานบนโปรแกรม DEBUG เทานน จะตองใช assembler แปลโปรแกรมทเขยนขนใหอยในรปทคอมพวเตอรสามารถน าไปประมวลผลไดเสยกอน 8.1 รปแบบของโปรแกรมภาษาแอสเซมบล

โปรแกรมทท างานในเครองคอมพวเตอรซงใชหนวยประมวลผลตระกล 80x86 นนจะมการแบงโปรแกรมทงหมดเปนเซกเมนตยอย ๆ เชน Code segment Data segment หรอ Stack segment ดงนนในโปรแกรมภาษาแอสเซมบลทเขยนจะประกอบไปดวยเซกเมนตตาง ๆ เชนเดยวกน ภายในเซกเมนตตาง ๆ ทประกาศจะระบขอมลและโปรแกรมทจะอยในเซกเมนตนน ตวอยางโปรแกรม

; ; This program prints the message ”Hello world” ; dseg segment msg1 db ’Hello world’,10h,13h,’$’ dseg ends sseg segment stack db 100 dup (?) sseg ends cseg segment assume cs:cseg,ds:dseg,ss:sseg start: mov ax,dseg mov ds,ax mov ah,9h mov dx,offset msg1 int 21h mov ax,4c00h

บทท 8 โปรแกรมภาษาแอสเซมบลเบองตน (Assembly Language Programming)

Page 94: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

81

int 21h cseg ends end start

จากตวอยาง จะสงเกตไดวาโปรแกรมไดประกาศเซกเมนตทงหมด 3 เซกเมนต คอ cseg dseg และ sseg

เซกเมนตดงกลาวนถกประกาศดวยค าสงเทยม segment การทเรยกค าสง segment วาค าสงเทยมเพราะค าสงนเปนค าสงทผเขยนโปรแกรมระบใหโปรแกรม assembler แปลโปรแกรมตามลกษณะทก าหนด โดยจะไมมค าสงภาษาเครองถกสรางจากค าสงกลมน ตวอยางอน ๆ ของค าสงเทยมคอ db assume และ org เปนตน การประกาศเซกเมนต

การประกาศเซกเมนตในโปรแกรมภาษาเอสเซมบล ใชคค าสงเทยม segment และ ends โดยมลกษณะการประกาศดงน.

segment_name segment … segment_name ends

จากตวอยางไดประกาศเซกเมนต cseg dseg และ sseg ค าสงเทยม stack ระบใหระบบใชเซกเมนต

sseg เปนแสตกของโปรแกรม ค าสงเทยม assume เปนการระบให assembler ไดทราบวาเซกเมนตทประกาศนนจะใหระบบพจารณาวาท าหนาทอะไรและมเซกเมนตรจสเตอรใดเปนตวเกบคาเซกเมนต จากตวอยางประกาศให assembler ทราบวาเซกเมนต cseg จะชโดยรจสเตอร CS เซกมนต dseg จะชโดย รจสเตอร DS และเซกเมนต sseg จะชโดยรจสเตอร SS ค าสงเทยม assume นจะเปนการบอก assembler ใหพจารณาตามทระบเทานน ไมไดเปนการสงให assembler ก าหนดคาตาง ๆ ใหโดยอตโนมต สงเกตไดจากในตอนตนของโปรแกรมมชดค าสงเพอปรบคาของรจสเตอร DS ดงน

mov ax,dseg mov ds,ax

ชดค าสงนจะปรบคาของรจสเตอร DS ใหชไปท dseg ส าหรบรจสเตอร SS ระบบจะปรบคาใหชไปท

เซกเมนตทระบไวโดยค าสงเทยม stack สวนกรณของรจสเตอร CS นนระบบจะตงคาใหตรงกบเซกเมนตทเรมตนโปรแกรม

โปรแกรมภาษาแอสเซมบลจะประกอบไปดวยการประกาศเซกเมนตตาง ๆ และจะสนสดโปรแกรมท ค าสงเทยม end หลงค าสงเทยม end จะระบจดเรมตนของโปรแกรม ในโปรแกรมตวอยางระบจดเรมตนของโปรแกรมทเลเบล start ทประกาศไวทตอนตนของโปรแกรม การประกาศเลเบลสามารถท าไดดงน

label_name:

Page 95: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

82

ระบบจะจดจ าต าแหนงของเลเบลทประกาศไวและจะน าแอดเดรสของเลเบลไปแทนทใหโดยอตโนมต . การทโปรแกรม assembler จดการเรองเกยวกบเลเบลในโปรแกรมภาษาแอสเซมบลนน นบเปนการเพมความสะดวกใหกบผเขยนโปรแกรมเปนอยางมาก การประกาศขอมล

ภายในเซกเมนตขอมลสามารถประกาศขอมลตาง ๆ ได จากโปรแกรมตวอยางประกาศขอมลเปนขอความทจะใหโปรแกรมพมพออกมา จะศกษารปแบบการประกาศขอมลในบทตอไป การใสหมายเหต

หลงเครองหมาย ‘;’ assembler จะตความวาเปนหมายเหต การใสหมายเหตจะชวยท าใหโปรแกรมอานงายขน จากตวอยางโปรแกรมขางตน 3 บรรทดแรกจะเปนหมายเหต การสงใหโปรแกรมจบการท างาน

โปรแกรมจะจบการท างานเมอสงใหโปรแกรมจบการท างานเทานน ถาไมไดสงใหจบการท างานเมอจบโปรแกรมแลว หนวยประมวลผลจะท างานค าสงอน ๆ ทอยในหนวยความจ าตอจากโปรแกรมของไปเรอยๆ ในโปรแกรม DEBUG เรยกใชค าสง INT 20h เพอใหโปรแกรมจบการท างาน แตในโปรแกรมภาษาแอสเซมบลทวไปจะเรยกใชบรการหมายเลข 4Ch ของระบบปฏบตการ DOS โดยจากโปรแกรมตวอยางใชค าสงดงน

mov ax,4C00h int 21h

ในโปรแกรมตวอยางน ไดเรยกใชบรการของ DOS ในการพมพขอความดวย เรยกใชบรการหมายเลข 9 โดยใชค าสง

mov ah,9h mov dx,offset msg1 int 21h

ส าหรบการเรยกใชบรการของ DOS จะกลาวถงในหวขอถดไป ตวอยางโครงรางของโปรแกรมภาษาแอสเซมบล

dseg segment ; ประกาศขอมล dseg ends sseg segment stack db 100 dup (?) sseg ends cseg segment assume cs:cseg,ds:dseg,ss:sseg

Page 96: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

83

start: mov ax,dseg ;ตงคา DS mov ds,ax ; ตวโปรแกรม mov ax,4c00h ;จบโปรแกรม int 21h cseg ends end start

8.2 รปแบบของโปรแกรมภาษาแอสเซมบลแบบใหม

รปแบบของโปรแกรมภาษาแอสเซมบลทใชในตอนตนนนเปนรปแบบเกา ในปจจบนโปรแกรมassembler สวนใหญมรปแบบในการประกาศเซกเมนตตาง ๆ ใหงายขน โดยใชคณสมบตของ MACRO ตาง ๆโปรแกรมตวอยางแรกของเมอน ามาเขยนในรปแบบใหมจะไดเปน

; ; This program prints the message ”Hello world” ; .model small .dosseg .data msg1 db ’Hello world’,10h,13h,’$’ .stack 100h .code start: mov ax,@data mov ds,ax mov ah,9h mov dx,offset msg1 int 21h mov ax,4c00h int 21h end start

จะสงเกตไดวาโปรแกรมกระทดรดขนมาก ขอแตกตางของโปรแกรมทเขยนในรปแบบใหมคอชอของเซกเมนตตาง ๆ จะถกก าหนดใหโดยอตโนมต จะสงเกตไดวาในสวนของการก าหนดคา DS ใชชอของเซกเมนตขอมลวา @data เปนตน

Page 97: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

84

8.3 การเรยกใชบรการของ DOS สามารถเรยกใชบรการตาง ๆ ของ DOS ไดโดยผานทางการขดจงหวะหมายเลข 21h DOS ไดจดสรรบรการ (function) ตาง ๆ มากมายใหกบผเขยนโปรแกรม. เมอเรยกใชบรการจะตองระบวาตองการบรการใด. ระบโดยก าหนดคาหมายเลขของบรการลงในรจสเตอร AH พรอมทงขอมลตาง ๆ ของการเรยกใชบรการนน (พารามเตอรตาง ๆ) รปแบบคราว ๆ ของการเรยกใชบรการของ DOS เปนดงน

mov ah,function_number ;(set function parameters) int 21h

บรการตาง ๆ ของ DOS ทส าคญ และพารามเตอรของบรการตาง ๆ มดงตอไปน ตาราง 8.1 แสดงบรการของ DOS ทส าคญและพารามเตอร

หมายเลข หนาท พารามเตอร หมายเหต 01h รบคาจากแปนพมพ Input : AH = 01h

Output :AL = รหสแอสกของปมทกด

02h แสดงตวอกษร Input : AH = 02h DL = รหสแอสกของอกษรทจะแสดง

05h พ ม พ ต ว อ ก ษ ร ท า งเครองพมพ

Input : AH = 05h DL = รหสแอสกของอกษรทจะพมพ

07h อ า น ต ว อ ก ษ ร จ า กแปนพมพ แตไมแสดงผล (ไมตรวจสอบ Crtl-Break)

Input : AH = 07h Output :AL = รหสแอสกของอกษรทอานได

08h อ า น ต ว อ ก ษ ร จ า กแปนพมพ แตไมแสดงผล (ตรวจสอบ Crtl-Break)

Input : AH = 07h Output :AL = รหสแอสกของอกษรทอานได

09h พมพขอความ Input : AH = 09h DS:DX = ต าแหนงของขอความทตองการพมพ ขอความจบดวยอกษร ‘$’

การประกาศขอมลในหนวยความจ าจะอธบายในบทถดไป

0Ah อานขอความ Input : AH = 0Ah DS:DX = ต าแหนงของบฟเฟอรเกบขอมล.

รปแบบของบฟเฟอรและการใชบรการนจะอธบายในบทถดไป

4Ch จบโปรแกรม Input : AH = 4Ch AL = รหสทจะสงคอสระบบ

Page 98: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

85

8.4 ขนตอนการแปลโปรแกรม จะตองแปลโปรแกรมทเขยนขนใหอยในรปแบบทสามารถท างานได โดยขนตอนการแปลโปรแกรมเปนดงน 1. แปลโปรแกรมเปนแฟมเปาหมาย (object file) นามสกล OBJ โดยใชโปรแกรม assembler ตาง ๆ เชน Macro Assembler (MASM) หรอ Turbo Assembler (TASM) 2. น ามาแฟมเปาหมายแฟมเดยวหรอหลายแฟมมาเชอมโยงเขาดวยกนโดยใชโปรแกรม LINK. ตวอยางการแปลโปรแกรม จากโปรแกรมตวอยาง สมมตวาเกบในแฟมชอ EX1.ASM สามารถสงแปลโปรแกรมโดยใช Macro Assembler ไดดงน

A:\>masm ex1; Microsoft (R) MASM Compatibility Driver Copyright (C) Microsoft Corp 1991. All rights reserved. Invoking: ML.EXE /I. /Zm /c /Ta ex1.asm Microsoft (R) Macro Assembler Version 6.00 Copyright (C) Microsoft Corp 1981-1991. All rights reserved. Assembling: ex1.asm

ถาโปรแกรมมขอผดพลาด assembler จะแจงขอผดพลาดกลบมาใหทราบ สามารถแกไขและแปล

โปรแกรมใหมได เมอแปลโปรแกรมภาษาแอสเซมบลเรยบรอยแลว จะไดแฟมเปาหมายทมนามสกลเปน OBJ เชนจากตวอยางจะได EX1.OBJ จะใหโปรแกรม LINK เพอแปลแฟมเปาหมาย (Object file) ใหเปนโปรแกรมทสามารถท างานได ดงน

A:\>link ex1; Microsoft (R) Segmented-Executable Linker Version 5.13 Copyright (C) Microsoft Corp 1984-1991. All rights reserved.

จะไดแฟมทมนามสกล EXE ซงสามารถเรยกใชไดจาก DOS prompt

Page 99: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

86

ตวอยางโปรแกรม ตวอยางท 1 โปรแกรมนรบการกดปมจากผใชโดยใชบรการหมายเลข 01h แลวแสดงอกขระทอานไดโดยใชบรการของ DOS หมายเลข 02h สงเกตวาโปรแกรมนไมมการใชขอมลในหนวยความจ า ดงนนจงไมตองประกาศเซกเมนตขอมล

;Ex1 .model small .dosseg .stack 100h .code start: mov ah,01h ;read character (Function 01h) int 21h mov dl,al ;copy character to DL mov ah,02h ;display it (Function 02h) int 21h mov ax,4C00h ;Exit (Function 4Ch) int 21h end start

ตวอยางท 2 โปรแกรมนรบการกดปมจากผใชโดยใชบรการหมายเลข 01h แลวแสดงอกขระทมรหสแอสกถดจากอกขระทอานได การแสดงตวอกษรใชบรการของ DOS หมายเลข 02h เชนเดยวกบตวอยางท 1 โปรแกรมนไมมการใชขอมลในหนวยความจ าจงไมมการประกาศเซกเมนตขอมล โปรแกรมนเขยนโดยใชรปแบบในการเขยนแบบเกา

;Ex2 sseg segment stack db 100 dup (?) sseg ends cseg segment assume cs:cseg,ss:sseg start: mov ah,01h ;read character (Function 01h) int 21h

Page 100: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

87

mov dl,al ;copy to DL inc dl ;increse DL (next char.) mov ah,02h ;display it (Function 02h) int 21h mov ax,4C00h ;Exit int 21h cseg ends end start

ตวอยางท 3 โปรแกรมนรบตวอกษรจากผใช จากนนแปลงตวอกษรเลกใหเปนตวอกษรใหญโดยการลบคารหสแอสกดวย 32 แลวแสดงอกขระนนกบผใช

.model small .dosseg .stack 100h .code start: mov ah,01h ;read char. int 21h mov dl,al sub dl,32 ;change char. case mov ah,02h ;display it int 21h mov ax,4C00h ;exit int 21h end start

ตวอยางท 4

Page 101: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

88

โปรแกรมนท างานเหมอนโปรแกรมในตวอยางท 3 แตไมแสดงอกษรทผใชปอนใหผใช เหน โดยใชบรการหมายเลข 08h แทนบรการหมายเลข 01h ในตวอยางท 3

sseg segment stack db 100 dup (?) sseg ends cseg segment assume cs:cseg,ss:sseg start: mov ah,08h ; read char (Function 08h) int 21h mov dl,al sub dl,32 ; Change case mov ah,02h int 21h mov ax,4C00h ; exit int 21h cseg ends end start

Page 102: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

89

8.5 ตารางรหสแอสก ตารางท 8.5 แสดงตารางรหสแอสก ( ASCII: American Standard Code for Information Interchange)

0 NUL 16 DLE 32 SP 48 0 64 @ 80 P 96 ‘ 112 p

1 SOH 17 DC1 33 ! 49 1 65 A 81 Q 97 a 113 q

2 STX 18 DC2 34 ” 50 2 66 B 82 R 98 b 114 r

3 ETX 19 DC3 35 # 51 3 67 C 83 S 99 c 115 s

4 EOT 20 DC4 36 $ 52 4 68 D 84 T 100 d 116 t

5 ENQ 21 NAK 37 % 53 5 69 E 85 U 101 e 117 u

6 ACK 22 SYN 38 & 54 6 70 F 86 V 102 f 118 v

7 BEL 23 ETB 39 ’ 55 7 71 G 87 W 103 g 119 w

8 BS 24 CAN 40 ( 56 8 72 H 88 X 104 h 120 x

9 HT 25 EM 41 ) 57 9 73 I 89 Y 105 I 121 y

10 LF 26 SUB 42 * 58 : 74 J 90 Z 106 j 122 z

11 VT 27 ESC 43 + 59 ; 75 K 91 [ 107 k 123 {

12 FF 28 FS 44

, 60 < 76 L 92 \ 108 l 124 |

13 CR 29 GS 45 - 61 = 77 M 93 ] 109 m 125 }

14 SO 30 RS 46 . 62 > 78 N 94 ^ 110 n 126 ~

15 SI 31 US 47 / 63 ? 79 O 95 _ 111 o 127

รหสหมายเลข 0 - 31 เปนรหสควบคม รหส 32 คอชองวาง

Page 103: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

90

สรป

ภาษาแอสเซมบล (Assembly Language) เปนภาษาทใชสญญาลกษณในการสอสารความหมายภาษาแอสเซมบลมลกษณะค าสง ทขนกบเครองคอมพวเตอรทใชงานและมการแปลค าสงใหเปนภาษาเครองนอกจากภาษาเครอง และ ภาษาแอสเซมบลแลว กยงมภาษาระดบสง เชน Basic Cobol Fortran ซงเปนภาษาทมค าสงใกลเคยงกบภาษาองกฤษมากท าใหผเขยนโปรแกรมสามารถเขยนโปรแกรมไดสะดวกและรวดเรว แตวาโปรแกรมทเขยนดวยภาษาระดบสงตองใชเนอท เกบในหนวยความจ าเปนจ านวนมาก อกทงท างานไดชากวาภาษาแอสเซมบล ดงนนภาษาระดบสงจงไมนยมน ามาประยกตใชกบการท างานทระบบการควบคมทมความส าคญมาก

ภาษาแอสเซมบล เหมาะกบโปรแกรมทใชเนอทในหนวยความจ าไมมากนก ทงท างานไดรวดเรว และในการควบคมการท างานของเครองคอมพวเตอรไดโดยตรง

ค าสงปฏบตการของภาษาแอสเซมบล แบงออกเปน 4 ชนดคอ 1. Machine instruction เปนค าสงทท าใหเกดการปฏบตการ (execution) ชดของค าสงอยใน assembler's instruction 2. Assembler instruction เปนค าสงทบอกแอสเซมเบลรใหท าการระหวาง Assembly source program 3. Macro instruction เปนค าสงทบอกแอสสเซมเบลรใหด าเนนการกบชดของค าสงทไดบอกไวกอนแลว ซงจากชดของค าสงน แอสเซมเบลรจะผลตชดของค าสงซงตอไปจะด าเนนการเหมอนหนงวาชดของค าสงนเปนสวนหนงของ source program แตเรมแรก 4. Pseudo instruction เปนค าสงทบอกใหแอสเซมเบลรรวา ควรปฏบตการเชนไรกบขอมลการ branch อยางมขอแม แมคโคและ listing ซงปกตแลวค าสงเหลานจะไมผลตค าสงภาษาเครองให

ค าถามทบทวน 1. โปรแกรมทท างานในเครองคอมพวเตอรซงใชหนวยประมวลผลตระกล 80x86 นนจะมการแบงโปรแกรมทงหมดเปนเซกเมนตยอย ๆ อะไรบาง 2. จงอธบายขนตอนการแปลโปรแกรมในภาษาแอสเซมบล 3. จงแสดงรปแบบวธการเขยนโปรแกรมภาษาแอสเซมบลแบบใหม 4. แฟมเปาหมาย (Object file) คออะไรและมความสมพนธกนอยางไรกบการเขยนโปรแกรมภาษาแอสเซมบล 5. จงเขยนโปรแกรมนรบตวอกษรจากผใช จากนนแปลงตวอกษรใหญใหเปนตวอกษรเลกออกทางหนาจอคอมพวเตอร (Display on Screen)

Page 104: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

91

แผนบรหารการสอนประจ าบทท 9 หวขอเนอหา - การประกาศขอมล

- การอางใชขอมลทประกาศไว - การอางต าแหนงของขอมล - การประกาศขอมลส าหรบการใชบรการของ DOS หมายเลข 09h และ 0Ah

- การใชบรการของ DOS หมายเลข 09h : การอานพมพขอความ - การใชบรการของ DOS หมายเลข 0Ah : การอานขอความ

วตถประสงคเชงพฤตกรรม - เขาใจรปแบบการประกาศขอมลหรอตวแปรในโปรแกรมภาษาแอสเซมบล

- สามารถและเขาใจการอางใชขอมลหรอตวแปรทประกาศไว - สามารถและเขาใจฟงกชนหมายเลข 09h และ 0Ah ของ DOS วาเปนฟงกชนทท างานอยางไร

วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 105: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

92

ในบททแลวไดศกษาเกยวกบรปแบบของการเขยนโปรแกรมภาษาแอสเซมบลและการประกาศเซกเมนตแลว ในบทนจะศกษาเกยวกบการประกาศขอมลภายในเซกเมนตขอมล และการใชบรการหมายเลข 09h และ 0Ah ของระบบปฏบตการ DOS ในการแสดงผลขอความและการอานขอความจากผใช

9.1 การประกาศขอมล

การประกาศขอมลหรอตวแปรในโปรแกรมภาษาแอสเซมบลนน ท าไดโดยประกาศจองเนอทในหนวยความจ าในเซกเมนตขอมล แลวตงเลเบลของขอมลนนไว ในการอางถงขอมลในหนวยความจ าต าแหนงนน สามารถอางโดยใชเลเบลทประกาศไวได ดงนนการประกาศตวแปรหรอขอมลนนจะมลกษณะเชนเดยวกบการประกาศเลเบลนนเอง

ค าสงเทยมในการประกาศขอมล

ค าสงเทยมทใชในการประกาศขอมลมหลายค าสง ดงตารางท 9.1 แสดงค าสงเทยมเหลานใชในระบขนาดในการจองหนวยความจ า

ตารางท 9.1 แสดงค าสงเทยมส าหรบการระบขนาดขอมลในการจองหนวยความจ า

ค าสงเทยม ความหมาย DB DW DD DQ DT

Define Byte : ประกาศจองขอมลใหมขนาดหนวยละ 1 ไบต Define Word : ประกาศจองขอมลใหมขนาดหนวยละ 1 เวรด ( 2 ไบต) Define Doubleword : ประกาศจองขอมลใหมขนาดหนวยละ 2 เวรด Define Quadword : ประกาศจองขอมลใหมขนาดหนวยละ 4 เวรด Define Ten Bytes : ประกาศจองขอมลใหมขนาดหนวยละ 10 ไบต

ในการประกาศจองขอมลนจะท าให assembler กนเนอทในเซกเมนตนนตามขอมลทระบตามหลงค าสงเทยมเหลาน โดยจะกนหนวยความจ าทมขนาดของแตละหนวยตามทระบในค าสง

รปแบบของการประกาศขอมล

ในการประกาศขอมล (ตวแปร) มกประกาศในเซกเมนตขอมล โดยจะระบชอของตวแปรนน พรอมทงค าสงเทยมทใชระบขนาดของขอมล จากนนจะระบขอมลตาง ๆ ทจะใชต าแหนงทจะจองนน รปแบบในการระบเปนดงน

variable_name Dx data

บทท 9 การประกาศขอมล (Data Declared)

Page 106: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

93

สวนของโปรแกรมท 9.1 การประกาศขอมล

ตวอยางการประกาศขอมล จากการประกาศขอมลในสวนของโปรแกรมท 8.2 จะมการจดสรรเนอทในหนวยความจ าดงรปท 9.1

สงเกตวาในการประกาศ data1 กบ data2 นนการระบขอมลเหมอนกนแตขนาดของขอมลตางกน ท าใหการจองเนอทในหนวยความจ าแตกตางกนดวย dseg segment data1 db 1,2

data2 dw 1,2 data3 db ’Hi’,10,13 data4 dd 1234h dseg ends

สวนของโปรแกรมท 9.2 ตวอยางการประกาศขอมล DS:00h 01h data1

DS:01h 02h

DS:02h 01h data2

DS:03h 00h

DS:04h 02h DS:05h 00h DS:06h 48h data3 DS:07h 69h DS:08h 0Ah DS:09h 0Ch DS:0Ah 34h data4 DS:0Bh 12h DS:0Ch 00h DS:0Eh 00h

รปท 9.1 แสดงการจดเรยงขอมลในหนวยความจ าจากการประกาศในสวนของโปรแกรมท 9.2

การระบไมระบคาของขอมลทจองเนอท

สามารถประกาศจองหนวยความจ าโดยไมระบคาเรมตนไดโดยการระบคาเปน ‘?’ ดงเชนในสวนของโปรแกรมท 9.3 จะมการจองเนอทไวแตไมมการก าหนดคาเรมตน

data5 db ? data6 dw ?

Page 107: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

94

สวนของโปรแกรมท 9.3 การใชจองหนวยความจ าโดยไมระบคาเรมตน

การประกาศขอมลทซ ากน สามารถใชค าสงเทยม dup เพอบอกการซ ากนของขอมลได รปแบบของค าสงเทยม dup มดงน

count dup (value)

ตวอยางของการประกาศทใชค าสงเทยม dup ดงเชนในสวนของโปรแกรมท 9.4

data7 db 10 dup (0) data8 db 5 dup (4 dup (0)) data9 dw 5 dup (1, 2, 3 dup (4)) data10 db 20 dup (?)

สวนของโปรแกรมท 9.4 การใชค าสงเทยม dup Assembler จะจองหนวยความจ าขนาด 10 ไบต ทมคาเปน 0 และจะใหเลเบล data7 ชไปทต าแหนง

เรมตนของขอมลน ในสวนของ data8 จะเปนขอมลแบบไบตจ านวน 4x5 ไบต ทมคาเทากบ 0 เชนเดยวกน สงเกตวาภายในเครองหมายวงเลบของค าสงเทยม dup สามารถใสขอมลไดหลายคา รวมทงก าหนดคาแบบซ ากนโดยใชค าสง dup อกได ดงเชนตวแปร data9 ในตวแปร data10 เปนการประกาศจองหนวยความจ าไวโดยไมระบคาเรมตน

9.2 การอางใชขอมลทประกาศไว

ในการอางใชขอมลหรอตวแปรทประกาศไว สามารถอางโดยใชชอของเลเบลทประกาศไวได Assembler จะจดการน าต าแหนงของขอมลนนมาแทนคาใหโดยอตโนมต ยงสามารถอางคาในหนวยความจ าโดยอางสมพทธกบเลเบลทก าหนดขนได สวนของโปรแกรมท 9.5 เปนโปรแกรมทอางใชคาของตวแปรทก าหนดในสวนของโปรแกรมท 9.2 โดยหลงจากการท างานของโปรแกรมคาในหนวยความจ าจะเปลยนไปตามรปท 9.2

Page 108: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

95

mov al,data1 mov bx,data2 mov data1,0 mov [data2+2],1123h mov data1[1],22h mov cl,byte ptr data4[2]

สวนของโปรแกรมท 9.5 ตวอยางการเรยกใชตวแปร คาในรจสเตอร AL BX และ CL มคาเปน 01h 01h และ 00h ตามล าดบ สงเกตวาในการก าหนด

คาคงทใหกบตวแปรในหนวยความจ ากระท าไดทนทโดยไมตองระบขนาด เนองจากในการประกาศตวแปรไดระบกบ assembler แลววาจะเปนตวแปรขนาดเทาใด แตในกรณทตองการจะอางแตกตางจากทระบกสามารถกระท าไดโดยตองระบขนาดของขอมลก ากบดวย เชนในค าสง mov cl, byte ptr data4[2] เปนการอางขอมลแบบ 8 บต เพราะ CL เปนรจสเตอรขนาด 8 บต

9.3 การอางต าแหนงของขอมล สามารถอางถงออฟเซตของขอมลทประกาศไวไดโดยใชค าสงเทยม OFFSET ดงสวนของโปรแกรมท 9.6

mov bx,offset data1 ;bx = offset mov byte ptr [bx],10h mov bx,data2 ;bx = value at data2

สวนของโปรแกรมท 9.6 การอางต าแหนงของขอมล

DS:00h 00h data1 DS:01h 22h DS:02h 01h data2 DS:03h 00h DS:04h 23h DS:05h 11h DS:06h 48h data3 DS:07h 69h DS:08h 0Ah DS:09h 0Ch DS:0Ah 34h data4 DS:0Bh 12h DS:0Ch 00h DS:0Eh 00h

รปท 9.2 แสดงการเปลยนแปลงคาหลงการท างานของโปรแกรมท 9.5

Page 109: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

96

การอางต าแหนงขอมลโดยคดสมพทธกบรจสเตอร BX นอกจากการระบต าแหนงสมพทธกบเลเบลโดยใชคาคงทแลว สามารถระบต าแหนงของขอมลสมพนธกบเลเบลโดยใชคาจากรจสเตอร BX ได ตวอยางเชนสวนของโปรแกรมท 9.7

mov bx,0 mov ah,data3[bx] ;ah=data3[0] inc bx mov cl,data3[bx] ;cl=data3[1] mov bx,offset data3 mov dl,[bx+2] ;dl=data3[2]

สวนของโปรแกรมท 9.7 การอางต าแหนงของขอมลสมพทธกบเลเบลโดยใชคาจากรจสเตอร BX ในค าสง mov กอนบรรทดท 5 อางหนวยความจ าโดยสมพนธกบ data3 และคาใน BX แตในค าสง mov บรรทดสดทายของสวนของโปรแกรมท 9.7 อางหนวยความจ าสมพนธกบ BX ซงเกบออฟเซตของ data3

9.4 การประกาศขอมลส าหรบการใชบรการของ DOS หมายเลข 09h และ 0Ah

ฟงกชนหมายเลข 09h และ 0Ah ของ DOS เปนฟงกชนทตองมการสงแอดเดรสของขอมลในหนวยความจ า การประกาศขอมลส าหรบฟงกชนหมายเลข 09h จะไมมความซบซอนมากนก แตส าหรบฟงกชนหมายเลข 0Ah การประกาศขอมลทเหมาะสมจะท าใหเขยนโปรแกรมไดงายมากขน

9.5 การใชบรการของ DOS หมายเลข 09h : การพมพขอความ

ฟงกชนหมายเลข 09h นรบขอมลปอนเขาคอ AH = 09h DS : DX = ต าแหนงของหนวยความจ าของขอมลทจะแสดง โดยขอมลนจะตองจบดวยอกขระ ‘$’ ถาตองการพมพขอความ “Hello world” สามารถประกาศขอมลในหนวยความจ าไดดงน

dseg segment mesg db ’Hello world’,10,13,’$’ dseg ends

สวนของโปรแกรมท 9.8 ตวอยางการประกาศขอมลส าหรบการใชบรการของ DOS หมายเลข 09h สามารถสงแสดงขอมลดงกลาวไดโดย

mov ah,09h mov dx,offset mesg int 21h

สวนของโปรแกรมท 9.9 ตวอยางการการใชบรการของ DOS หมายเลข 09h อกขระหมายเลข 10 (Line feed) และ 13 (Carriage Return) คอรหสควบคมใชในการสงใหขนบรรทดใหม

Page 110: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

97

9.6 การใชบรการของ DOS หมายเลข 0Ah : การอานขอความ ฟงกชนนจะอานขอความจากผใชจนกระทงผใชกดปม Enter โดยขอมลปอนเขาจะตองระบต าแหนงของหนวยความจ าทใชเกบขอมล (บฟเฟอร) ของขอความ ฟงกชนหมายเลข 0Ah นรบขอมลปอนเขาคอ

AH = 0Ah DS : DX = ต าแหนงของหนวยความจ าทจะใชเกบขอความ (บฟเฟอร) บฟเฟอรจะตองมรปแบบดงน 1. ไบตแรกของหนวยความจ าเกบคาความยาวสงสดของขอความทอานได ความยาวนจะรวมรหสขน

บรรทดใหมดวย 2. DOS จะเขยนความยาวจรงของขอความทอานเขามาไดในไบตทสอง 3. ส าหรบไบตถด ๆ ไปจะเปนรหสแอสกของขอความทอานเขามา การประกาศขอมลส าหรบการเรยกใชฟงกชนนจะสามารถประกาศไดดงสวนของโปรแกรมท 9.10

dseg segment maxlen db 30 ;Maximum of 30 chars msglen db ? ;2nd byte contains the real length msg db 30 dup (?) ;Message recieved dseg ends

สวนของโปรแกรมท 9.10 ตวอยางการประกาศขอมลส าหรบการใชบรการของ DOS หมายเลข 0Ah เมอเรยกใชบรการหมายเลข 0Ah จะสงต าแหนงของ maxlen ซงเปนต าแหนงเรมตนของบฟเฟอรท

ประกาศไปใหกบ DOS จากนนสามารถอานความจรงของขอความทอานมาไดทางตวแปร msglen ตวอยางโปรแกรมท 9.11 แสดงการใชงานบรการหมายเลข 0Ah ในการอานขอความและแสดงขอความนนออกมาโดยใชบรการหมายเลข 09h

ในการรบขอความนนบรการหมายเลข 0Ah จะเกบอกขระขนบรรทดใหมใหดวย ดงนนจะตองเพอขนาดบฟเฟอรทจะใหเกบขอความไว 1 ไบตดวย แตในการคนคาความยาวของขอความมาให บรการหมายเลข 0Ah นจะใสความยาวทไมรวมอกขระขนบรรทดใหมน เมอรบขอความเสรจแลว เคอรเซอรจะอยทตนบรรทดทปอนขอความนน ดงนนถาพมพขอความเดมซ าไปอกครงจะท าใหขอความทบกนและจะไมทราบวามการพมพขอความออกมาอยางถกตองหรอไม ดงนนจงใชฟงกชนหมายเลข 09h สงพมพชดอกขระส าหรบการขนบรรทดใหมกอนทจะสงพมพขอความทรบมา

ขอความทสงพมพดวยบรการหมายเลข 09h จะตองจบดวยอกขระ ‘$’ ดงนนจงตองก าหนดคาในไบตสดทายของขอความทรบมาดวยอกขระ ‘$’ โปรแกรมนจะท างานผดพลาดถาภายในขอความมเครองหมาย ‘$’ อยดวย

Page 111: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

98

; ; display string ; dseg segment ;string buffer maxlen db 30 ;29 chars + 1 return msglen db ? msg db 30 dup (?) ;29 chars + 1 return ;newline string newline db 10,13,'$' dseg ends sseg segment stack db 100h dup (?) sseg ends cseg segment assume cs:cseg,ds:dseg,ss:sseg start: mov ax,dseg ;set DS mov ds,ax mov ah,0Ah ;read string mov dx,offset maxlen int 21h mov ah,09h ;newline mov dx,offset newline int 21h mov bl,msglen ;get string length mov bh,0 mov msg[bx],'$' ;terminate string mov ah,09h ;display it mov dx,offset msg int 21h mov ax,4C00h ;bye-bye int 21h cseg ends end start

โปรแกรมท 9.11 แสดงการรบขอความและแสดงขอความนนกลบมา

Page 112: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

99

สรป การประกาศขอมลหรอตวแปรในโปรแกรมภาษาแอสเซมบลนน ท าไดโดยประกาศจองเนอทใน

หนวยความจ าในเซกเมนตขอมล แลวตงเลเบลของขอมลนนไว ในการอางถงขอมลในหนวยความจ าต าแหนงนน สามารถอางโดยใชเลเบลทประกาศไวได ดงนนการประกาศตวแปรหรอขอมลนนจะมลกษณะเชนเดยวกบการประกาศเลเบลนนเอง สวนในการอางใชขอมลหรอตวแปรทประกาศไว สามารถอางโดยใชชอของเลเบลทประกาศไวได Assembler จะจดการน าต าแหนงของขอมลนนมาแทนคาใหโดยอตโนมต ยงสามารถอางคาในหนวยความจ าโดยอางสมพทธกบเลเบลทก าหนดขนได

การประกาศขอมลส าหรบการใชบรการของ DOS หมายเลข 09h และ 0Ah ฟงกชนหมายเลข 09h และ 0Ah ของ DOS เปนฟงกชนทตองมการสงแอดเดรสของขอมลในหนวยความจ า การประกาศขอมลส าหรบฟงกชนหมายเลข 09h จะไมมความซบซอนมากนก แตส าหรบฟงกชนหมายเลข 0Ah การประกาศขอมลทเหมาะสมจะท าใหเขยนโปรแกรมไดงายมากขน การใชบรการของ DOS ฟงกชนหมายเลข 0Ah จะเกยวของกบการอานขอความสวนฟงกชนหมายเลข 09h จะเกยวของกบการพมพขอความ ค าถามทบทวน 1. จงอธบายความหมายของค าสงเทยมส าหรบการระบขนาดขอมลในการจองหนวยความจ าตอไปน DB, DW, DD, DQ, และ DT 2. จงแสดงวธการจดเรยงขอมลในหนวยความจ าจากการประกาศในสวนของโปรแกรมทแสดงอยขางลางน dseg segment data1 dw 1,2

data2 dw 1,2 data3 db ’Cs’,14,15 data4 dd 3456h dseg ends

2. ค าสงเทยม dup มไวเพออะไร 3. อกขระหมายเลข 10 (Line feed) และ 13 (Carriage Return) หมายถงอะไร 4. จงอธบายการประกาศขอมลแตละบรรทดส าหรบการเรยกใชฟงกชนจากสวนของโปรแกรมทแสดงอยขางลางน dseg segment

maxlen db 60 msglen db ? msg db 40 dup (?) dseg ends

5. ถาตองการพมพขอความ “Computer Science SDU” สามารถประกาศขอมลในหนวยความจ านได อยางไร 6. ขอความทสงพมพดวยบรการหมายเลข 09h จะตองจบดวยอกขระใดเสมอ

Page 113: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

100

แผนบรหารการสอนประจ าบทท 10 หวขอเนอหา - ค าสงกระโดด - ค าสงวนรอบ วตถประสงคเชงพฤตกรรม - มความรและความเขาใจเกยวกบค าสงกระโดดแบบไมมเงอนไข ค าสงกระโดดทพจารณาคาจากแฟลก และค าสงกระโดดทพจารณาคาจากรจสเตอร - มความรและความเขาใจเกยวกบกลมค าสงวนรอบ เชน LOOP LOOPZ และ LOOPNZ เปนตน วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - ตอบค าถาม - ภาพ - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 114: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

101

ในบทนจะศกษาเกยวกบเรองค าสงกระโดด และค าสงเกยวกบการท าซ า เปาหมายของบทนคอการน าค าสงเหลานไปใชในการสรางโครงสรางควบคม (Control Structures) แบบตาง ๆ ซงจะศกษาตอไปในบทท 11

10.1 ค าสงกระโดด

ค าสงกระโดดเปนค าสงทสงใหหนวยประมวลผลกระโดดไปท างานทต าแหนงอน รปแบบทวไปของค าสงกระโดดคอ

Jxx label

ค าสงกระโดดแบงไดเปน 2 กลม คอ ค าสงกระโดดแบบไมมเงอนไข และค าสงกระโดดแบบมเงอนไข ค าสงกระโดดแบบไมมเงอนไขคอค าสง JMP สวนในกลมของค าสงกระโดดแบบมเงอนไขแบบคราว ๆ ออกเปนสองกลมคอกลมซงพจารณาการกระโดดจากคาในแฟลก และกลมทพจารณาการกระโดดจากคาในรจสเตอร สวนใหญค าสงกระโดดทพจารณาคาในแฟลกจะใชผลลพธทไดจากค าสง CMP ค าสงกระโดดตาง ๆ สรปไดดงตารางท 10.1 แสดงค าสงกระโดดตางๆ ค าสงกระโดด ความหมาย เงอนไข

ค าสงกระโดดแบบไมมเงอนไข JMP Jump Always

ค าสงกระโดดทพจารณาคาจากแฟลก

Zero flag JZ (JE) JNZ (JNE)

Jump if Zero (Jump if Equal) Jump if Not Zero (Jump if Not Equal)

ZF = 1 ZF = 0

Overflow flag JO JNO

Jump if Overflow Jump if Not Overflow

OF = 1 OF = 0

Parity flag JPO JPE

Jump if Parity Odd Jump if Parity Even

PF = 0 PF = 1

บทท 10 ค าส งกระโดดและการกระท าซ า (Jump and Iteration Loop)

Page 115: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

102

ค าสงกระโดด ความหมาย เงอนไข Signs flag JS JNS

Jump if Sign Jump if No Sign

SF = 1 SF = 0

Carry flag JC JNC

Jump if Carry Jump if No Carry

CF = 1 CF = 0

Comparing unsigned numbers JA (JNBE) JB (JNAE) JAE (JNB) JBE (JNA)

Jump if Above (Not Below or Equal) Jump if Below (Not Above or Equal) Jump if Above or Equal (Not Below) Jump if Below or Equal (Not Above)

(CF and ZF) = 0 CF = 1 CF = 0 (CF or ZF) = 1

Comparing signed numbers JG (JNLE) JL (JNGE) JGE (JNL) JLE (JNG)

Jump if Greater (Not Less or Equal) Jump if Less (Not Greater or Equal) Jump if Greater or Equal (Not Less) Jump if Less or Equal (Not Greater)

ZF = 0 and SF = OF SF <> OF SF = OF (ZF = 1) of (SF <> OF)

ค าสงกระโดดทพจารณาคาจากรจสเตอร

Testing for CX JCXZ

Jump if CX is equal to zero

CX = 0

ค าสงตาง ๆ เหลานจะใชในการสรางโครงสรางควบคมการท างานของโปรแกรม โดยจะใชประกอบกบ

ค าสง CMP ดงทไดกลาวมาแลว ยกเวนค าสง JCXZ จะนยมใชประกอบกบกลมค าสงประเภทการท าซ า (LOOP) ค าสงทใชควบคมการกระโดดแบบมเงอนไขทใชการเปรยบเทยบระหวางโอเปอรแรนดสองตวของค าสง

Page 116: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

103

CMP มสองกลมคอ กลมทคดการเปรยบเทยบเปนการเปรยบเทยบของเลขไมคดเครองหมาย (JA JB JAE JBE) และกลมทคดเปนเลขคดเครองหมาย (JG JL JGE JLE) ในการใชค าสงกระโดดทงสองกลมนจะตองพจารณาขอมลทเปรยบเทยบกนดวย

ตวอยาง (1) cmp ah,10 ; เปรยบเทยบ ah กบ 10 jz lab1 ; ถาเทากนใหกระโดดไปท lab1 mov bx,2 lab1: add cx,10 (2) cmp ah,10 ; เปรยบเทยบ ah กบ 10 jge tenup ; ถามากกวาหรอเทากบใหกระโดดไปท tenup add dl,’0’ jmp endif ; กระโดดไปท endif tenup: add dl,’A’ endif: (3) getonechar: mov ah,1 ; ใชบรการหมายเลข 1 : อานอกขระ int 21h cmp al,’Q’ ; เปรยบเทยบ al กบ ’Q’ jne getonechar ; ถาไมเทากนใหกระโดดไปท getonechar (กลบไปรบตวอกษรใหม) (4) mov ah,02 ; บรการหมายเลข 2 : พมพอกขระ mov dl,32 ; เรมท ชองวาง ASCII = 32 (’ ’) printloop: cmp dl,128 ; เปรยบเทยบ dl กบ 128 (ASCII สดทาย) ja finish ; ถามากกวากระโดดไปท finish int 21h ; พมพอกขระทม ASCII = dl inc dl ; เพม dl jmp printloop finish:

10.2 ค าสงวนรอบ

ค าสงทใชกระท าซ าใน 8086 ยงมอกกลมหนงทใชคาในรจสเตอร CX (Counter Register) ในการนบจ านวนครงของการท างาน ค าสงกลมนคอ LOOP LOOPZ และ LOOPNZ

ค าสง LOOP ค าสง LOOP จะลดคาของรจสเตอร CX ลงหนง ถา CX มคาไมเทากบศนยค าสง LOOP จะกระโดดไป

ท างานทเลเบลทระบ รปแบบของค าสง LOOP เปนดงน LOOP label

ค าสง LOOP จะลดคาของรจสเตอร CX โดยไมกระทบกบแฟลก นนคอค าสง LOOP มผลเหมอนค าสง DEC CX JNZ label

แตจะไมมผลกระทบกบแฟลก

Page 117: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

104

ตวอยางการใชค าสง LOOP โปรแกรมตวอยางนค านวณผลรวมของเลขตงแต 1 ถง 20

mov cx,20 ; ท าซ า 20 ครง mov bl,1 ; เรมจาก 1 mov dx,0 ; ก าหนดคาเรมตนใหกบผลรวม addonenumber: add dl,bl ; บวก 8 บตลาง adc dh,0 ; รวมตวทด inc bl ; ตวถดไป loop addonenumber ; ถา CX ลดลงแลวไมเทากบ 0 ท าซ าตอไป

ค าสง JCXZ ในกรณท CX มคาเทากบศนยกอนการกระท าซ าโดยใชค าสง LOOP ผลลพธจากการลดคาจะมคาเทากบ

0FFFFh ท าใหจ านวนรอบของการท างานไมถกตอง นยมใชค าสง JCXZ ในการปองกนความผดพลาดในกรณทคาของรจสเตอร CX มคาเทากบ 0 โดยปกตถา CX มคาเทากบศนย จะ สงใหโปรแกรมกระโดดไปทจดสนสดการกระท าซ า ดงตวอยาง initialization jcxz endloop ; CX =0 ? label1: actions loop label1 ; loop endloop:

ค าสง LOOPZ และ LOOPNZ ค าสง LOOPZ และ LOOPNZ มลกษณะท างานเหมอนค าสง LOOP แตจะน าคาของแฟลกมาใชในการพจารณาการกระโดดดวย ค าสง LOOPZ จะลดคาของรจสเตอร CX โดยไมกระทบแฟลกและจะกระโดดไปทเลเบลทระบเมอ CX มคาไมเทากบศนย และ แฟลกศนยมคาเปน 1 (ผลลพธของค าสงกอนหนามคาเทากบศนย) สงเกตวา ค าสง LOOPZ จะท างานเหมอนค าสง LOOP แตแฟลกศนยจะตองมคาเปนหนงดวย ค าสงนถงจะกระโดดไปทเลเบลทก าหนด ในท านองกลบกนค าสง LOOPNZ จะกระโดดไปท างานเมอ CX มคาไมเทากบศนยและแฟลกศนยมคาเปน 0 ค าสงทงสองนยมใชในการท าซ าททราบจ านวนครงแตมเงอนไขในการท าซ า

ตวอยางค าสง LOOPZ และ LOOPNZ ตวอยางนแสดงการใชค าสง LOOPNZ ในการคนหาขอมลคาหนงจากชดของขอมล ในตวอยางนจ านวน

ขอมลคอ 100 คา และขอมลทตองการคนหาเกบทรจสเตอร DX .data datalist dw 100 dup (?) .code … ;

Page 118: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

105

mov bx,offset datalist ; ให BX เกบคาต าแหนงของ datalist mov cx,100 ; ท าซ า 100 ครง dec bx,2 ; ลดคาของ BX เพราะใน loop มการเพมคา checkdata: inc bx,2 ; BX ชไปยงขอมลตวถดไป cmp dx,[bx] ; เปรยบเทยบ loopnz checkdata ; ท าซ าถายงไมพบขอมลและยงไมครบขอมล jz found ; คนเจอขอมลกระโดดไปท found ; not found ; ไมพบขอมล … found: ; found ; พบขอมล …

ในตวอยางแรกนค าสง DEC BX,2 ในโปรแกรมกอนทจะถงสวนทท างานซ าเปนการปรบคาของ BX ใหสอดคลองกบการปรบคาในสวนทท างานซ า การลดคาของ BX ในกรณนท าใหการเปรยบเทยบครอบคลมถงคาแรกของขอมลดวย การใชเทคนคเชนนในโปรแกรมอาจท าใหโปรแกรมท างานไดเรวขน แตอาจท าใหผอนทมาอานโปรแกรมของเขาใจผดได ดงนนถาใชเทคนคตาง ๆ ในโปรแกรม ควรใสหมายเหตใหชดเจน และโดยปกตยงสามารถใชวธอนในการจดการกบขอมลตวแรกได ดงตวอยางถดไป

ตวอยางนเปนการคนหาอกษรตวแรกของขอความทไมใชชองวาง โดยขอความนมความยาว 100 ตวอกษร ในตวอยาง ต าแหนงเรมตนของขอความเกบอยท BX cmp byte ptr [bx],’ ’ ; พจารณาอกษรตวแรก jnz found ; อกษรตวแรกไมใชชองวาง mov cx,100 ; ท าซ า 100 ครง findnotspace: inc bx ; BX ชไปยงอกษรตวถดไป cmp byte ptr [bx],’ ’ ; เปรยบเทยบ loopz findnotspace ; ท าซ าถายงพบชองวางและยงไมครบขอมล jnz found ; คนเจออกษรตวแรก ; not found ; ขอความมแตชองวาง … found: ; found ; พบอกษรตวแรก …

Page 119: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

106

ตวอยางโปรแกรม

ตวอยางท 1 โปรแกรมตวอยางตอไปนเปนโปรแกรมทพมพคาของรหสแอสกทรบมาเปนเลขฐานสบหก. การแสดง

ตวเลขเปนเลขฐานสบหกนนมความยงยากเพราะอกษร ‘0’ ถง ‘F’ ทจะใชในการแสดงคานนมรหสแอสกทแยกออกเปนสองชวง. ชวงแรกเปนชวยของตวเลขเรมทรหส 48 ของเลขศนย อกกลมหนงคอชวงของตวอกษรเรมทรหส 65 ของตว ‘A’. ดงนนในการแสดงผลจะตองตรวจสอบตวเลขในแตละหลกวาอยในชวงใดโดยใชการเปรยบเทยบ

; ; display ASCII in HEX ; .model small .dosseg .data newline db 10,13,'$' .stack 100h .code start: mov ax,@data ;set DS mov ds,ax mov ah,01h ;Function 1 : Read char int 21h ;AL=ASCII mov ah,0 mov bl,16 ;div AL by 16 div bl mov cl,al ;first digit mov bl,ah ;second digit mov dx,offset newline ;display newline mov ah,09h int 21h

Page 120: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

107

mov dl,cl ;print first digit cmp cl,9 ja overnine1 ;above 9 add dl,'0' jmp print1 overnine1: add dl,'A'-10 print1: mov ah,2 int 21h mov dl,bl ;print second digit cmp bl,9 ja overnine2 add dl,'0' jmp print2 overnine2: add dl,'A'-10 print2: mov ah,2 int 21h mov ax,4C00h int 21h end start

Page 121: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

108

ตวอยางท 2 ตวอยางนเปนโปรแกรมทรบขอความจากผใช และรบตวอกษรทผใชตองการตรวจสอบวามในขอความ

หรอไม โปรแกรมจะแสดงค าตอบวา YES หรอ NO โปรแกรมนคนหาตวอกษรโดยใชค าสง LOOPNZ

; Find a character in a string .model small .dosseg .data maxlen db 30 strlen db ? str db 30 dup (?) msg1 db 'Enter string :$' msg2 db 10,13,'Enter character to find :$' yesmsg db 10,13,'YES',10,13,'$' nomsg db 10,13,'NO',10,13,'$' .stack 100h .code start: mov ax,@data mov ds,ax mov dx,offset msg1 ;disp msg1 mov ah,09h ;func 9 int 21h mov dx,offset maxlen mov ah,0Ah ;read string int 21h mov dx,offset msg2 ;disp msg2 mov ah,09h int 21h

Page 122: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

109

mov ah,01h ;read char int 21h mov dl,al ;dl=al=char mov bx,offset str mov cl,strlen mov ch,0 jcxz notfound cmp [bx],al ;first char jz found dec cx ;first char was compared jcxz notfound ;so we dec cx compareloop: inc bx ;next char cmp [bx],al loopnz compareloop ;loop jz found ;found? notfound: mov dx,offset nomsg ;set dx jmp print found: mov dx,offset yesmsg ;set dx print: mov ah,09h ;display msg int 21h ;using func 09h mov ax,4C00h int 21h end start

สงเกตวาโปรแกรมนใชค าสง JCXZ ในการปองกนกรณทผใชปอนอกษรเพยงตวเดยวหรอไมปอนเลย .

เลอกทจะทดสอบตวอกษรตวแรก แทนทจะใชวธลดคาของ BX ในการจดการเกยวกบขอมลตวแรก

Page 123: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

110

สรป ค าสงกระโดดแบงไดเปน 2 กลม คอ ค าสงกระโดดแบบไมมเงอนไข และค าสงกระโดดแบบมเงอนไข ค าสงกระโดดแบบไมมเงอนไขคอค าสง JMP สวนในกลมของค าสงกระโดดแบบมเงอนไขแบบคราว ๆ ออกเปนสองกลมคอกลมซงพจารณาการกระโดดจากคาในแฟลก และกลมทพจารณาการกระโดดจากคาในรจสเตอร สวนใหญค าสงกระโดดทพจารณาคาในแฟลกจะใชผลลพธทไดจากค าสง CMP ค าถามทบทวน 1.จงอธบายพรอมยกตวอยางค าสงกระโดดแบบไมมเงอนไขและค าสงกระโดดแบบมเงอนไขวามอะไรบาง 2.จงอธบายพรอมยกตวอยางค าสง CMP กลมทคดการเปรยบเทยบเปนการเปรยบเทยบของเลขแบบไมคดเครองหมายวามอะไรบาง 3.จงอธบายพรอมยกตวอยางค าสง CMP กลมทกลมทคดเปนเลขคดเครองหมายวามอะไรบาง 4. จงอธบายการโปรแกรมตวอยางนค านวณผลรวมของเลขตงแต 25 ถง 100 แตละบรรทดส าหรบการเรยกใช ฟงกชนจากสวนของโปรแกรมทแสดงอยขางลางน mov cx,100 mov bl,25 mov dx,0 addonenumber: add dl,bl adc dh,0 inc bl loop addonenumber

Page 124: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

111

แผนบรหารการสอนประจ าบทท 11 หวขอเนอหา - การสรางโครงสรางการตดสนใจแบบ if-then-else - การสราง repeat until loop - การสราง while loop - การสราง for loop วตถประสงคเชงพฤตกรรม - มความรและความเขาใจเกยวกบรปแบบของโปรแกรมภาษาแอสเซมบลทมโครงสรางแบบตาง ๆ เชน if-then-else, repeat until loop, while loop และ for loop เปนตน วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - ตอบค าถาม - ภาพ - เอกสารอางองประกอบการคนควา . การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 125: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

112

เราไดศกษาค าสงกระโดดในบทท 10 โดยค าสงกลมนท าใหเราสามารถเขยนโปรแกรมใหมการท างานท

ซบซอนขนได แตการใชค าสงเหลานอยางไมเปนระบบท าใหโปรแกรมทเขยนขนนนท าความเขาใจไดยาก และมลกษณะเหมอนเสนสปาเกตตได ในบทนเราจะพจารณาการใชค าสงกระโดดมาสรางเปนโครงสรางควบคมรปแบบตาง ๆ การใชค าสงกระโดดในลกษณะนจะท าใหโปรแกรมของเรามความเปนโครงสรางมากขน

11.1 การสรางโครงสรางการตดสนใจแบบ if-then-else

รปแบบของโครงสรางทงายทสดคอโครงสรางแบบ if-then-else รปแบบของโปรแกรมภาษาแอสเซมบลใหมโครงสรางแบบ if-then-else มลกษณะดงน

if condition is false then jump to elselabel then_actions jump to endif_label elselabel: else_actions endif_label:

ตวอยางของโปรแกรมมลกษณะโปรแกรมท 11.1

(a) if AL<10 then DL:=AL+’0’ else DL:=AL+’A’-10;

(b) cmp al,10 jae abovenine mov dl,al add dl,’0’ jmp endif abovenine: mov dl,al add al,’A’-10 endif:

โปรแกรมท 11.1 โปรแกรม (a) แสดงตวอยางของโปรแกรมทเขยนดวยโครงสรางของภาษา pascal โปรแกรม (b) แสดงโปรแกรมภาษาแอสเซมบลทเทยบเทากน

บทท 11 โครงสรางควบคม (Control Structure)

Page 126: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

113

11.2 การสราง repeat until loop

โครงสรางของ repeat until loop ในภาษาระดบสงทวไปมลกษณะดงรปท 11.2

รปท 11.2 แสดงโครงสรางควบคมแบบ repeat until

เราสามารถเขยนโปรแกรมโดยใชภาษาแอสเซมบลโดยมโครงสรางแบบ repeat until ได ดงตวอยาง (a)

BL:=1; CX:=0; DX:=0; Repeat

DX:=DX+BL*BL; BL:=BL+1; CX:=CX+1; until (DX>100);

(b) mov bl,1 mov cx,0 mov dx,0 startloop: mov al,bl mul bl ;result in ax add dx,ax inc bx inc cx cmp dx,100 jbe startloop

โปรแกรมท 11.2 โปรแกรม (a) แสดงตวอยางของโปรแกรมภาษา Pascal ทใชโครงสรางแบบ repeat until โปรแกรม (b) แสดงโปรแกรมภาษาแอสเซมบลทเทยบเทากน

รปแบบของโปรแกรมภาษาแอสเซมบลทเทยบเทากบ repeat until loop มลกษณะเปนดงน startlabel:

action; ... action; if condition is false then jump to startlabel

จรง

ค าสง

ค าสง

ค าสง

เงอนไข เทจ

Page 127: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

114

11.3 การสราง while loop

โครงสรางของ while loop ในภาษาระดบสงทวไปมลกษณะเปนดงน

เงอนไข

ค ำสง

ค ำสง

ค ำสง

จรง

เทจ

รปท 11.3 โครงสรางควบคมแบบ while

เราสามารถเขยนโปรแกรมโดยใชภาษาแอสเซมบลโดยมโครงสรางแบบ while loop ได ดงตวอยาง

โ ป ร แ ก ร ม ท 10.3 โปรแกรม (a) แสดงตวอยางของโปรแกรมภาษา pascal ทใชโครงสรางแบบ while loop โปรแกรม (b) แสดงโ ป ร แ ก ร มภ า ษ า แ อ ส เ ซ ม บ ล ทเทยบเทากน

รปแบบของโปรแกรม ภ า ษา แ อ ส เ ซ ม บ ล ทเ ท ย บ เ ท า ก บ while loop มลกษณะเปนดงนstartlabel:

if condition is false then jump to endlabel

action ... action jump to startlabel endlabel:

(a) while (DL<>13) and (CX<20) do begin AX:=AX+DL; BX:=BX+1; DL:=DATA[BX]; CX:=CX+1; end;

(b) startloop: cmp dl,13 jz endloop cmp cx,20 jae endloop add al,dl adc ah,0 inc bx mov dl,data[bx] inc cx jmp startloop endloop:

Page 128: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

115

11.4 การสราง for loop

เราสามารถใชค าสงกระโดดในการสรางโครงสรางแบบ for loop ได นอกจากนนเรายงสามารถใชค าสงกลม LOOP ในการสรางโครงสรางแบบ for loop ไดเชนเดยวกน โครงสรางของ for loop มลกษณะดงรปท 11.3

คำของตวแปรอยในขอบเขต

ก ำหนดคำเรมตนของตวแปร

ค ำสง

ค ำสง

จรง

เทจ

ปรบคำตวแปร

รปท 11.3 โครงสรางของ for loop

รปแบบของโปรแกรมภาษาแอสเซมบลทมโครงสรางเปนแบบ for loop มลกษณะดงน

initialize index variables startloop:

if index value is not in the range then jump to endloop action . . . action update index variable jump to startloop

endloop: ตวอยางของโปรแกรมทเขยนโดยใชรปแบบลกษณะนเปนดงโปรแกรมท 11.4

(a) CX:=0; for DL:=1 to 100 do

(b) mov cx,0

mov dl,1 startloop: cmp dl,100

Page 129: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

116

begin if DL mod 7=0 then CX:=CX+1; End;

ja endloop

mov al,dl mov ah,0 mov bl,7 div bl cmp ah,0 jne endif inc cx endif: inc dl jmp startloop endloop:

โปรแกรมท 11.4 โปรแกรม (a) แสดงตวอยางของโปรแกรมภาษา pascal ทใชโครงสรางแบบ for loop โปรแกรม (b) แสดงโปรแกรมภาษาแอสเซมบลทเทยบเทากน

เรายงสามารถใชค าสง LOOP ในการสรางโครงสรางแบบ for loop ได เชนเดยวกน ดงตอไปน

set the value of CX startloop: actions LOOP startloop

แตการใชค าสง LOOP ในการสรางโครงสรางแบบ for loop ไมสามารถสรางโครงสรางการกระท าซ าทมความซบซอนมาก ๆ ได เชนการกระท าซ าทมวงรอบของการกระท าซ าซอนกนหลาย ๆ วง

ส าหรบค าสง LOOPZ และ LOOPNZ นน เราสามารถน ามาใชในการสรางโครงสรางควบคมทมความ

ซบซอนขนได โดยโครงสรางดงกลาวจะมลกษณะปนกนระหวาง for loop และ while loop หรอ repeat until นนคอเงอนไขควบคมการกระท าซ าจะขนกบทงคาของรจสเตอร (มลกษณะคลายโครงสรางแบบ for loop) และเปนเงอนไขจรง ๆ (คลาย repeat until loop และ while loop) ดงในตวอยางโปรแกรมตอไปน

Page 130: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

117

(a) AX:=0; CX:=100; repeat AX:=AX+data[BX]; BX:=BX+2; CX:=CX-1; until (data[BX]=0) or (CX=0);

(b) mov ax,0 mov cx,100 startloop: add ax,data[BX] add bx,2 cmp data[BX],0 loopnz startloop

โปรแกรมท 11.5 โปรแกรม (a) โปรแกรมทเขยนดวยภาษา pascal โปรแกรม (b) โปรแกรมภาษาแอสเซมบลทเทยบเทากน

Page 131: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

118

สรป การใชค าสงกระโดดมาสรางเปนโครงสรางควบคมรปแบบตาง ๆ การใชค าสงกระโดดในลกษณะนจะท าให

โปรแกรมของเรามความเปนโครงสรางมากขน เชน การสรางโครงสรางการตดสนใจแบบ if-then-else, repeat until loop, while loop และ for loop เปนตน ดงนนผเขยนโปรแกรมภาษาแอสเซมบลจ าเปนจะตองท าความเขาวธการและรปแบบการเลอกการสรางโครงสรางควบคมใชงานใหเหมาะสมมากทสด ค าถามทบทวน 1. อธบายพรอมยกตวอยางการท างานชองโครงสรางควบคมรปแบบ if-then-else 2. อธบายพรอมยกตวอยางการท างานชองโครงสรางควบคมรปแบบ repeat until loop 3. อธบายพรอมยกตวอยางการท างานชองโครงสรางควบคมรปแบบ while loop 4. อธบายพรอมยกตวอยางการท างานชองโครงสรางควบคมรปแบบ for loop 5. จงเปรยบเทยบขอดและขอเสยของรปแบบโครงสรางควบคมแบบ repeat until และ while loop 6. จงเปลยนโปรแกรมทเขยนดวยภาษาโปรแกรม pascal ทใหมาใหอยในรปของโปรแกรมภาษาแอสเซมบลทเทยบเทากน

AX:=20; CX:=100; repeat AX:=AX+data[BX]; BX:=BX+8; CX:=CX-2; until (data[BX]=0) or

(CX=0);

Page 132: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

119

แผนบรหารการสอนประจ าบทท 12 หวขอเนอหา - ค าสงทรองรบการเรยกโปรแกรมยอย - การประกาศโปรแกรมยอย - ค าสงเกบขอมล (PUSH) และดงขอมล (POP) จากแสตก - ตวอยางการใชงานโปรแกรมยอย วตถประสงคเชงพฤตกรรม - มความรและความเขาใจเกยวกบค าสงทรองรบการเรยกโปรแกรมยอยและการประกาศโปรแกรมยอย

- มความรและความเขาใจเกยวกบกลมค าสงเกบขอมล (PUSH) และดงขอมล (POP) จากแสตก วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - ตอบค าถาม - ภาพ - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 133: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

120

รปแบบของโปรแกรมภาษาแอสเซมบลทเขยนในบทกอน ๆ จะมสวนของโปรแกรมหลายสวนทซ าซอนกน สามารถทจะแยกสวนยอยเหลานนเปนโปรแกรมยอยทมความอสระจากโปรแกรมหลกได การแยกโปรแกรมเปนโปรแกรมยอยน ท าใหสามารถน าสวนของโปรแกรมนนมาใชใหมไดสะดวก และการตรวจสอบและแกไขโปรแกรมยงสามารถกระท าไดงายขนดวย

12.1 ค าสงทรองรบการเรยกโปรแกรมยอย

การเรยกโปรแกรมยอยมความแตกตางกบการกระโดดทวไป เนองจากภายหลงทโปรแกรมยอยท างานเสรจ หนวยประมวลผลจะตองสามารถกระโดดกลบมาท างานในโปรแกรมหลกตอไปได ดงนนการเรยกใชโปรแกรมยอยนนจะตองมการเกบต าแหนงของค าสงทท างานอยเดมดวย และเมอจบโปรแกรมยอยโปรแกรมจะตองกระโดดกลบมาท างานทเดม โดยใชขอมลทเกบไว

ค าสงของ 8086 ทรองรบการใชงานโปรแกรมยอยคอค าสง CALL และ ค าสง RET เมอผใชเรยกค าสง CALL พรอมทงระบต าแหนงของโปรแกรมยอย หนวยประมวลผลจะเกบต าแหนงของค าสงถดไปทจะกลบมาท างานลงในแสตก และจะกระโดดไปท างานทโปรแกรมยอย เมอโปรแกรมยอยท างานเสรจ โปรแกรมยอยจะเรยกใชค าสง RET เพอกระโดดกลบมาท างานในโปรแกรมหลกตอไป เมอหนวยประมวลผลประมวลผลค าสง RET หนวยประมวลผลจะดงคาต าแหนงทโปรแกรมจะกระโดดกลบไปท างานจากแสตก และกระโดดกลบไปท างานตอยงโปรแกรมหลก

12.2 การประกาศโปรแกรมยอย

สามารถสรางโปรแกรมยอยโดยการประกาศเลเบลทจดเรมตนของโปรแกรมยอยเทานนกได แตโดยทวไปแลวจะประกาศโปรแกรมยอยโดยใชคของค าสงเทยม PROC และ ENDP ดงตวอยางโปรแกรมท 12.1 โปรแกรมตวอยางนเปนโปรแกรมทสรางโปรแกรมยอยส าหรบพมพเลขฐานสบหกหนงหลกชอ printhexdigit และใชโปรแกรมยอยนในการเขยนโปรแกรมพมพคารหสแอสกของปมทรบคาจากผใช (ในตวอยางไดละโปรแกรมบางสวนไว)

.model small

.dosseg .stack 100h .code ;procedure PrintHexDigit

บทท 12 โปรแกรมยอยขนตน (The initial Subprogram)

Page 134: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

121

;input al : digit ;affect ah,dl ; printhexdigit proc near mov ah,2 mov dl,al add dl,'0' cmp al,10 jb printit add dl,'A'-'0'-10 printit: int 21h ret printhexdigit endp start: ; ... ; ละสวนอานการกดปมและสวนหาคาของตวเลขของแตละหลกไว ; ใหตวเลขหลกหนาเกบใน bh และหลกหลงเกบใน bl ; ... mov al,bh call printhexdigit mov al,bl call printhexdigit mov ax,4c00h int 21h end start โปรแกรมท 12.1 สวนของโปรแกรมพมพคารหสแอสกเปนเลขฐานสบหก

รปแบบของการประกาศโปรแกรมยอยมลกษณะดงน proc_name PROC NEAR actions proc_name ENDP

Page 135: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

122

ค าสงเทยม NEAR ทตอจากค าสงเทยม PROC เปนการระบวาโปรแกรมยอยนเปนโปรแกรมยอยทอยในเซกเมนตเดยวกนกบโปรแกรมหลก และมการเรยกใชแบบใกล ซงจะมผลในขนตอนการเกบต าแหนงทจะกระโดดกลบมาท างานหลงการท างานของโปรแกรมยอย การท างานของโปรแกรมยอยจากตวอยางมการเปลยนแลงคาของรจสเตอร AH และรจสเตอร DL การเปลยนคาของรจสเตอรทงสองอาจท าใหเกดผลขางเคยงกบโปรแกรมหลกไดถาโปรแกรมหลกมการใชงานรจสเตอรทงสองดวยเชนเดยวกน ควรจะลดการเกดผลขางเคยงนโดยใหโปรแกรมยอยเกบคาของรจสเตอรตาง ๆ ทโปรแกรมยอยใชและคนคาเดมใหกบรจสเตอรเหลานนหลงการท างาน นยมใชแสตกในการเกบคาของรจสเตอรเปนการชวคราวเนองจากสามารถเกบขอมลลงในแสตกไดโดยไมตองจองเนอทลวงหนา และการเกบขอมลในลกษณะของแสตก มความสอดคลองกบการท างานแบบโปรแกรมยอย

12.3 ค าสงเกบขอมลและดงขอมลจากแสตก : ค าสง PUSH และค าสง POP สามารถใชค าสง PUSH ในการเกบขอมลลงไปในแสตก และค าสง POP ส าหรบการเรยกขอมลออกมาจากแสตก ค าสงทงสองมรปแบบดงน

push regs16 push mem pop regs16 pop mem

ขอมลทจะเกบลงในแสตกจะตองมขนาด 16 บตเทานน โดยการเกบขอมลในแสตกจะมลกษณะเปนแบบใสทหลงดงออกกอน การเกบขอมลลงในแสตกจงตองระวงล าดบของการเกบและการดงขอมลออกไปดวย การท างานของแสตกจะมรจสเตอร SS และ SP เปนรจสเตอรทใชเกบต าแหนงของขอมลทเกบลงไปอนลาสด โดย SS จะเกบเซกเมนตของแสตก และ SP จะเกบออฟเซตของขอมลลาสด เมอมการเกบขอมลเพมลงในแสตก หรอมการดงขอมลออกไปกจะมการปรบคาของรจสเตอรทงสองน การท างานของแสตกมลกษณะดงรปท 12.1

รปท 12.1 แสดงการท างานของแสตก

โปรแกรมยอยทมการเกบคาของรจสเตอรตาง ๆ สามารถแกโปรแกรมยอยในตวอยางใหมการรกษาคาในรจสเตอรตาง ๆ ไดดงโปรแกรมท 12.2

;procedure PrintHexDigit ;input al : digit ;affect ah,dl ; printhexdigit proc near

?? SS : SP

สมมตวา AX=1234 push ax

pop bx

bx=1234 1234

??

SS : SP 1234

?? SS : SP

Page 136: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

123

push ax push dx mov ah,2 mov dl,al add dl,'0' cmp al,10 jb printit add dl,'A'-'0'-10 printit: int 21h pop dx pop ax ret printhexdigit endp

โปรแกรมท 12.2 ตวอยางโปรแกรมยอยทรกษาคาของรจสเตอร

สงเกตล าดบในการ push และ pop ของโปรแกรมยอย ล าดบในการ push จะตรงกนขามกบล าดบในการ pop เนองจากการท างานของแสตกเปนแบบขอมลทใสทหลงจะถกดงออกกอน การเปลยนแปลงของแสตกในการท างานดงกลาวแสดงไดโดยรปท 12.2

call printhexdigit

? IP?

กระโดดไปท ำงำนทโปรแกรมยอย

DXAXIP?

push ax

push dx

DXAXIP?

pop dx

pop ax

ret

กระโดดกลบไป โปรแกรมหลกIP?

ปรบคำโดยอตโนมตหลกกำรสง CALL

และ RET

รปท 12.2 แสดงการเปลยนแปลงของแสตกในการเรยกใชโปรแกรมยอย

เมอมการเรยกใชโปรแกรมยอยโดยค าสง CALL คาของรจสเตอร IP ซงเกบต าแหนงของค าสงถดไปจะถก PUSH ลงในแสตกโดยอตโนมต จากนนโปรแกรมจะกระโดดไปท างานทโปรแกรมยอย ในโปรแกรมยอยมการเกบ

Page 137: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

124

คาของรจสเตอร AX และรจสเตอร DX ลงในแสตก หลงการท างานโปรแกรมยอยไดคนคาของรจสเตอรทงสองโดยการดงคาจากแสตก และเรยกใชค าสง RET เพอกระโดดกลบไปท างานยงโปรแกรมหลกตอ สงเกตวาถาเกบและดงคาออกจากแสตกไดไมถกตองการกระโดดกลบไปท างานยงโปรแกรมหลกอาจมการผดพลาดได

12.4 ตวอยางการใชงานโปรแกรมยอย

โปรแกรมตวอยางตอไปนสรางโปรแกรมยอยขนมาสองโปรแกรมยอย โปรแกรมยอยแรกเปนโปรแกรมยอยทพมพเลขฐานสบหกหนงหลก สวนโปรแกรมยอยทสองเปนโปรแกรมยอยทพมพเลขฐานสบหกขนาด 1 ไบต โดยเรยกใชงานโปรแกรมยอยโปรแกรมแรก

.model small

.dosseg .stack 100h .code ;procedure PrintHexDigit ;display one hex digit ;input : al = the digit printhexdigit proc near push ax push dx mov ah,2 mov dl,al add dl,'0' ;make ascii from the number cmp al,10 jb printit ;if above 9 adjust the ascii value add dl,'A'-'0'-10 printit: int 21h ;print the number pop dx pop ax ret printhexdigit endp ;procedure PrintHexNumber

Page 138: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

125

;display one hex number (1 byte) ;input : al = the number printhexnumber proc push ax push bx mov bl,16 ;div by 16 to get 2 digits mov ah,0 div bl ;al=high digit , ah=low digit call printhexdigit ;print the high digit mov al,ah call printhexdigit ;print the next digit pop bx pop ax ret printhexnumber endp start: mov ah,1 int 21h call printhexnumber mov ax,4c00h int 21h end start

Page 139: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

126

สรป การแยกโปรแกรมเปนโปรแกรมยอยน ท าใหสามารถน าสวนของโปรแกรมนนมาใชใหมไดสะดวกและการตรวจสอบและแกไขโปรแกรมยงสามารถกระท าไดงายขนดวย สวนการเรยกโปรแกรมยอยมความแตกตางกบการกระโดดทวไป เนองจากภายหลงท โปรแกรมยอยท างานเสรจ หนวยประมวลผลจะตองสามารถกระโดดกลบมาท างานในโปรแกรมหลกตอไปได ดงนนการเรยกใชโปรแกรมยอยนนจะตองมการเกบต าแหนงของค าสงทท างานอยเดมดวย และเมอจบโปรแกรมยอยโปรแกรมจะตองกระโดดกลบมาท างานทเดม โดยใชขอมลทเกบไว ค าสงของ 8086 ทรองรบการใชงานโปรแกรมยอยคอค าสง CALL และค าสง RET เมอผใชเรยกค าสง CALL พรอมทงระบต าแหนงของโปรแกรมยอย หนวยประมวลผลจะเกบต าแหนงของค าสงถดไปทจะกลบมาท างานลงในแสตก และจะกระโดดไปท างานทโปรแกรมยอย เมอโปรแกรมยอยท างานเสรจ โปรแกรมยอยจะเรยกใชค าสง RET เพอกระโดดกลบมาท างานในโปรแกรมหลกตอไป เมอหนวยประมวลผลประมวลผลค าสง RET หนวยประมวลผลจะดงคาต าแหนงทโปรแกรมจะกระโดดกลบไปท างานจากแสตก และกระโดดกลบไปท างานตอยงโปรแกรมหลกตอไป ค าถามทบทวน 1. จงอธบายการท างานของค าสง CALL และค าสง RET 2. การประกาศโปรแกรมยอยในภาษาแอสแซมบลโดยทวไปมกจะใชคของค าสงเทยมอะไร 3. ค าสงเกบขอมลและดงขอมลจากแสตกค าสง PUSH และค าสง POP มขนตอนการงานอยางไร 4. การท างานของแสตกจะมรจสเตอรทเกยวของอะไรบางและแตละรจสเตอรมหนาทและท างานอยางไร 5. จงอธบายเหตการณทเกดขนหลงจากมการเรยกใชโปรแกรมยอยโดยค าสง CALL

Page 140: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

127

แผนบรหารการสอนประจ าบทท 13 หวขอเนอหา - ค าสงทางตรรกศาสตร - การประยกตใชงานค าสงทางตรรกศาสตร - ค าสงเลอนบต - ตวอยางการใชงานค าสงเลอนบต - การประยกตใชงานค าสงเลอนบต - ค าสงหมนบต - ค าสงหมนบตทผานแฟลกทด - ตวอยางการใชงานค าสงเกยวกบการประมวลผลระดบบต วตถประสงคเชงพฤตกรรม - มความรและความเขาใจเกยวกบค าสงทางตรรกศาสตร เชน AND, OR XOR TEST เปนตน - สามารถประยกตใชงานค าสงทางตรรกศาสตรในการเขยนโปรแกรมภาษาแอสแซมบลได - มความรและความเขาใจเกยวกบการใชค าสง SHL (Shift Left) และค าสง SHR (Shift Right) - มความรและความเขาใจเกยวกบการใชค าสงหมนบตแบบตางๆ เชน ROL (Rotation Left), ค าสง ROR (Rotation Right), RCL (Rotate Carry Left) และค าสง RCR (Rotate Carry Right) วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - ตอบค าถาม - ภาพ - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน

Page 141: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

128

การจดการกบขอมลทเราไดศกษาในบทกอน ๆ นนมหนวยยอยในการจดการเปนไบต โดยเราไมสามารถจดการขอมลทมขนาดยอยกวานนได แตในการท างานจรงในบางครงรปแบบของขอมลทเราตองจดการจะอยในรปของบต เราจงใชค าสงเกยวกบการจดการระดบบตในการประมวลผลขอมลกลมน และในบางกรณค าสงกระท าระดบบตสามารถชวยใหการค านวณตาง ๆ ท าไดงายขนดวย

13.1 ค าสงทางตรรกศาสตร

ค าสงในกลมนเปนค าสงประมวลผลขอมลระดบบต โดยจะน าคาในแตละบตของขอมลมาประมวลผลทางตรรกศาสตร. ค าสงในกลมนไดแก ค าสง AND ค าสง OR ค าสง XOR และค าสง NOT รปแบบการใชงานของค าสง AND ค าสง OR และค าสง XOR จะมลกษณะเหมอนกน คอจะรบโอเปอรแรนดสองตว และจะน าขอมลในโอเปอรแรนดตวแรกมากระท ากบขอมลตวทสอง และจะเกบผลลพธของการกระท านนในโอเปอรแรนดตวแรก สวนในกรณของค าสง NOT จะรบโอเปอรแรนดตวเดยว และจะท าการกลบคาในบตแลวเกบผลลพธลงในโอเปอรแรนดตวนนเลย ตารางคาความจรงของการกระท าทางตรรกศาสตรเปนดงตารางท 13.1

ตารางท 13.1 คาของการกระท าทางตรรกศาสตร

A B A and B A or B A xor B not B 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0

ค าสง AND ผลลพธของค าสง AND จะมบตทเปน 1 เมอบตของขอมลตวตงทงสองตวมคาเปน 1 (ตาราง 12.1) ตวอยางค าสง mov ax,1234h

and ax,2345h ; ax = (0001 0010 0011 0100) and (0010 0011 0100 0101) ; ax = (0000 0010 0000 0100) = 0204h mov al,25h and al,0Fh ; al = 05h mov bl,0AAh and bl,80h ; al = 80h

บทท 13 การกระท าระดบบต (The Bit Level)

Page 142: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

129

ค าสง OR ผลลพธของค าสง OR จะมบตทเปน 1 เมอบตของขอมลตวตงตวใดตวหนงหรอทงสองตวมคาเปน 1 (ตาราง 13.1) ตวอยางค าสง mov ax,1234h

or ax,2345h ; ax = (0001 0010 0011 0100 and (0010 0011 0100 0101) ; ax = (0011 0011 0111 0101) = 3375h mov al,25h or al,0Fh ; al = 2Fh mov bl,55h or bl,80h ; bl = 0D5h

ค าสง XOR การท างานของค าสง XOR จะคลายกบค าสง OR แตในกรณทขอมลมบตทเปนหนงทงค ผลลพธทไดจะมคาเปนศนย (ตาราง 13.1) ลกษณะของการ XOR จะคลายกบการพจารณาเหตการณทเปนไปไดทงสองเหตการณ แตไมสามารถเปนจรงพรอมกนได ตวอยางค าสง mov ax,1234h

xor ax,2345h ; ax = (0001 0010 0011 0100 and (0010 0011 0100 0101) ; ax = (0011 0001 0111 0001) = 3171h mov al,25h xor al,0Fh ; al = 2Ah mov bl,15h xor bl,35h ; bl = 20h

ค าสง NOT ค าสง NOT จะสลบบตของโอเปอรแรนดจากศนยเปนหนงและหนงเปนศนย (ตาราง 13.1) ตวอยางค าสง mov ax,1234h

not ax ; ax = not(0001 0010 0011 0100) ; ax = (1110 1101 1100 1011) = 0EDCBh

ค าสง TEST ค าสง TEST จะท างานเหมอนค าสง AND ทกประการ แตผลลพธจากการ AND จะไมเขยนคาลงในโอเปอรแรนดตวแรก ผลจากการใชค าสงนจะปรากฏในแฟลก เรานยมใชค าสงนในการทดสอบวาขอมลในบตทตองการมคาเปนหนงหรอไม โดยเราจะพจารณาผลลพธจากแฟลกทด

Page 143: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

130

ตวอยางค าสง mov al,7Ah

test al,80h ; test for the 7th bit jz biton ; jump if 7th bit of al = 1 mov bl,12h test bl,1 ; test for the 0th bit

การประยกตใชงานค าสงทางตรรกศาสตร เราสามารถน าค าสงทางตรรกศาสตรมาใชในการประมวลผลขอมลระดบบตได จากตารางท 13.1 เราสามารถสรางตารางท 13.2 ซงแสดงผลของการใชค าสงทางตรรกศาสตรกบขอมลได ตารางท 13.2 ผลของการใชค าสงทางตรรกศาสตรกบขอมล

B A and B A or B A xor B 0 0 A A 1 A 1 ~A

จากตารางเราจะพบวาถาเราตองการใหบตใดของขอมลมคาเปนหนงโดยทบตอนมคาคงเดม เราสามารถใชค าสง AND ได และถาเราตองการจะท าใหบตใดของขอมลมคาเปนศนยโดยไมมผลกระทบกบแฟลกอน ๆ เราสามารถใชค าสง OR ส าหรบค าสง XOR เราจะใชในกรณทตองการกลบบตของขอมลจากศนยเปนหนง

ตวอยางการประยกตใชงานค าสงทางตรรกศาสตร โปรแกรมตวอยางตอไปนจะเปลยนบตท 1 และ 2 ของ AL ใหมคาเปนศนย (การนบบตจะนบบตทมนยส าคญต าสดเปนบตท 0) และเปลยนบตท 4 และบตท 6 ใหมคาเทากบ 1 พรอมทงกลบบตท 3 ใหมคาตรงกนขาม การท างานควรจะมลกษณะดงรปท 13.1

AL XXXX XXXX and 1111 1001 or 0101 0000 xor 0000 1000

result X1X1 X00X

รปท 13.1 ขนตอนการแปลงคาของ AL

โปรแกรมจะมลกษณะดงน and al,0F9h ;clear bit 1&2 or al,50h ;set bit 4&6 xor al,08h ;switch bit 3

Page 144: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

131

13.2 ค าสงเลอนบต

การประมวลผลอกรปแบบทเราสามารถกระท ากบขอมลในระดบขนของบตไดแกการเลอนบต ลกษณะการเลอนบตเปนดงรปท 12.2 ในการเลอนบตเราสามารถเลอนไดทงทางซายและทางขวา โดยค าสงส าหรบการเลอนบตไปทางซายไดแก ค าสง SHL (Shift Left) ค าสงส าหรบการเลอนบตไปทางขวาไดแก ค าสง SHR (Shift Right) เรานยมใชการเลอนบตในการประมวลผลทตองการประมวลผลขอมลทละบต และมการประมวลผลเปนแบบวงรอบ

0

Shift Left 1 Shift Right 1

0

Shift Left 2 Shift Right 2

0 000

รปท 13.2 แสดงลกษณะของการเลอนบต

รปแบบของค าสงเลอนบตมลกษณะดงน SHR regs,1 SHR mem,1 SHR regs,CL SHR mem,CL SHR regs,number SHR mem,number

โดยรปแบบของค าสง SHL จะมลกษณะเหมอนค าสง SHR รปแบบทสามจะใชไดกบหนวยประมวลผล 80286 ขนไปเทานนโดยในการทเราจะใชรปแบบของค าสงของ 80286 ในโปรแกรมเราจะตองระบ ค าสงเทยม 286 ลงในโปรแกรมดวย โดยใสค าสงนกอนหนาการใชงานค าสงครงแรก

ตวอยางการใชงานค าสงเลอนบต โปรแกรมตวอยางตอไปนเปนโปรแกรมนบจ านวนบตทมคาเปนหนงใน AX โดยจะใหผลลพธใน BL mov bl,0 mov cx,16 ; 16 bits procbits: test ax,1 ; test for last bit

jz doprocbit ; if last bit=0 jump inc bl

doprocbit: shr ax,1 ; next bit loop procbits

Page 145: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

132

ความหมายทางคณตศาสตรของการเลอนบต ตารางท 13.3 แสดงผลลพธของการเลอนบตของขอมลตาง ๆ จากตารางจะสงเกตไดวานอกจากการเลอนบตจะมความหมายโดยตรงคอการเลอนบตไปทางซายหรอทางขวาแลว การเลอนบตยงมความหมายทางคณตศาสตรอกดวย ตารางท 13.3 ตวอยางผลลพธของการเลอนบตของขอมลตาง ๆ

ขอมล (คา) เลอนบตไป

ทาง จ า น ว น (บต)

ผลลพธ (คา)

0010 1110 (46) ซาย 1 0101 1100 (92) 0010 1110 (46) ซาย 2 1011 1000 (184) 0010 1110 (46) ซาย 3 0111 0000 (112) 0110 0100 (100) ขวา 1 0011 0010 (50) 0110 0100 (100) ขวา 2 0001 1001 (25) 0110 0100 (100) ขวา 3 0000 1100 (12)

สงเกตวาการเลอนบตไปทางซายจะมผลลพธเหมอนกบการคณดวยก าลงของสอง ยกตวอยางเชน การเลอนบตไปทางซาย 1 บตจะเหมอนกบการคณดวยสอง. และการ แตเราจะตองพจารณากรณทขอมลอยในขอบเขตดวย เชนกรณของการเลอน 0010 1110 ไปทางซาย 3 บต (คณดวย 8) ผลลพธทไดจะมความผดพลาด การเลอนบตไปทางขวาจะใหผลลพธตรงกนขามกบการเลอนบตไปทางขวา นนคอจะเสมอนการหารดวยก าลงสอง (สงเกตวาผลลพธทไดจะมการปดเศษเนองจากบตทเลอนจะหายไป เชนในตวอยางทเลอนบตทางขวา 3 บต)

ค าสงเลอนบตแบบคดเครองหมาย : ค าสง SAL และค าสง SAR ถาเราใชการเลอนบตแทนการคณหรอหารดวยก าลงของสองกบตวเลขแบบคดเครองหมาย เราจะพบวาการเลอนบตไปทางซายทแสดงถงการคณนนยงสามารถใชกบตวเลขแบบคดเครองหมายได เนองจากหลกทเลอนเขามาแทนนนยงคงเปนเลขศนยเหมอนในกรณของเลขไมคดเครองหมาย แตในกรณของการเลอนบตไปทางขวาทใชส าหรบการหารดวยก าลงของสองนน บตทเลอนเขามาแทนอาจมคาเปน 0 หรอ 1 กไดขนกบเครองหมายของตวเลขนน เราจงมค าสงเลอนบตทใชส าหรบเลขทมองเปนเลขคดเครองหมาย คอค าสง SAL (Shift Arithmetic Left) และ ค าสง SAR (Shift Arithmetic Right) ค าสง SAL จะท างานเหมอนค าสง SHL ทกประการ ตวอยางการใชงานค าสงเปนดงตารางท 13.4

ตารางท 13.4 ตวอยางผลลพธของการเลอนบตแบบคดเครองหมาย

ขอมล (คา) เลอนบตไปทาง

จ า น ว น (บต)

ผลลพธ (คา)

0010 1110 (46) ซาย 1 0101 1100 (92) 1110 1000 (-24) ซาย 2 1101 0000 (-48) 0110 0100 (100) ขวา 1 0011 0010 (50) 1010 1100 (-84) ขวา 2 1110 1011 (-21) 1010 1100 (-84) ขวา 3 1111 0101 (-11)

Page 146: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

133

การประยกตใชงานค าสงเลอนบต เราสามารถน าค าสงเลอนบตไปใชในการคณและหารขอมลได โดยการใชค าสงเลอนบตแทนการใชค าสง MUL ท าใหการคณท างานไดเรวขน และในบางกรณเราจะเขยนโปรแกรมไดงายขนดวย ตวอยางค าสง mov bl,al

shl al,1 add bl,al ;bl = al*3 mov cl,2 shl ax,cl mov bx,ax shl ax,1 add bx,ax ;bx=(ax*4)+(ax*8) = ax*12

13.3 ค าสงหมนบต

ค าสงหมนบตมความแตกตางกบค าสงเลอนบตในจดทวา บตทเลอนไปแลวไมไดถกทงหายไป แตจะถกน ามาใสแทนบตทเลอนไป โดยลกษณะการท างานคราว ๆ จะแสดงดงรปท 13.3

เลอนบต

หมนบต

รปท 13.3 แสดงลกษณะของการเลอนบต และ การหมนบต

เชนเดยวกบค าสงเลอนบต ค าสงหมนบตมลกษณะการหมนสองแบบคอ หมนไปทางซาย (ค าสง ROL : Rotate Left) และ หมนไปทางขวา (ค าสง ROR : Rotate Right) รปแบบของค าสงทงสองจะมลกษณะเหมอนค าสงเลอนบต การท างานของค าสงทงสองแสดงไดดงรปท 13.4

ROL

ROR

รปท 13.4 แสดงลกษณะการท างานของค าสงหมนบต

Page 147: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

134

เรานยมใชค าสงหมนบตแทนค าสงเลอนบตในกรณทเราตองการใหคาของขอมลกลบเหมอนเดมหลงประมวลผลครบรอบ ตวอยางค าสง mov al,4Ah

mov cl,4 ror al,cl ;al = 0A4h mov bx,92EAh ;bx=1001 0010 1110 1010 rol bx,1 ;bx=0010 0101 1101 0101=35D5h mov cx,8 mov dx,0

loophere: xor dx,ax rol ax,1 loop loophere

ค าสงหมนบตทผานแฟลกทด ค าสงหมนบตอกกลมหนงจะเปนการหมนโดยน าบตไปผานแฟลกทด ลกษณะการท างานจะเปนดงรปท 13.5 สงเกตวาบตทเขามาแทนบตทหมนไปจะน ามาจากแฟลกทด และบตทถกหมนออกไปจะเขาไปแทนคาในแฟลกทด โดยค าสงหมนบตผานแฟลกทดคอค าสง RCL (Rotate Carry Left) และค าสง RCR (Rotate Carry Right)

RCL

RCR

รปท 13.5 แสดงลกษณะการท างานของค าสงหมนบตทผานแฟลกทด

สงเกตวาบตทลนออกมาจะถกน าไปพกทแฟลกทด กอนทจะน ามาแทนทในขอมล เรานยมใชค าสงหมนบตผานแฟลกทดในการเลอนบตขอมลทเกบตอเนองอยในหลายรจสเตอร ในการใชงานค าสงนเราจะตองก าหนดคาใหกบแฟลกทดเสยกอน โดยใชค าสง STC และค าสง CLC

ตวอยางการใชงานค าสงหมนบตทผานแฟลกทด ตวอยางตอไปนเปนการเลอนบตของขอมลขนาด 32 บตทอยในรจสเตอร DX,AX ไปทางซาย 1 บต clc

rcl ax,1 rcl dx,1

C

C

Page 148: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

135

ตวอยางค าสง การคณขอมลขนาด 48 บตทเกบในรจสเตอร BX,DX และ AX ตอเนองกน ดวย 4 clc rcl ax,1 rcl dx,1 rcl bx,1 clc rcl ax,1 rcl dx,1 rcl bx,1

ตวอยางค าสง การหารขอมลใน DX,AX ดวย 2 clc rcr dx,1 rcr ax,1

ตวอยางการใชงานค าสงเกยวกบการประมวลผลระดบบต

โปรแกรมตวอยางตอไปนเปนโปรแกรมทแสดงคารหสแอสกของปมทรบจากผใชเปนเลขฐานสอง โปรแกรมยอยทแสดงขอมลเปนรหสเลขฐานสองใชการเลอนบตในการประมวลผล

.model small .dosseg .code ; Display Binary (input : al) dispbin proc near push ax push cx push dx mov cx,8 printloop: test al,80h ;test for 1 jz printzero mov dl,’1’ jmp printit printzero: mov dl,’0’

Page 149: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

136

printit: mov ah,2 int 21h shl al,1 loop printloop pop dx pop cx pop ax ret dispbin endp start: mov ah,1 int 21h call dispbin mov ax,4C00h int 21h end start

Page 150: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

137

สรป ค าสงทางตรรกศาสตรเปนค าสงประมวลผลขอมลระดบบต โดยจะน าคาในแตละบตของขอมลมาประมวลผลทางตรรกศาสตร ค าสงในกลมนไดแก ค าสง AND ค าสง OR ค าสง XOR และค าสง NOT รปแบบการใชงานของค าสง AND ค าสง OR และค าสง XOR จะมลกษณะเหมอนกน คอจะรบโอเปอรแรนดสองตว และจะน าขอมลในโอเปอรแรนดตวแรกมากระท ากบขอมลตวทสอง และจะเกบผลลพธของการกระท านนในโอเปอรแรนดตวแรก สวนในกรณของค าสง NOT จะรบโอเปอรแรนดตวเดยว และจะท าการกลบคาในบตแลวเกบผลลพธลงในโอเปอรแรนดตวนนเลย สวนการประมวลผลอกรปแบบทเราสามารถกระท ากบขอมลในระดบขนของบตไดแกการเลอนบต ในการเลอนบตเราสามารถเลอนไดทงทางซายและทางขวา โดยค าสงส าหรบการเลอนบตไปทางซายไดแก ค าสง SHL (Shift Left) ค าสงส าหรบการเลอนบตไปทางขวาไดแก ค าสง SHR (Shift Right) เรานยมใชการเลอนบตในการประมวลผลทตองการประมวลผลขอมลทละบต และมการประมวลผลเปนแบบวงรอบ

Page 151: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

138

ค าถามทบทวน

1. จงแสดงผลลพธของค าสงจากค าสงขางลางทใหมาเมอบตของขอมลตวตงทงสองตวมคาเปน 1 1.1 mov ax,2345h

and ax,3456h ; ax = ? and ? ; ax = ?

1.2 mov ax,2345h or ax,3456h ; ax = ? and ? ; ax = ?

1.3 mov ax,2345h xor ax,3456h ; ax = ? and ? ; ax = ?

2.จงแสดงผลลพธของการเลอนบตของขอมลตาง ๆ จากตารางทใหมา

ขอมล (คา) เลอนบตไปทาง

จ า น ว น(บต)

ผลลพธ (คา)

0011 1110 (52) ซาย 1 ? 0011 1110 (52) ซาย 2 ? 0011 1110 (52) ซาย 3 ? 0111 0100 (116) ขวา 1 ? 0111 0100 (116) ขวา 2 ? 0111 0100 (116) ขวา 3 ?

3.จงแสดงผลลพธของการเลอนบตแบบคดเครองหมายของขอมลตาง ๆ จากตารางทใหมา

ขอมล (คา) เลอนบตไปทาง

จ า น ว น (บต)

ผลลพธ (คา)

0011 1110 (52) ซาย 1 ? 1111 1000 (-40) ซาย 2 ? 0111 0100 (116) ขวา 1 ? 1011 1100 (-100) ขวา 2 ? 1011 1100 (-100) ขวา 3 ?

4.จงอธบายพรอมยกตวอยางค าสงหมนบตผานแฟลกทดตอไปน

4.1 ค าสง RCL (Rotate Carry Left) 4.2 ค าสง RCR (Rotate Carry Right)

Page 152: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

139

แผนบรหารการสอนประจ าบทท 14 หวขอเนอหา - การอางแอดเดรส - แบบการอางแอดเดรส วตถประสงคเชงพฤตกรรม - มความรและความเขาใจเกยวกบการอางแอดเดรสใน เซกเมนตทงสไดแก CS, DS, SS และ ES - สามารถประยกตใชงานค าสงในการอางแอดเดรสแบบตาง ๆ ได วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - ตอบค าถาม - ภาพ - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 153: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

140

14.1 การอางแอดเดรส

8086 จะมองลกษณะของหนวยความจ า โดยแบงหนวยความจ าเปนกลมๆในรปแบบของ เซกเมนต ในหนงเซกเมนตจะชไดถง 64 กโลไบต เซกเมนตทงสไดแก CS, DS, SS และ ES จะแสดงแอดเดรสของหนวยความจ าทจะตดตอดวย CS จะบรรจคาแสดงแอดเดรสเรมตนของโปรแกรม DS จะเกบคาดาตาเซกเมนตขณะนน SS กจะเกบคาสแตกเซกเมนตขณะนน และ ES จะก าหนดเซกเมนตของขอมลรวมทเรยกวา global data segment

จดส าคญอกจดหนงกคอ เซกเมนตจะแสดงต าแหนงเหมอนกบเปนพารากราฟ (paragraph) โดยจะเลอนไปทางซาย 4 บต เพอทจะก าหนดหรออางแอดเดรสใหครบ 20 เสน โดยจดเรมตนของพารากราฟจะตองม 4 บต หลงสดเปน 0 เชน เปน 00000H, 00010H, 00020H เปนตน

เพอทจะท าการตดตอกบขอมลหนงไบตหรอหนงเวรดนน 8086 ไดเตรยมคา ออฟเซต เพอใชอางต าแหนงตงแตจดเรมตนของเซกเมนตแอดเดรส ต าแหนงใดๆจะไดมาจากการบวกคาเซกเมนตรจสเตอรกบคาของออฟเซต 16 บต เชนถาเซกเมนตมคา E89F และใหออฟเซตมคา 0003H จะท าใหการอางแอดเดรสไปท E89F3H ลกษณะในการอางแอดเดรส การอางแอดเดรสโดยระบต าแหนงดวย เซกเมนตและออฟเซต เชน

mov ax, [es:100h] mov bl, es:[bx] การอางขอมลทวๆไปโดยไมระบเซกเมนต ออฟเซตทระบจะคดเทยบกบ DS เชน

mov ax, B800h mov es, ax

14.2 แบบการอางแอดเดรส อางแบบรจสเตอร (Register addressing) ขอมลอยในรจสเตอร เชน

mov ax, bx อางแบบคาคงท (Immediate addressing) ขอมลอยในค าสง เชน

mov ax, 10 อางโดยตรง (Direct addressing) เปนการอางแอดเดรสแบบทระบคาออฟเซตโดยตรง เชน

mov ax, [100h] mov [200h], cl mov cl, total mov sum, ax

บทท 14 การอางแอดเดรส (Addressing Mode)

Page 154: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

141

อางทางออมโดยใชรจสเตอร (Register indirect addressing) เปนการอางแอดเดรสโดยแอดเดรสของขอมลอยในรจสเตอร เชน

อางแบบดชนโดยตรง (Direct indexed addressing) เปนการอางแอดเดรสโดยแอดเดรสของขอมลไดจากการน าคารจสเตอรดชน ( SI หรอ DI ) มาบวกกบเลขคดเครองหมายขนาดแปดบต หรอเลขไมคดเครองหมายขนาดสบหกบต

.data balance dw 10 dup(?) credit dw 10 dup(?) debit dw 10 dup(?) … mov cx, 10 mov si, 0 calloop: mov ax, balance[si] sub ax, credit[si] add ax, debit[si] mov balance[si], ax inc si inc si loop calloop

mov bx, offset buffer mov al, [bx] mov di, offset total add [di],al

Page 155: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

142

อางแบบสมพทธกบฐาน (Base relative addressing) เปนการอางแอดเดรสโดยแอดเดรสของขอมลไดจากการน าคาคงทไปบวกกบคาในรจสเตอร BX หรอ BP เชน

ถาคดสมพทธกบ BP ออฟเซตทไดจะคดเทยบกบรจสเตอร SS (Stack Segment)

อางแบบดชนกบฐาน (Base indexed addressing) เปนการอางแอดเดรสโดยแอดเดรสของขอมลไดจากการน าคาของรจสเตอรฐาน ( BX หรอ BP ) รวมกบคาของรจสเตอรดชน ( SI หรอ DI )

ถาคดสมพทธกบ BP ออฟเซตทไดจะคดเทยบกบรจสเตอร SS (Stack Segment)

.data rec dw 10 dup(4 dup(?)) … mov cx, 10 mov bx, offset rec updateloop: mov ax, [bx] ; x add ax, [bx+2] ; +y add ax, [bx+4] ; +z mov [bx+6], ax ; c = x+y+z add bx, 8 loop updateloop

mov ax, [bx+si+2] mov [bx+di], al inc byte ptr [bx+si] mov dx, [bp+si+2] mov [bp+di+2], dx

Page 156: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

143

ตวอยางโปรแกรมแสดงตวอกษรแบบใหญ การแสดงตวอกษรใหญๆนน ตองมการเกบตวอกษรทจะพมพไวในหนวยความจ า โดยการควรเกบเปนตารางจะงายตอความเขาใจ เชน ตารางขนาด 8*8 เราสามารถเปลยนจากการเกบ 0 และ 1 เปน ชองวาง และ # แทนตามล าดบ โปรแกรมยอยส าหรบแสดงตวอกษร หาต าแหนงเรมตนของตวอกษร

.data fontbuf db 0, 0, 0, 1, 0, 0, 0, 0

db 0, 0, 1, 0, 1, 0, 0, 0 db 0, 1, 0, 0, 0, 1, 0, 0 db 1, 0, 0, 0, 0, 0, 1, 0 db 1, 1, 1, 1, 1, 1, 1, 0 db 1, 0, 0, 0, 0, 0, 1, 0 db 1, 0, 0, 0, 0, 0, 1, 0 db 0, 0, 0, 0, 0, 0, 0, 0 โดยตองท าแบบนทกตวอกษร( A – Z )

mov bx, offset fontbuf mov dh, 0 sub dx, ‘A’ mov cl, 6 shl dx, cl ; dx = dx*16 add bx, dx ; bx = buf addr

Page 157: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

144

โดยตวอกษรตวแรกเรมท ‘A’ เรมท offset fontbuf แตละตวต าแหนงเพมขนทละ 64 ไบตซงมาจากการเกบตวอกษรในรปของตาราง 8*8 ทแสดงขางตน การพมพตวอกษรออกมา เราสามารถลดขนาดการเกบจากไบตเปนบตไดโดย ซงจากวธนท าใหใช 8 ไบตเทานนในการเกบส าหรบหนงตวอกษร

mov si, 0 mov dh, 0 printline: mov cx, 8 printonechar: mov dl, [bx+si] call printchar inc si loop printonechar call printnewline inc dh cmp dh, 8 jnz printline

10h28h44hFEh82h82h82h00h

.data fontbuf db 10h, 28h, 44h, 0Feh

db 82h, 82h, 82h, 00h โดยทตองส าหรบทกตวอกษร ( A – Z )

Page 158: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

145

จากการทไดเปลยนวธการเกบตวอกษรคอจากขนาด 64 ไบต เปน 8 ไบต จงตองมการแกไขสวนของโปรแกรมแสดงผลใหม ดงน

บทท 14 : การตดตอกบอปกรณ

สรป

8086 จะมองลกษณะของหนวยความจ า โดยแบงหนวยความจ าเปนกลมๆในรปแบบของ เซกเมนต ในหนงเซกเมนตจะชไดถง 64 กโลไบต เซกเมนตทงสไดแก CS, DS, SS และ ES จะแสดงแอดเดรสของหนวยความจ าทจะตดตอดวย CS จะบรรจคาแสดงแอดเดรสเรมตนของโปรแกรม DS จะเกบคาดาตาเซกเมนตขณะนน SS กจะเกบคาสแตกเซกเมนตขณะนน และ ES จะก าหนดเซกเมนตของขอมลรวมทเรยกวา global data segment

mov si, 0 mov di, 0 printline: mov dh, [bx+si] mov cx, 8 printonechar: test dh, 80h jz printzero mov dl, ‘#’ jmp printit printzero: mov dl, ‘ ‘ printit: call printchar rol dh, 1 loop printonechar call printnewline inc si inc di cmp di, 8 jnz printline

Page 159: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

146

ค าถามทบทวน 1. ลกษณะการอางองแอดเดรสมกแบบอะไรบาง 2. จงเขยนค าสงเพออางองแอดเดรสตอไปน 2.1 อางแบบรจสเตอร (Register addressing) 2.2 อางแบบคาคงท (Immediate addressing) 2.3 อางโดยตรง (Direct addressing) 2.4 อางทางออมโดยใชรจสเตอร (Register indirect addressing) 2.5 อางแบบดชนโดยตรง (Direct indexed addressing) 2.6 อางแบบสมพทธกบฐาน (Base relative addressing) 2.7 อางแบบดชนกบฐาน (Base indexed addressing) 3. จงเขยนโปรแกรมแสดงตวอกษร B และมการเกบตวอกษรทจะพมพไวในหนวยความจ าโดยเกบเปนตาราง ขนาด 8*8

Page 160: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

147

แผนบรหารการสอนประจ าบทท 15 หวขอเนอหา - กระบวนการขดจงหวะใน 8086 - ค าสงตดตอกบอปกรณใน 8086 วตถประสงคเชงพฤตกรรม - มความรและความเขาใจเกยวกบกระบวนการขดจงหวะและการใชค าสงตดตอกบอปกรณใน 8086

วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - ตอบค าถาม - ภาพ - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 161: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

148

ปกตแลวการท างานของคอมพวเตอรจะประกอบดวยการท างานรวมกนของหนวยประมวลผลกลางกบ

อปกรณรอบขาง ซงการท างานรวมกนนจ าเปนตองมการสงผานขอมลระหวางหนวยประมวลผลกลางและอปกรณอน ๆ อยเสมอ ดงนนรปแบบการเชอมตอระหวางหนวยประมวลผลกลางกบอปกรณรอบขางจงตองถกออกแบบมาอยางเหมาะสมกบการท างานของอปกรณตาง ๆ ซงจะแบงรปแบบการเชอมตอระหวางหนวยประมวลผลกลางกบอปกรณรอบขางไดดงน 1. Programmed I/O หนวยประมวลผลมค าสงโดยเฉพาะส าหรบการสงรบขอมลกบอปกรณ 2. Memory-mapped I/O ซงการตดตอแบบนนยมใชในอปกรณทไมมค าสงพเศษในการตดตอกบอปกรณ I/Oการตดตอจะเหมอนกบการเขยนและอานกบหนวยความจ า 3. Interrupt I/O การท CPU ตองตรวจสอบสถานะของ I/O ท าใหเสยเวลาจงมวธการตดตอแบบนโดยให I/O รายงานแก CPU เองเมอมการเปลยนแปลงสถานะ เชน มขอมลเขา สงขอมลเสรจแลว มลกษณะคอ I/O สรางสญญาณ Interrupt ใหกบ CPU เพอให CPU ประมวลผลเหตการณทเกดขน 4. Direct Memory Access I/O โดยทวไป I/O ท างานชามากเมอเทยบกบ CPU ดงนนการท CPU ตองจดการโอนยายขอมลเองจะเปนการเสยเวลา จงท าใหเกดวธการตดตอโดยตรงระหวาง memory และ I/O ซงในขณะนน CPU สามารถท างานอนทไมตองตดตอกบ memory ได ขนตอนโดยทวไปมขนตอนดงน

4.1 หนวยประมวลผลสงงาน I/O และระบต าแหนงในหนวยความจ าทจะให I/O เขยนผลลพธหรออานขอมล จากนน CPU จะไปท างานอน

4.2 I/O จะเขยนผลลพธทไดหรออานขอมลจากหนวยความจ าโดยตรงโดยไมผาน CPU 4.3 เมอ I/O ท างานเสรจจะแจง CPU โดยการสรางการขดจงหวะ

15.1 กระบวนการขดจงหวะใน 8086 กระบวนการขดจงหวะหรอ interrupt เปนกระบวนการหนงทอปกรณรอบขางจะเรยกรองความสนใจจาก

CPU เพอให CPU มาประมวลผลขอมลจากอปกรณทรองขอนน ซงกระบวนการนจะเรมจากอปกรณรอบขางสงสญญาณมาขอ interrupt จาก CPU เมอ CPU ไดรบสญญาณ interrupt วงจรภายใน CPU จะพจารณาวาอปกรณใดทขอ interrupt โดยฮารดแวรทควบคมการ interrupt จะสงคาทอยระหวาง 0 ถง 255 ซงเปนหมายเลขทใชแทนอปกรณนนใหกบ CPU เมอ CPU ไดรบหมายเลขของอปกรณทสงสญญาณ Interrupt กสงผานการควบคมไปยง interrupt service routine โดย CPU ไดส ารองท 1024 ไบตแรกในหนวยความจ าส าหรบ interrupt vector ขอมลทอยใน interrupt vector คอตวชทบอกต าแหนงทอยของ interrupt service routine ของอปกรณแตละหมายเลขนน โดยท interrupt แตละหมายเลขจะเกยวของกบ interrupt vector 4 ไบต เชน interrupt vector เบอร 0 จะเกยวของกบ vector ไบต 0 ถง 3 โดยทสองไบตแรกจะชไปยง offset ของ interrupt service routine สองไบตตอมาจะชไปยง segment ของ interrupt service routine

บทท 15 การขดจงหวะ (Interrupted)

Page 162: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

149

การ interrupt จะเกบต าแหนงทอยของค าสงถดไป (return address) บน stack เนองจาก interrupt service routine อาจอยในหนวยความจ าสวนใดกได ดงนน CPU จงตองจดการกบ interrupt คอจะตองเกบทง offset และ segment ของโปรแกรมบน stack นอกจากนน กยงเกบคาของ flag register ไวบน stack ซงใน flag register กม interrupt enable flag (IF)บตอยดวย การท CPU รบร interrupt จากภายนอกไดหรอไม ขนอยกบคาน ถา IF มคาเปน 0 CPU จะไมยอมรบสญญาณจาก maskable interrupt ขณะทก าลง execute interrupt service routine อย

เมอ CPU เกบคาของ flag register และ return address คอคาใน register CS และ IP บน stack แลว กใชเบอร interrupt อานคาต าแหนงทอยของ interrupt service routine จาก interrupt vector แลวยายการท างานไปยง interrupt service routine เมอท ามาถงค าสง IRET ซงเปนค าสง return from interrupt กจะ pop คา 3 คาออกจาก stack และใสไวใน register IP, CS และ flag register ตามล าดบ แสดงไดดงรป 15.1

รป 14.1 แผนผงการท างานเมอม interrupt

รปท 15.1 แสดงการเกบต าแหนงทอยของค าสงถดไป (return address) บน stack

ทมาของการขดจงหวะ การขดจงหวะของ CPU มทมาจาก 2 ลกษณะไดแก 1. การขดจงหวะทมาจากระบบฮารดแวร อปกรณตางๆทตองการสรางการขดจงหวะจะสงสญญาณมาท

อปกรณควบคมการขดจงหวะ (Interrupt Controller) โดยสญญาณทเขามาทอปกรณควบคมนมทงสน 16 สญญาณ (IRQ0 – IRQ16) จากนนอปกรณควบคมการขดจงหวะสงสญญาณมาท CPU พรอมทงสงหมายเลขของการขดจงหวะมาพรอมกนดวย โดยถามการขดจงหวะหลายอนทรองขอพรอมกนอปกรณนจะจดล าด บความส าคญของอปกรณและสงสญญาณทมความส าคญสงสดกอน อปกรณทสรางการขดจงหวะกลมนไดแก นาฬกาของระบบ แปนพมพ ฮารดดสก การดเสยง ฯลฯ

stack

Interrupt

read table

push flags,CS,IP

0:0

IRET

stack

pop flags,CS,IPreturn

jump to interrupt routine

Page 163: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

150

2. การขดจงหวะทมาจากระบบซอฟตแวร หรออาจจะเรยกไดวาเปนการขดจงหวะทเกดขนจากอปกรณภายในตว CPU เองไดแก การเกดความผดพลาดในการท างาน และการสงค าสง INT โดยค าสง INT มรปแบบดงน

เมอค าสง INT ถก execute CPU จะด าเนนการดงตอไปนคอ

1. Push คาของ flag register บน stack 2. Clear Trap Flag (TF) และ Interrupt Enable Flag (IF) 3. Push คาของ register CS บน stack 4. ค านวณต าแหนงทอยใน interrupt vector ของ interrupt เบอรน โดยการคณ interrupt-type ดวย 4 5. Load คาใน word ทสองใน interrupt vector ส าหรบ interrupt เบอรนลงใน register CS ซงกคอคา

ของ segment ของ interrupt service routine 6. Push คาใน register IP บน stack 7. Load คาใน word ทหนงใน interrupt vector เบอรน ใน register IP ซงกคอคาของ offset ของ

interrupt service routine 8. Execute interrupt service routine

ตวอยางการรบตวอกษรจากแปนพมพและแสดงผล interrupt 21H เปนการเรยกใชงานฟงกชน โดยใช register AH บรรจหมายเลขฟงกชน

;DEMONSTRATE FUNCTION 01H ;READ KEYBOARD AND DISPLAY CODE SEGMENT PAGE ASSUME CS:CODE,DS:CODE ;*************************** ;* MACRO DEFINITION * ;*************************** READ_KBD_ECHO MACRO MOV AH, 01H ;รอรบการกดตวอกษรหนงตวจากแปนพมพ INT 21H ;รหสตวอกษรทกดถกสงไป register AL ENDM DISP_CHAR MACRO CHARACTER MOV DL, CHARACTER MOV AH, 02H ;แสดงผลตามคาทอยใน register DL

INT interrupt – type โดยท interrupt – type คอเบอรของ interrupt ซงมคาระหวาง 0 ถง 255

Page 164: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

151

INT 21H ENDM DISPLAY MACRO STRING MOV DX, OFFSET STRING MOV AH, 09H ;แสดงผลสายตวอกษร (string) บนจอภาพ

จนกวาจะพบตวอกษร INT 21H ;’$’ โดยregister DX จะบรรจคา offset (จาก segment DS) ENDM TERMINATE MACRO MOV AH,4CH INT 21H ENDM ORG 0100H START: DISPLAY SHOW ;SHOW MESSAGE DISP_CHAR 10 ;SEND LINEFEED FUNC_01H: READ_KBD_ECHO ;THIS FUNCTION CMP AL,0DH ;IS IT A CR-RETURN JNE FUNC_01H ;NO,LOOP BACK DISP_CHAR 10 ; TERMINATE SHOW DB ‘TYPE ANY KEY !’,13,10 DB ‘PRESS RETURN TO TERMINATE’,13,10,’$’ CODE ENDS END START

15.2 ค าสงตดตอกบอปกรณใน 8086 หนวยประมวลผลของ 8086 สามารถตดตอกบอปกรณไดทงแบบ Programmed I/O, Interrupt I/O,

และ Direct Memory Access โดยค าสงเขยนอานมรปแบบดงน

Page 165: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

152

ตวอยางการตดตอกบอปกรณรอบขาง : การตดตอกบล าโพง ภายในเครองคอมพวเตอรจะมล าโพงเลกๆโดยทโปรแกรมสามารถควบคมเสยงทออกจากล าโพงน โดย

ควบคมผานพอรต 61H ใชในการน าขอมลออกไปใหโปรแกรมและคานจะคงอยอยางนนจนกระทงโปรแกรมเปลยนคา แตละบตของพอรต 61H มความหมายดงน

การสงงานล าโพงอยางงายๆสามารถท าไดโดยสงงานบตท 1 โดยการก าหนดคาลงในบตนเปลยนคาไปมา

ระหวาง 0 และ 1 ซงจะท าใหล าโพงเกดการสนขน การสงงานนนตองสงงานโดยไมใหกระทบกบบตอนๆ เชน

บต 0 timer 2 gates ( ควบคมล าโพง ) 1 speaker direct control 2 multiplex port 62H 3 cassette motor control 4 enable parity check on system board memory 5 enable parity check on I/O board memory 6 keyboard clock control 7 keyboard clear/multiplex port 60H

in AL, 61H xor AL, 02H out 61H, AL

IN accumulator, DX IN accumulator, portnumber OUT DX, accumulator OUT portnumber, accumulator โดยท accumulator คอ register AX หรอ AL ขนกบวาเปนการตดตอแบบ 8 บต หรอ 16 บต portnumber คอหมายเลขของอปกรณ (หมายเลข I/O) เราสามารถระบคานโดยผานทาง

register DX ได หมายเลขพอรตนมคาตงแต 0 ถง 65535

Page 166: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

153

ในการสรางเสยงตองมการหนวงเวลาในการเปลยนคาบตควบคมล าโพง (บตท 1) เพราะความถสงเกนไปล าโพงจะไมสามารถเคลอนททนและเพอใหผใชสามารถไดยนเสยงนนดวย ตวอยางโปรแกรมยอยส าหรบสรางเสยงอยางงาย

gensound proc near ; CX delay [for freq] ; DX duration push ax push dx gensignal: in al, 61h xor al, 02h out 61h, al push cx delayloop: nop ;no operation loop delayloop

pop cx dec dx or dx, dx jnz gensignal pop dx pop ax ret gensound endp

ตวอยางการตดตอกบอปกรณรอบขาง : ระบบการแสดงผลแบบตวอกษร การแสดงแบบตวอกษรใน IBM/PC นน ในแตละตวอกษรทแสดงจะมคาทเกยวของสองคาคอ รหสแอสก

ของตวอกษรนน และแสดงคา display attribute ของตวอกษร ซงเปนคาทบอกสของตวอกษรและลกษณะการแสดงผล โดยบตท 0-3 แสดงสของตวอกษร และบตท 4-7 แสดงสของพนหลง

เราสามารถเขยนโปรแกรมจดการการแสดงผลทหนาจอไดสองวธ ใชบรการของ Video BIOS [Interrupt 10H]

B Back I Fore

7 6 5 4 3 2 1 0Bit

Page 167: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

154

ตวอยางแสดงรปบนจอโดยใช BIOS interrupt เบอร 10H

; PROGRAM DRAW A DIAGONAL LINE OF SMILE FACES ON SCREEN CODE_SEG SEGMENT ASSUME CS:CODE-SEG DIAG PROC FAR PUSH DS ;SAVE RETURN ADDRESS MOV AX, 0 PUSH AX PUSH AX ;SAVE REGISTERS AX PUSH BX ;SAVE REGISTERS BX PUSH CX ;SAVE REGISTERS CX PUSH DX ;SAVE REGISTERS DX STI ;ENABLE INTERRUPT MOV AH, 15 ;SET BH TO ACTIVE PAGE INT 10H MOV CX, 1 MOV DX, 0 ;START AT ROW=0 COLUMN=0 CRSR: MOV AH, 2 ;MOVE CURSOR TO NEXT POSITION INT 10H MOV AL, 2 ;CHARACTER DISPLAY MOV AH, 10 ;WRITE CHARACTER TO SCREEN INT 10H INC DH ;POINT TO NEXT ROW INC DL ;POINT TO NEXT COLUMN CMP DH, 25 ;BOTTOM OF SCREEN JNE CRSR POP DX POP CX ;RESTORE REGISTERS POP BX POP AX RET DIAG ENDP CODE_SEG ENDS END

Page 168: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

155

ในหนวยแสดงผลแบบ VGA หนวยความจ าตงแตต าแหนงท 0B800h: 0000h จะเปนหนวยความจ าทเกบขอมลของหนาจอ โดยการเกบขอมลจะมลกษณะเกบทละตวอกษรเรยงกนไปตามล าดบ ซงการเกบขอมลจะเกบตวอกษรละ 2 ไบต ไบตแรก (ไบตต า) จะเกบคารหสแอสก ไบตทสองจะเกบคา display attribute การเกบจะเกบเรยงทละบรรทด บรรทดละ 80 ตวอกษร ตวอยางการค านวณ ขอมลของตวอกษรทบรรทดท 10 ตวท 3 อยท offset 10*(80*2)+3*2 = 1606 ตวอยางโปรแกรมแสดงตวอกษรทงหมดบนจอภาพ

CODE_SEG SEGMENT START PROC FAR ASSUME CS:CODE_SEG ;SAVE RETURN ADDRESS PUSH DS MOV AX, 0 PUSH AX ;CLEAR THE DISPLAY MOV AX, 0B0000H MOV EX, AX ;ES POINTS TO BASE OF ADAPTE MOV DI, 0 MOV AL, ‘ ‘ ;BLANK CHARACTER MOV AH, 07H ;NORMAL VIDEO MOV CX, 2000 REP STOSW ;BLANK OUT VIDEO DISPLAY ;FILL THE DISPLAY WITH 256 CHARACTERS WITH A BLANK COLUMN ;AND LINE BETWEEN ALL CHARACTERS MOV AL, 0 ;CHARACTER TO DISPLAY MOV AH, 0 ;COLUMN NUMBER MOV DI, 160 ;POINT TO FIRST COLUMN IN ROW 2 AGAIN: MOV ES:[DI], AL ;PUT CHARACTER IN MEMORY ADD DI, 4 ;POINTS TO NEXT POSITION ADD AH, 2 CMP AH, 80 ;FINISHED THIS ROW ? JB SAME_LINE

Page 169: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

156

ตวอยางโปรแกรมยอยเขยนตวอกษรลงบนหนาจอโดยตรง

WRITEONECHAR PROC NEAR ;( DH, DL ) : ( ROW, COL ) ;AL: CHAR AH: ATTRIBUTE PUSH DS PUSH AX PUSH BX PUSH CX PUSH DX MOV AX, 0B800H MOV DS, AX MOV CL, DH PUSH AX MOV AL, 160 MUL CL ; AX=ROW*160 MOV BX, AX

;IF COLUMN NUMBER IS GREATER THAN 80 THEN SKIP A LINE ADD DI, 160 MOV AH, 0 SAME_LINE: CMP AL, 255 JE FINISHED ;256 CHARACTERS YET INC AL ;UPDATE TO NEXT CHARACTER JMP AGAIN ;AFTER DISPLAYING ALL THE CHARACTERS WAIT FOR A KEY TO BE ;PRESSED THEN BLANK THE DISPLAY AND RETURN TO DOS MOV AH, 0 ;GET KEYBOARD INPUT INT 16H MOV DI, 0 ;INITIAL OFFSET ADDRESS MOV AL, ‘ ‘ ;BLANK CHARACTER MOV AH, 07H ;NORMAL DISPLAY ATTRIBUTE MOV CX, 2000 REP STOSW ;BLANK ADAPTER MEMORY RET START ENDP CODE_SEG ENDS END START

Page 170: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

157

POP AX MOV DH, 0 SHL DX, 1 ADD BX, DX MOV [BX], AX POP DX POP CX POP BX POP AX POP DS RET WRITEONECHAR ENDP

Page 171: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

158

สรป

กระบวนการขดจงหวะใน 8086 เปนกระบวนการหนงทอปกรณรอบขางจะเรยกรองความสนใจจาก CPU เพอให CPU มาประมวลผลขอมลจากอปกรณทรองขอนน ซงกระบวนการนจะเรมจากอปกรณรอบขางส งสญญาณมาขอ interrupt จาก CPU เมอ CPU ไดรบสญญาณ interrupt วงจรภายใน CPU จะพจารณาวาอปกรณใดทขอ interrupt โดยฮารดแวรทควบคมการ interrupt จะสงคาทอยระหวาง 0 ถง 255 ซงเปนหมายเลขทใชแทนอปกรณนนใหกบ CPU เมอ CPU ไดรบหมายเลขของอปกรณทสงสญญาณ Interrupt กสงผานการควบคมไปยง interrupt service routine โดย CPU ไดส ารองท 1024 ไบตแรกในหนวยความจ าส าหรบ interrupt vector ขอมลทอยใน interrupt vector คอตวชทบอกต าแหนงทอยของ interrupt service routine ของอปกรณแตละหมายเลขนน โดยท interrupt แตละหมายเลขจะเกยวของกบ interrupt vector 4 ไบต เชน interrupt vector เบอร 0 จะเกยวของกบ vector ไบต 0 ถง 3 โดยทสองไบตแรกจะชไปยง offset ของ interrupt service routine สองไบตตอมาจะชไปยง segment ของ interrupt service routine ค าถามทบทวน 1.จงอธบายรปแบบการเชอมตอระหวางหนวยประมวลผลกลางกบอปกรณรอบขางตอไปน

1.1 Programmed I/O 1.2 Memory-mapped I/O 1.3 Interrupt I/O 1.4 Direct Memory Access I/O

2. การขดจงหวะของ CPU มกลกษณะอะไรบาง 3. เมอค าสง INT ถก execute CPU จะด าเนนการโดยมขนตอนการท างานอยางไร 4. จงอธบายหนวยประมวลผลของ 8086 สามารถตดตอกบอปกรณในแบบตางๆ ตอไปนไดอยางไร 4.1 Programmed I/O 4.2 Interrupt I/O 4.3 Direct Memory Access 5. จงเขยนโปรแกรมแสดงตวอกษรทมค าวา “Computer Science Suan Dusit” บนจอภาพ

Page 172: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

159

แผนบรหารการสอนประจ าบทท 16 หวขอเนอหา - ค าสง MOVS - ค าสง REP - ค าสง STO - ค าสง LODS - ค าสง REPZ - ค าสง CMPS - ค าสง REPNZ - ค าสง SCAS

วตถประสงคเชงพฤตกรรม - มความรและความเขาใจเกยวกบค าสงจดการสายขอมลตางๆ เชน ค าสง MOVS, ค าสง REP, ค าสง STOS, ค าสง LODS, ค าสง REPZ, ค าสง CMPS, ค าสง REPNZ และค าสง SCAS เปนตน วธสอนและกจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - ตอบค าถาม - ภาพ - เอกสารอางองประกอบการคนควา 1. การวดผลและประเมนผล 1.1 ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช 2. การประเมนผล 2.1 วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด 2.2 ใชวธการออกขอสอบขอเขยน

Page 173: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

160

ค าสงจดการกบสายขอมล เปนค าสงทใชจดการกบขอมลเปนทเปนชดเรยงตอกน ค าสงในกลมนจะระบต าแหนงของขอมลดวย Index register คอ SI (Source Index) และ DI (Destination Index) ประกอบกบ DS และ EX โดย ขอมลตนทางจะอยทต าแหนง DS:SI และขอมลปลายทางจะอยท ES:DI การท างานค าสงในกลมนจะมการปรบคาของรจสเตอรทเกบต าแหนงของขอมลใหโดยอตโนมต เพอวาเราจะสามารถใชค าสงนนกระท ากบขอมลทต าแหนงตดกนถดไปไดโดยไมตองปรบคาของรจสเตอรเอง ทศทางในการปรบจะขนกบคาทก าหนดในแฟลกทศทาง (DF : Direction flag) ถา DF เปน 0 แสดงวามการเพมต าแหนงของการท างาน โดยจะชไปทขอมลตวถดไป คอ คาของรจสเตอรดชนจะเพมขน แตถา DF เปน 1 แสดงวาการท างานจะเปนการลดต าแหนง โดยจะชไปทขอมลทอยกอนหนาน คอรจสเตอรดชนจะมคาลดลง

แอดเดรสต า ทศทางขน (DF = 1) Index register ทศทางลง (DF = 0) แอดเดรสสง การก าหนดคาของ DF สามารถท าไดดวยค าสง STD (set direction flag) ซงจะท าให คาใน DF เปน 1

และ CLD (clear direction flag) ซงจะท าใหคาใน DF เปน 0 ค าสงตางๆ ในกลมน

MOVSx Move string LODSx Load string STOSx Store string SCASx Scan string CMPSx Compare string

x แทนไดถง B (byte) หรอ W (word) หรอ D (double) ซงหมายถงขนาดของขอมลทถกกระท าดวยค าสงนนๆ

บทท 16 ค าสงจดการกบสายขอมล (Character Instruction)

Page 174: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

161

16.1 ค าสง MOVS ค าสง MOVS เปนค าสงทใชส าหรบการคดลอกขอมลจากแหลงขอมลตนทางไปยงแหลงขอมลปลายทาง โดยมรปแบบดงน

MOVSB MOVSW MOVSD

ค าสง MOVS จะท าการคดลอกขอมลจากต าแหนง DS:SI ไปยงต าแหนง ES:DI พรอมทงปรบคาใน

รจสเตอร DI และ SI ค าสง MOVSB ใชในการคดลอกคาขนาดไบต ค าสง MOVSW ใชคดลอกคาขนาดเวรด และค าสง MOVSD ใชคดลอกคาขนาดดบเบลเวรด

ตวอยาง โปรแกรมคดลอกขอมลจ านวน 100 ตวทเรมตนทเลเบล d1 ไปยงเลเบล d2

.data d1 dw 100 dup (N) d2 dw 100 dup (?) .code mov ax,@data mov ds,ax mov es,ax mov si,offset d1 ; source address mov di,offset d2 ; destination address cld ; move in forward direction mov cs,100 ; 100 byte to be moved copy: movsw loop copy …

16.2 ค าสง REP ค าสงการกระท ากบสายขอมลนนมกจะตองท างานซ าเปนวงรอบเพราะในการเรยกค าสงแตละครงนนจะเปนการกระท ากบขอมลทละ 1 ตวเทานน ดงเชนในตวอยางขางตนเปนการใชค าสง MOVSW รวมกบค าสง LOOP แตเรากอาจจะน าค าสง REP มาใชแทนได

Page 175: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

162

ค าสง REP ใชน าหนาค าสงอนๆ เพอใหท าค าสงนนซ า โดยในการกระท าค าสงแตละครงนนจะมการลดคาของรจสเตอร CX ลงครงละ 1 จนกวาคาของรจสเตอร CX จะเทากบ 0 ซงกคลายกบการท างานของค าสง LOOP นนเอง

ตวอยางค าสง

mov cx,100 copy: movsw loop copy

เราสามารถแทนบรรทดขางตนทง 3 ไดดวย

mov cx,500 rep movsw

16.3 ค าสง STOS ค าสง STOS เปนค าสงทใชส าหรบการคดลอกขอมลขนาดไบทจากรจสเตอร AL หรอ ขนาดเวรดจาก

รจสเตอร AX หรอ ขนาดดบเบลเวรดจากรจสเตอร EAX ไปยงหนวยความจ าต าแหนง ES:DI พรอมทงปรบคารจสเตอร DI โดยมรปแบบดงน

STOSB STOSW STOSD

ตวอยาง โปรแกรมก าหนดคาเรมตนเทากบ 0 ใหกบขอมล 100 ตวทเรมตนทหนวยความจ าต าแหนง d1

.data d1 dw 100 dup (?) .code mov ax,@data mov ds,ax mov es,ax mov ax,0 mov di,offset d1 ; destination address cld ; fill them forwards mov cx,100 ; number of locations to be filled rep stosw …

Page 176: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

163

16.4 ค าสง LODS ค าสง LODS เปนค าสงทใชส าหรบการคดลอกขอมลขนาดไบทจากหนวยความจ าต าแหนง DS:SI ไปยงรจสเตอร AL หรอ ขนาดเวรดไปยงรจสเตอร AX หรอ ขนาดดบเบลเวรดไปยงรจสเตอร EAX ไปยง พรอมทงปรบคารจสเตอร SI โดยมรปแบบดงน

LODSB LODSW LODSD

ตวอยาง โปรแกรมหาคาผลรวมของขอมลแบบไบต 100 ตวทเรมตนท d1 และเกบผลรวมทไดไวใน DX

.data d1 db 100 dup (?) .code mov ax,@data mov ds,ax … mov dx,0 mov si,offset d1 ; destination address cld ; forward direction mov cx,100 ; number of bytes to be moved calsum: lodsb ;move the next byte into AL add dl,al ;add AL to DX

adc dh,0 loop calsum ;if more to do, go back and repeat …

โดยปกตเราจะไมพบการใชค าสง REP รวมกบค าสง LODS ตวอยางค าสง

.data d1 dw 100 dup (?) .code mov ax,@data

Page 177: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

164

mov ds,ax … mov di,offset d1 cld mov cx,100 rep lodsw …

ขางตนเปนตวอยางการใชค าสง LODS อานคาจากหนวยความจ าต าแหนง d1 ทละเวรดไปเกบยง

รจสเตอร AX ซงจะเหนไดวาคาในรจสเตอร AX จะถกเขยนทบไปเรอยๆ โดยในทสดกมเพยงคาสดทายเทานน ไมมประโยชนอนใด

ตวอยาง โปรแกรมค านวณคาจ านวน 100 คาเพอใสลงในหนวยความจ าทเรมตนทต าแหนง d2 โดยมคาเทากบคาในหนวยความจ าทเรมตนทต าแหนง d1 ทมล าดบเทากนคณดวย 2

.data d1 db 100 dup (?) d2 db 100 dup (?) .code mov ax,@data

mov ds,ax … mov ax,ds mov es,ax

mov si,offset d1 ;source address mov di,offset d2 ;destination address cld ;forward direction mov cx,100 ;number of bytes to be moved calsum: lodsb ;move next byte to AL shl al,1 ;multiply AL by 2 stosb ;store it in the new location loop calsum ;if more to do ,go back and repeat …

Page 178: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

165

16.6 ค าสง REPZ ค าสง REPZ มการท างานคลายกบค าสง REP แตค าสง REPZ จะกระท าซ าเมอ zero flag มคาเปน 1 และ CX มคาไมเทากบ 0

16.7 ค าสง CMPS ค าสง CMPS จะน าคาในหนวยความจ าต าแหนง ES:DI มาลบออกจากคาในหนวยความจ าต าแหนง DS:SI

แลวปรบคาแฟลกตางๆ ทเกยวของโดยคาของขอมลในหนวยความจ ายงคงเดม และปรบคาของรจสเตอร DI และ SI โดยอตโนมต ค าสง CMPS มรปแบบดงน

CMPSB CMPSW CMPSD

ค าสง CMPS มกจะใชในการเปรยบเทยบ 2 สตรงวาเหมอนกนหรอไมในการจะคนหาวาขอมลของสตรง 2 ตววามคาเทากนหรอไมนน เราจะตองท าการเปรยบเทยบขอมลไปทละตวจนกวาจะหมดขอมลหรอพบ ขอมลทไมเทากนเปนตวแรก จากทผานมาเราใชค าสง REP รวมกบค าสงอนเพอใหค าสงนนซ าเทาจ านวนทเราก าหนด(ในรจสเตอร CX) แตถาเราตองการใหหยดกระท าค าสงเมอพบจดทแตกตาง นนกคอเราจะใชค าสง REPZ แทนค าสง REP เพราะค าสง REPZ จะหยดกระท าเมอ Z-flag เปน 0 นนคอเมอค าสง CMPS ท าการเปรยบเทยบพบขอมลทตางกนนนเอง

ตวอยาง โปรแกรมเปรยบเทยบขอมลในหนวยความจ าทต าแหนงเรมตนท d1 และในหนวยความจ าต าแหนงเรมตนท d2

.data d1 db 100 dup (?) d2 db 100 dup (?) .code mov ax,@data mov ds,ax … mov bx,ds mov es,bx mov si, offset d1 ;start address of first string mov di, offset d2 ;start address of second string cld ;forward direction

Page 179: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

166

mov cx,100 ;the number of words to be compare repz cmpsw jnz differ same: … … jmp done differ: … … done: … …

16.8 ค าสง REPNZ ค าสง REPNZ มการท างานคลายกบค าสง REP แตค าสง REPZ จะกระท าซ าเมอ zero flag มคาเปน 0

และ CX มคาไมเทากบ 0

16.9 ค าสง SCAS ค าสง SCAS จะคนหาขอมลส าหรบคาขนาดไบตทก าหนดใน AL หรอขนาดเวรดใน AX หรอขนาดดบเบล

เวรดใน EAX โดยเรมตนทหนวยความจ าต าแหนง ES:DI จากนนจะมการปรบคาของรจสเตอร DI โดยอตโนมต โดยมรปแบบดงน

SCASB SCASW SCASD

ค าสง SCAS มกจะใชในการคนหาขอมลภายในสตรง ในการจะคนหานน เราจะตองท าการเปรยบเทยบขอมลไปทละตวจนกวาจะหมดขอมลหรอพบชอมลทตองการ ในท านองเดยวกบค าสง CMPS เราไมสามารถใชค าสง REP ไดเพราะเราตองการใหหยดกระท าค าสงเมอพบขอมลทตองการ เราจงใชค าสง REPNZ แทนค าสง REP เพราะค าสง REPNZ จะหยดกระท าเมอ Z-flag เปน 1 นนคอเมอค าสง SCAS ท าการเปรยบเทยบพบขอมลทเหมอนกนนนเอง ตวอยาง โปรแกรมคนหาอกขระ ‘X’ จากขอมล 100 ตว

.data d1 db 100 dup (?) .code mov ax,@data mov ds,ax

Page 180: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

167

… mov bx,ds mov es,bx mov di,offset d1 ;first location to be searched cld ;forward direction mov cx,100 ;the number of locations to be searched mov al, ‘X’ repnz scasb ;do the search jz found notfnd: … jmp done found: … … done: …

ตวอยาง โปรแกรมส าหรบน าขอมลทเรมตนท d2 จ านวน 100 ตวไปตอทายขอมลทเรมตนท d1 โดยถอวาขอมลทเรมตนท d1 ถกปดทายดวย null string

… mov ax,@data mov ds,ax mov bx,ds mov es,bx mov al, 0 mov di, offset d1 ;first location to be searched cld ;forward direction repnz scasb ;do the search mov si, offset d2 ;start address of second string mov cx,100 ;number of bytes to be moved rep movsb ;do the move …

Page 181: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

168

สรป

ค าสงจดการกบสายขอมล เปนค าสงทใชจดการกบขอมลเปนทเปนชดเรยงตอกน ค าสงในกลมนจะระบต าแหนงของขอมลดวย Index register คอ SI (Source Index) และ DI (Destination Index) ประกอบกบ DS และ EX โดย ขอมลตนทางจะอยทต าแหนง DS:SI และขอมลปลายทางจะอยท ES:DI การท างานค าสงในกลมนจะมการปรบคาของรจสเตอรทเกบต าแหนงของขอมลใหโดยอตโนมต เพอวาเราจะสามารถใชค าสงนนกระท ากบขอมลทต าแหนงตดกนถดไปไดโดยไมตองปรบคาของรจสเตอรเอง ทศทางในการปรบจะขนกบคาทก าหนดในแฟลกทศทาง (DF : Direction flag) ค าถามทบทวน 1. จงอธบายการท างานของรจสเตอรตอไปน SI DI DS ES และ DF 2. จงแสดงและจงอธบายการท างานของค าสงตอไปน 2.1 ค าสง MOVS 2.2 ค าสง REP 2.3 ค าสง STOS 2.4 ค าสง LODS 2.5 ค าสง REPZ 2.6 ค าสง CMPS 2.7 ค าสง REPNZ 2.8 ค าสง SCAS 3. จงเขยนโปรแกรมส าหรบน าขอมลทเรมตนท data2 จ านวน 25 ตวไปตอทายขอมลทเรมตนท data1 โดยถอวาขอมลทเรมตนท data1 ถกปดทายดวย null string

Page 182: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

169

แผนบรหารการสอนประจ าบทท 17 หวขอเนอหา

- ค าสง XLAT - แมคโคร - พารามเตอรของแมคโคร - การใช LABEL ในแมคโคร - แมคโครกบโปรแกรมยอย วตถประสงคเชงพฤตกรรม - มความรและความเขาใจเกยวกบค าสง XLAT - มความรและความเขาใจเกยวกบพารามเตอร การใช LABEL ในแมคโคร - สามารถประยกตใชงานค าสงแมคโคร (Macro) กบโปรแกรมยอยได กจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - ตอบค าถาม - ภาพ - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 183: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

170

17.1 ค าสง XLAT ค าสงดานลางนเปนค าสงทผดรปแบบไมสามารถใชได

mov al,[bx+al]

อาจจะมองไดวา คาใน AL เปนหมายเลขชองของตารางและคาใน BX เปนแอดเดรสของตาราง ค าสงนกคอการน าเอาคาในตารางทต าแหนงดวย BX ชองท AL มาใสใน Al นนเอง ซงในหลายๆครงมความตองการจะท างานในลกษณะน ค าสงขางตนสามารถใชงานไดดวยค าสง XLAT แทน

ตวอยาง โปรแกรมแปลงคาเลขฐานสบหกหนงหลกใน AL เปนอกขระฐานสบหก

.data hextab db ‘0123456789ABCDEF’ … .code … mov bx,offset hextab xlat …

17.2 แมคโคร แมคโครคอสวนของโปรแกรมทไดก าหนดชอไว เมอใดกตามทมการเรยกใชชอนนในโปรแกรม สวนของโปรแกรมทมชอดงกลาวกจะถกน าไปแทนทแมคโครมรปแบบการประกาศดงน

name MACRO parameters … ENDM

บทท 17 ค าสงตารางและการสรางแมคโคร (Macro and Instruction Table)

Page 184: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

171

ตวอยางค าสง

print macro mov bx,offset msg mov ah,09h int 21h endm .data msg db ‘TEST$’ .code … print …

เมอโปรแกรมขางตนเมอถกขยายจะมลกษณะดงน

.data msg db ‘TEST$’ .code …

;print mov bx,offset msg

mov ah,09h int 21h …

17.3 พารามเตอรของแมคโคร พารามเตอรของแมคโครนน จะถกน าไปแทนททกจดในตวแมคโคร ตวอยางค าสง

print macro prt mov bx,offset prt mov ah,09h int 21h endm .data

Page 185: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

172

msg1 db ‘TEST$’ msg2 db ‘TEST2$’ .code … print msg1 print msg2

เมอโปรแกรมขางตนเมอถกขยายจะมลกษณะดงน

.data msg1 db ‘TEST$’ msg2 db ‘TEST2$’ .code … ;print msg1 mov bx,offset msg1 mov ah,09h int 21h endm ;print msg2 mov bx,offset msg2 mov ah,09h int 21h endm …

17.4 การใช LABEL ในแมคโคร ตวอยางค าสง

test1 macro mov … label1: … endm .code …

Page 186: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

173

test1 … test1 …

เมอโปรแกรมขางตนเมอถกขยายจะมลกษณะดงน

.code … ;test1 mov … label1: … ;test1 mov … label1: …

จะเหนไดวามการซ ากนของ LABEL สามารถก าหนดให MASM สราง LABEL ทมชอไมซ ากนไดโดย

จะตองประกาศใหเปน LABEL แบบ LOCAL ตวอยางค าสง

test1 macro local label1 mov … label1: … endm

เมอโปรแกรมขางตนเมอถกขยายจะมลกษณะดงน

.code … ;test1 mov …

Page 187: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

174

XXXX1: … ;test1 mov … XXXX2: …

17.5 แมคโครกบโปรแกรมยอย ค าสงในสวนของแมคโครจะถกน าไปแทนทในต าแหนงทมการเรยกใช ในการท างานจรงจะไมมการกระโดดไปท างาน แตถามการเรยนใชแมคโครหลายครง โปรแกรมสวนนนกจะถกขยายออกมาหลายครง สวนโปรแกรมยอยจะเปนสวนของโปรแกรมทมเพยงชดเดยว การเรยกใชโปรแกรมยอยจะเปนการกระโดไปท างานในโปรแกรมยอยนน แมคโครมขอด คอ ลดเวลาในการกระโดดไปท างานส าหรบสวนของค าสงทมขนาดเลก แตแมคโครกมขอเสยคอถาสวนของแมคโครมขนาดใหญหรอตองเรยกใชหลายครง จะท าใหโปรแกรมทไดจากการแปลมขนาดใหญ

Page 188: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

175

สรป แมคโครคอสวนของโปรแกรมทไดก าหนดชอไว เมอใดกตามทมการเรยกใชชอน นในโปรแกรม แมคโครม

ขอด คอ ลดเวลาในการกระโดดไปท างานส าหรบสวนของค าสงทมขนาดเลก แตแมคโครกมขอเสยคอถาสวนของแมคโครมขนาดใหญหรอตองเรยกใชหลายครง จะท าใหโปรแกรมทไดจากการแปลมขนาดใหญไปดวย ค าถามทบทวน 1. จงอธบายการท างานของค าสง XLAT 2. จงแสดงวธการใชงานการใช LABEL ในแมคโคร 3. แมคโครกบโปรแกรมยอยคออะไร มขอดและขอเสยอยางไร

Page 189: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

176

แผนบรหารการสอนประจ าบทท 18 หวขอเนอหา

- การดาวนโหลดและตดตงโปรแกรม MASM32 - การดาวนโหลดและตดตงโปรแกรม EditPlus วตถประสงคเชงพฤตกรรม - มความรและความเขาใจวธการดาวนโหลดและตดตงโปรแกรม MASM32 - มความรและความเขาใจวธการดาวนโหลดและตดตงโปรแกรม EditPlus - สามารถประยกตใชงานค าสงและฝกทกษะการเขยนโปรแกรมภาษาแอสเซมบลและตรวจสอบความ ถกตองของโปรแกรมทเขยนขนมาเบองตนได กจกรรมการเรยนการสอน - บรรยาย - สบเสาะหาความร - คนควาเพมเตม - ตอบค าถาม สอการเรยนการสอน - สออเลกทรอนกส - ตอบค าถาม - ภาพ - เอกสารอางองประกอบการคนควา การวดผลและประเมนผล ใชวธการสงเกตและจดบนทกไวเปนระยะ - สงเกตจากงานทก าหนดใหไปท ามาสง - สงเกตจากการตอบค าถาม - สงเกตจากการน าความรไปใช การประเมนผล วธตรวจผลงานตางๆ ทใหท า - ตรวจผลงานภาคปฏบต - ตรวจรายงาน - ตรวจแบบฝกหด ใชวธการออกขอสอบขอเขยน

Page 190: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

177

บทนจะเกยวของกบการเรยนรและการฝกทกษะใหกบนกพฒนาโปรแกรม ทตองการ เขยนโปรแกรมภาษาระดบต า (Low Level Language) หรอบางครงอาจเรยกวาการเขยนโปรแกรมภาษาเครอง โดยเฉพาะการเขยนโปรแกรมภาษาแอสเซมบลเบองตนซงเหมาะส าหรบนกศกษาทยงไมเคยเขยนโปรแกรมหรอเขยนโปรแกรมแลวแตยงไมคอยเขาใจเทาทควรซงเขยนโปรแกรมภาษาแอสแซมบลนจดเปนภาษาระดบต า ถาเทยบกบภาษาระดบสง เชน C++, JAVA , VISUAL BASIC เปนตน แตภาษา assembly กจะมคณสมบตทดกวาภาษาอนตรงทจะใชเวลาในการท างานของเครองนอยกวา

Microsoft Macro Assembler (อกษรยอ MASM) โปรแกรมส าหรบแปลภาษาแอสแซมบล (assembler) ใชกบเครองคอมพวเตอรทใชซพยตระกล x86 แตเดมผลตโดยบรษทไมโครซอฟตส าหรบใชกบระบบปฏบตการดอส (MS-DOS) และเปนโปรแกรมส าหรบแปลภาษาแอสแซมบลทนยมใชมากทสด

ขนตอนเบองตนในการฝกทกษะและการเขยนโปรแกรมภาษาแอสเซมบลเบองตนประกอบดวย 18.1 การดาวนโหลดและตดตงโปรแกรม MASM32

วธการดาวนโหลดและตดตงโปรแกรม MASM32

ขนตอนท 1. เขาเวบไซตไปท http://dusithost.dusit.ac.th/~juthawut_cha/home.htm เลอก การฝกทกษะการเขยนโปรแกรมเบองตน (Programming Skills) 1. ไปท ดาวนโหลด โปรแกรมส าหรบฝกทกษะการเรยนรการเขยนโปรแกรมภาษาแอสเซมบล คลก Download MASM32 Version 9, ดาวนโหลดไฟล m32v9r.zip ขนาด 3.37 MB

บทท 18 การฝกทกษะการเขยนโปรแกรมภาษาแอสเซมบลเบองตน (Skill Training Programs in a Primary Assembly)

Page 191: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

178

2. Uncompress the file m32v9r.zip and run the installer file install.exe to start the installation process until finish.

2. ขยายไฟล m32v9r.zip และรนตวตดตง install.exe เพอเรมกระบวนการตดตงไปจนเสรจ

Page 192: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

179

Page 193: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

180

Page 194: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

181

Page 195: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

182

Page 196: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

183

3. Do NOT use the linker link.exe (32 bit) in the masm32/bin directory. Use the linker version 5.60 to generate 16-bit DOS applications. http://www.scs.carleton.ca/~sivarama/asm_book_web/free_MASM.html

3. อยาใชตวเชอม link.exe (32 bit) ทอยในไดเรคทอร masm32/bin ใหใชตวเชอม link.exe รน 5.60 เพอสรางโปรแกรม 16-bit ส าหรบระบบปฏบตการดอส (DOS) http://www.scs.carleton.ca/~sivarama/asm_book_web/free_MASM.html

3.1. Download lnk563.exe size 274 KB from the following URL: http://download.microsoft.com/download/vc15/Update/1/WIN98/EN-US/Lnk563.exe http://www.scs.carleton.ca/~sivarama/asm_book/source/win_nasm_readme.pdf

Page 197: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

184

3.1 ดาวนโหลดไฟล lnk563.exe ขนาด 274 KB จากเสนทางดงน: http://download.microsoft.com/download/vc15/Update/1/WIN98/EN-US/Lnk563.exe http://www.scs.carleton.ca/~sivarama/asm_book/source/win_nasm_readme.pdf

4. Copy this file to C:\MASM32\BIN and run it. Answer Yes(y) when asked whether to overwrite existing files. http://www.intelligent-systems.info/classes/ee360/tutorial.htm

4. คดลอกไฟลนไปไวท C:\MASM32\BIN และรนไฟล ใหตอบใช (y) เมอโปรแกรมถามวาจะเขยนทบหรอไม http://www.intelligent-systems.info/classes/ee360/tutorial.htm

5. Right-click my Computer and click on Poperties.

5. คลกขวา my Computer และคลกท Poperties

Page 198: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

185

6. On the Advanced tab, click Environment Variables.

6. ทแทบ Advanced, คลก Environment Variables

Page 199: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

186

7. Under System variables box, select variable Path and click on Edit.

7. ในกรอบ System variables, ใน System variables เลอก Path คลก Edit

8. In Variable value edit box add the new paths separated by semicolons (;) C:\masm32\bin, click OK, click OK and click Ok again.

8. ในชอง Variable value ใสเสนทางใหมขนดวยเครองหมายอฒภาค (;) ดงน C:\masm32\bin, คลก OK, คลก OK, และคลก OK

Page 200: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

187

9. Click Start, and then click Run.

9. คลก Start, และคลก Run

10. In the Open box, type cmd, and then click OK.

10. ในชอง Open, พมพ cmd, และคลก OK

Page 201: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

188

11. Create a folder to hold your Assembly source code file, using the mkdir command, and then change into the working directory, using the cd command. Finally, create your Assembly source code file by typing notepad hello.asm.

11. สรางโฟลเดอรเพอเกบโดดโปรแกรมภาษาแอสแซมบล, ใชค าสง mkdir, และใชค าสง cd เพอเขาไปในโฟลเดอรทสรางไว ขนสดทายสรางโคดภาษาแอสแซมบลโดยพมพค าสงดงน notepad hello.asm

12. Click Yes when Notepad asked if you want to create the new file because the file doesn't exist.

12. คลก Yes ถาโปรแกรมถามวาทานตองการทจะสรางไฟลใหมหรอไมเพราะไมมไฟลอย

Page 202: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

189

13. In hello.asm type the following Assembly source code, and then save it:

13. ในไฟล hello.asm พมพโคดภาษาแอสแซมบล, และบนทกไฟล

;hello.asm ;To assemble and link ;For TASM, type: ;tasm hello.asm ;tlink hello.obj ;For MASM, type: ;ml hello.asm ;This program prints the message "Hello World!" on the screen. .model small .stack .data Message db "Hello World!",10,13,"$" .code start: ;Get segment of Message. mov ax,SEG Message mov ds,ax ;Write 'Hello World!' to the screen. mov ah,9 mov dx,OFFSET Message int 21h ;Terminate program. mov ax,4c00h int 21h end start

Page 203: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

190

Page 204: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

191

14. To assemble and link, use the command: ml hello.asm

14. การแปลโคดและเชอม, ใชค าสง: ml hello.asm

15. To run the program, use the command: hello

15. การรนโปรแกรม, ใชค าสง: hello

16. The program prints the message Hello World! on the next line.

16. โปรแกรมจะแสดงผลลพธขอความ Hello World! ทบรรทดถดไป

Page 205: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

192

Running from icon

รนโปรแกรมโดยไอคอน

17. In Windows Explorer in the folder you saved the Pascal source code right click on the executable file hello.exe, and choose Properties.

17. ใน Windows Explorer ในโฟลเดอรททานไดเกบโคดภาษา Pascal คลกขวาทไอคอนไฟล hello.exe, และเลอก Properties

Page 206: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

193

18. Click the Program tab, and uncheck the box marked Close on exit and then click "OK" to close the box.

18. คลกแทบ Program, คลก Close on exit ใหเครองหมายถกหายไปและคลก OK

Page 207: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

194

19. This will stop the DOS window from closing automatically when the program runs by DOS program icon.

19. โปรแกรมจะรนคางไวโดยไมปดเองถารนโดยไอคอนของดอส

Page 208: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

195

20. If you forget the comma, the compiler will give you an error message when you attempt to compile the program.

20. ถาทานลมเครองหมายจลภาค (,), ตวแปลภาษาจะแสดงขอความแจงความผดพลาดเมอทานแปลโคด

Page 209: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

196

Page 210: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

197

18.2 การดาวนโหลดและตดตงโปรแกรม EditPlus EditPlus คอโปรแกรมพมพขอความรวมทงโคดภาษาโปรแกรมและโคดภาษาเวบใชในวนโดว มคณสมบตมากมายเหมาะส าหรบเขยนเวบภาษา HTML และเขยนโปรแกรมภาษาตางๆ

วธการดาวนโหลดและตดตง โปรแกรม EditPlus

ขนตอนท 1. เขาเวบไซตไปท http://dusithost.dusit.ac.th/~juthawut_cha/home.htm เลอก การฝกทกษะการเขยนโปรแกรมเบองตน (Programming Skills) 1. ไปท ดาวนโหลด โปรแกรมส าหรบฝกทกษะการเรยนรการเขยนโปรแกรมภาษาแอสเซมบล คลก Download ดาวนโหลดไฟล epp220_en.exe ขนาด 939 KB

2. Double-click on the saved file icon epp220_en.exe to start the installation process.

2. ดบเบลคลกไอคอนของไฟล epp220_en.exe เพอเรมกระบวนการตดตงโปรแกรม

Page 211: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

198

Page 212: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

199

3. Click the program icon on your desktop or the shortcut on the Start menu to launch the program.

3. คลกไอคอนโปรแกรมบนหนาจอหรอคลกชอโปรแกรมทเมน Start เพอรนโปรแกรม

Page 213: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

200

4. It will bring up a nag screen each time it is run until you register the program.

4. โปรแกรมจะแสดงขอความเตอนวายงไมรจสเตอรในกรอบสเหลยม

5. From the View menu, select Output Window to show it.

5. ทเมน View, เลอก Output Window เพอแสดงใหเหน

Page 214: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

201

6. From the Tools menu, select Configure User Tools.

6. ทเมน Tools, เลอก Configure User Tools

Page 215: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

202

7. In Preferences dialog box On User tools page click on the Group Name button to change the default group name Group 3.

7. ในกรอบ Preferences ทหนา User tools คลกปม Group Name เพอเปลยนชอ

8. In the New Name text box, type MASM 6.14.8444

8. ในชอง New Name, พมพ MASM 6.14.8444

Page 216: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

203

9. Select the Add Tool button.

9. คลกปม Add Tool

10. Select Program from the popup menu.

10. เลอกเมน Program

Page 217: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

204

11. Set the options like this: Menu text: MASM Command: C:\masm32\bin\ml.exe Argument: $(FilePath) Initial directory: $(FileDir) Capture output: ON and then click Apply.

11. เซตคาตางๆดงน

Menu text: MASM Command: C:\masm32\bin\ml.exe Argument: $(FilePath) Initial directory: $(FileDir) Capture output: ON หลงจากนนคลกปม Apply

Page 218: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

205

12. Select the Add Tool button.

12. คลกปม Add Tool

13. Select Program from the popup menu.

13. เลอกเมน Program

Page 219: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

206

14. Set the options like this: Menu text: Run Command: $(FileNameNoExt) Argument: Initial directory: $(FileDir) Capture output: ON and then click OK.

14. เซตคาตางๆดงน

Menu text: Run Command: $(FileNameNoExt) Argument: Initial directory: $(FileDir) Capture output: ON หลงจากนนคลกปม OK

Page 220: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

207

15. From the Tools menu, select User Tool Groups, and then MASM 6.14.8444

15. ทเมน Tools, เลอก User Tool Groups, เลอก MASM 6.14.8444

16. To compile, open the source file, select MASM from the Tools menu.

16. การแปลโคดใหเปดไฟลโคดภาษา Assembly และเลอก MASM จากเมน Tools

Page 221: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

208

17. The result will be shown in the Output Window at the bottom.

17. โปรแกรมจะแสดงผลลพธเปนขอความทหนาตาง Output ดานลาง

18. To run, select Run from the Tools menu.

18. การรนโปรแกรมใหเลอก Run ทเมน Tools

Page 222: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

209

19. The result will be shown in the Output Window at the bottom.

19. โปรแกรมจะแสดงผลลพธในหนาตาง Output ดานลาง

20. If you forget the comma, the compiler will give you an error message when you attempt to compile the program.

20. ถาทานลมเครองหมายจลภาค (,), ตวแปลภาษาจะแสดงขอความแจงความผดพลาดเมอทานแปลโคด

Page 223: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

210

21. Uncheck the Capture output box of the Run menu will show the output in a command-prompt window.

21. ถาไมมเครองหมายถกขางหนา Capture output ในเมน Run โปรแกรมจะแสดงผลลพธในหนาตางแบบ command-prompt

4.int mouse ใช int 33h

Page 224: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

211

สรป

Microsoft Macro Assembler เปนโปรแกรมส าหรบแปลภาษาแอสเซมบล (assembler) ใชกบเครองคอมพวเตอรทใชซพยตระกล x86 ส าหรบใชกบระบบปฏบตการดอส (MS-DOS) และเปนโปรแกรมส าหรบแปลภาษาแอสเซมบลทนยมใชมากทสด ดงนนนกพฒนาภาษาโปรแกรมภาษาแอสเซมบลเบองตนจ าเปนทจะตองเรยนรและฝกทกษะการเขยนภาษาโปรแกรมและตรวจสอบความถกตองอยางตอเนอง เพอท าความเขาใจและทดสอบโปรแกรมทตนเขยนขนมาซงจะท าใหเขาใจรปแบบและวธการท างานอยางเปนขนตอน รวมถงชวยใหสามารถพฒนาโปรแกรมภาษาชนสงทเกยวของตอไป

ค าถามทบทวน 1. จงยกตวอยางโปรแกรมทใชในการเขยนโปรแกรมภาษาแอสเซมบลในปจจบนนอกเหนอจากโปรแกรม MASM32 หรอ EditPlus วามวธการดาวนโหลดและตดตงเพอใชงานไดอยางไร 2. จงเขยนโปรแกรมภาษาแอสเซมบลอานคาจากคยบอรด (Keyboard) ตวอกษรภาษาองกฤษพมพใหญและใหแสดงผลเปนจากแปนพมพออกทางหนาจอเปนตวอกษรภาษาองกฤษพมพเลก 3. จงเขยนโปรแกรมภาษาแอสเซมบลทพมพ String โดยใชฟงกชนเบอร 9 ของอนเตอรรพตเบอร 21H 4. จงเขยนโปรแกรมภาษาแอสเซมบลอานคาจากคยบอรด (Keyboard) โดยใชฟงกชนเบอร 1 ของอนเตอรรพตเบอร 21H แลวเปลยนเปนเลขฐาน 10 และพมพคาออกทางจอภาพ (Monitor) โดยใชฟงกชนเบอร 2 ของอนเตอรรพตเบอร 21H 5. จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 2 เปนเลขฐาน 8 และแสดงผลออกทางทางจอภาพ (Monitor) 6. จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 2 เปนเลขฐาน 10 และแสดงผลออกทางทางจอภาพ (Monitor) 7 จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 2 เปนเลขฐาน 16 และแสดงผลออกทางทางจอภาพ (Monitor) 8. จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 8 เปนเลขฐาน 2 และแสดงผลออกทางทางจอภาพ (Monitor) 9. จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 8 เปนเลขฐาน 10 และแสดงผลออกทางทางจอภาพ (Monitor) 10 จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 8 เปนเลขฐาน 16 และแสดงผลออกทางทางจอภาพ (Monitor) 11. จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 10 เปนเลขฐาน 2 และแสดงผลออกทางทางจอภาพ (Monitor) 12. จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 10 เปนเลขฐาน 8 และแสดงผลออกทางทางจอภาพ (Monitor)

Page 225: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

212

13 จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 10 เปนเลขฐาน 16 และแสดงผลออกทางทางจอภาพ (Monitor 14. จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 16 เปนเลขฐาน 2 และแสดงผลออกทางทางจอภาพ (Monitor) 15. จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 16 เปนเลขฐาน 8 และแสดงผลออกทางทางจอภาพ (Monitor) 16 จงเขยนโปรแกรมภาษาแอสเซมบลทเปลยนคาจากเลขฐาน 16 เปนเลขฐาน 10 และแสดงผลออกทางทางจอภาพ (Monitor

Page 226: เอกสารประกอบการสอน รายวิชา ไมโครโพสเซสเซอร์และภาษา ...comsci.sci.dusit.ac.th/wp-content/uploads/2016/10/MAL_Book.pdf ·

213

บรรณานกรม Agarwal R.K. 80x86 Architecture and Programming Vol 2 Architecture Reference. USA : Prentice Hall Inc, 1991. Bradley, David J. Assembly Language Programming for the IBM Personal Computer. USA : Prentice Hall Inc, 1984. Holzner, Steven. Creating Utilities with Assembly Language 10 Best for IBM PC & XT. USA : Brady Communication Company, 1986. Jermann, William H. The Structure and Programming of Microcomputer. USA : Alfred Publishing Co Inc, 1982. Thorne M. Computer Organization and Assembly Language Programming 2nd Edition. Benjamin Cumming Publishing Company : USA, 1991. Williams Dave. The Programming Technical Reference MS-DOS, IBM PC & Compatibles. Singapore : John Wiley & Sons (SEA), 1990. ฉววรรณ โสภาจารย. โครงสรางคอมพวเตอรและการเขยนโปรแกรมภาษาแอสเซมบล . กรงเทพฯ : ภาค วทยาการคอมพวเตอรและสารสนเทศ คณะวทยาศาสตรประยกต สถาบนเทคโนโลยพระจอมเกลาพระ นครเหนอ, 2548. ชชย ธนสารตงเจรญ, กาธร พานชปฐมพงษ. ภาษาแอสเซมบล 80286/80386 (PC). กรงเทพฯ : สานกพมพซ เอดยเคชน บมจ, 2536. ธรวฒน ประกอบผล. ระบบคอมพวเตอรและภาษาแอสเซมบล. กรงเทพฯ : สานกพมพสงเสรมเทคโนโลย (ไทย- ญปน), 2537. ศรวรรณ ฉนทาดสย. หลกการเขยนโปรแกรมภาษาแอสเซมบล 8088. กรงเทพฯ : สานกพมพประการพรก, 2534.