microprocessor and assembly language

64
By Juthawut Chantharamalee Microprocessor and Assembly Language Suan Dusit Rajabhat University (Computer Science) 1

Upload: ishmael-finch

Post on 15-Mar-2016

269 views

Category:

Documents


17 download

DESCRIPTION

Microprocessor and Assembly Language. By Juthawut Chantharamalee. Suan Dusit Rajabhat University (Computer Science). บทที่ 2 ไมโครโพรเซสเซอร์และไมโครคอนโทรลเลอร์ ( Microprocessor and Microcontroller ). บทที่ 2. Suan Dusit Rajabhat University (Computer Science). - PowerPoint PPT Presentation

TRANSCRIPT

By Juthawut Chantharamalee

Microprocessor and Assembly Language

Suan Dusit Rajabhat University (Computer Science)1

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

บทท 2

Suan Dusit Rajabhat University (Computer Science) 2

21. 21. ไมโครโพรเซสเซอรและไมโครไมโครโพรเซสเซอรและไมโครคอนโทรลเลอรคอนโทรลเลอรไมโครโพรเซสเซอร (Microprocessor) เปน

อปกรณอเลกทรอนกสชนดหนงซงมลกษณะวงจรรวม (Integrated Circuit ) หรอชพ (Chip) โครงสรางภายในจะมวงจรรวมขนาดใหญประกอบไปดวย หนวยคำานวณทางคณตศาสตร (Arithmetic Unit ) รจสเตอร (Register ) บสขอมล (Data Bus) บสควบคม (Control Bus) บสทอย (Address Bus) รวมกนเปนหนวยประมวลผลกลาง (Central Processing Unit ) เพอทำาหนาทในการประมวลผลตามโปรแกรมคำาสงทปอนเขามา แสดงไดดงรปท 21.

Suan Dusit Rajabhat University (Computer Science) 3

รปท รปท 21. 21. แสดงบลอกไดอะแกรมของไมโครแสดงบลอกไดอะแกรมของไมโครโพรเซสเซอร โพรเซสเซอร

(Block Diagram of Microprocessor) (Block Diagram of Microprocessor) Suan Dusit Rajabhat University (Computer Science) 4

21. 21. ไมโครโพรเซสเซอรและไมโครไมโครโพรเซสเซอรและไมโครคอนโทรลเลอรคอนโทรลเลอรไมโครคอนโทรลเลอร (Microcontroller) เปนชพ

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

Suan Dusit Rajabhat University (Computer Science) 5

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

Suan Dusit Rajabhat University (Computer Science) 6

22. 22. ชนดของไมโครโพรเซสเซอรชนดของไมโครโพรเซสเซอร 221. . 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 ภายในชปตวเดยวSuan Dusit Rajabhat University (Computer Science) 7

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

Suan Dusit Rajabhat University (Computer Science) 8

22. 22. ชนดของไมโครโพรเซสเซอรชนดของไมโครโพรเซสเซอร2.2.3 General-purpose Processorเปนไมโครโพรเซสเซอรทใชในอปกรณอเลกทรอนกสโดยทวไป ซงควบคมการทำางานดวยโปรแกรม แบงตามรนทพฒนาโดยบรษทอนเทล ((Intel Corporation ) ผผลต โดยมการพฒนามาตงแตรน

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

Suan Dusit Rajabhat University (Computer Science) 9

22. 22. ชนดของไมโครโพรเซสเซอรชนดของไมโครโพรเซสเซอร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)

Suan Dusit Rajabhat University (Computer Science) 10

22. 22. ชนดของไมโครโพรเซสเซอรชนดของไมโครโพรเซสเซอร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 ตำาแหนง

Suan Dusit Rajabhat University (Computer Science) 11

22. 22. ชนดของไมโครโพรเซสเซอรชนดของไมโครโพรเซสเซอร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

Suan Dusit Rajabhat University (Computer Science) 12

22. 22. ชนดของไมโครโพรเซสเซอรชนดของไมโครโพรเซสเซอร80286 เปนไมโครโพรเซสเซอร ทปรบปรงมาจาก

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

Suan Dusit Rajabhat University (Computer Science) 13

22. 22. ชนดของไมโครโพรเซสเซอรชนดของไมโครโพรเซสเซอร80386 และ 80486 เปนไมโครโพรเซสเซอร

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

Suan Dusit Rajabhat University (Computer Science) 14

23 23 โครงสรางสถาปตยกรรมของไมโครโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรโพรเซสเซอรไมโครโพรเซสเซอรตระกลของ Intel จะมโครงสรางสถาปตยกรรม

ในลกษณะเดยวกน สำาหรบการเรมตน เราจะศกษาโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรจาก 8086 เพอใหเขาใจไดโดยงาย และไมซบซอนมากนกและกอนทจะเขาไปถงการเขยนโปรแกรมสำาหรบทำางานบน 8086 จะตองทราบโครงสรางการทำางานภายใน ไมวาจะเปน 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 รวมทงการทำางานรวมกบอปกรณอนไดดวย แสดงไดดงรปท 23.

Suan Dusit Rajabhat University (Computer Science) 15

รปท 23 แสดง Block Diagram ของ ซพย (CPU 8086)

Suan Dusit Rajabhat University (Computer Science) 16

23. 23. โครงสรางสถาปตยกรรมของไมโครโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรโพรเซสเซอร8086 แบงสวนตามฟงกชนการทำางานทเปนอสระ

ตอกนออกเปน 2 สวน คอ BIU (Bus Interface Unit) และ EU (Execution Unit) เพราะจะทำาใหความเรวในการทำางานสงขน

- BIU จะทำาหนาทสงคาแอดเดรสเพอไป fetch คำาสงจากหนวยความจำา, อานขอมลจากหนวยความจำา และพอรต, และเขยนขอมลไปยงหนวยความจำา และพอรต

- EU ของ 8086 จะบอก location ทจะไป fetch instruction, decode instruction และ execute instruction

Suan Dusit Rajabhat University (Computer Science) 17

23. 23. โครงสรางสถาปตยกรรมของไมโครโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรโพรเซสเซอร2.3.1 EU (Execution Unit) ประกอบดวย- Control Circuitry ทำาหนาทควบคม Operation ภายในทงหมด- Instruction Decoder ทำาหนาทแปลความหมายของชดคำาสงทนำามาจาก Memory ใหเปนลำาดบของภาษาเครองท EU สามารถปฏบตได - ALU มขนาด 16 bits ซงมฟงกชนในการ Add (บวก), Subtraction (ลบ), AND, OR, XOR, increment, decrement, complement และ shiftSuan Dusit Rajabhat University (Computer Science) 18

23. 23. โครงสรางสถาปตยกรรมของไมโครโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรโพรเซสเซอร- Flag Register เปน flip-flop ทแสดงสถานะของการ execute instruction หรอการควบคมการทำางานของชดคำาสง Flag Register ขนาด 16 บต ใน EU จะบรรจ active flag 9 ตว โดยเปน flag แสดงสถานะ (Condition flags) จำานวน 6 บต และ flag ควบคม (Control flags) จำานวน 3 บต สำาหรบบตสวนทเหลอกไมไดใชประโยชนใดๆ แสดงไดดงรปท 24.

Suan Dusit Rajabhat University (Computer Science) 19

รปท 24 แสดงสถานะแฟลก (Flag Status) ทใชในการตรวจสอบการทำางานของซพย (CPU 8086)

Suan Dusit Rajabhat University (Computer Science) 20

23. 23. โครงสรางสถาปตยกรรมของไมโครโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรโพรเซสเซอรแฟลกแสดงสถานะ (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

Suan Dusit Rajabhat University (Computer Science) 21

23. 23. โครงสรางสถาปตยกรรมของไมโครโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรโพรเซสเซอร- 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

Suan Dusit Rajabhat University (Computer Science) 22

23. 23. โครงสรางสถาปตยกรรมของไมโครโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรโพรเซสเซอรแฟลก (flag) จะไดถกออกแบบมาเพอแสดงผลของการก

ระทำาทางคณตศาสตรและลอจก สถานะทเปนไปไดของflag จะมไดแคสองสถานะ คอ ถกเซตทำาใหมคาเปน 1 หรอถกรเซตใหมคาเปน 0 แฟลกตวทด (carry flag) จะแสดงลกษณะบอกการทดหรอ การขอยมของบตสงสดของผลลพธ , แฟลกพารต (parity flag) จะใชแสดงจำานวนคหรอคของตวเลขทเปน 1 ในรจสเตอร ถาเปนค flag นจะถกเซตเปน 1, แฟลกตวทดชวย (auxiliary carry flag) จะใชงานแบบ "decimal adjust" ในการคำานวณ BCD, แฟลกศนย (zero flag) จะมคาเปน 1 เมอผลลพธเปนศนยแฟลกเครองหมาย (sign flag) จะไดรบการเซตเมอผลลพธเปนเลขจำานวนลบ

Suan Dusit Rajabhat University (Computer Science) 23

23. 23. โครงสรางสถาปตยกรรมของไมโครโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรโพรเซสเซอรแฟลกควบคมทศทาง (direction flag) จะ

กำาหนดทศทางของกลมคำาสงเกยวกบสตรง วาจะมทศทางการทำางานจากแอดเดรสมากไปนอยหรอจากแอดเดรสนอยไปมาก แฟลกอนเตอรรพต (IE) ถาถกเซตเปน 1 แสดงวาจะยอมรบอนเตอรรพตจากภายนอก โดยหยดการทำางานตามปกตของโปรแกรมไวกอน และ Tap flag (TF) จะทำาให 8086 ทำางานแบบทละคำาสงเพอการแกไขโปรแกรม

Suan Dusit Rajabhat University (Computer Science) 24

23. 23. โครงสรางสถาปตยกรรมของไมโครโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรโพรเซสเซอร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

Suan Dusit Rajabhat University (Computer Science) 25

23. 23. โครงสรางสถาปตยกรรมของไมโครโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรโพรเซสเซอร- Segment Register : BIU จะสงคา address ขนาด 20 bits ออกไป ดงนนจงสามารถทจะระบตำาแหนงใน Memory ได 220 = 1,045,576 bytes แตอยางไรกตาม 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)

Suan Dusit Rajabhat University (Computer Science) 26

23. 23. โครงสรางสถาปตยกรรมของไมโครโครงสรางสถาปตยกรรมของไมโครโพรเซสเซอรโพรเซสเซอร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

Suan Dusit Rajabhat University (Computer Science) 27

24 24 การเกดอนเตอรรพต การเกดอนเตอรรพต ((InterruptInterrupt HandleHandle))การอนเตอรรพตของ 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) หรอเกดไฟตก เปนตน

Suan Dusit Rajabhat University (Computer Science) 28

24. 24. การเกดอนเตอรรพต การเกดอนเตอรรพต ((InterruptInterrupt HandleHandle))INTO (interrupt overflow) คอ อนเต

อรรพตของ 8086 ทเกดจากขอผดพลาดของการหารและการทำางานทละขน ขอผดพลาดจากการหาร (divide error) เกดขนเนองจากผลของการหารอาจจะมคามากกวาเนอทซงเตรยมไวเปนทเกบผลลพธ หรออาจจะเกดจากการหารดวยเลข 0 สวนลกษณะของการทำางานทละขน (single step) จะเปนอนเตอรรพตทเกดเนองจากการ execute คำาสงทละคำาสง เหตการณนเกดขนเนองจาก TF (trap flag) ในรจสเตอรแฟลกถกเซตใหเปน 1

Suan Dusit Rajabhat University (Computer Science) 29

24. 24. การเกดอนเตอรรพต การเกดอนเตอรรพต ((InterruptInterrupt HandleHandle)) เมอเกดอนเตอรรพตเหลานขนมาแลวกจะเกดเหตการณเฉพาะอยางขนถามการอนเตอรรพตจากภายนอก คำาสงชดสดทายจะถก execute จนเสรจสนกอน (ยกเวน ถาเปนคำาสง MOV หรอ POP จะมการ execute คำาสงตอไปกอนแลวจงหยด) อนเตอรรพตทกตวจะทำาการเกบคาของแฟลกรจสเตอรไวในสแตก เสรจแลว 8086 จะทำาการรเซตแฟลก IF และ TF ใหเปน 0 ทงนเพอปองกน INTR อนพตทเขามาใหม และปองกนการเกดการทำางานทละขนในขณะทอยในโปรแกรมอนเตอรรพต เนองจากการทแฟลกถกเกบคาไวหลงจากโปรแกรมอนเตอรรพตสนสดแลวคาตาง ๆ ทเกบไวจะถกดงกลบมาใชงานได

Suan Dusit Rajabhat University (Computer Science) 30

24. 24. การเกดอนเตอรรพต การเกดอนเตอรรพต ((InterruptInterrupt HandleHandle)) จากนน 8086 จะทำาการเกบคาของ CS และ IP ลงบนสแตกเพอทจะเกบตำาแหนงของแอดเดรสสงกลบ (return address) ในลกษณะเดยวกบคำาสง CALL และในขนตอนสดทาย CS และ IP จะถกอานจากตาราง interrupt vector (ขนกบหมายเลขอนเตอรรพต) ตาราง interrupt vector กคอบรเวณของเนอทของหนวยความจำาเรมตงแตแอดเดรส 0000 จำานวน หนงกโลไบต ดงแสดงไดดงรปท 2.5

Suan Dusit Rajabhat University (Computer Science) 31

24. 24. การเกดอนเตอรรพต การเกดอนเตอรรพต ((InterruptInterrupt HandleHandle)) อนเตอรรพตแตละตวจะชไปยงตำาแหนงทแนนอนและสามารถทจะกระโดดไปถงทกำาหนดไดโดยอตโนมต เมอเกดอนเตอรรพตจากลกษณะของ divide error จะทำาให เกดอนเตอรรพต 0, single-step จะเปนอนเตอรรพต 1, อนเตอรรพตแบบ Non-maskable เปนแบบอนเตอรรพต 2 , bread-point จะเกดอนเตอรรพต 3 , และการเกด over flow จะเปนอนเตอรรพต 4 สวน อนเตอรรพต 5 ถง 31 เตรยมไวสำาหรบ ผใชจะกำาหนดเอาเองภายหลง สวน อนเตอรรพตทเหลอเราอาจจะควบคมโดยใชคำาสง INTR หรอ INT ได

Suan Dusit Rajabhat University (Computer Science) 32

24. 24. การเกดอนเตอรรพต การเกดอนเตอรรพต ((InterruptInterrupt HandleHandle)) สำาหรบ INTR จะตอบรบสญญาณอนเตอรรพตจากภายนอก สวน INT จะรบไดโดยตวคำาสง นนเอง CPU 8086 สามารถทจะรบรชนดของการอนเตอรรพตไดโดยการคณคาของคำาสง ดวย 4 ผลลพธทไดจะบอกตำาแหนงของตารางอนเตอรรพต ซงคาของตารางจะถกสงคาไปยง CS และ IP คาตาง ๆในตาราง เราจะตองเปนผกำาหนดโดยกำาหนดเปนคาของเซกเมนตและคาของออฟเซตทแสดงตำาแหนงของอนเตอรรพตรทน เชน อนเตอรรพตทแอดเดรส 0-3 จะถกตองกำาหนดเปนคาบอกแอดเดรสของ CS และ IP เพอจะชรทนของ divide error เปนตนSuan Dusit Rajabhat University (Computer Science) 33

24. 24. การเกดอนเตอรรพต การเกดอนเตอรรพต ((InterruptInterrupt HandleHandle)) อนเตอรรพตรทน จะตองเรมตนดวยการเกบคาของรจสเตอรตาง ๆไวกอน เพราะเราไมทราบวาจะเกดอนเตอรรพตเมอถงจดใด และเราไมตองการทำาใหคา รจสเตอรตาง ๆ เสยไปและเราตอง ปดทายรทนดวยคำาสงIRET คำาสงนจะทำางานเหมอนคำาสง RET ธรรมดาแตจะทำาการอานคาของแฟลกออกมาจากสแตกดวย

Suan Dusit Rajabhat University (Computer Science) 34

รปท 25 แสดงการเกดอนเตอรรพต ทตำาแหนง 0000- 03FF

ขนาด 1 กโลไบต 1( Kbytes)

Suan Dusit Rajabhat University (Computer Science) 35

25 25 รจสเตอรของซพย รจสเตอรของซพย 80868086CPU 8086 ประกอบดวยรจสเตอรทเกยวของ ออกเปน 2 กลม ดงน

251 กลมขอมล (Data Group Register ) แบงออกเปน 2 511. . . รจสเตอรทวไป (General-Purpose Register) 2 512. . . รจสเตอรตวช (Instruction Pointer Register) 2 513 แฟลก (flag)

252. . กลมกำาหนดเซกเมนต (Segment Register ) แบงออกเปน 2 521. . . รจสเตอรกำาหนดเซกเมนต (Segment Register)Suan Dusit Rajabhat University (Computer Science) 36

รปท 26 แสดงรจสเตอรทใชในไมโครโพรเซสเซอร 8086

Suan Dusit Rajabhat University (Computer Science) 37

25. 25. รจสเตอรของซพย รจสเตอรของซพย 808680862 511. . . รจสเตอรทวไป (General-Purpose Register)รจสเตอรทมอยทงหมดของ 8086 เปนรจสเตอรขนาด 16 บต ซงกลมขอมลจะแบงยอยออกเปน

1. รจสเตอร AX (Accumulator) หรอแอกคมวเลเตอร จะประกอบดวย AH และ AL โดย AX ทำา หนาทในการใชคณหารหรอเปนรจสเตอรเกยวกบอนพตเอาตพตทเปนเวรดสวน AL ทำาหนาทใชในการ คำานวณ คณหาร หรอทำางานเกยวกบอนพต (Input) เอาตพท (Output) แปลง ขอมลจดการคำานวณ แบบตวเลขฐานสบแบบ 8 บต และ AH ใชเปนรจสเตอรในการคณและหารได Suan Dusit Rajabhat University (Computer Science) 38

25. 25. รจสเตอรของซพย รจสเตอรของซพย 808680862. รจสเตอร BX (Base Register) หรอเบสรจสเตอรใชในการแปลงขอมล3. รจสเตอร CX (Counter Register) หรอรจสเตอรตวนบใชในคำาสงจดการเกยวกบสตรง และการทำาลป CL ใชเปนตวแปรสำาหรบการเลอนบตหรอหมนบต 4 . รจสเตอร DX (Data Register) หรอรจสเตอรขอมลใชในคำาสง คณ หารเปนเวรด (Words )หรอใช ในรปแบบอางอนพตเอาตพตแบบออม แสดงไดดงรปท 26.Suan Dusit Rajabhat University (Computer Science) 39

25. 25. รจสเตอรของซพย รจสเตอรของซพย 808680862 512. . . รจสเตอรตวช (Instruction Pointer Register) รจสเตอรใชงานทวไปในกลมตวชและอนเดกซ ประกอบดวย SP หรอสแตกพอยนเตอรใชกบคำาสงสแตก สำาหรบรจสเตอรตนทางหรอ SI (Source Index) รจสเตอร ปลายทางหรอ DI (Destination Index) จะใชกบคำาสงทเกยวกบสตรง และเบสพอยนเตอรหรอ BP (base pointer) รจสเตอรเหลานสามารถทจะนำามาใชเปนตวอางถง Physical address ไดดวยวธการตางๆ แสดงไดดงรปท 27.Suan Dusit Rajabhat University (Computer Science) 40

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

Suan Dusit Rajabhat University (Computer Science) 41

25. 25. รจสเตอรของซพย รจสเตอรของซพย 808680862 521. . . รจสเตอรกำาหนดเซกเมนต (Segment Register) ประกอบดวยรจสเตอรยอยม 4 ตว คอ CS (code segment), DS (data segment), SS (stack segment) และ ES (extra segment) ซงจะนำามาใชในหลกการแบบบลอกแอดเดรสของ 8086 หนวยความจำา (Memory) จะไดรบการจดสรรเปนสวนใหญ ๆ คอ code (หรอชดคำาสง), ขอมล (ตวเลข หรอตวอกษร) และสแตกสำาหรบการเกบคาแอดเดรสกลบคนจากโปรแกรมยอยเพอทจะปองกนการสบสน จงกำาหนดคาใหแยกกนไดซง 8086 จะมองลกษณะของหนวยความจำา โดยแบงหนวยความจำาเปนกลม ๆ ในรปแบบของ เซกเมนต ในหนงเซกเมนตจะชไดถง 64 กโลไบต โดยเซกเมนตรจสเตอรทงสตว จะแสดงแอดเดรสเรมตนของหนวยความจำาทจะตดตอดวย Suan Dusit Rajabhat University (Computer Science) 42

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

Suan Dusit Rajabhat University (Computer Science) 43

25. 25. รจสเตอรของซพย รจสเตอรของซพย 80868086เซกเมนตจะแสดงตำาแหนงเหมอนกบ

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

Suan Dusit Rajabhat University (Computer Science) 44

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

Suan Dusit Rajabhat University (Computer Science) 45

25. 25. รจสเตอรของซพย รจสเตอรของซพย 80868086เพอทจะทำาการตดตอกบขอมลหนงไบตหรอหนง

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

Suan Dusit Rajabhat University (Computer Science) 46

ตารางท 2.1 แสดงชนดของการอางองหนวยความจำาในเซกเมนตรจสเตอร

Suan Dusit Rajabhat University (Computer Science) 47

26. 26. การระบตำาแหนงในรจสเตอรการระบตำาแหนงในรจสเตอรการเขาถงขอมลในรจสเตอรนบวาเปนหวใจสำาคญ

ในการเขยนโปรแกรมควบคมการทำางานของไมโครโพรเซสเซอร 8086 สามารถ access เขาไปในสวนของโปรแกรม โดยใชคาในรจสเตอร โดย

CS + IP -> physical address (20 bits)

แสดงไดดงรปท 210

Suan Dusit Rajabhat University (Computer Science) 48

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

Suan Dusit Rajabhat University (Computer Science) 49

26. 26. การระบตำาแหนงในรจสเตอรการระบตำาแหนงในรจสเตอร ในการ Access เขาไปยงขอมล เพอนำามาใชในการทำางาน เรยกวา “addressing mode” ซงในภาษาแอสเซมบล ใชคำาสง MOV: format -- MOV destination, source เมอชดคำาสงนถก execute 8086 จะทำาการคดลอก word หรอ byte จากตำาแหนงตนทางไปยงจดหมายปลายทาง Addressing Mode ใชในการระบตำาแหนงของ operand ใน Memory ซงสามารถแบงวธการเขาถงหนวยความจำาไดดงน คอSuan Dusit Rajabhat University (Computer Science) 50

26. 26. การระบตำาแหนงในรจสเตอรการระบตำาแหนงในรจสเตอร2.6.1 Immediate Addressing Mode เปนวธการอยางงายในการกำาหนดแอดเดรสในรจสเตอร กลาวคอสามารถกำาหนด operand ซงเปนคาแอดเดรสใหกบชดคำาสงภาษาแอสเซมบลไดโดยตรง ตวอยางเชน ถาโปรแกรมตองการทจะใสคา 437B (Hex) ลงใน CX Register กสามารถใชคำาสง MOV CX, 437B (Hex) ไดโดยตรง

Suan Dusit Rajabhat University (Computer Science) 51

26. 26. การระบตำาแหนงในรจสเตอรการระบตำาแหนงในรจสเตอร2.6.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 กยงเปนไปไมไดSuan Dusit Rajabhat University (Computer Science) 52

26. 26. การระบตำาแหนงในรจสเตอรการระบตำาแหนงในรจสเตอร เนองจากถงแมวาขนาดของรจสเตอรจะสามารถรองรบขอมลได แต 8086 จะไมทราบวาผเขยนโปรแกรมตองการทจะนำาขอมลสำาเนาไปเกบไวในครงใดของรจสเตอร CX ในกรณเชนน โดยทวไป Assembler จะตรวจสอบพบ และจะบอกใหทราบวา Type error ดงนนการทจะคดลอกไบตจาก AL ไปเกบยงไบตสงของ CX จะใชคำาสง MOV CH, AL และหากตองการคดลอกไบตจาก AL ไปเกบยงไบตตำาของ CX จะใชคำาสง MOV CL, AL

Suan Dusit Rajabhat University (Computer Science) 53

26. 26. การระบตำาแหนงในรจสเตอรการระบตำาแหนงในรจสเตอร2.7 การเขาถงขอมลในหนวยความจำา (Addressing Data in Memory) ทผานมาไดกลาวถง Addressing Mode ทจะระบตำาแหนงของ operand ในหนวยความจำา ในกรณทตองการทจะเขาถงขอมลในหนวยความจำา 8086 จะตองสราง physical address (20 bits) ซงสามารถทำาไดโดยการรวม Effective address (16 bits) เขากบ Segment Base Address (16 bits) แสดงไดดงรปท 211.

Suan Dusit Rajabhat University (Computer Science) 54

รปท 211. แสดงการบวกคาในรจสเตอร DS กบ EA เพอหา Physical Address

Suan Dusit Rajabhat University (Computer Science) 55

วธการเขาถงขอมลในหนวยความจำาในไมโครโพรเซสเซอร 80862.7.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 จะมการทำางานแสดงไดดงรปท 212

Suan Dusit Rajabhat University (Computer Science) 56

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

Suan Dusit Rajabhat University (Computer Science) 57

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

Suan Dusit Rajabhat University (Computer Science) 58

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

Suan Dusit Rajabhat University (Computer Science) 59

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

Suan Dusit Rajabhat University (Computer Science) 60

วธการเขาถงขอมลในหนวยความจำาในไมโครโพรเซสเซอร 8086 ดงนนผอนจะไมสามารถทราบไดวาโปรแกรมนนตองการใชทำาอะไรแน การแกปญหาอยางหนงคอการใชรจสเตอรเพมขนมาจากเดมอก 1 ตว เรยกวา “Index Register” โดยจะทำาหนาทในการจดเกบคาดชนแอดเดรสของชดขอมลเพอใหสะดวกตอการเรยกใช ในปจจบนไดมการพฒนารจสเตอรชนดนใหมขดความสามารถในการเพม หรอลดคาลงครงละ 1เพอใหสามารถจดการกบชดขอมลทมโครงสรางการจดเกบเรยงเปนลำาดบไดโดยอตโนมต จงทำาใหมความสามารถในการ Address โดยอตโนมตเรยกวา “autoindexing”

Suan Dusit Rajabhat University (Computer Science) 61

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

Suan Dusit Rajabhat University (Computer Science) 62

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

Suan Dusit Rajabhat University (Computer Science) 63

The EndLesson 2

Suan Dusit Rajabhat University (Computer Science) 64