Bài ging hp ng Chng IX: Mt s vn m rng
68
CHNG IX: MT S VN M RNG
9.1 S nguyên 32 bit
Do b vi x lý 8086 có các thanh ghi dài 16 bít nên các lnh ca nó ch thao tác trên
các toán hng nh hn hoc bng 16 bít. u này làm hn ch phm vi tính toán (t 0
65535 i vi s không du và t -32768 32767 i vi s có du).
Mun tính toán trên phm vi ln hn thì phi tng c dài dãy bít. Nh vy cn
ng dài ca các thanh ghi (u này là rt khó khn do hn ch công ngh vào thi
m ó). Mt gii pháp khác là s dng nhng thanh ghi có sn ghép li thành mt dãy
bít dài hn.
S nguyên 32 bít có phm vi t 0 4294967295 i vi s không du và t -
2147483648 2147483647 i vi s có du. tính toán trên các s loi này cn tách
chúng làm hai phn: 16 bít cao và 16 bít thp. Quá trình tính toán sc thc hin trên
ng phn, có s hiu chnh kt qu nh mt s lnh c bit.
9.1.1 Các phép toán Cng và Tr
a) Phép cng
Ví d:
Xét hai s nguyên 32 bit:
+ S th nht c t trong mng word A:
A+2 A
1 word 1 word
+ S th hai c t trong mng word B:
B+2 B
1 word 1 word
Hãy cng hai s: A+2:A và B+2:B
Gii:
u tiên phi cng 16 bít thp, sau ó mi cng 16 bít cao:
MOV AX, B
MOV BX, B+2
ADD A, AX ;Cng 16 bít thp ca s th hai vào A
ADC A+2, BX ;Cng 16 bít cao ca s th hai và c CF vào A+2
Kt qu: A+2:A cha tng hai s.
Gii thích:
Ví d trên có s dng mt lnh mi (Add with Carry):
ADC <ích>, <Ngun>
ích>: là mt thanh ghi hay mt ô nh
<Ngun>: là mt thanh ghi, mt ô nh, hoc mt hng s
ích>,<Ngun> không ng thi là hai ô nh.
nh ADC s thc hin phép cng: ích + Ngun + CF, kt qu cha trong ích.
Bài ging hp ng Chng IX: Mt s vn m rng
69
Nh vy, nu phép cng 16 bít thp ca hai s có nh (CF = 1) thì phép cng 16 bít
cao (bng lnh ADC) s cng c bít nh này vào tng.
b) Phép tr
Ví d:
Thc hin phép tr gia hai s nguyên 32 bit: A+2:A và B+2:B
Gii:
u tiên phi tr 16 bít thp, sau ó mi tr 16 bít cao:
MOV AX, B
MOV BX, B+2
SUB A, AX ;Tr 16 bít thp
SBB A+2, BX ;Tr A+2 cho BX và CF
Kt qu: A+2:A cha hiu hai s.
Gii thích:
Ví d trên có s dng mt lnh mi (Subtract with Borrow):
SBB <ích>, <Ngun>
ích>: là mt thanh ghi hay mt ô nh
<Ngun>: là mt thanh ghi, mt ô nh, hoc mt hng s
ích>,<Ngun> không ng thi là hai ô nh.
nh SBB s thc hin phép tr: ích - Ngun - CF, kt qu cha trong ích.
Nh vy, nu phép tr 16 bít thp ca hai s có vay (CF = 1) thì phép tr 16 bít cao
(bng lnh SBB) s tr thêm c bít ã vay này.
9.1.2 Các phép Logic
Ví d:
Thc hin phép phnh s nguyên 32 bit sau: A+2:A
Gii:
Vic thc hin phép ph nh (o bít) i vi s 32 bít rt n gin vì không cn
thêm lnh nào hiu chnh kt qu:
NOT A ;o 16 bít thp
NOT A+2 ;o 16 bít cao
Nói chung, các phép logic (And, Or, Not, Xor) vn có th áp dng bình thng trên
a thp và na cao ca s 32 bít.
9.1.3 Các phép toán Dch
a) Dch trái
Ví d:
Thc hin phép dch trái s nguyên 32 bit sau: A+2:A
Gii:
Các bc thc hin:
+ u tiên cn dch trái 16 bít thp
+ Sau ó quay trái 16 bít cao (quay qua c CF)
SHL A, 1
Bài ging hp ng Chng IX: Mt s vn m rng
70
RCL A+2, 1
b) Dch phi
Ví d:
Thc hin phép dch phi s nguyên 32 bit sau: A+2:A
Gii:
Trình t dch ngc li so vi ví d phn a:
+ u tiên cn dch phi 16 bít cao
+ Sau ó quay phi 16 bít thp (quay qua c CF)
SHR A+2, 1
RCR A, 1
9.2 S thc du phy ng
9.2.1 Biu din s thc di dng nh phân
Ví d 1:
Chuyn s 0,75 sang dng nh phân.
Gii:
Các bc tin hành nh sau:
c 1: Ly phn thp phân nhân vi 2:
0,75 x 2 = 1,5 Thu c phn nguyên = 1, phn thp phân = 0,5
c 2: Ly phn thp phân ca kt qu bc trên nhân vi 2:
0,5 x 2 = 1,0 Thu c phn nguyên = 1, phn thp phân = 0
Quá trình trên c lp i lp li cho ti khi phn thp phân = 0 thì dng li.
t qu:
Vit ln lt các phn nguyên thu c trên vào sau du phy ca s nh phân:
(0,75)
10
= (0,11)
2
Ví d 2:
Chuyn s 4,9 sang dng nh phân.
Gii:
S trên có phn nguyên = 4 và phn thp phân = 0,9. Các bc tin hành nh sau:
• Chuyn phn nguyên sang dng nh phân:
(4)
10
= (100)
2
• Chuyn phn thp phân sang dng nh phân (ging nh ví d 1):
c 1: Ly phn thp phân nhân vi 2:
CF A
A + 2
CF
A + 2 A
Bài ging hp ng Chng IX: Mt s vn m rng
71
0,9 x 2 = 1,8 Phn nguyên = 1, phn thp phân = 0,8
c 2: 0,8 x 2 = 1,6 Phn nguyên = 1, phn thp phân = 0,6
c 3: 0,6 x 2 = 1,2 Phn nguyên = 1, phn thp phân = 0,2
c 4: 0,2 x 2 = 0,4 Phn nguyên = 0, phn thp phân = 0,4
c 5: 0,4 x 2 = 0,8 Phn nguyên = 0, phn thp phân = 0,8
c 6: 0,8 x 2 = 1,6 Phn nguyên = 1, phn thp phân = 0,6
Quá trình này s không bao gi kt thúc vì phn thp phân không th bng 0. Do ó ta
ch có th thu c mt s nh phân xp x vi s thp phân ã cho.
t qu: (4,9)
10
= (100,11100 1100 1100 )
2
9.2.2 Biu din s thc du phy ng
Ví d 1:
Xét s thc dng nh phân sau: M = (10,1)
2
(bng 2,5 trong h thp phân)
S M cng có thc vit là: M = 10,1 x 2
0
= 1,01 x 2
1
= <Phn nh tr> x 2
<Phn m>
Nh vy ta có th thay i v trí ca du phy mà giá tr ca s thc vn gi nguyên
ng cách u chnh phn m và phn nh tr.
• Phn nh tr (Mantissa):
thng nht trong cách biu din, phn nh tr ca các s khác 0 thng phi tho
mãn u kin sau:
1 Mantissa < 2
Phn nh tr tho mãn u kin trên c gi là phn nh trã c chun hoá.
• Phn m (Exponent):
Trên thc t phn m có th là s âm hoc s dng. Vic biu din s m âm là
phc tp nên ngi ta thng cng thêm mt giá tr (gi là Bias) vào phn m nó
luôn là s dng.
Bias c la chn theo quy tc sau:
Nu dài dãy bít biu din phn m là N thì Bias = 2
N – 1
- 1
(Nu N = 8 thì Bias = 2
7
– 1 = 127)
Ví d 2:
Xét s thc dng nh phân sau: M = 0,0001b
Hãy xác nh phn nh tr và phn m ca M sau khi chun hoá.
Gii:
M = 0,0001b = 1,0 x 2
-4
Mantissa = 1,0
Gi s dùng 8 bít biu din phn m: Bias = 127
Exponent = -4 + 127 =123
v thc 32 bít (Short Real):
Ta s tìm hiu cách thc biu din mt s thc trong máy tính bi mt dãy 32 bít.
Dãy bít ó c chia làm 3 phn:
+ Phn du (Sign): Chim 1 bít, bng 1 nu du âm, bng 0 nu du dng.
+ Phn m: Dài 8 bít
Bài ging hp ng Chng IX: Mt s vn m rng
72
+ Phn nh tr: Dài 23 bít (phn nh tr ch ly các bít nm sau du phy, vì trc du
phy luôn là 1).
31
30 23 22 0
S Exponent Mantissa
Ví d 1:
Chuyn s 4,9 sang dng ShortReal.
Gii:
(4,9)
10
= (100,11100 1100 1100 )
2
Chun hoá:
4,9 = 1,0011100 1100 1100 x 2
2
+ S = 0 (du dng)
+ Mantissa = 0011100 1100 1100 (23 bít)
+ Exponent = 2 + 127 = 129 = 1000 0001b
S thc dng ShortReal:
31
30 23 22 0
0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
Hay vit di dng Hex: 4,9 40 9C CC CCh
Ví d 2:
Chuyn s - 4,9 sang dng ShortReal.
Gii:
Cách làm tng t ví d 1, ch khác bít du: S = 1 (du âm)
S thc dng ShortReal:
31
30 23 22 0
1 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
ng Hex: - 4,9 C0 9C CC CCh
Trên ây là các ví d v biu din s thc bng 32 bít nh phân trong máy tính. Có
nhiu kiu s thc khác nhau ng vi các dài dãy bít khác nhau, dãy bít càng dài thì
phm vi biu din càng ln.
9.3 B vi x lý 80286
9.3.1 Các c trng
80286 c thit k có th làm vic hai ch: Ch thc (Real Mode) và ch
bo v (Protected Mode). Trong ch thc, 80286 k tha c các c m ca
8086, ngoài ra nó còn có thêm mt s lnh mi (Các lnh m rng - Extended
Instruction). Trong ch bo v, 80286 có kh nng làm vic a nhim (Multitasking)
và có th qun lý b nh theo a cho (Virtual Address).
80286 là b vi x lý 16 bít. Nó có các thanh ghi dài 16 bít tng t 8086, nhng s
ng bus a ch ln hn (24 bít), do ó nó có tha ch hoá c 16 MB b nh vt lý
(2
24
Byte). Tuy nhiên, trong ch thc, do phi gi tính tng thích vi 8086 nên nó
Bài ging hp ng Chng IX: Mt s vn m rng
73
ng ch qun lý c khong 1MB b nh. Mun s dng toàn b không gian nh 16
MB thì phi chuyn sang ch bo v.
9.3.2 Mt s lnh m rng ca 80286
a) Push và Pop
• 80286 cho phép ct trc tip mt hng s vào ngn xp.
Ví d:
PUSH 25 ;Ct s 25 vào ngn xp
• t các thanh ghi thng dùng vào ngn xp bng lnh:
PUSHA ;Push All Register
Các thanh ghi sc ct vào ngn xp theo trình t sau: AX, CX, DX, BX, SP,
BP, SI, DI.
Ngc li, mun khôi phc giá tr ca các thanh ghi trên thì dùng lnh:
POPA ;Pop All Register
Các thanh ghi sc ly ra khi ngn xp theo trình t :DI, SI, BP, SP, BX, DX,
CX, AX.
b) Lnh nhân
80386 cung cp ba dng lnh nhân mi:
ng 1: IMUL reg16, immed
ng 2: IMUL reg16, reg16, immed
ng 3: IMUL reg16, mem16, immed
Trong ó:
+ reg16: là mt thanh ghi 16 bít
+ immed: là mt hng s
+ mem16: là mt bin kiu Word
Toán hng 1 (reg16) s là ni cha kt qu phép nhân. Nu tích s vt quá phm vi
a reg16 thì các c CF và OF = 1.
Ví d:
IMUL BX, 15 ; Nhân BX vi 15, kt qu cha trong BX
IMUL AX, BX, 15 ; Nhân BX vi 15, kt qu cha trong AX
IMUL AX, A, 15 ; Nhân bin A vi 15, kt qu cha trong AX
; (bin A có kiu Word)
c) Lnh dch và quay
i vi 8086, khi mun dch hay quay toán hng ích nhiu ln thì s ln thc hin
phi t vào thanh ghi CL (xem chng IV).
Ví d:
MOV CL, 3
SHL AX, CL ;Dch các bít ca thanh ghi AX sang trái 3 ln
Bài ging hp ng Chng IX: Mt s vn m rng
74
B vi x lý 80286 cho phép vit trc tip s ln dch (hay quay) trong lnh, không cn
dùng ti CL.
Ví d:
SHL AX, 3 ;Dch các bít ca thanh ghi AX sang trái 3 ln
v Chú ý: Nu trong chng trình có s dng các lnh m rng ca 80286 thì u
chng trình phi có khai báo .286
TITLE VI DU
.MODEL SMALL
.286 ;Khai báo s dng lnh m rng
.STACK 100H
.CODE
9.4 Các b vi x lý 80386 và 80486
80386 và 80486 u là các b vi x lý 32 bít, trong ó các thanh ghi công dng chung,
các thanh ghi con tr và và ch s, thanh ghi c dài 32 bít, còn các thanh ghi n dài 16
bít. V c bn thì hai b vi x lý này ging nhau, ch khác ch 80486 có thêm mch x
lý du phy ng. Do ó các ni dung trình bày v 80386 di ây cng úng cho 80486.
• Các thanh ghi công dng chung:
Có 4 thanh ghi dài 32 bít là EAX, EBX, ECX, EDX. m bo tính tng thích vi
các b vi x lý trc ó, các thanh ghi này cha trong nó thanh ghi 16 bít tng ng ca
8086. Ví d: 16 bít thp ca thanh ghi EAX chính là thanh ghi AX.
• Các thanh ghi con tr, ch s:
Có 5 thanh ghi dài 32 bít là ESI, EDI, ESP, EBP, EIP. Các thanh ghi này cng cha
trong nó thanh ghi 16 bít tng ng.
• Các thanh ghi n:
Có 6 thanh ghi n dài 16 bít là CS, DS, ES, SS, FS, GS. Trong ó, hai thanh ghi
c b xung thêm là FS và GS dùng thao tác vi n d liu.
• Thanh ghi c EFLAGS:
Thanh ghi này dài 32 bít, 16 bít thp ca nó chính là thanh ghi c 16 bit FLAGS.
EAX
AH AL
AX
Bài ging hp ng Chng IX: Mt s vn m rng
75
Vi cách t chc các thanh ghi nh trên, tt c các chng trình vit cho 8086 u có
th chy trên 80386.
B vi x lý 80386 s dng bus a ch 32 bit, do ó nó có tha ch hoá c 4 GB
nh vt lý (2
32
Byte). Tuy nhiên, trong ch thc nó cng ch s dng c khong
1MB ( tng thích vi 8086).
v Chú ý: Mun lp trình vi 80386 và s dng các thanh ghi 32 bit thì u
chng trình phi có khai báo .386
TITLE VI DU
.MODEL SMALL
.386 ;Khai báo s dng các lnh ca 80386
.STACK 100H
.CODE