CS344-321 Assembly Language Programming Period 5
สถาปัตยกรรมของเครื่องไอบีเอ็มพีซี ADDRESS BUS นาฬิกา ซีพียู DATA BUS CONTROL BUS หน่วยความจำหลัก หน่วยรับเข้า/ส่งออก
ตารางแสดงขนาดของ bus และ หน่วยความจำ micro processor data bus width address bus width memory size 8086 16 20 1M 8088 8 20 1M 80286 16 24 16M 80386SX 16 24 16M 80386DX 32 32 4G 80486 32 32 4G Pentium 64 32 4G Pentium Pro 64 36 64G
Intel 8086/8088 Registers 15 8 7 0 15 0 AX AH AL Accumulator CS Code Segment BX BH BL Base DS Data Segment CX CH CL Count SS Stack Segment DX DH DL Data ES Extra Segment 15 0 15 0 BP Base Pointer IP Instruction Pointer SP Stack Pointer 15 0 SI Source Index FLAGS Status Word DI Destination Index
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF เรจิสเตอร์ FLAGS - CF (Carry Flag) การคำนวณมีการทด - OF (Overflow Flag) การคำนวณล้น - ZF (Zero Flag) ผลลัพธ์เป็นศูนย์ หรือการเปรียบเทียบเท่ากัน - SF (Sign Flag) ผลลัพธ์ (หรือการเปรียบเทียบ) เป็นลบ - PF (Parity Flag) มีบิตที่เป็น 1 จำนวนคู่ - AF (Auxiliary carry Flag) การคำนวณเลขฐาน 10 ด้วยรหัสเลขฐาน 2 (BCD-Binary-Code Decimal) ต้องมีการปรับค่าให้ถูกต้อง - DF (Direction Flag) ควบคุมทิศทางการเคลื่อนย้ายข้อมูล - IF (Interrupt Flag) ควบคุมการขัดจังหวะ - TF (Trap Flag) ควบคุมการปฏิบัติการของคำสั่งทีละคำสั่ง มักใช้ในโปรแกรม DEBUG
วิธีการคำนวณเลขที่อยู่เชิงกายภาพ 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 เซกเมนต์ 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ออฟเซต 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 เลขที่อยู่เชิงกายภาพ
32-bit names 16-bit names 8-bit names 31 15 8 7 0 15 0 EAX AX AH AL Accumulator CS Code Segment EBX BX BH BL Base DS Data Segment ECX CX CH CL Count SS Stack Segment EDX DX DH DL Data ES Extra Segment 31 15 0 FS EBP BP Base Pointer GS ESP SP Stack Pointer ESI SI Source Index EDI DI Destination Index 31 15 0 EIP IP Instruction pointer EFLAGS FLAGS Flags
DOS application program DOS service ROM BIOS Service I/O port or memory map I/O MS-DOS layer service
FFFFF 1024 K cold boot FFFF0 ROM start here 768 K 128K monochrome and graphics/ display video buffer (RAM) 640 K transient portion of COMMAND.COM Memory available for user programs resident part of COMMAND.COM DOS kernel, Device Drivers, etc. 00400 BIOS and DOS Data Area 1K Interrupt vectors
The boot Process เมื่อเริ่มเปิดเครื่อง จะเกิดขบวนการ “cold boot” ดังนี้ ซีพียูเข้าสู่สถานะ reset จากนั้นเริ่มล้างหน่วยความจำให้มีค่าเป็น 0 ตรวจสอบความถูกต้องของหน่วยความจำ (parity check) แล้วกำหนดให้ เรจิสเตอร์ CS มีค่าเท่ากับ FFFFH และเรจิสเตอร์ IP มีค่าเท่ากับ 0 ซึ่งเป็นตำแหน่งของคำสั่งแรกที่จะกระทำการ ตำแหน่งนี้จะอยู่ใน ROM BIOS จากนั้น BIOS จะตรวจสอบอุปกรณ์ต่าง ๆ และ initialize อุปกรณ์ที่ติดตั้งเหล่านั้น จากนั้นจะสร้าง ตาราง BIOS interrupt service ที่บริเวณ interrupt vector และ BIOS data เริ่มตั้งแต่ตำแหน่ง 400H จากนั้นไปตรวจสอบว่าจานแม่เหล็กมี DOS หรือไม่ ถ้ามีจะอ่านข้อมูลใน boot sector เข้ามายังหน่วยความจำ ข้อมูลดังกล่าว คือ bootstrap loader ซึ่งทำหน้าที่บรรจุระบบปฏิบัติการ DOS จากจานแม่เหล็กเข้าสู่หน่วยความจำ RAM แฟ้มข้อมูล 3 แฟ้ม คือ IBMBIO.COM (หรือ IO.SYS), IBMDOS.COM(หรือ MSDOS.SYS), และ COMMAND.COM จะถูกบรรจุลงหน่วยความจำ จากนั้นระบบปฏิบัติการ DOS จะอ่าน config.sys เพื่อติดตั้ง driver เพิ่ม และอ่านแฟ้ม autoexec.bat และปฏิบัติตามคำสั่งในนั้น จากนั้นขึ้น prompt เพื่อรอรับคำสั่ง