Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

Bài gi ng h p ng Ch ng I: Các khái ni m c b n

CH NG I: CÁC KHÁI NI M C B N

1.1 M u
H p ng (Assembly language) là m t ngôn ng l p trình c p th p, m c ích nh m giao
ti p tr c ti p v i ph n c ng c a máy tính.
Máy tính ch có kh n ng hi u c các tín hi u 0, 1 d i d ng n ho c t , g i là tín
hi u nh phân (ngôn ng nh phân còn c g i là ngôn ng máy). Các l nh c a h p ng
th c ch t là d ng kí hi u c a ngôn ng máy: h p ng s d ng các kí hi u b ng ti ng Anh
bi u di n các l nh ngôn ng máy cho d nh h n. Ví d :

nh ngôn ng máy nh h p ng
1011 0100 0010 1010 MOV AH,2Ah
1100 1101 0010 0001 INT 21h

Ta th y các l nh máy tính b ng các dãy bít 0, 1 r t dài và khó nh , còn l nh h p ng


thì ng n g n h n nhi u. Khi ch y m t ch ng trình h p ng thì ph i d ch nó sang ngôn
ng máy.
H c h p ng , không ch h c m t ngôn ng l p trình có t c r t nhanh (h p ng là
ngôn ng l p trình có t c nhanh nh t) mà còn n m b t c b n ch t bên trong c a
máy tính, bi t cách tác ng tr c ti p vào ph n lõi c a máy tính.

1.2 Bi u di n s và kí t trong máy tính


1.2.1 M t s h m
a) H th p phân (Decimal) - H m c s 10
H th p phân s d ng 10 kí hi u (0, 1, 2,...9) bi u di n thông tin. Các s trong h
th p phân c bi u di n d i d ng t ng các lu th a c s 10.
Ví d :
S 1998 trong h th p phân có th bi u di n nh sau:
(1998)10 = 1x103 + 9x102 + 9x101 + 8x100

Trong h p ng , ng i ta kí hi u 1 s th p phân b ng ch D ho c d cu i (vi t t t c a


Decimal), c ng có th không c n vi t các ch ó.
Ví d :
(1998)10 c kí hi u là: 1998D, 1998d, ho c n gi n là 1998

b) H nh phân (Binary) - H mc s 2
H nh phân s d ng 2 kí hi u (0,1) bi u di n thông tin. Các s trong h nh phân
c bi u di n d i d ng t ng các lu th a c s 2.
Ví d :
S 1101 trong h nh phân có th bi u di n nh sau:
(1101)2 = 1x23 + 1x22 + 0x21 + 1x20
= (13)10

Trong h p ng , ng i ta kí hi u 1 s nh phân b ng ch B ho c b cu i (vi t t t c a


Binary).
Ví d :

5
Bài gi ng h p ng Ch ng I: Các khái ni m c b n

(1101)2 c kí hi u là: 1101B, ho c 1101b

c) H th p l c phân (Hexa Decimal) - H m c s 16


H th p l c phân s d ng 16 kí hi u (0, 1, 2,...9, A, B, C, D, E, F) bi u di n thông
tin. Các kí hi u A, B, C, D, E, F l n l t ng v i các giá tr 10, 11, 12, 13, 14, 15 trong h
th p phân. Các s trong h th p l c phân c bi u di n d i d ng t ng các lu th a c
16.
Ví d :
S 2B trong h th p l c phân có th bi u di n nh sau:
(2B)16 = 2x161 + Bx160
= (43)10

Trong h p ng , ng i ta kí hi u 1 s th p l c phân b ng ch H ho c h cu i (vi t t t c a


Hexa Decimal).
Ví d :
(2B)16 c kí hi u là: 2BH, ho c 2Bh

Chú ý: Kí hi u m t s th p l c phân trong ch ng trình h p ng ph i luôn b t u b ng


. Ví d s (FA)10 c kí hi u là 0FAh (ch không kí hi u là FAh).

H th p l c phân (g i t t là h hex) là h m c s d ng nhi u nh t trong h p ng ,


do nó có th bi u di n nh ng dãy bít nh phân dài b ng nh ng kí hi u ng n g n, d nh
n.

d) Chuy n i gi a các h m
• Chuy n t h th p phân v h nh phân:
Quy t c chuy n: em s th p phân chia liên li p cho 2, cho t i khi th ng s b ng 0 thì
ng l i. Vi t các s d ng c t d i lên ta thu c s nh phân t ng ng.
Ví d : Chuy n s th p phân 13 sang h nh phân.
13 2
1 6 2
d 0 3 2
d 1 1 2
1 0

Vi t các s d ng ct d i lên ta thu c s nh phân 1101b.

• Chuy n t h th p phân v h th p l c phân:


Quy t c chuy n: em s th p phân chia liên li p cho 16, cho t i khi th ng s b ng 0 thì
ng l i. Vi t các s d ng c t d i lên ta thu c s th p l c phân t ng ng.
Ví d : Chuy n s th p phân 43 sang h th p l c phân.
43 16
11 2 16
d 2 0

Vi t các s d ng ct d i lên ta thu c s th p l c phân 2Bh (chú ý là 11d = 0Bh).

6
Bài gi ng h p ng Ch ng I: Các khái ni m c b n

• Chuy n i gi a h nh phân và h th p l c phân:


Vi c chuy n i gi a 2 h m này khá d dàng do m i kí hi u trong h hex l i t ng
ng v i 4 kí hi u nh phân. Xem b ng chuy n i sau:

th p 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:
Chuy n i 2Ah sang h nh phân.
Tra b ng ta th y: 2h = 0010b, Ah = 1010b
y 2Ah = 00101010b
Ví d 2:
Chuy n i 10110110b sang h hex.
u tiên ta chia dãy bít nh phân thành t ng nhóm 4 bít, thu c 2 nhóm sau: 0110 và
1011.
Tra b ng ta th y: 0110b = 6h, 1011b = Bh
y 10110110b = B6h

1.2.2 Bi u di n s nguyên trong máy tính


Do gi i h n c a ph n c ng máy tính, d li u trong máy tính th ng c bi u di n b i
các nhóm 8 bít (g i là Byte)
1 byte = 8 bit
2 byte = 16 bit = 1 word
Ng i ta có th ghép nhi u byte hay nhi u word t o thành dãy bít dài h n. Dãy bít
càng dài thì l ng thông tin bi u di n c càng l n. N u g i N là s bít c a dãy thì s
kh n ng bi u di n = 2N.
Xét m t dãy bít nh phân:
1 0 0 1 0 ... 0 0
msb lsb

7
Bài gi ng h p ng Ch ng I: Các khái ni m c b n

Bít u tiên (bên trái) c g i là bít n ng nh t hay bít cao nh t c a dãy (Most
Significant Bit).
Bít cu i cùng (bên ph i) c g i là bít nh nh t hay bít th p nh t c a dãy (Least
Significant Bit).

a) S nguyên không d u:
M t s nguyên không d u (s không âm) c bi u di n b i 1 dãy bít nh phân nh ta
ã xét ph n tr c (ph n h m nh phân). ây ta ch nh n m nh thêm v chi u dài
a dãy bít: dài dãy bít khi bi u di n trong máy tính luôn là b i s c a 8.
Ví d : Bi u di n s nguyên 13 trong máy tính.
ph n tr c ta ã bi t: s nguyên 13 chuy n sang h nh phân s là 1101
Trong máy tính s có nhi u cách bi u di n s nguyên này:
+ S nguyên d ng byte (8 bit): 00001101
+ S nguyên d ng word (16 bit): 00000000 00001101

b) S nguyên có d u:
i v i s nguyên có d u thì khi bi u di n d i d ng nh phân ta ph i dành ra 1 bít
xác nh d u. ó là bít u tiên c a dãy (bít n ng nh t - Msb).
Msb = 0: D u D ng
Msb = 1: D u Âm
Nh v y, n u chi u dài dãy bít là 8 thì bít u tiên xác nh d u, 7 bít còn l i xác nh
giá tr s nguyên?
Ví d :
+13 c bi u di n b i dãy bít 0000 1101.
y s -13 c bi u di n nh th nào, có ph i là dãy bít 1000 1101 hay không?
Nguyên t c bi u di n s âm trong máy tính: ph i tho mãn u ki n sau
Âm (nh phân) + S D ng (nh phân) = 0

Gi s s -13 c bi u di n b i dãy bít 1000 1101, ta em nó c ng v i dãy bít bi u di n


+13 ki m tra:
0000 1101
+ 1000 1101
1001 1010 0
Ta th y t ng thu c khác 0, nh v y ây không ph i là dãy bít c n tìm

Quy t c tìm s i: Cho 1 s nguyên A. Gi s ã bi t dãy bít bi u di n A, khi ó mu n


tìm dãy bít bi u di n s -A ta làm nh sau:
c 1: Tìm s bù 1 c a A b ng cách o t t c các bít.
Ví d : A = 0000 1101
Khi ó s bù 1 c a A là 1111 0010
c 2: Tìm s bù 2 (b ng cách l y s bù 1 c ng v i 1)
1111 0010
+ 1
1111 0011
bù 2 tìm c (1111 0011) chính là dãy bít bi u di n s -A.

8
Bài gi ng h p ng Ch ng I: Các khái ni m c b n

Ta th ki m tra l i b ng cách c ng 2 dãy bít:


0000 1101
+ 1111 0011
1 0000 0000
t qu thu c b ng 0 ch ng t ta ã tìm úng (vì ang bi u di n s nguyên b ng m t
dãy 8 bit nên s 1 trong k t qu trên có th lo i b - s gi i thích k h n trong ch ng
sau).
y -13 = 1111 0011b

Bài toán ng c:
Cho m t dãy bít nh phân sau ây (16 bit):
1110 0111 0001 1000b
Hãy xác nh xem nó bi u di n s nguyên nào?
Gi i:
i s nguyên ó là N.
Có 2 tr ng h p x y ra:
• u ây là s nguyên không d u:
N = 1x215 + 1x214 + 1x213 + 1x210 + 1x 29 + 1x28 + 1x24 + 1x23
= 32768 + 16384 +8192 + 1024 + 512 + 256 + 16 + 8
= 59160
• u ây là s nguyên có d u:
Vì Msb = 1 nên N là s âm. n gi n ta s xác nh –N (s d ng) tr c, t ó suy ra
N.
Tìm –N b ng cách tìm s bù 2 c a N
c 1: o bít
bù 1 = 0001 1000 1110 0111
c 2: em c ng v i 1
0001 1000 1110 0111
+ 1
0001 1000 1110 1000
Ta tìm c –N = 0001 1000 1110 1000b
= 1x212 + 1x211 + 1x 27 + 1x26 + 1x25 + 1x23
= 4096 + 2048 + 128 + 64 + 32 + 8
= 6376
y N = -6376

1.2.3 Bi u di n kí t trong máy tính


Khi s d ng máy tính, ta không ch làm vi c v i các con s mà còn ph i làm vi c v i
nhi u lo i d li u khác nhau, trong ó có các kí t . Các kí t c ng c bi u di n b i các
dãy bít nh phân, s bi u di n này mang tính ch t quy c.
Tuy nhiên, n u m i ng i, m i c quan, m i qu c gia l i t a ra quy c c a riêng
mình thì s r t khó kh n cho vi c trao i thông tin. Nhu c u t ra là c n ph i có m t h
th ng quy c chung mang tính qu c t .
Cách th c mã hoá kí t c s d ng r ng rãi nh t trên các máy PC d a trên b ng mã
ASCII (American Standard Code for Information Interchange). H th ng này s d ng 8
bít bi u di n 1 kí t .

9
Bài gi ng h p ng Ch ng I: Các khái ni m c b n

Ví d :
Kí t Mã nh phân 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
... ... ...
(B ng mã ASCII y xin xem ph n ph l c 2)

Hi n nay có r t nhi u b ng mã khác nhau c s d ng, ph bi n nh t là mã Unicode,


i dài dãy bít có th thay i khá m m d o, và nó v n gi c s t ng thích v i
mã ASCII truy n th ng.

1.3 T ch c c a máy tính


1.3.1 S h th ng máy tính
Ng i ta th ng chia các b ph n c a máy tính làm 4 kh i sau:

Nh p lý Xu t

u tr

Trong ó:
• Các kh i Nh p/Xu t d li u: bao g m các thi t b nh bàn phím, chu t, màn
hình...
• Kh i l u tr : bao g m các a c ng, a m m...
• Kh i x lý: ây là ph n quan tr ng nh t c a m t máy tính, ta s t p trung xem xét
nó.
t h th ng x lý c a máy tính bao g m 3 b ph n chính:
+ B vi x lý – CPU (Central Processing Unit): Là b não c a máy tính, nó x lý các
thông tin và u khi n m i ho t ng c a máy tính.
+ B nh trong: Là b nh có kh n ng liên l c tr c ti p v i b vi x lý,là n i l u tr d
li u ph c v cho quá trình x lý.
+ Các m ch vào ra: u khi n vi c giao ti p v i thi t b ngo i vi.
Ngoài ra còn có h th ng các dây d n, cáp n i liên k t gi a 3 b ph n trên (h th ng
Bus)

10
Bài gi ng h p ng Ch ng I: Các khái ni m c b n

Bus

nh trong CPU ch vào/ra


trong
1.3.2 B vi x lý - CPU
ây là trung tâm x lý c a máy tính. M i b vi x lý c trang b m t h th ng các
nh c b n b ng ngôn ng nh phân (do nhà s n xu t quy nh). Ng i l p trình có th
d ng các l nh này “ra l nh” cho máy tính th c hi n u mình mu n.
a) Các thành ph n chính c a b vi x lý:
• ALU (Arithmetic & Logic Unit): Kh i s h c và logic. ây là n i th c hi n các
phép tính s h c (c ng, tr , nhân, chia...) và các phép logic (Not, And, Or...).
• Các thanh ghi: Cung c p kh n ng nh bên trong CPU. M i thanh ghi có kh
ng ch a c m t dãy các bít d li u ( dài còn ph thu c vao t ng lo i
CPU).
• th ng n i ghép bên trong CPU (Bus n i b ): Cho phép liên l c gi a các b
ph n bên trong CPU.

b) H vi x lý Intel x86
Có nhi u hãng khác nhau s n xu t b vi x lý cho máy tính. Ta s t p trung nghiên
u các b vi x lý thu c dòng x86 do hãng Intel ch t o.
B vi x lý u tiên thu c dòng này là 8086. Nó c s n xu t n m 1978, là b vi x
lý 16 bit u tiên c a Intel. 8088 ra i sau 8086 m t chút, v c b n nó c ng có c u t o
gi ng nh 8086, nh ng có giá thành r h n vì ch có bus d li u 8 bít, và t c c ng
th p h n. Ti p sau ó là s ra i c a các b vi x lý 80186, 80286, 80386, 80486, 80586
(Pentium), PII, PIII, P4...Càng v sau thì các b vi x lý l i càng tr nên m nh m h n
i dài các thanh ghi dài h n, t c ng h cao h n, b r ng bus l n h n...

c) B vi x lý 8086
Ta ch n 8086 nghiên c u vì nó có c u trúc n gi n, d tìm hi u. Và u quan
tr ng là h u h t các l nh c a nó u c các b vi x lý sau này k th a, nên các
ch ng trình vi t cho 8086 v n có th áp d ng trên các b vi x lý hi n i h n. Ta s
xem xét 14 thanh ghi c b n c a 8086, m i thanh ghi có chi u dài 16 bit.
• Nhóm các thanh ghi d li u (Thanh ghi công d ng chung):
Các thanh ghi này c s d ng khi th c hi n thao tác v i d li u. Có 4 thanh ghi 16
bit c t tên là AX, BX, CX, DX. M i thanh ghi l i c chia làm 2 thanh ghi 8 bit
i các tên t ng ng nh trên hình v :

AX AH AL

BX BH BL

11
Bài gi ng h p ng Ch ng I: Các khái ni m c b n

CX CH CL

DX DH DL

• Nhóm các thanh ghi n:


Các thanh ghi này dùng l u tr a ch c a các n b nh (segment) trong các
thao tác v i 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 ch a a ch phân n (offset) c a các ô nh trong các
thao tác v i b nh . Có 5 thanh ghi 16 bit là SI, DI, SP, BP, IP.

SI

DI

SP

BP

IP

(Các khái ni m v a ch segment và offset s nói k h n ph n sau)

• Thanh ghi tr ng thái (Thanh ghi c - Flag):


Thanh ghi này dùng xác nh tr ng thái c a b vi x lý. M i bít trên thanh ghi c có
t tên riêng, có m t công d ng riêng trong vi c ph n ánh tr ng thái (s tìm hi u c th
trong ch ng 3).

12
Bài gi ng h p ng Ch ng I: Các khái ni m c b n

1.3.3 T ch c b nh trong
a) a ch v t lý:
B nh c a máy tính c c u t o b i các ph n t nh 1 bit. C 8 ph n t nh t o
thành m t ô nh (1 byte). Các ô nh c s p x p tu n t trong b nh và c ánh s
n l t t 0, 1, 2... S hi u các ô nh nh trên c g i là a ch v t lý c a ô nh .
Ta s xem xét mô hình t ch c b nh trong h th ng x lý 8086. B vi x lý 8086 s
ng 20 ng dây a ch (bus a ch 20 bít) liên l c v i b nh . Nói cách khác, a
ch các ô nh là m t dãy dài 20 bít. Nh v y s l ng c c i các ô nh có th ánh a
ch là 220 (= 1MB).

1111...1111111 FFFFFh

...
0000...0000011 a ch d ng hex: 00003h
0000...0000010 00002h
0000...0000001 00001h
0000...0000000 1 ô nh 00000h 1 ô nh

(20 bít)

Các thanh ghi c a b vi x lý 8086 ch dài 16 bít, chúng không th ch a c a ch


dài 20 bít. Do ó ng i ta ph i s d ng m t ph ng pháp ánh a ch khác, g i là a
ch logic.

b) a ch logic:
Theo ph ng pháp này, b nh c chia thành t ng n, m i n có chi u dài t i
a 64 KB. Các n c ánh s l n l t là 0, 1, 2,... S hi u n nh v y g i là a
ch n (hay a ch segment).
Ng i ta s d ng 16 bít ánh s các n, nh v y a ch segment s n m trong ph m
vi t 0000h n FFFFh.
Các ô nh trong n c ng c ánh s l n l t là 0, 1, 2,... S hi u ô nh nh v y
i là a ch t ng i (hay a ch offset). M t n nh có kích th c t i a 64 KB,
c là có t i a 65536 ô nh .
Ng i ta c ng dùng 16 bít ánh s các ô nh , nh v y a ch offset s n m trong
ph m vi t 0000h n FFFFh.
Mu n xác nh a ch c a m t ô nh ta ph i bi t hai thông tin: ô nh ó thu c n
nào (segment) và v trí c a ô nh trong n (offset). C p a ch segment:offset c
i là a ch logic.
Ví d :
t ô nh có a ch segment:offset = 10A2:34B4h, hãy xác nh a ch v t lý c a nó.
Gi i:
c 1: D ch a ch segment v bên trái 4 bít (t ng ng v i d ch 1 kí hi u hex).
Ta thu c: 10A20h
c 2: L y giá tr thu c b c 1 em c ng v i a ch offset:

13
Bài gi ng h p ng Ch ng I: Các khái ni m c b n

10A20h
+ 34B4h
13ED4h

y a ch v t lý c a ô nh ó là 13ED4h.

c) S phân chia không gian nh :


Không gian a ch 1MB (t 00000h n FFFFFh) th ng c chia thành các vùng
nh theo ch c n ng s d ng:

F0000h ROM BIOS


E0000h
D0000h
C0000h
} dành

B0000h
A0000h }B nh hi n th
90000h

...
20000h }B nh c s : 10 n (640 KB)
10000h
00000h 64 KB

Trong ó, 10 n u tiên (B nh c s - Base memory) dùng n p và ch y các


ng d ng c a h u hành DOS. Hai n a ch ti p theo dành cho RAM trên v m ch
màn hình. n cu i cùng dành cho ROM BIOS.
BIOS (Base Input – Output System) là m t ph n m m u khi n các thao tác vào ra c
n c a máy tính. Nó c nhà s n xu t cài s n trong ROM và t ng thi hành khi b t
máy tính.

14

You might also like