Bài ging hp ng Chng I: Các khái nim c bn
5
CHNG I: CÁC KHÁI NIM C BN
1.1 Mu
Hp ng (Assembly language) là mt ngôn ng lp trình cp thp, mc ích nhm giao
tip trc tip vi phn cng ca máy tính.
Máy tính ch có kh nng hiu c các tín hiu 0, 1 di dng n hoc t, gi là tín
hiu nh phân (ngôn ng nh phân còn c gi là ngôn ng máy). Các lnh ca hp ng
thc cht là dng kí hiu ca ngôn ng máy: hp ng s dng các kí hiu bng ting Anh
biu din các lnh ngôn ng máy cho d nh hn. Ví d:
nh ngôn ng máy nh hp ng
1011 0100 0010 1010
1100 1101 0010 0001
MOV AH,2Ah
INT 21h
Ta thy các lnh máy tính bng các dãy bít 0, 1 rt dài và khó nh, còn lnh hp ng
thì ngn gn hn nhiu. Khi chy mt chng trình hp ng thì phi dch nó sang ngôn
ng máy.
Hc hp ng, không ch hc mt ngôn ng lp trình có tc rt nhanh (hp ng là
ngôn ng lp trình có tc nhanh nht) mà còn nm bt c bn cht bên trong ca
máy tính, bit cách tác ng trc tip vào phn lõi ca máy tính.
1.2 Biu din s và kí t trong máy tính
1.2.1 Mt s hm
a) H thp phân (Decimal) - Hm c s 10
H thp phân s dng 10 kí hiu (0, 1, 2, 9) biu din thông tin. Các s trong h
thp phân c biu din di dng tng các lu tha c s 10.
Ví d:
S 1998 trong h thp phân có th biu din nh sau:
(1998)
10
= 1x10
Trong hp ng, ngi ta kí hiu 1 s nh phân bng ch B hoc b cui (vit tt ca
Binary).
Ví d:
Bài ging hp ng Chng I: Các khái nim c bn
6
(1101)
2
c kí hiu là: 1101B, hoc 1101b
c) H thp lc phân (Hexa Decimal) - Hm c s 16
H thp lc phân s dng 16 kí hiu (0, 1, 2, 9, A, B, C, D, E, F) biu din thông
tin. Các kí hiu A, B, C, D, E, F ln lt ng vi các giá tr 10, 11, 12, 13, 14, 15 trong h
thp phân. Các s trong h thp lc phân c biu din di dng tng các lu tha c
16.
Ví d:
S 2B trong h thp lc phân có th biu din nh sau:
(2B)
16
= 2x16
1
+ Bx16
0
= (43)
10
Trong hp ng, ngi ta kí hiu 1 s thp lc phân bng ch H hoc h cui (vit tt ca
Hexa Decimal).
Ví d:
(2B)
16
c kí hiu là: 2BH, hoc 2Bh
Chú ý: Kí hiu mt s thp lc phân trong chng trình hp ng phi luôn bt u bng
thp phân H Hex H nh phân
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í d 1:
Chuyn i 2Ah sang h nh phân.
Tra bng ta thy: 2h = 0010b, Ah = 1010b
y 2Ah = 00101010b
Ví d 2:
Chuyn i 10110110b sang h hex.
u tiên ta chia dãy bít nh phân thành tng nhóm 4 bít, thu c 2 nhóm sau: 0110 và
1011.
Tra bng ta thy: 0110b = 6h, 1011b = Bh
y 10110110b = B6h
1.2.2 Biu din s nguyên trong máy tính
Do gii hn ca phn cng máy tính, d liu trong máy tính thng c biu din bi
các nhóm 8 bít (gi là Byte)
Nh vy, nu chiu dài dãy bít là 8 thì bít u tiên xác nh du, 7 bít còn li xác nh
giá tr s nguyên?
Ví d:
+13 c biu din bi dãy bít 0000 1101.
y s -13 c biu din nh th nào, có phi là dãy bít 1000 1101 hay không?
Nguyên tc biu din s âm trong máy tính: phi tho mãn u kin sau
Âm (nh phân) + S Dng (nh phân) = 0
Gi s s -13 c biu din bi dãy bít 1000 1101, ta em nó cng vi dãy bít biu din
+13 kim tra:
0000 1101
+ 1000 1101
1001 1010
0
Ta thy tng thu c khác 0, nh vy ây không phi là dãy bít cn tìm
Quy tc tìm si: Cho 1 s nguyên A. Gi sã bit dãy bít biu din A, khi ó mun
tìm dãy bít biu din s -A ta làm nh sau:
c 1: Tìm s bù 1 ca A bng cách o tt c các bít.
Ví d: A = 0000 1101
Khi ó s bù 1 ca A là 1111 0010
c 2: Tìm s bù 2 (bng cách ly s bù 1 cng vi 1)
1111 0010
+ 1
1111 0011
bù 2 tìm c (1111 0011) chính là dãy bít biu din s -A.
Bài ging hp ng Chng I: Các khái nim c bn
9
Ta th kim tra li bng cách cng 2 dãy bít:
0000 1101
+ 1111 0011
1 0000 0000
• u ây là s nguyên có du:
Vì Msb = 1 nên N là s âm. n gin ta s xác nh –N (s dng) trc, tó suy ra
N.
Tìm –N bng cách tìm s bù 2 ca N
c 1: o bít
bù 1 = 0001 1000 1110 0111
c 2: em cng vi 1
0001 1000 1110 0111
+ 1
0001 1000 1110 1000
Ta tìm c –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
y N = -6376
1.2.3 Biu din kí t trong máy tính
Khi s dng máy tính, ta không ch làm vic vi các con s mà còn phi làm vic vi
nhiu loi d liu khác nhau, trong ó có các kí t. Các kí t cng c biu din bi các
dãy bít nh phân, s biu din này mang tính cht quy c.
• Các khi Nhp/Xut d liu: bao gm các thit b nh bàn phím, chut, màn
hình
• Khi lu tr: bao gm các a cng, a mm
• Khi x lý: ây là phn quan trng nht ca mt máy tính, ta s tp trung xem xét
nó.
t h thng x lý ca máy tính bao gm 3 b phn chính:
+ B vi x lý – CPU (Central Processing Unit): Là b não ca máy tính, nó x lý các
thông tin và u khin mi hot ng ca máy tính.
+ B nh trong: Là b nh có kh nng liên lc trc tip vi b vi x lý,là ni lu tr d
liu phc v cho quá trình x lý.
+ Các mch vào ra: u khin vic giao tip vi thit b ngoi vi.
Ngoài ra còn có h thng các dây dn, cáp ni liên kt gia 3 b phn trên (h thng
Bus)
lýNhp Xut
u tr
Bài ging hp ng Chng I: Các khái nim c bn
11
1.3.2 B vi x lý - CPU
ây là trung tâm x lý ca máy tính. Mi b vi x lý c trang b mt h thng các
nh c bn bng ngôn ng nh phân (do nhà sn xut quy nh). Ngi lp trình có th
dng các lnh này “ra lnh” cho máy tính thc hin u mình mun.
a) Các thành phn chính ca b vi x lý:
• ALU (Arithmetic & Logic Unit): Khi s hc và logic. ây là ni thc hin các
phép tính s hc (cng, tr, nhân, chia ) và các phép logic (Not, And, Or ).
• Các thanh ghi: Cung cp kh nng nh bên trong CPU. Mi thanh ghi có kh
ng cha c mt dãy các bít d liu ( dài còn ph thuc vao tng loi
CPU).
• thng ni ghép bên trong CPU (Bus ni b): Cho phép liên lc gia các b
phn bên trong CPU.
b) H vi x lý Intel x86
thao tác vi b nh. Có 4 thanh ghi 16 bít là CS, DS, ES, SS.
CS
DS
SS
ES
• Nhóm các thanh ghi con tr và ch s:
Các thanh ghi này dùng cha a ch phân n (offset) ca các ô nh trong các
thao tác vi b nh. Có 5 thanh ghi 16 bit là SI, DI, SP, BP, IP.
SI
DI
SP
BP
IP
(Các khái nim va ch segment và offset s nói k hn phn sau)
• Thanh ghi trng thái (Thanh ghi c - Flag):
Thanh ghi này dùng xác nh trng thái ca b vi x lý. Mi bít trên thanh ghi c có
t tên riêng, có mt công dng riêng trong vic phn ánh trng thái (s tìm hiu c th
trong chng 3).
Bài ging hp ng Chng I: Các khái nim c bn
13
1.3.3 T chc b nh trong
a) a ch vt lý:
B nh ca máy tính c cu to bi các phn t nh 1 bit. C 8 phn t nh to
thành mt ô nh (1 byte). Các ô nhc sp xp tun t trong b nh và c ánh s
n lt t 0, 1, 2 S hiu các ô nh nh trên c gi là a ch vt lý ca ô nh.
Ta s xem xét mô hình t chc b nh trong h thng x lý 8086. B vi x lý 8086 s
ng 20 ng dây a ch (bus a ch 20 bít) liên lc vi b nh. Nói cách khác, a
ch các ô nh là mt dãy dài 20 bít. Nh vy s lng cc i các ô nh có thánh a
ch là 2
20
Ta thu c: 10A20h
c 2: Ly giá tr thu c bc 1 em cng vi a ch offset:
Bài ging hp ng Chng I: Các khái nim c bn
14
10A20h
+ 34B4h
13ED4h
y a ch vt lý ca ô nhó là 13ED4h.
c) S phân chia không gian nh:
Không gian a ch 1MB (t 00000h n FFFFFh) thng c chia thành các vùng
nh theo chc nng s dng:
F0000h
ROM BIOS
E0000h
D0000h
C0000h
} dành
B0000h
A0000h
} B nh hin th
90000h
20000h
10000h
00000h 64 KB
} B nh c s: 10 n (640 KB)
Trong ó, 10 n u tiên (B nh c s - Base memory) dùng np và chy các
ng dng ca hu hành DOS. Hai n a ch tip theo dành cho RAM trên v mch
màn hình. n cui cùng dành cho ROM BIOS.
BIOS (Base Input – Output System) là mt phn mm u khin các thao tác vào ra c