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
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
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
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.
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
• 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