You are on page 1of 10

Bi giang hop ng Chuong I: Cc khi nim co ban

5
CHUONG I: CC KHI NIJM CO BAN
1.1 Mo du
Hop ngu (Assembly language) l mt ngn ngu lp trnh cp thp, muc dch nhm giao
tip truc tip voi phn cung cua my tnh.
My tnh chi c kha nng hiu duoc cc tn hiu 0, 1 duoi dang din hoc tu, goi l tn
hiu nhi phn (ngn ngu nhi phn cn duoc goi l ngn ngu my). Cc lnh cua hop ngu
thuc cht l dang k hiu cua ngn ngu my: hop ngu su dung cc k hiu bng ting Anh
d biu din cc lnh ngn ngu my cho d nho hon. V du:
Lnh ngn ngu my Lnh hop ngu
1011 0100 0010 1010
1100 1101 0010 0001
MOV AH,2Ah
INT 21h
Ta thy cc lnh my tnh bng cc dy bt 0, 1 rt di v kh nho, cn lnh hop ngu
th ngn gon hon nhiu. Khi chay mt chuong trnh hop ngu th phai dich n sang ngn
ngu my.
Hoc hop ngu, khng chi d hoc mt ngn ngu lp trnh c tc d rt nhanh (hop ngu l
ngn ngu lp trnh c tc d nhanh nht) m cn d nm bt duoc ban cht bn trong cua
my tnh, bit cch tc dng truc tip vo phn li cua my tnh.
1.2 Biu din s v k t trong my tnh
1.2.1 Mt s h dm
a) H thap phn (Decimal) - H dm co so 10
H thp phn su dung 10 k hiu (0, 1, 2,...9) d biu din thng tin. Cc s trong h
thp phn duoc biu din duoi dang tng cc lu thua co s 10.
V du:
S 1998 trong h thp phn c th biu din nhu sau:
(1998)
10
= 1x10
3
+ 9x10
2
+ 9x10
1
+ 8x10
0
Trong hop ngu, nguoi ta k hiu 1 s thp phn bng chu D hoc d o cui (vit tt cua
Decimal), cung c th khng cn vit cc chu d.
V du:
(1998)
10
duoc k hiu l: 1998D, 1998d, hoc don gian l 1998
b) H nhi phn (Binary) - H dm co so 2
H nhi phn su dung 2 k hiu (0,1) d biu din thng tin. Cc s trong h nhi phn
duoc biu din duoi dang tng cc lu thua co s 2.
V du:
S 1101 trong h nhi phn c th biu din nhu sau:
(1101)
2
= 1x2
3
+ 1x2
2
+ 0x2
1
+ 1x2
0
= (13)
10
Trong hop ngu, nguoi ta k hiu 1 s nhi phn bng chu B hoc b o cui (vit tt cua
Binary).
V du:
Bi giang hop ng Chuong I: Cc khi nim co ban
6
(1101)
2
duoc k hiu l: 1101B, hoc 1101b
c) H thap luc phn (Hexa Decimal) - H dm co so 16
H thp luc phn su dung 16 k hiu (0, 1, 2,...9, A, B, C, D, E, F) d biu din thng
tin. Cc k hiu A, B, C, D, E, F ln luot ung voi cc gi tri 10, 11, 12, 13, 14, 15 trong h
thp phn. Cc s trong h thp luc phn duoc biu din duoi dang tng cc lu thua co
s 16.
V du:
S 2B trong h thp luc phn c th biu din nhu sau:
(2B)
16
= 2x16
1
+ Bx16
0
= (43)
10
Trong hop ngu, nguoi ta k hiu 1 s thp luc phn bng chu H hoc h o cui (vit tt cua
Hexa Decimal).
V du:
(2B)
16
duoc k hiu l: 2BH, hoc 2Bh
Ch : K hiu mt s thp luc phn trong chuong trnh hop ngu phai lun bt du bng
s. V du s (FA)
10
duoc k hiu l 0FAh (chu khng k hiu l FAh).
H thp luc phn (goi tt l h hex) l h dm duoc su dung nhiu nht trong hop ngu,
do n c th biu din nhung dy bt nhi phn di bng nhung k hiu ngn gon, d nho
hon.
d) Chuyn doi gia cc h dm
Chuyn tu h thp phn v h nhi phn:
Quy tc chuyn: Dem s thp phn chia lin lip cho 2, cho toi khi thuong s bng 0 th
dung lai. Vit cc s du nguoc tu duoi ln ta thu duoc s nhi phn tuong ung.
V du: Chuyn s thp phn 13 sang h nhi phn.
13 2
du 1 6 2
du 0 3 2
du 1 1 2
du 1 0
Vit cc s du nguoc tu duoi ln ta thu duoc s nhi phn 1101b.
Chuyn tu h thp phn v h thp luc phn:
Quy tc chuyn: Dem s thp phn chia lin lip cho 16, cho toi khi thuong s bng 0 th
dung lai. Vit cc s du nguoc tu duoi ln ta thu duoc s thp luc phn tuong ung.
V du: Chuyn s thp phn 43 sang h thp luc phn.
43 16
du 11 2 16
du 2 0
Vit cc s du nguoc tu duoi ln ta thu duoc s thp luc phn 2Bh (ch l 11d = 0Bh).
Bi giang hop ng Chuong I: Cc khi nim co ban
7
Chuyn di giua h nhi phn v h thp luc phn:
Vic chuyn di giua 2 h dm ny kh d dng do mi k hiu trong h hex lai tuong
ung voi 4 k hiu nhi phn. Xem bang chuyn di sau:
H thp phn H Hex H nh| phn
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111
V du 1:
Chuyn di 2Ah sang h nhi phn.
Tra bang ta thy: 2h = 0010b, Ah = 1010b
Vy 2Ah = 00101010b
V du 2:
Chuyn di 10110110b sang h hex.
Du tin ta chia dy bt nhi phn thnh tung nhm 4 bt, thu duoc 2 nhm sau: 0110 v
1011.
Tra bang ta thy: 0110b = 6h, 1011b = Bh
Vy 10110110b = B6h
1.2.2 Biu din s nguyn trong my tnh
Do gioi han cua phn cung my tnh, du liu trong my tnh thuong duoc biu din boi
cc nhm 8 bt (goi l Byte)
1 byte = 8 bit
2 byte = 16 bit = 1 word
Nguoi ta c th ghp nhiu byte hay nhiu word d tao thnh dy bt di hon. Dy bt
cng di th luong thng tin biu din duoc cng lon. Nu goi N l s bt cua dy th s
kha nng biu din = 2
N
.
Xt mt dy bt nhi phn:
1 0 0 1 0 ... 0 0
msb lsb
Bi giang hop ng Chuong I: Cc khi nim co ban
8
Bt du tin (bn tri) duoc goi l bt nng nht hay bt cao nht cua dy (Most
Significant Bit).
Bt cui cng (bn phai) duoc goi l bt nhe nht hay bt thp nht cua dy (Least
Significant Bit).
a) So nguyn khng dau:
Mt s nguyn khng du (s khng m) duoc biu din boi 1 dy bt nhi phn nhu ta
d xt o phn truoc (phn h dm nhi phn). O dy ta chi nhn manh thm v chiu di
cua dy bt: D di dy bt khi biu din trong my tnh lun l bi s cua 8.
V du: Biu din s nguyn 13 trong my tnh.
O phn truoc ta d bit: s nguyn 13 chuyn sang h nhi phn s l 1101
Trong my tnh s c nhiu cch d biu din s nguyn ny:
+ S nguyn dang byte (8 bit): 00001101
+ S nguyn dang word (16 bit): 00000000 00001101
b) So nguyn c dau:
Di voi s nguyn c du th khi biu din duoi dang nhi phn ta phai dnh ra 1 bt d
xc dinh du. D l bt du tin cua dy (bt nng nht - Msb).
Msb = 0: Du Duong
Msb = 1: Du m
Nhu vy, nu chiu di dy bt l 8 th bt du tin d xc dinh du, 7 bt cn lai xc dinh
gi tri s nguyn?
V du:
S +13 duoc biu din boi dy bt 0000 1101.
Vy s -13 duoc biu din nhu th no, c phai l dy bt 1000 1101 hay khng?
Nguyn tc d biu din s m trong my tnh: phai thoa mn diu kin sau
S m (nhi phn) + S Duong (nhi phn) = 0
Gia su s -13 duoc biu din boi dy bt 1000 1101, ta dem n cng voi dy bt biu din
s +13 d kim tra:
0000 1101
+ 1000 1101
1001 1010 = 0
Ta thy tng thu duoc khc 0, nhu vy dy khng phai l dy bt cn tm
Quy tc tm s di: Cho 1 s nguyn A. Gia su d bit dy bt biu din A, khi d mun
tm dy bt biu din s -A ta lm nhu sau:
Buoc 1: Tm s b 1 cua A bng cch dao tt ca cc bt.
V du: A = 0000 1101
Khi d s b 1 cua A l 1111 0010
Buoc 2: Tm s b 2 (bng cch ly s b 1 cng voi 1)
1111 0010
+ 1
1111 0011
S b 2 tm duoc (1111 0011) chnh l dy bt biu din s -A.
Bi giang hop ng Chuong I: Cc khi nim co ban
9
Ta thu kim tra lai bng cch cng 2 dy bt:
0000 1101
+ 1111 0011
1 0000 0000
Kt qua thu duoc bng 0 chung to ta d tm dng (v dang biu din s nguyn bng mt
dy 8 bit nn s 1 trong kt qua trn c th loai bo - s giai thch ki hon trong chuong
sau).
Vy -13 = 1111 0011b
Bi ton nguoc:
Cho mt dy bt nhi phn sau dy (16 bit):
1110 0111 0001 1000b
Hy xc dinh xem n biu din s nguyn no?
Giai:
Goi s nguyn d l N.
C 2 truong hop xay ra:
Nu dy l s nguyn khng du:
N = 1x2
15
+ 1x2
14
+ 1x2
13
+ 1x2
10
+ 1x 2
9
+ 1x2
8
+ 1x2
4
+ 1x2
3
= 32768 + 16384 +8192 + 1024 + 512 + 256 + 16 + 8
= 59160
Nu dy l s nguyn c du:
V Msb = 1 nn N l s m. D don gian ta s xc dinh N (s duong) truoc, tu d suy ra
N.
Tm N bng cch tm s b 2 cua N
Buoc 1: dao bt
S b 1 = 0001 1000 1110 0111
Buoc 2: dem cng voi 1
0001 1000 1110 0111
+ 1
0001 1000 1110 1000
Ta tm duoc N = 0001 1000 1110 1000b
= 1x2
12
+ 1x2
11
+ 1x 2
7
+ 1x2
6
+ 1x2
5
+ 1x2
3
= 4096 + 2048 + 128 + 64 + 32 + 8
= 6376
Vy N = -6376
1.2.3 Biu din k t trong my tnh
Khi su dung my tnh, ta khng chi lm vic voi cc con s m cn phai lm vic voi
nhiu loai du liu khc nhau, trong d c cc k tu. Cc k tu cung duoc biu din boi cc
dy bt nhi phn, su biu din ny mang tnh cht quy uoc.
Tuy nhin, nu mi nguoi, mi co quan, mi quc gia lai tu dua ra quy uoc cua ring
mnh th s rt kh khn cho vic trao di thng tin. Nhu cu dt ra l cn phai c mt h
thng quy uoc chung mang tnh quc t.
Cch thuc m ho k tu duoc su dung rng ri nht trn cc my PC dua trn bang m
ASCII (American Standard Code for Information Interchange). H thng ny su dung 8
bt d biu din 1 k tu.
Bi giang hop ng Chuong I: Cc khi nim co ban
10
V du:
K t M nh| phn M hex
A 0100 0001 41h
B 0100 0010 42h
... ... ...
a 0110 0001 61h
b 0110 0010 62h
... ... ...
1 0011 0001 31h
2 0011 0010 32h
... ... ...
* 0010 1010 2Ah
+ 0010 1011 2Bh
... ... ...
(Bang m ASCII dy du xin xem phn phu luc 2)
Hin nay c rt nhiu bang m khc nhau duoc su dung, ph bin nht l m Unicode,
voi d di dy bt c th thay di kh mm deo, v n vn giu duoc su tuong thch voi
m ASCII truyn thng.
1.3 T chc cua my tnh
1.3.1 So d h thng my tnh
Nguoi ta thuong chia cc b phn cua my tnh lm 4 khi sau:
Trong d:
Cc khi Nhp/Xut du liu: bao gm cc thit bi nhu bn phm, chut, mn
hnh...
Khi luu tru: bao gm cc dia cung, dia mm...
Khi xu l: dy l phn quan trong nht cua mt my tnh, ta s tp trung xem xt
n.
Mt h thng xu l cua my tnh bao gm 3 b phn chnh:
+ B vi xu l CPU (Central Processing Unit): L b no cua my tnh, n xu l cc
thng tin v diu khin moi hoat dng cua my tnh.
+ B nho trong: L b nho c kha nng lin lac truc tip voi b vi xu l,l noi luu tru du
liu phuc vu cho qu trnh xu l.
+ Cc mach vo ra: D diu khin vic giao tip voi thit bi ngoai vi.
Ngoi ra cn c h thng cc dy dn, cp ni d lin kt giua 3 b phn trn (h thng
Bus)
Xu l Nhp Xut
Luu tru
Bi giang hop ng Chuong I: Cc khi nim co ban
11
1.3.2 B vi xu l - CPU
Dy l trung tm xu l cua my tnh. Mi b vi xu l duoc trang bi mt h thng cc
lnh co ban bng ngn ngu nhi phn (do nh san xut quy dinh). Nguoi lp trnh c th
su dung cc lnh ny ra lnh cho my tnh thuc hin diu mnh mun.
a) Cc thnh phan chnh cua bo vi xu l:
ALU (Arithmetic & Logic Unit): Khi s hoc v logic. Dy l noi thuc hin cc
php tnh s hoc (cng, tru, nhn, chia...) v cc php logic (Not, And, Or...).
Cc thanh ghi: Cung cp kha nng nho bn trong CPU. Mi thanh ghi c kha
nng chua duoc mt dy cc bt du liu (d di cn phu thuc vao tung loai
CPU).
H thng ni ghp bn trong CPU (Bus ni b): Cho php lin lac giua cc b
phn bn trong CPU.
b) Ho vi xu l Intel x86
C nhiu hng khc nhau san xut b vi xu l cho my tnh. Ta s tp trung nghin
cuu cc b vi xu l thuc dng x86 do hng Intel ch tao.
B vi xu l du tin thuc dng ny l 8086. N duoc san xut nm 1978, l b vi xu
l 16 bit du tin cua Intel. 8088 ra doi sau 8086 mt cht, v co ban n cung c cu tao
ging nhu 8086, nhung c gi thnh re hon v chi c bus du liu 8 bt, v tc d cung
thp hon. Tip sau d l su ra doi cua cc b vi xu l 80186, 80286, 80386, 80486, 80586
(Pentium), PII, PIII, P4...Cng v sau th cc b vi xu l lai cng tro nn manh m hon
voi d di cc thanh ghi di hon, tc d dng h cao hon, b rng bus lon hon...
c) Bo vi xu l 8086
Ta chon 8086 d nghin cuu v n c cu trc don gian, d tm hiu. V diu quan
trong l hu ht cc lnh cua n du duoc cc b vi xu l sau ny k thua, nn cc
chuong trnh vit cho 8086 vn c th p dung trn cc b vi xu l hin dai hon. Ta s
xem xt 14 thanh ghi co ban cua 8086, mi thanh ghi c chiu di 16 bit.
Nhm cc thanh ghi du liu (Thanh ghi cng dung chung):
Cc thanh ghi ny duoc su dung khi thuc hin thao tc voi du liu. C 4 thanh ghi 16
bit duoc dt tn l AX, BX, CX, DX. Mi thanh ghi lai duoc chia lm 2 thanh ghi 8 bit
voi cc tn tuong ung nhu trn hnh v:
AX AH AL
BX BH BL
CPU B nho trong
trong
Mach vo/ra
Bus
Bi giang hop ng Chuong I: Cc khi nim co ban
12
CX CH CL
DX DH DL
Nhm cc thanh ghi doan:
Cc thanh ghi ny dng d luu tru dia chi cua cc doan b nho (segment) trong cc
thao tc voi b nho. C 4 thanh ghi 16 bt l CS, DS, ES, SS.
CS
DS
SS
ES
Nhm cc thanh ghi con tro v chi s:
Cc thanh ghi ny dng d chua dia chi phn doan (offset) cua cc nho trong cc
thao tc voi b nho. C 5 thanh ghi 16 bit l SI, DI, SP, BP, IP.
SI
DI
SP
BP
IP
(Cc khi nim v dia chi segment v offset s ni k hon o phn sau)
Thanh ghi trang thi (Thanh ghi co - Flag):
Thanh ghi ny dng d xc dinh trang thi cua b vi xu l. Mi bt trn thanh ghi co c
mt tn ring, c mt cng dung ring trong vic phan nh trang thi (s tm hiu cu th
trong chuong 3).
Bi giang hop ng Chuong I: Cc khi nim co ban
13
1.3.3 T chc b nh trong
a) ia chi vat l:
B nho cua my tnh duoc cu tao boi cc phn tu nho 1 bit. Cu 8 phn tu nho tao
thnh mt nho (1 byte). Cc nho duoc sp xp tun tu trong b nho v duoc dnh s
ln luot tu 0, 1, 2... S hiu cc nho nhu trn duoc goi l dia chi vt l cua nho.
Ta s xem xt m hnh t chuc b nho trong h thng xu l 8086. B vi xu l 8086 su
dung 20 duong dy dia chi (bus dia chi 20 bt) d lin lac voi b nho. Ni cch khc, dia
chi cc nho l mt dy di 20 bt. Nhu vy s luong cuc dai cc nho c th dnh dia
chi l 2
20
(= 1MB).
1111...1111111 FFFFFh
...
0000...0000011 Dia chi dang hex: 00003h
0000...0000010 00002h
0000...0000001 00001h
0000...0000000 1 nho 00000h 1 nho
(20 bt)
Cc thanh ghi cua b vi xu l 8086 chi di 16 bt, chng khng th chua duoc dia chi
di 20 bt. Do d nguoi ta phai su dung mt phuong php dnh dia chi khc, goi l dia
chi logic.
b) ia chi logic:
Theo phuong php ny, b nho duoc chia thnh tung doan, mi doan c chiu di ti
da 64 KB. Cc doan duoc dnh s ln luot l 0, 1, 2,... S hiu doan nhu vy goi l dia
chi doan (hay dia chi segment).
Nguoi ta su dung 16 bt d dnh s cc doan, nhu vy dia chi segment s nm trong pham
vi tu 0000h dn FFFFh.
Cc nho trong doan cung duoc dnh s ln luot l 0, 1, 2,... S hiu nho nhu vy
goi l dia chi tuong di (hay dia chi offset). Mt doan nho c kch thuoc ti da 64 KB,
tuc l c ti da 65536 nho.
Nguoi ta cung dng 16 bt d dnh s cc nho, nhu vy dia chi offset s nm trong
pham vi tu 0000h dn FFFFh.
Mun xc dinh dia chi cua mt nho ta phai bit hai thng tin: nho d thuc doan
no (segment) v vi tr cua nho trong doan (offset). Cp dia chi segment:offset duoc
goi l dia chi logic.
V du:
Mt nho c dia chi segment:offset = 10A2:34B4h, hy xc dinh dia chi vt l cua n.
Giai:
Buoc 1: Dich dia chi segment v bn tri 4 bt (tuong duong voi dich 1 k hiu hex).
Ta thu duoc: 10A20h
Buoc 2: Ly gi tri thu duoc o buoc 1 dem cng voi dia chi offset:
Bi giang hop ng Chuong I: Cc khi nim co ban
14
10A20h
+ 34B4h
13ED4h
Vy dia chi vt l cua nho d l 13ED4h.
c) Su phn chia khng gian nho:
Khng gian dia chi 1MB (tu 00000h dn FFFFFh) thuong duoc chia thnh cc vng
nho theo chuc nng su dung:
F0000h ROM BIOS
E0000h
D0000h
C0000h
} D dnh
B0000h
A0000h
} B nho hin thi
90000h
...
20000h
10000h
00000h 64 KB
} B nho co so: 10 doan (640 KB)
Trong d, 10 doan du tin (B nho co so - Base memory) dng d nap v chay cc
ung dung cua h diu hnh DOS. Hai doan dia chi tip theo dnh cho RAM trn vi mach
mn hnh. Doan cui cng dnh cho ROM BIOS.
BIOS (Base Input Output System) l mt phn mm diu khin cc thao tc vo ra co
ban cua my tnh. N duoc nh san xut ci sn trong ROM v tu dng thi hnh khi bt
my tnh.

You might also like