CS344-321 Assembly Language Programming

Download Report

Transcript CS344-321 Assembly Language Programming

CS344-321 Assembly Language Programming
Period 5
สถาปัตยกรรมของเครื่องไอบีเอ็มพีซี
นาฬิกา
ADDRESS BUS
ซีพียู
DATA BUS
CONTROL BUS
หน่วยความจาหลัก หน่วยรับเข้ า/ส่งออก
ตารางแสดงขนาดของ bus และ หน่ วยความจา
micro processor
8086
8088
80286
80386SX
80386DX
80486
Pentium
Pentium Pro
data bus width
16
8
16
16
32
32
64
64
address bus width memory size
20
1M
20
1M
24
16M
24
16M
32
4G
32
4G
32
4G
36
64G
Intel 8086/8088 Registers
15
AX
BX
CX
DX
8 7
AH
BH
CH
DH
0
AL
BL
CL
DL
15
Accumulator
Base
Count
Data
0
BP
SP
SI
DI
15
0
CS
DS
SS
ES
15
Code Segment
Data Segment
Stack Segment
Extra Segment
0
Base Pointer
IP
Instruction Pointer
Stack Pointer 15
0
Source Index
FLAGS Status Word
Destination Index
15 14 13 12 11 10 9 8 7 6
OF DF IF TF SF ZF
5
4
AF
3
2
PF
1
0
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
31
EAX
EBX
ECX
EDX
31
EBP
ESP
ESI
EDI
31
EIP
EFLAGS
16-bit names 8-bit names
15 8 7 0
15
0
AX
AH AL
Accumulator
CS
BX
BH BL
Base
DS
CX
CH CL
Count
SS
DX
DH DL
Data
ES
15
0
FS
BP
Base Pointer
GS
SP
Stack Pointer
SI
Source Index
DI
Destination Index
15
0
IP
Instruction pointer
FLAGS
Flags
Code Segment
Data Segment
Stack Segment
Extra Segment
DOS
application program
DOS service
ROM BIOS Service
I/O port or memory map I/O
MS-DOS layer service
cold boot
start here
FFFFF
FFFF0
1024 K
ROM
768 K
128K monochrome
and graphics/
display video
buffer (RAM)
640 K
transient portion of COMMAND.COM
Memory
available for
user programs
00400
resident part of COMMAND.COM
DOS kernel,
Device Drivers, etc.
BIOS and DOS Data Area
Interrupt vectors
1K
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 เพื่อรอรับคาสัง่