280 likes | 516 Views
ระบบโครงสร้างคอมพิวเตอร์. ประกอบด้วย 3 ส่วน หน่วยประมวลผลกลาง ( Central Processing Unit : CPU ) หน่วยความจำ ( Memory ) อุปกรณ์อินพุต เอาต์พุต ( I/O Devices ).
E N D
ระบบโครงสร้างคอมพิวเตอร์ระบบโครงสร้างคอมพิวเตอร์ ประกอบด้วย 3 ส่วน • หน่วยประมวลผลกลาง (Central Processing Unit : CPU) • หน่วยความจำ (Memory) • อุปกรณ์อินพุต เอาต์พุต (I/O Devices) • การติดต่อและทำงานร่วมกันต้องอาศัยเส้นทางในการส่งผ่านข้อมูลผ่านช่องทางในการส่งข้อมูล หรือตำแหน่งที่อยู่ หรือการควบคุม เรียกว่า บัส (BUS) มี 3 ประเภท • แอดเดรสบัส (Address Bus) • บัสข้อมูล (Data Bus) • บัสควบคุม (Control Bus)
รูปแบบการทำงานคอมพิวเตอร์รูปแบบการทำงานคอมพิวเตอร์ Memory Unit • Input Unit • เป็นการเตรียมคำสั่ง (instructions) และข้อมูลเข้าสู่ระบบ Input Unit Arithemtic and Logical Unit (ALU) Output Unit Control Unit
รูปแบบการทำงานคอมพิวเตอร์ (ต่อ) Memory Unit • Output Unit • ได้รับผลลัพธ์จากระบบ Input Unit Arithemtic and Logical Unit (ALU) Output Unit Control Unit
รูปแบบการทำงานคอมพิวเตอร์ (ต่อ) Memory Unit • หน่วยความจำ • ทำการจัดเก็บ ชุดคำสั่ง และ ข้อมูล Input Unit Arithemtic and Logical Unit (ALU) Output Unit Control Unit
รูปแบบการทำงานคอมพิวเตอร์ (ต่อ) Memory Unit • ALU • ประมวลผลข้อมูล Input Unit Arithemtic and Logical Unit (ALU) Output Unit Control Unit
รูปแบบการทำงานคอมพิวเตอร์ (ต่อ) Memory Unit • Control Unit • ประมวลผลโดยตรง Input Unit Arithemtic and Logical Unit (ALU) Output Unit Control Unit
รูปแบบการทำงานคอมพิวเตอร์ (ต่อ) Memory Unit • CPU • เป็นส่วนที่ ALU และส่วนควบคุม ( Control Unit )ทำงานร่วมกัน CPU Input Unit Arithemtic and Logical Unit (ALU) Output Unit Control Unit
CPU (ALU, Registers, & Control) Memory Input & Output (I/O) Data Bus Address Bus System Bus Control Bus รูปแบบการทำงานบัสระบบ(System Bus)
CPU (ALU, Registers, & Control) Memory Input & Output (I/O) Data Bus Address Bus System Bus Control Bus รูปแบบการทำงานบัสระบบ(System Bus) • Data Bus • เป็นส่วนที่นำข้อมูล-ข่าวสาร เพื่อจะส่งต่อไป • บางครั้ง จะนำข้อมูลเข้า และข้อมูลออกจากบัสไปใช้งาน
CPU (ALU, Registers, & Control) Memory Input & Output (I/O) Data Bus Address Bus System Bus Control Bus รูปแบบการทำงานบัสระบบ(System Bus) • Address Bus • จะเป็นตัวที่บ่งบอกว่าข้อมูลที่กำลังส่งอยู่ที่ไหน • “หน่วยความจำ” เป็นตำแหน่งที่ระบุว่า จะอ่าน/เขียนที่ตำแหน่งไหน
รูปแบบการทำงานบัสระบบ(System Bus) CPU (ALU, Registers, & Control) Memory Input & Output (I/O) Data Bus Address Bus System Bus Control Bus • Control Bus • เป็นส่วนที่อธิบายว่าข้อมูลข่าวสารที่จะส่ง นั้นมีลักษณะอย่างไร(Describes aspects of how the information is being sent, & in what manner)
Flags AH AL BH BL CH CL DH DL PSW A C E L B D H DI SI BP SP IP SP PC โครงสร้างของรีจีสเตอร์ 8 bits และ 16 bits
Flags AH AL BH BL CH CL DH DL แอคคิวมูลเตอร์ ( Accumulator) หรือ Primary Accumulator เบสพ้อย์เตอร์ (Base Pointer) หรือ Accumulator and Base Register เคานต์รีจีเตอร์ (Count Register) หรือ Accumulator and Counter รีจีสเตอร์ข้อมูล (Data Register) หรือ Accumulator and I/O Address ทั้งหมดเรียกว่า รีจีสเตอร์ทั่วไป(General Register) DI SI BP SP IP รีจีสเตอร์ปลายทาง (Destination Index) รีจีสเตอร์ต้นทาง(Source Index) สแต็กเตอร์เบสพ้อยเตอร์(Stask Base Pointer) พ้อยต์เตอร์ (Instruction Pointer) Index Register โครงสร้างของรีจีสเตอร์ 16 bits และ ความหมาย
CS DS SS ES โค้ดเซกเมนต์ ( Code Segment ) ดาต้าเซกเมนต์(Data Segment) สแต็กเซกเมนต์ (Stack Segment) เอ็กซตร้าเมนต์ (Extra Segment) Segment Register โครงสร้างของรีจีสเตอร์ 16 bits และ ความหมาย (ต่อ) Segment ( เซกเมนต์) : คือ Block ของหน่วยความจำที่เริมต้น ณ. ตำแหน่งที่คงที่ สามารถหาได้ จากค่าของ เซกเมนต์รีจีสเตอร์ (Segment Register) 8086 มี Segment Register อยู่ 4 ตัว ซึ่งสามารถชี้ไปยังตำแหน่งใดๆ ในแอดเดรส 1 MB ก็ได้
Tiny Small DS SS ES CS Code +Data+Stack CS DS SS ES Code Data + Stack Large CS SS STACK CODE DATA DS ES
1. ใช้โปรแกรมภาษา แอสแซมบลี้ คือ TASM(Turbo Assembly) หรือ MASM (Macro Assembly ) โดยทั่วไปเขียนด้วยวิธีนี้ 2. ใช้โปรแกรม Debug(ดีบัก) แต่ดีบักไม่ใช่โปรแกรม Assembler แต่สามารถเขียนโปรแกรมภาษา แอสแซมบลี้ สั้นๆ ได้ ถ้าเป็นโปรแกรมยาวๆไม่ควรใช้
คำสั่งที่ใช้ในการดีบัก (Debug) • วิธีเข้าสู่การดีบัก (Debug) • 1.ออกไปที่ Dos Prompt จะได้ C:\> • 2.พิมพ์คำว่า Debug จะได้สัญลักษณ์ “-” • Eคือ Enter ตามด้วยตำแหน่งที่จะใส่ข้อมูลลงไป (ป้อนข้อมูลขนาด 1 byte หรือ หลายไบต์) เช่น E100 หมายถึง การใส่ข้อมูลในตำแหน่ง 100h (ตำแหน่ง Offset) • Aคือ คำสั่ง Assembler การป้อนข้อมูลเข้าไปในหน่วยความจำ โดยการใช้คำสั่ง (Mnemonic Symbols)ไม่ต้องป้อนตัวเลขฐาน 16 เหมือนกับคำสั่ง E เช่น A100 หลังจากนั้นให้ใส่คำสั่งไป ตัวอย่าง ADD AX,BX • Uคือ คำสั่ง Unassembler เป็นคำสั่งที่ทำการแปลงค่าของคำสั่งนั้นเป็นโปรแกรมกลับคืนมาให้เราดู เมื่อนำข้อมูลเข้าไปแบบ A หรือ E จะทำการแปลงเป็นสัญลักษณ์ Mnemonic ไปเป็นเลขฐาน 16 แต่คำสั่ง U จะทำการแปลงเลขฐาน 16 เป็นรหัส Mnemonic
รูปแบบ –U จะเป็นการดูโปรแกรมทั้ง Segment • U ตำแหน่ง Offset เริ่มต้น, ตำแหน่ง Offset สุดท้าย หมายถึงการดูโปรแกรมเป็นช่วง • Gคือ คำสั่ง GO เป็นการประมวลผลคำสั่งที่ป้อนเข้าไปทั้งหมด เช่น G • Tคือ คำสั่ง Trace เป็นคำสั่งที่ใช้ในการประมวลผลครางละ 1 คำสั่ง เช่น T • Dคือ Dump Address เป็นการดูตำแหน่งการเก็บข้อมูลนั้น ขึ้นมาปรากฏบนหน้าจอ เช่น D ตามด้วยค่าของตำแหน่ง ตัวอย่างเช่น D100 เป็นการดูข้อมูลตัวเลขฐาน 16 ที่จัดเก็บในเครื่องในตำแหน่ง Offset 100h
Register (รีจีสเตอร์) • Register (รีจีสเตอร์)คือ หน่วยความจำชนิดซึ่งแตกต่างจาก • ROM(Random Only Memory: เป็นหน่วยความจำที่อยู่ติดกับแผ่นวงจรหลักของเครื่องไม่สามารถเพิ่มขยายขนาดได้) และ RAM (Random Access Memory: เป็นหน่วยความจำที่สามารถเพิ่มขยายขนาดได้) ซึ่งเป็นเพียงที่พักข้อมูลหรือคอยเก็บข้อมูลไว้เท่านั้นเอง แต่ รีจีสเตอร์ นั้นสามารถใช้ในการคำนวณนั้นไปเก็บไว้ เป็นหน่วยความจำที่อยู่ใน ไมโครโปรเซสเซอร์ ถ้าเป็นของ 8088 จะมีขนาด 16 บิต ดังนั้น รีจีสเตอร์จะมีขนาด 16 บิตด้วย
การเขียนคำสั่งใน ดีบัก (Debug) • ตัวอย่าง การทำงานของการดีบัก • -A100คือคำสั่ง Assembler ที่ตำแหน่งที่ 100 h ซึ่งเป็นการเขียนโปรแกรมนั้นจะต้องเขียนตั้งแต่ตำแหน่งนี้ขึ้นไปไม่สามารถเขียนในตำแหน่งที่ต่ำกว่านี้ได้เนื่องจากเป็นตำแหน่งซึ่งเป็นพื้นที่ของ Rom-Bios,videoRam, ตาราง Interrupt เป็นส่วนที่ห้ามเขียนทับเพราะ Dos และเครื่องต้องอาศัยหน่วยความจำส่วนนี้ในการทำงาน • ตัวอย่าง คำสั่งในการบวก • -A100 • 08F1 :0100 ADD AX ,BX ; หมายเหตุ จะต้องมีการกำหนดให้กับ รีจีสเตอร์ AX และ • BX ก่อน • 08F1:0102 • -RB X ; เป็นการกำหนดค่าลงไปใน รีจีสเตอร์ BX • BX 0000 • : 45BF ; ใส่ค่า 1234 ฐาน 16 ลงไป
- E 100 3756 : 0100 E4.01; ใส่ค่า 01 ลงไป - E 101 3756 : 0101 85.D8 ; ใส่ค่า D8 ลงไป
รูปแบบ LOOP ตำแหน่งที่ต้องการให้วนรอบ (ตำแหน่ง OFFSET) คำสั่งในการวนรอบนี้จะเกี่ยวข้องกับ รีจีสเตอร์ CX (Counter Registe )จะต้องมีการ กำหนดค่าในรีจีสเตอร์นี้ขึ้นมาก่อนว่ามีจำนวนครั้งในการวนรอบกี่ครั้ง เมื่อใดที่ทำการ RUN หรือ Excute คำสั่ง LOOP ก็จะลดค่าของ CX ลงครั้งละ 1 ๆไปเรื่อย จนกระทั่ง CX มีค่า =0 ก็จะทำงานตามคำสั่งถัดไปต่อจาก LOOP ตัวอย่าง บันทึกไว้ในแฟ้ม ASC2. Com -A100 • Segment : 0100 MOV CX , 100 ; กำหนดจำนวนครั้งในการนับที่ CX = 256ครั้ง • Segment :0103 MOV DL , 0 ;ใส่ค่า แอสกี้ตัวแรก 0 ไว้ในรีจีสเตอร์ DL • Segment :0105 MOV AH ,02;กำหนด Function การแสดงผลออกจอภาพคือ funcion2 • Segment :0107 INT 21 ; เรียกใช้ Interrupt จาก Dos (เพื่อค่า ฟังก์ชั่นมาใช้งาน) • Segment :0109 INC DL ; เพิ่มค่า แอสกี้ขึ้นอีก 1 (ที่กำหนดไว้ในรีจีสเตอร์ DL )
Segment :010B LOOP 105 ; กระโดดไปที่ตำแหน่ง 105 เพื่อแสดงค่าของรหัสแอสกี้ตัว ถัดไป (รวมทั้งการลดค่าใน Register CX ลงครั้ง ละ 1 จนกระทั่ง CX = 0) Segment : 010D INT 20 ; จบโปรแกรม Segment : 010F ; Enter -G ; ทดสอบโปรแกรม(หากมีปัญหาที่จุดนี้ ไม่ต้องใช้ คำสั่งนี้) -RCX ; กำหนดเนื้อที่ในการเก็บแฟ้มนี้ : OOOF -W ; บันทึกเก็บไว้ -Q ; ออกจาก ดีบัก *** หมายเหตุ ค่า CX = 100h มีค่า = 1x162= 256 ครั้ง และเมื่อพิมพ์ค่าของรหัสแอสกี้ครบ 256 ตัวโปรแกรมก็จะจบการทำงาน ไม่เหมือนโปรแกรมก่อนหน้านี้ซึ่งต้องใช้การกด Ctrl + Break ****