Các thanh ghi này c ng ch a trong nó thanh ghi 16 bít t ng ng.
Trang 1CH NG IX: M T S V N M R NG
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 l nh c a nó ch thao tác trên các toán h ng nh h n ho c b ng 16 bít u này làm h n ch ph m vi tính toán (t 0
65535 i v i s không d u và t -32768 32767 i v i s có d u)
Mu n tính toán trên ph m vi l n h n thì ph i t ng c dài dãy bít Nh v y c n
ng dài c a các thanh ghi ( u này là r t khó kh n do h n ch công ngh vào th i
m ó) M t gi i pháp khác là s d ng nh ng thanh ghi có s n ghép l i thành m t dãy bít dài h n
S nguyên 32 bít có ph m vi t 0 4294967295 i v i s không d u và t
-2147483648 2147483647 i v i s có d u tính toán trên các s lo i này c n tách chúng làm hai ph n: 16 bít cao và 16 bít th p Quá trình tính toán s c th c hi n trên
ng ph n, có s hi u ch nh k t qu nh m t s l nh c bi t
9.1.1 Các phép toán C ng và Tr
a) Phép c ng
Ví d :
Xét hai s nguyên 32 bit:
+ S th nh t c t trong m ng word A:
1 word 1 word
+ S th hai c t trong m ng word B:
1 word 1 word Hãy c ng hai s : A+2:A và B+2:B
Gi i:
u tiên ph i c ng 16 bít th p, sau ó m i c ng 16 bít cao:
MOV AX, B
MOV BX, B+2
ADD A, AX ;C ng 16 bít th p c a s th hai vào A
ADC A+2, BX ;C ng 16 bít cao c a s th hai và c CF vào A+2
K t qu : A+2:A ch a t ng hai s
Gi i thích:
Ví d trên có s d ng m t l nh m i (Add with Carry):
ADC < ích>, <Ngu n>
ích>: là m t thanh ghi hay m t ô nh
<Ngu n>: là m t thanh ghi, m t ô nh , ho c m t h ng s
ích>,<Ngu n> không ng th i là hai ô nh
nh ADC s th c hi n phép c ng: ích + Ngu n + CF, k t qu ch a trong ích
Trang 2Nh v y, n u phép c ng 16 bít th p c a hai s có nh (CF = 1) thì phép c ng 16 bít cao (b ng l nh ADC) s c ng c bít nh này vào t ng
b) Phép tr
Ví d :
Th c hi n phép tr gi a hai s nguyên 32 bit: A+2:A và B+2:B
Gi i:
u tiên ph i tr 16 bít th p, sau ó m i tr 16 bít cao:
MOV AX, B
MOV BX, B+2
SUB A, AX ;Tr 16 bít th p
SBB A+2, BX ;Tr A+2 cho BX và CF
K t qu : A+2:A ch a hi u hai s
Gi i thích:
Ví d trên có s d ng m t l nh m i (Subtract with Borrow):
SBB < ích>, <Ngu n>
ích>: là m t thanh ghi hay m t ô nh
<Ngu n>: là m t thanh ghi, m t ô nh , ho c m t h ng s
ích>,<Ngu n> không ng th i là hai ô nh
nh SBB s th c hi n phép tr : ích - Ngu n - CF, k t qu ch a trong ích
Nh v y, n u phép tr 16 bít th p c a hai s có vay (CF = 1) thì phép tr 16 bít cao (b ng l nh SBB) s tr thêm c bít ã vay này
9.1.2 Các phép Logic
Ví d :
Th c hi n phép ph nh s nguyên 32 bit sau: A+2:A
Gi i:
Vi c th c hi n phép ph nh ( o bít) i v i s 32 bít r t n gi n vì không c n thêm l nh nào hi u ch nh k t qu :
NOT A ; o 16 bít th p
NOT A+2 ; o 16 bít cao
Nói chung, các phép logic (And, Or, Not, Xor) v n có th áp d ng bình th ng trên
a th p và n a cao c a s 32 bít
9.1.3 Các phép toán D ch
a) D ch trái
Ví d :
Th c hi n phép d ch trái s nguyên 32 bit sau: A+2:A
Gi i:
Các b c th c hi n:
+ u tiên c n d ch trái 16 bít th p
+ Sau ó quay trái 16 bít cao (quay qua c CF)
SHL A, 1
Trang 3RCL A+2, 1
b) D ch ph i
Ví d :
Th c hi n phép d ch ph i s nguyên 32 bit sau: A+2:A
Gi i:
Trình t d ch ng c l i so v i ví d ph n a:
+ u tiên c n d ch ph i 16 bít cao
+ Sau ó quay ph i 16 bít th p (quay qua c CF)
SHR A+2, 1
RCR A, 1
9.2 S th c d u ph y ng
9.2.1 Bi u di n s th c d i d ng nh phân
Ví d 1:
Chuy n s 0,75 sang d ng nh phân
Gi i:
Các b c ti n hành nh sau:
c 1: L y ph n th p phân nhân v i 2:
0,75x 2 = 1,5 Thu c ph n nguyên = 1, ph n th p phân = 0,5
c 2: L y ph n th p phân c a k t qu b c trên nhân v i 2:
0,5x 2 = 1,0 Thu c ph n nguyên = 1, ph n th p phân = 0
Quá trình trên c l p i l p l i cho t i khi ph n th p phân = 0 thì d ng l i
t qu :
Vi t l n l t các ph n nguyên thu c trên vào sau d u ph y c a s nh phân: (0,75)10 = (0,11)2
Ví d 2:
Chuy n s 4,9 sang d ng nh phân
Gi i:
S trên có ph n nguyên = 4 và ph n th p phân = 0,9 Các b c ti n hành nh sau:
• Chuy n ph n nguyên sang d ng nh phân:
(4)10 = (100)2
• Chuy n ph n th p phân sang d ng nh phân (gi ng nh ví d 1):
c 1: L y ph n th p phân nhân v i 2:
A + 2
CF
Trang 40,9x 2 = 1,8 Ph n nguyên = 1, ph n th p phân = 0,8
c 2: 0,8x 2 = 1,6 Ph n nguyên = 1, ph n th p phân = 0,6
c 3: 0,6x 2 = 1,2 Ph n nguyên = 1, ph n th p phân = 0,2
c 4: 0,2x 2 = 0,4 Ph n nguyên = 0, ph n th p phân = 0,4
c 5: 0,4x 2 = 0,8 Ph n nguyên = 0, ph n th p phân = 0,8
c 6: 0,8x 2 = 1,6 Ph n nguyên = 1, ph n th p phân = 0,6
Quá trình này s không bao gi k t thúc vì ph n th p phân không th b ng 0 Do ó ta
ch có th thu c m t s nh phân x p x v i s th p phân ã cho
t qu : (4,9)10 = (100,11100 1100 1100 )2
9.2.2 Bi u di n s th c d u ph y ng
Ví d 1:
Xét s th c d ng nh phân sau: M = (10,1)2 (b ng 2,5 trong h th p phân)
S M c ng có th c vi t là: M = 10,1x 20 = 1,01x 21
= <Ph n nh tr >x 2<Ph n m >
Nh v y ta có th thay i v trí c a d u ph y mà giá tr c a s th c v n gi nguyên
ng cách u ch nh ph n m và ph n nh tr
• Ph n nh tr (Mantissa):
th ng nh t trong cách bi u di n, ph n nh tr c a các s khác 0 th ng ph i tho mãn u ki n sau:
1 Mantissa < 2
Ph n nh tr tho mãn u ki n trên c g i là ph n nh tr ã c chu n hoá
• Ph n m (Exponent):
Trên th c t ph n m có th là s âm ho c s d ng Vi c bi u di n s m âm là
ph c t p nên ng i ta th ng c ng thêm m t giá tr (g i là Bias) vào ph n m nó luôn là s d ng
Bias c l a ch n theo quy t c sau:
N u dài dãy bít bi u di n ph n m là N thì Bias = 2N – 1 - 1
(N u N = 8 thì Bias = 27 – 1 = 127)
Ví d 2:
Xét s th c d ng nh phân sau: M = 0,0001b
Hãy xác nh ph n nh tr và ph n m c a M sau khi chu n hoá
Gi i:
M = 0,0001b = 1,0x 2-4
Mantissa = 1,0
Gi s dùng 8 bít bi u di n ph n m : Bias = 127
Exponent = -4 + 127 =123
v th c 32 bít (Short Real):
Ta s tìm hi u cách th c bi u di n m t s th c trong máy tính b i m t dãy 32 bít Dãy bít ó c chia làm 3 ph n:
+ Ph n d u (Sign): Chi m 1 bít, b ng 1 n u d u âm, b ng 0 n u d u d ng
+ Ph n m : Dài 8 bít
Trang 5+ Ph n nh tr : Dài 23 bít (ph n nh tr ch l y các bít n m sau d u ph y, vì tr c d u
ph y luôn là 1)
31 30 23 22 0
Ví d 1:
Chuy n s 4,9 sang d ng ShortReal
Gi i:
(4,9)10 = (100,11100 1100 1100 )2
Chu n hoá:
4,9 = 1,0011100 1100 1100 x22
+ S = 0 (d u d ng)
+ Mantissa = 0011100 1100 1100 (23 bít)
+ Exponent = 2 + 127 = 129 = 1000 0001b
S th c d ng 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 vi t d i d ng Hex: 4,9 40 9C CC CCh
Ví d 2:
Chuy n s - 4,9 sang d ng ShortReal
Gi i:
Cách làm t ng t ví d 1, ch khác bít d u: S = 1 (d u âm)
S th c d ng 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 bi u di n s th c b ng 32 bít nh phân trong máy tính Có nhi u ki u s th c khác nhau ng v i các dài dãy bít khác nhau, dãy bít càng dài thì
ph m vi bi u di n càng l n
9.3 B vi x lý 80286
9.3.1 Các c tr ng
80286 c thi t k có th làm vi c hai ch : Ch th c (Real Mode) và ch
b o v (Protected Mode) Trong ch th c, 80286 k th a c các c m c a
8086, ngoài ra nó còn có thêm m t s l nh m i (Các l nh m r ng - Extended Instruction) Trong ch b o v , 80286 có kh n ng làm vi c a nhi m (Multitasking)
và có th qu n lý b nh theo a ch o (Virtual Address)
80286 là b vi x lý 16 bít Nó có các thanh ghi dài 16 bít t ng t 8086, nh ng s
ng bus a ch l n h n (24 bít), do ó nó có th a ch hoá c 16 MB b nh v t lý (224 Byte) Tuy nhiên, trong ch th c, do ph i gi tính t ng thích v i 8086 nên nó
Trang 6ng ch qu n lý c kho ng 1MB b nh Mu n s d ng toàn b không gian nh 16
MB thì ph i chuy n sang ch b o v
9.3.2 M t s l nh m r ng c a 80286
a) Push và Pop
• 80286 cho phép c t tr c ti p m t h ng s vào ng n x p
Ví d :
PUSH 25 ;C t s 25 vào ng n x p
• t các thanh ghi th ng dùng vào ng n x p b ng l nh:
PUSHA ;Push All Register
Các thanh ghi s c c t vào ng n x p theo trình t sau: AX, CX, DX, BX, SP,
BP, SI, DI
Ng c l i, mu n khôi ph c giá tr c a các thanh ghi trên thì dùng l nh:
POPA ;Pop All Register
Các thanh ghi s c l y ra kh i ng n x p theo trình t :DI, SI, BP, SP, BX, DX,
CX, AX
b) L nh nhân
80386 cung c p ba d ng l nh nhân m i:
ng 1: IMUL reg16, immed
ng 2: IMUL reg16, reg16, immed
ng 3: IMUL reg16, mem16, immed
Trong ó:
+ reg16: là m t thanh ghi 16 bít
+ immed: là m t h ng s
+ mem16: là m t bi n ki u Word
Toán h ng 1 (reg16) s là n i ch a k t qu phép nhân N u tích s v t quá ph m vi
a reg16 thì các c CF và OF = 1
Ví d :
IMUL BX, 15 ; Nhân BX v i 15, k t qu ch a trong BX
IMUL AX, BX, 15 ; Nhân BX v i 15, k t qu ch a trong AX
IMUL AX, A, 15 ; Nhân bi n A v i 15, k t qu ch a trong AX
; (bi n A có ki u Word)
c) L nh d ch và quay
i v i 8086, khi mu n d ch hay quay toán h ng ích nhi u l n thì s l n th c hi n
ph i t vào thanh ghi CL (xem ch ng IV)
Ví d :
MOV CL, 3
SHL AX, CL ;D ch các bít c a thanh ghi AX sang trái 3 l n
Trang 7B vi x lý 80286 cho phép vi t tr c ti p s l n d ch (hay quay) trong l nh, không c n dùng t i CL
Ví d :
SHL AX, 3 ;D ch các bít c a thanh ghi AX sang trái 3 l n
v Chú ý: N u trong ch ng trình có s d ng các l nh m r ng c a 80286 thì u
ch ng trình ph i có khai báo 286
TITLE VI DU MODEL SMALL 286 ;Khai báo s d ng l nh m r ng 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 d ng 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 b n thì hai b vi x lý này gi ng nhau, ch khác ch 80486 có thêm m ch x
lý d u ph y ng Do ó các n i dung trình bày v 80386 d i ây c ng úng cho 80486
• Các thanh ghi công d ng chung:
Có 4 thanh ghi dài 32 bít là EAX, EBX, ECX, EDX m b o tính t ng thích v i các b vi x lý tr c ó, các thanh ghi này ch a trong nó thanh ghi 16 bít t ng ng c a
8086 Ví d : 16 bít th p c a 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 c ng ch a trong nó thanh ghi 16 bít t ng 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 v i n d li u
• Thanh ghi c EFLAGS:
Thanh ghi này dài 32 bít, 16 bít th p c a nó chính là thanh ghi c 16 bit FLAGS
EAX
AX
Trang 8V i cách t ch c các thanh ghi nh trên, t t c các ch ng trình vi t cho 8086 u có
th ch y trên 80386
B vi x lý 80386 s d ng bus a ch 32 bit, do ó nó có th a ch hoá c 4 GB
nh v t lý (232 Byte) Tuy nhiên, trong ch th c nó c ng ch s d ng c kho ng 1MB ( t ng thích v i 8086)
v Chú ý: Mu n l p trình v i 80386 và s d ng các thanh ghi 32 bit thì u
ch ng trình ph i có khai báo 386
TITLE VI DU MODEL SMALL 386 ;Khai báo s d ng các l nh c a 80386 STACK 100H
.CODE