Giáo trình vi x T chc h thng vi x
Phm Hùng Kim Khánh Trang 1
CHƯƠNG 1: T CHC H THNG VI X
1. Các h thng s dùng trong máy tính và các loi mã
1.1. H thp phân (Decimal Number System)
Trong thc tế, ta thường dùng h thp phân để biu din các giá tr s. h
thng này, ta dùng các t hp ca các ch s 0..9 để biu din các giá tr. Mt s trong
h thp phân được biu din theo các s mũ ca 10.
VD: S 5346.72 biu din như sau:
5346.72 = 5x103 + 3x102 + 4x10 + 6 + 7x10-1 + 2x10-2
Tuy nhiên, trong các mch đin t, vic lưu tr và phân bit 10 mc đin áp
khác nhau rt khó khăn nhưng vic phân bit hai mc đin áp thì li d dàng. Do đó,
người ta s dng h nh phân để biu din các giá tr trong h thng s.
1.2. H nh phân (Binary Number System)
H nh phân ch dùng các ch s 0 và 1 để biu din các giá tr s. Mt s nh
phân (binary digit) thường được gi là bit. Mt chui gm 4 bit nh phân gi là nibble,
chui 8 bit gi là byte, chui 16 bit gi là word và chui 32 bit gi là double word.
Ch s nh phân bên phi nht ca chui bit gi là bit có ý nghĩa nh nht (least
significant bit – LSB) và ch s nh phân bên trái nht ca chui bit gi là bit có ý
nghĩa ln nht (most significant bit – MSB). Mt s trong h nh phân được biu din
theo s mũ ca 2. Ta thường dùng ch b cui chui bit để xác định đó là s nh phân.
VD: S 101110.01b biu din giá tr s:
101110.01b Æ 1x25 + 0x24 + 1x23 +1x22 + 1x21 + 0 + 0x2-1 + 1x2-2
Chuyn s nh phân thành s thp phân:
Để chuyn mt s nh phân thành mt s thp phân, ta ch cn nhân các ch s
ca s nh phân vi giá tr thp phân ca nó và cng tt c các giá tr li.
VD: 1011.11B Æ 1x23 + 0x22 + 1x21 + 1 + 1x2-1 + 1x2-2 = 11.75
Chuyn s thp phân thành s nh phân:
Để chuyn mt s thp phân thành s nh phân, ta dùng 2 phương pháp sau:
¾ Phương pháp 1: Ta ly s thp phân cn chuyn tr đi 2i trong đó 2i
là s ln nht nh hơn hay bng s thp phân cn chuyn. Sau đó, ta
li ly kết qu này và thc hin tương t cho đến 20 thì dng. Trong
quá trình thc hin, ta s ghi li các giá tr 0 hay 1 cho các bit tu
theo trường hp s thp phân nh hơn 2i (0) hay ln hơn 2i (1).
Giáo trình vi x T chc h thng vi x
Phm Hùng Kim Khánh Trang 2
VD: Xét s 21 thì s 2i ln nht là 24
2
4 2
3 2
2 2
1 2
0
16 8 4 2 1
21 = 1 0 1 0 1 ( 21 Æ 10101B)
5 5 1 1 0
¾ Phương pháp 2: Ly s cn chuyn chia cho 2, ta nh li s dư
ly tiếp thương ca kết qu trên chia cho 2 và thc hin tương t cho
đến khi thương cui cùng bng 0. Kết qu chuyn đổi s là chui các
bit là các s dư ly theo th t ngược li.
VD: Chuyn 227 ra s nh phân
S b chia Thương S dư
227 113 1 ( LSB)
113 56 1
56 28 0
28 14 0
14 7 0
7 3 1
3 1 1
1 0 1 ( MSB)
( 227 Æ 11100011b)
¾ Để thc hin chuyn các s thp phân nh hơn 1 sang các s nh
phân, ta làm như sau: ly s cn chuyn nhân vi 2, gi li phn
nguyên và li ly phn l nhân vi 2. Quá trình tiếp tc cho đến khi
phn l bng 0 thì dng. Kết qu chuyn đổi là chui các bit là giá tr
các phn nguyên.
VD: Chuyn 0.625 thành s nh phân:
0.625 × 2 = 1.25
0.25 × 2 = 0.5
0.5 × 2 = 1.0
( 0.625 = 0.101b)
¾ Để thc hin chuyn đổi s nh phân bt k, ta thc hin chuyn đổi
tương ng vi s nh phân ln hơn 1 và nh hơn 1 như trên.
VD: Chuyn 227.625 thành s nh phân:
227 Æ 11100011b
0.625 Æ 0.101b
227.625 Æ 11100011.101b
1.3. H thp lc phân (Hexadecimal Number System)
Như đã biết trên, nếu dùng h nh phân thì s cn mt s lượng ln các bit để
biu din. Gi s như s 1024 = 210 s cn 10 bit để biu din. Để rút ngn kết qu
Giáo trình vi x T chc h thng vi x
Phm Hùng Kim Khánh Trang 3
biu din, ta dùng h thp lc phân da cơ s trên s mũ ca 16. Khi đó, 4 bit trong h
nh phân (1 nibble) s biu din bng 1 ch s trong h thp lc phân (gi là s hex).
Trong h thng này, ta dùng các s 0..9 và các kí t A..F để biu din cho mt
giá tr s. Thông thường, ta dùng ch h cui để xác định đó là s thp lc phân.
1.4. Mã BCD (Binary Coded Decimal)
Trong thc tế, đối vi mt s ng dng như đếm tn, đo đin áp, … ngõ ra
dng s thp phân, ta dùng mã BCD. Mã BCD dùng 4 bit nh phân để mã hoá cho mt
s thp phân 0..9. Như vy, các s hex A..F không tn ti trong mã BCD.
Mã BCD gm có 2 loi:
- Mã BCD không nén (unpacked): biu din mt s BCD bng 8 bit nh phân
- Mã BCD nén (packed): biu din mt s BCD bng 4 bit nh phân
VD: S thp phân 5 2 9
S BCD không nén 0000 0101b 0000 0010b 0000 1001b
S BCD nén 0101b 0010b 1001b
1.5. Mã hin th Led 7 đon (7-segment display)
Đối vi các ng dng dùng hin th s liu ra Led 7 đon, ta dùng mã hin th
Led 7 đon. ng vi mi loi Led 7 đon (anode hay cathode chung) và tu theo sơ đồ
kết ni s có mt bng mã riêng. Mt ví d ca mã Led 7 đon cho trong bng 1.1.
Hình 1.1 – Led 7 đon dng cathode chung
Bng 1.1:
Mã Led 7 đon
S thp phân S thp lc phân S nh phân a b c d e f g Hin th
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
0000
0001
0010
0011
0100
0101
0110
0111
1 1 1 1 1 1 0
0 1 1 0 0 0 0
1 1 0 1 1 0 1
1 1 1 1 0 1 1
0 1 1 0 0 1 1
1 0 1 1 0 1 1
1 0 1 1 1 1 1
1 1 1 0 0 0 0
0
1
2
3
4
5
6
7
a
b
c
d
e
f
g
ea b fcgd
Giáo trình vi x T chc h thng vi x
Phm Hùng Kim Khánh Trang 4
8
9
10
11
12
13
14
15
8
9
A
B
C
D
E
F
1000
1001
1010
1011
1100
1101
1110
1111
1 1 1 1 1 1 1
1 1 1 0 0 1 1
1 1 1 1 1 0 1
0 0 1 1 1 1 1
0 0 0 1 1 0 1
0 1 1 1 1 0 1
1 1 0 1 1 1 1
1 0 0 0 1 1 1
8
9
A
B
C
D
E
F
2. Các phép toán s hc
2.1. H nh phân
2.1.1. Phép cng
Phép cng trong h nh phân cũng thc hin ging như trong h thp phân.
Bng s tht ca phép cng 2 bit vi 1 bit nh (carry) như sau:
Bng 1.2:
Vào Ra
A B CIN S COUT
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
0
0
1
0
1
1
1
S = A B CIN
COUT = AB + CIN(A B)
VD: 1001 1010b
1 + 1100 1100b
Nh 0111 0110b
2.1.2. S bù 2 (2’s component)
Trong h thng s thông thường, để biu din s âm ta ch cn thêm du – vào
các ch s. Tuy nhiên, trong h thng máy tính, ta không th biu din được như trên.
Phương pháp thông dng là dùng bit có ý nghĩa ln nht (MSB) làm bit du (sign bit):
nếu MSB = 1 s là s âm còn MSB = 0 là s dương. Khi đó, các bit còn li s biu
din độ ln (magnitude) ca s. Như v
y, nếu ta dùng 8 bit để biu din thì s thu
được 256 t hp ng vi các giá tr 0..255 (s không du) hay –127.. –0 +0 … +127
(s có du).
Giáo trình vi x T chc h thng vi x
Phm Hùng Kim Khánh Trang 5
Để thun tin hơn trong vic tính toán s có du, ta dùng mt dng biu din
đặc bit là s bù 2. S bù 2 ca mt s nh phân xác định bng cách ly đảo các bit ri
cng thêm 1.
VD: S 7 biu din là : 0000 0111b có MSB = 0 (biu din s dương)
S bù 2 là : 111 1000b + 1b = 111 1001b. S đại din cho s – 7
là: 1111 1001b có MSB = 1 (biu din s âm)
Ta thy, để thc hin vic xác định s bù 2 ca mt s A, cn phi:
- Biu din s A theo mã bù 2 ca nó.
- Đảo các bit (tìm s bù 1 ca A).
- Cng thêm 1 vào để nhn được s bù 2.
Khi biu din theo s bù 2, nếu s dng 8 bit ta s có các giá tr s thay đổi t -
128..127.
2.1.3. Phép tr
Phép tr các s nh phân cũng đưc thc hin tương t như trong h thp phân.
Bng s tht ca phép tr 2 bit vi 1 bit mượn (borrow) như sau:
Bng 1.3:
Vào Ra
A B BIN D BOUT
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
0
1
1
1
0
0
0
1
S = A B BIN
BOUT =
(
)
IN
BBABA +
VD: 0110 1101b Æ 149
- 0011 0001b Æ 49
0011 1100b Æ 100
Ngoài cách tr như trên, ta cũng có th thc hin phép tr thông qua s bù 2
ca s tr.
VD: 0110 1101b 0110 1101b
- 0011 0001b + 1100 1111b
1 0011 1100b
S bù 1 Nh
100 1110b + 1b = 100 1111b (S bù 2)