Bài ging k thut vi x lý - GV. Ngô Công Thng Chương 2 B vi x lý Intel 8088
- 10 -
CHƯƠNG 2 B VI X LÝ INTEL 8088
S dĩ chúng ta chn b vi x lý 8088 ca Intel để nghiên cu là vì b vi x lý này khá đơn
gin nên vic hiu nó là tương đối d đối vi nhng người mi bt đầu thâm nhp vào lĩnh
vc này. Lý do th hai là nh tính kế tha ca các sn phm trong h vi x lý 80x86 nên
các chương trình viết cho 8088 vn có th chy được trên các h vi x lý tiên tiến sau này. Lý
do th ba là các h vi x lý ca các hãng khác nhau tuy có khác nhau nhưng xét cho cùng có
khá nhiu đim ch yếu rt ging nhau. Vì vy, mt khi đã nm được các vn đề k thut ca
8086 ta s có cơ s để tìm hiu các b vi x lý khác cùng h 80x86 hoc các b vi x lý ca
các hãng khác.
I - CU TRÚC BÊN TRONG VÀ NGUYÊN LÝ HOT ĐỘNG CA B VI X LÝ 8088
1. Sơ đồ khi ca b vi x lý 8088
EU (Execution Unit) BIU (Bus Interface Unit)
AX
BX
CX
DX
SP
BP
SI
DI
CS
DS
SS
ES
IP
Logic điu
khin bus
ALU
Các thanh ghi tm thi
Thanh ghi c
Khi điu
khin EU
Các thanh
ghi đa năng
Các thanh
ghi con tr
và ch s
Các thanh
ghi đon
và con tr
lnh
Bus d liu ALU (16 bit)
Bus địa ch (20 bit)
Bus d liu (8 bit)
Bus địa ch (20 bit)
Bus
ngoài
Hàng đợi lnh
(4 byte)
8 bit
d liu
Bài ging k thut vi x lý - GV. Ngô Công Thng Chương 2 B vi x lý Intel 8088
- 11 -
Nhìn vài sơ đồ ta thy, bên trong CPU 8088 có hai khi chính: khi phi ghép bus (Bus
Interface Unit, BIU) và khi thc hin lnh (Execution Unit, EU). Trong khi BIU có các
thanh ghi đon và thanh ghi con tr lnh IP, khi logic điu khin bus, b cng, bus d liu 8
bit và bus địa ch 20 bit. Trong khi EU có các thanh ghi đa năng, các thanh ghi con tr và ch
s, khi tính toán s hc và logic ALU, khi điu khin CU, bus d liu 16 bit ca ALU, bus
tín hiu điu khin. Vic chia CPU thành hai phn làm vic đồng thi có liên h vi nhau qua
hàng đợi lnh làm tăng tc độ đáng k ca CPU.
2. Nguyên lý hot động
BIU có nhim v đưa ra địa ch, đọc mã lnh t b nh, đọc/ghi d liu t/vào cng hoc
b nh. Bên trong BIU còn có b nh đệm lnh (còn gi là hàng đợi lnh) vi dung lượng 4
byte dùng để cha các lnh đã đọc được nm sn ch EU x lý. Đây là mt cu trúc mi được
cy vào b vi x lý 8086/88 để thc hin cơ chế x lý liên tc dòng mã lnh (instruction
pipelining). Pipeline là mt cơ chế đã được ng dng t nhng năm 60 trong các máy tính
ln.
EU có nhim v cung cp địa ch cho BIU để khi này đọc lnh và d liu, còn bn thân
nó thì gii mã lnh và thc hin lnh. Mã lnh đọc vào t b nh được đưa đến đầu vào ca
b gii mã (nm trong khi điu khin CU), các thông tin thu được t đầu ra ca b gii mã s
được đưa đến mch to xung điu khin để to ra các dãy xung khác nhau (tùy tng lnh) điu
khin hot động ca các b phn bên trong và bên ngoài CPU. Trong EU còn có khi tính
toán s hc và logic ALU dùng để thc hin các thao tác khác nhau vi các toán hng ca
lnh.
II - CÁC THANH GHI VÀ CÁC CH ĐỘ ĐỊA CH
1. Các thanh ghi
Bên trong CPU có mt s ô nh được gi là thanh ghi (register). Các thanh ghi có độ dài
16 bit và được chia thành: thanh ghi đon, thanh ghi đa năng, thanh ghi con tr và ch s,
thanh ghi c.
a) Thanh ghi đon
B vi x lý 8086/88 làm vic chế độ thc, vi 20 bit địa ch b vi x lý này có kh năng
đánh địa ch cho 220 = 1 M ô nh = 1 MB. Trong 1 MB b nh người ta chia thành các đon
64 KB khác nhau để:
- cha mã chương trình,
- cha d liu và kết qu trung gian ca chương trình và
- to ra mt đon nh đặc bit gi là ngăn xếp (STACK) dùng vào vic qun lý các thông
s ca vi x lý khi gi CTC con hoc tr v t CTC.
Để qun lý các đon nh trên, b vi x lý 8088 có 4 thanh ghi đon xác định địa ch bt
đầu ca 4 đon nh 64 KB:
+ CS (Code Segment): thanh ghi đon mã, xác định địa ch bt đầu ca đon nh cha
mã chương trình.
+ DS (Data Segment): thanh ghi đon d liu, xác định địa ch bt đầu ca đon nh
cha hu hết d liu ca chương trình.
+ ES (Extra Segment): thanh ghi đon d liu ph, xác định địa ch bt đầu ca đon nh
cha d liu ph. Đon nhy được các lnh v chui s dng để ch d liu đích.
+ SS (Stack Segment): thanh ghi đon ngăn xếp, xác định địa ch bt đầu ca đon nh
ngăn xếp.
Ni dung ca các thanh ghi đon xác định địa ch ca ô nh nm đầu đon tương ng. Vì
địa ch ca ô nh là 20 bit mà các thanh ghi đon ch có 16 bit nên b vi x lý phi thêm 0H
vào bên phi ni dung ca thanh ghi đon đểđịa ch 20 bit ca ô nh nm đầu đon. Địa
ch này gi là địa ch cơ s hay địa ch đon. Địa ch ca các ô nh khác trong đon được tính
bng cách cng thêm vào địa ch đon mt giá tr gi là độ lnh (offset) hay địa ch lch. Địa
Bài ging k thut vi x lý - GV. Ngô Công Thng Chương 2 B vi x lý Intel 8088
- 12 -
ch lch có độ dài 16 bit và thường đặt trong các thanh ghi 16 bit khác đóng vai trò thanh ghi
lch. C th, để xác định địa ch vt lý 20 bit ca mt ô nh nào đó trong mt đon nh bt
k, CPU 8088 phi dùng đến hai thanh ghi 16 bit: mt thanh ghi đon và mt thanh ghi lch.
T ni dung ca hai thanh ghi này to ra địa ch vt lý theo công thc sau:
Địa ch vt lý = Ni dung thanh ghi đon x 24 + Ni dung thanh ghi lch
= Địa ch đon + Địa ch lch
Vic dùng hai thanh ghi để ghi nh thông tin v địa ch to ra mt loi địa ch gi là địa ch
logic, được ký hiu như sau:
Thanh ghi đon:Thanh ghi lch (địa ch lch)
Segment:Offset
Segment:Offset là địa ch logic vì nó tn ti dưới dng giá tr ca các thanh ghi, và khi cn
truy nhp ô nh nào thì nó phi được đổi ra địa ch vt lý ca ô nh đó.
Địa ch logic có tính đa trng vi mt địa ch vt lý có rt nhiu địa ch logic khác
nhau. Điu này cho 8086/88 linh hot trong vic định địa ch. Ví d, địa ch vt lý 12345H có
th to ra t các địa ch logic sau:
1000H:2345H
1200H:0345H
1004H:2305H
0300H:E345H
……
Vì các thanh ghi đon được thêm 0H vào bên phi để xác định địa ch bt đầu ca đon nên
các đon ch có th bt đầu ti các ranh gii 16 byte. Hơn na, vì các đon có độ dài 64 KB
nên khi biết địa ch bt đầu ca đon thì ta cũng biết được địa ch kết thúc đon bng cách
cng thêm vào địa ch bt đầu đon FFFFH.
Ví d: Mt thanh ghi đon có địa ch là 1000H => địa ch bt đầu đon là 10000Hđịa
ch kết thúc đon là 1FFFFH.
b) Các thanh ghi đa năng
B vi x lý 8088 có 4 thanh ghi đa năng 16 bit: AX, BX, CX, DX. Khi cn cha d liu 8
bit thì mi thanh nghi này có th tách ra thành hai thanh ghi 8 bit cao và 8 bit thp, đó là các
cp AH và AL, BH và BL, CH và CL, DH và DL. Các thanh ghi đa năng có th cha các loi
d liu khác nhau song chúng cũng có nhng chc năng chuyên dng được dùng đến trong
nhng công vic đặc bit. Vì vy các thanh ghi đa năng này được gán cho nhng cái tên nói
lên chc năng chuyên dng ca chúng.
00000H
10000H
1FFFFH
1F000H
1000H
Thanh ghi đon
Offset = F000H
FFFFFH
Bài ging k thut vi x lý - GV. Ngô Công Thng Chương 2 B vi x lý Intel 8088
- 13 -
- AX (Accumulator): thanh ghi cha, thường dùng để cha kết qu ca các thao tác chng
hn như lnh nhân, chia và mt s lnh hiu chnh d liu.
- BX (Base): thanh ghi cơ s, thường cha địa ch lch ca ô nh trong đon DS.
- CX (Count): thanh ghi đếm, CX thường cha s ln lp trong các lnh lp, CL thường
cha s ln dch hoc quay trong lnh dch và quay thanh ghi.
- DX (Data): thanh ghi d liu, DX cùng vi AX tham gia vào phép nhân hoc chia các s
16 bit. DX còn dùng để cha địa ch ca các cng vào/ra trong các lnh vào ra d liu trc
tiếp.
c) Thanh ghi con tr và ch s
B vi x lý 8088 có 3 thanh ghi con tr (IP, BP, SP) và 2 thanh ghi ch s (SI, DI). Các
thanh ghi này ngm định đưc s dng làm các thanh ghi lch cho các đon tương ng. C
th:
- IP (Instruction Pointer): thanh ghi con tr lnh, IP luôn tr vào lnh tiếp theo s được
thc hin nm trong đon mã CS. Địa ch ca lnh này là CS:IP
- BP (Base Pointer): con tr cơ s, BP luôn tr vào d liu nm trong đon ngăn xếp. Địa
ch logic ca ô nh ngăn xếp do BP tr ti là SS:BP
- SP (Stack Ponter): con tr ngăn xếp, SP luôn tr vào đỉnh hin thi ca ngăn xếp. Địa ch
logic ca đỉnh ngăn xếp là SS:SP
- SI (Source Index): ch s ngun, SI tr vào d liu trong đon d liu DS. Địa ch logic
ca ô nh do SI tr ti là DS:SI
- DI (Destinaton Index): ch s đích, DI tr vào d liu trong đon d liu DS. Địa ch
logic ca ô nh do DI tr ti là DS:DI
Riêng trong các lnh v chui thì ES:DI luôn ng vi địa ch ca mt phn t thuc chui
đích, DS:SI luôn ng vi địa ch ca mt phn t thuc chui ngun.
Bng tóm tt s kết hp ngm định gia thanh ghi đon và thanh ghi lch:
Thanh ghi đon Thanh ghi lch Địa ch
CS IP Địa ch lnh sp thc hin
DS BX, DI, SI Địa ch trong đon d liu
SS SP hoc BP Địa ch trong đon ngăn xếp
ES DI Địa ch chui đích
d) Thanh ghi c (Flag Register)
Bên trong b vi x lý 8088 có mt thanh ghi đặc bit gi là thanh ghi c hay thanh ghi
trng thái. Mi bit ca thanh ghi này được dùng để phn ánh mt trng thái nht định ca kết
qu phép toán do ALU thc hin hoc mt trng thái hot động ca CPU. Thanh ghi c 16
bit nhưng ch dùng hết 9 bit làm bit c.
Các bit c chia thành hai loi:
* Các c trng thái: có 6 c trng thái là C, P, A, Z, S và O. Các c trng thái này được
thiết lp bng 1 hoc xóa bng 0 sau hu hết các lnh toán hc và logic.
C (Carry): c nh, C = 1 khi c nh hoc mượn.
P (Parity): c chn l, P = 1 khi tng s bit 1 trong kết qu chn, P = 0 khi tng s bit
1 trong kết qu là l.
A (Auxiliary): c nh ph, A = 1 khi có nh hoc mượn t mt s BCD thp sang mt
s BCD cao.
C P AZSTIDO
0 1 2 3456789101112 13 14 15
Bài ging k thut vi x lý - GV. Ngô Công Thng Chương 2 B vi x lý Intel 8088
- 14 -
Z (Zero): c rng, Z = 1 khi kết qu ca phép tính s hc bng 0, Z = 0 khi kết qu ca
phép tính s hc khác 0.
S (Sign): c du, S = 1 kết qu âm.
O (Overflow): c tràn, O = 1 khi kết qu vt ra ngoài gii hn biu din dành cho nó.
* Các c điu khin: có 3 c T, I, D. Các c này được thiết lp bng 1 hoc xóa bng 0
thông qua các lnh để điu khin chế độ làm vic ca b vi x lý.
T (Trap): c by, T = 1 t b vi xlàm vic chế độ chy tng lnh.
I (Interrupt): c ngt, I = 1 thì b vi x lý cho phép các yêu cu ngt được tác động. C
này được thiết lp bng lnh STI và xóa bng lnh CLI.
D (Direction): c hướng, D = 1 thì b vi x lý làm vic vi chui ký t theo th t t
phi sang trái.
2. Cách mã hóa lnh ca b vi x lý 8088
Các lnh ca b vi xđược ghi bng các ký t dưới dng gi nh (mnemonic) để người
s dng d nhn biết. Tuy nhiên đối vi bn thân b vi x lý thì các lnh cho nó được mã hoá
dưới dng các s 0 và 1 (còn gi là mã máy), vì đây là dng biu din thông tin duy nht mà
máy hiu được. Bi vy các lnh dưới dng các ký t gi nh phi được dch ra mã máy. Vic
dch này được thc hin bng các chương trình dch hp ng như MASM, TASM.
Vì lnh cho b vi xđược cho dưới dng mã máy nên sau khi nhn lnh b vi x lý phi
thc hin gii mã lnh ri sau đó mi thc hin lnh. Mt lnh vi x lý có thi mt vài byte
tu theo b vi x lý. Đối vi b vi x lý 8088 mt lnh có độ dài t 1 - 6 byte. Ví d, lnh
MOV dng mã máy cn ít nht là 2 byte, trong đó 6 bit ca byte đầu dùng để cha mã lnh.
Ví d: Dng mã máy ca lnh MOV
Nói chung mt lnh ca b vi x lý gm 2 phn: mã lnh và địa ch ca toán hng.
3. Các chế độ địa ch d liu
Chế độ địa ch (Addressing mode) là cách để CPU tìm thy toán hng cho các lnh ca nó.
Để viết được chương trình cho CPU ta phi nm vng các chế độ địa ch các lnh ca
s dng. Các chế độ địa ch được xác định ngay t khi chế to ra b vi x lý và không th
thay đổi được. B vi x lý 8088 và h 80x86 nói chung đều có 7 chế độ địa ch d liu.
Để minh ha cho các chế độ địa ch ta s dng lnh chuyn d liu MOV, nó có dng như
sau:
Lnh MOV sao chép d liu ngun vào đích, d liu ngun không thay đổi còn d liu
đích b thay đổi.
a) Chế độ địa ch thanh ghi
Trong chế độ địa ch này các lnh s dng các thanh ghi bên trong CPU làm các toán hng
để cha d liu cn thao tác. Các thanh ghi s dng trong lnh phi cùng kích c, tr mt s
lnh như lnh SHL DX, CL.
Ví d:
Assembly Kích thước Hot động
MOV AL,BL 8 bit Sao chép BL vào AL
MOV CH,CL 8 bit Sao chép CL vào CH
MOV AX,CX 16 bit Sao chép CX vào AX
Mã lnh Toán hng Du phy phân tách Đích và Ngun
MOV Đích, Ngun
Mã lnh Địa ch ca các toán hng