Tải bản đầy đủ (.pdf) (14 trang)

Chương 1 - Các hệ đếm và việc mã hoá thông tin trong máy tính pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (278.88 KB, 14 trang )

Chơng 1

Các hệ đếm
v việc mã hoá thông tin
trong máy tính



1. Các hệ đếm dùng trong máy tính
1.1. Hệ mời v hệ hai
Trong cuộc sống hng ngy chúng ta dùng hệ cơ số mời hoặc nói gọn hơn hệ
mời (decimal number system, viết tắt l hệ D) để biểu diễn các giá trị số. Điều ny
l rất tự nhiên vì từ xa xa một con ngời bình thờng đã biết dùng 10 ngón tay của
mình (v tất nhiên lúc bí quá có thể dùng thêm cả ngón chân!) nh l "công cụ tính
toán" sơ đẳng. Trong hệ thống ny chúng ta dùng tổ hợp của các chữ số 0 9 để biểu
diễn các giá trị số, đi kèm theo tập hợp đó có thể dùng thêm chữ D ở cuối để chỉ ra
rằng đó l số hệ mời (ta cũng có thể bỏ chữ D đi m vẫn ngầm hiểu rằng đó l số hệ
mời).
Trong thế giới máy tính thì khác, để biểu diễn một giá trị số chúng ta dùng hệ
cơ số hai hoặc nói gọn hơn hệ hai (Binary number system, viết tắt l hệ B), trong đó
chỉ tồn tại 2 chữ số 0 v 1 để biểu diễn các giá trị số (ứng với 2 trạng thái có điện v
không có điện của các mạch điện tử cấu tạo nên máy). 0 v 1 cũng l các giá trị có thể
có của một chữ số hệ hai (Binary digit, viết tắt l bit). Hệ hai l hệ đếm dùng trong
các máy tính. Một số hệ hai gồm các bit thờng đợc đánh dấu bằng chữ B đi kèm ở
cuối để phân biệt với các hệ khác khi ta lm việc cùng một lúc với nhiều hệ đếm khác
nhau. Một cụm 4 bit sẽ tạo thnh 1 nibble, cụm 8 bit sẽ tạo thnh 1 byte, cụm 16 bit

5
thông thờng sẽ tạo thnh 1 từ (word), cụm 32 bit sẽ tạo thnh 1 từ kép (double
word). Chữ số đầu tiên bên trái trong dãy các số hệ hai gọi l bit có ý nghĩa lớn nhất
(Most significant bit, MSB), còn bit cuối cùng bên phải trong dãy gọi l bit có ý nghĩa


bé nhất (Least significant bit, LSB). ứng với việc đếm thứ tự 1, 2, 3 ở hệ mời thì ở
hệ hai ta có 1, 10, 11


3

0

Nibble

7



Byte


15

Word


31
Double Word



Hình 1.1. Các đơn vị đo độ di của số hệ hai dẫn xuất từ bit.

Vì con ngời chỉ quen tính toán với hệ mời, trong khi các bộ phận tính toán

của máy tính chỉ biết lm việc với hệ hai, nên để đảm bảo sự giao tiếp thuận tiện giữa
ngời v máy (khi đa số liệu vo v lúc lấy ra kết quả tính toán) thờng xuyên phải
có việc chuyển đổi qua lại giữa hai hệ đếm ny. Chúng ta cùng xem xét nhanh các
vấn đề trên thông qua các ví dụ đơn giản dới đây.

Một số hệ mời viết nh sau: 12345,67

sẽ có giá trị số bằng tổng của các tích giữa các hệ số 1, 2, 3, 4, 5, 6, 7 với các trọng số
10
i
tơng ứng lần lợt nh sau:
12345,67=1.10
4
+2.10
3
+3.10
2
+4.10
1
+5.10
0
+6.10
-1
+7.10
-2
.

Tơng tự nh vậy, một số hệ hai viết nh sau: 10111,01

sẽ có giá trị số bằng tổng của các tích giữa các hệ số 1, 0, 1, 1, 1,01, 1 với các trọng số

2
i
tơng ứng lần lợt nh sau:

=1.2
4
+0.2
3
+1.2
2
+1.2
1
+1.2
0
+0.2
-1
+1.2
-2
.

Các thuật toán thờng dùng để chuyển đổi giữa hai hệ trên:

6
Đổi số hệ hai sang hệ mời
Muốn đổi một số từ hệ hai sang hệ mời chỉ cần tính các các giá trị 2
i
tơng
ứng với các chữ số khác không thứ i của số hệ hai rồi cộng lại nh đã nói ở trên:

Ví dụ

10111,11 B = 2
4
+ 2
2
+ 2
1
+ 2
0
+ 2
-1
+ 2
-2
= 25,75

Ngợc lại muốn chuyển một số từ hệ mời sang số hệ hai ta có thể lm theo 2
cách:
Cách 1 để đổi số hệ mời sang hệ hai
Quy tắc: Lấy số hệ mời cần đổi trừ đi 2
x
(x l giá trị lớn nhất của số mũ chọn
sao cho 2
x
nhỏ hơn hoặc bằng so với số hệ mời cần đổi), ghi lại giá trị 1 cho chữ số hệ
hai ứng với 2
x
. Tiếp tục lm nh vậy đối với số d do phép trừ trên tạo ra v các số 2
i

bậc thấp hơn cho tới khi đạt tới 2
0

v ghi lại các giá trị (0 hoặc 1) cho chữ số hệ hai
thứ i tuỳ theo quan hệ giữa số d v luỹ thừa tơng ứng:

1, khi số d lớn hơn hoặc bằng 2
i
,
0, khi số d nhỏ hơn so với 2
i
(v phép trừ không đợc thực hiện).

Ví dụ: Đổi số 34 sang hệ hai.

Các giá trị 2
i
cần tính đến (2
5
= 32 l giá trị 2
x
sát dới nhất so với số 34)

2
5
2
4
2
3
2
2
2
1

2
0

Các chữ số hệ hai tính đợc:

1 0 0 0 1 0

Nh vậy 34 =100010 B.
Cách 2 để đổi số hệ mời sang hệ hai
Quy tắc: Lấy số cần đổi chia cho 2 v ghi nhớ phần d, tiếp theo lấy thơng
của phép chia trớc đó chia cho 2 v ghi nhớ phần d. Lm nh vậy cho tới khi đợc
thơng bằng 0. Đảo ngợc thứ tự dãy các số d sẽ đợc các chữ số của số hệ hai cần
tìm.

7

Ví dụ: Đổi số 34 sang hệ hai (hình 1.1.). Kết quả đợc 100010B.















Các số d trong khung sẽ đợc sắp xếp theo chiều mũi tên
34
2
0
17
2
8
2
4
2
2
2
1
2
1
0
0
0
1
0
Hình 1.1. Một cách đổi số hệ mời sang hệ hai.

Trong trờng hợp số hệ mời cần đổi có thêm cả phần lẻ sau dấu phảy thì đầu
tiên ta phải đổi riêng rẽ từng phần rồi sau đó cộng các kết quả lại. Đối với phần
nguyên ta có thể lm theo 2 cách đã nói ở trên. Riêng đối với phần sau dấu phảy ta
đổi theo quy tắc trình by sau đây.
Quy tắc đổi số thập phân hệ mời ra hệ hai
Lấy số cần đổi nhân với 2, tích nhận đợc sẽ gồm phần nguyên v phần lẻ nhị
phân, lấy phần lẻ nhị phân của tích thu đợc nhân tiếp với 2. Lm nh vậy cho tới

khi đợc tích chẵn bằng 1. Chọn riêng các phần nguyên (phần trớc dấu phảy) của
các tích thu đợc v sắp xếp lại sẽ đợc các chữ số sau dấu phảy của số hệ hai cần
tìm.

Ví dụ: Đổi 0,125 ra số hệ hai.
Ta thực hiện phép nhân lần lợt theo các bớc trên:

0,125 ì 2 = 0 ,250
0,250 ì 2 = 0 ,500
0,500 ì 2 = 1 ,000

0
0
1

8
v thu đợc kết quả l 0,125 = 0,001 B (phần đợc đóng trong khung).

Kết hợp các ví dụ trên lại, nếu phải đổi số 34,125 ra hệ hai ta thu đợc kết
quả cuối cùng l 34,125 =100010,001 B.

1.2. Số BCD (số hệ mời mã hoá bằng hệ hai)
Giữa hệ mời v hệ hai còn tồn tại một hệ lai: hệ BCD cho các số hệ mời mã
hoá bằng hệ hai (Binary Coded Decimal number), rất thích hợp cho các thiết bị đo có
thêm phần hiện thị số ở đầu ra dùng các loại đèn hiện số khác nhau. ở đây ta dùng 4
số hệ hai để mã hoá một số hệ mời có giá trị nằm trong khoảng 0 9. Nh vậy ở đây
ta không dùng hết các tổ hợp có thể có của 4 bit. Vì tầm quan trọng của các số BCD
nên các bộ vi xử lý thờng có các lệnh thao tác với chúng.

Ví dụ: Số 410 nếu biểu diễn theo kiểu số BCD thì đợc 0100 0001 0000. Kết

quả ny cũng gợi ý cho ta cách thức chuyển đổi giữa 2 loại số.

1.3. Hệ mời sáu (Hexa-decimal, hex, H)
Nếu ta dùng hệ hai để biểu diễn các số có giá trị lớn ta sẽ gặp điều bất tiện l
số hệ hai thu đợc quá di. Ví dụ để biểu diễn số 255 ta cần đến 8 bit viết nh sau:

255 = 1111 1111 B

Trong thực tế để viết kết quả biểu diễn của các số cho gọn lại ngời ta tìm
cách nhóm 4 số hệ hai (1 nibble) thnh một số hệ mời sáu. Khác với hệ BCD vừa nói
hệ 16 dùng hết các tổ hợp có thể của 4 bit để biểu diễn các giá trị số. Để lm đợc điều
ny ngời ta sử dụng các chữ số sẵn có của hệ mời 0 9 để biểu diễn các giá trị số
ứng với 0 9 v dùng thêm các chữ cái A F để biểu diễn các giá trị còn lại ứng với
10 15. Để phân biệt một số hệ mời sáu với các số hệ khác ta kèm thêm chữ H ở
cuối. Ta cũng dễ nhận thấy rằng số mời chỉ l một bộ phận của hệ mời sáu.
2. Các phép toán số học đối với số hệ hai
2.1. Phép cộng
Phép cộng các số hệ hai thực hiện giống nh khi ta lm với số hệ mời. Quy
tắc phép cộng số hệ hai đợc chỉ ra trong bảng 1.1.



9
Bảng 1.1. Quy tắc phép cộng Bảng 1.2. Quy tắc phép trừ
y=a+b y=a-b

a b y C a b y B
0 0 0 0 0 0 0 0
0 1 1 0 0 1 1 1
1 0 1 0 1 0 1 0

1 1 1 1 1 1 0 0
C: nhớ (Carry) B: mợn (Borrow)

Ví dụ
Cộng hệ mời Cộng hệ hai
11 Nhớ 1111 1110
099 Số hạng 1 0110 0011
095 Số hạng 2 0101 1111
194 Tổng 1100 0010

Các bộ cộng trong các khối tính toán số học của máy tính sẽ thực hiện các
phép cộng theo cách đã nói ở trên.

2.2. Phép trừ v số bù hai
a) Phép trừ
Phép trừ các số hệ hai thực hiện giống nh khi ta lm với số hệ mời.
Quy tắc phép trừ số hệ hai đợc chỉ ra trong bảng 1.2.

Ví dụ
Trừ hệ mời Trừ hệ hai
1 Mợn 110 0000
109 Số bị trừ 0110 1101
49 Số trừ 0011 0001
060 Hiệu 0011 1100

b) Số bù hai
Trong khi lm phép trừ ta nhận thấy có thể thực hiện phép trừ bằng phép
cộng: cộng số bị trừ với số đối của số trừ. Điều ny cũng đợc ứng dụng trong các khối
tính toán số học của máy tính để tận dụng các bộ cộng đã có sẵn. Vấn đề đặt ra đối
với số hệ hai l ta phải có cách biểu diễn số âm một cách thích hợp sao cho ta có thể


10
ứng dụng đợc tính chất nói trên. Có rất nhiều cách mã hoá các số hệ hai để biểu diễn
số âm nhng trong thực tế hay dùng nhất l dùng cách mã hoá kiểu số bù hai.
Bảng 1.3 chỉ ra cách tạo ra các số hệ hai có dấu v số bù hai trong sự tơng
quan với số hệ hai.

Bảng 1.3. Biểu diễn các số theo hệ hai, hệ hai có dấu v mã bù hai.
Số 8 bit Số hệ mời Số hệ mời theo Số hệ mời tính
hệ hai tơng đơng mã hệ hai có dấu theo mã bù hai
0000 0000 0 + 0 + 0
0000 0001 1 + 1 + 1
0000 0010 2 + 2 + 2

0111 1101 125 +125 +125
0111 1110 126 +126 +126
0111 1111 127 +127 +127
1000 0000 128 - 0 -128
1000 0001 129 - 1 -127
1000 0010 130 - 2 -126

1111 1101 125 -125 - 3
1111 1110 126 -126 - 2
1111 1111 255 -127 - 1

Quan sát kỹ bảng ny chúng ta có thể rút ra các nhận xét sau:
1. Nếu ta dùng 8 bit để biểu diễn số thì ta thu đợc 256 tổ hợp có giá trị từ 0
đến 255 (tơng ứng 00 FF H), tức l chỉ biểu diễn đợc số dơng.
2. Với tổ hợp trên nếu ta muốn biểu diễn số có dấu theo kiểu dấu v độ lớn
(sign and magnitude) ta phải mất 1 bit để dnh cho dấu v 7 bit còn lại để

định giá trị. Với cách lm ny ta có khả năng biểu diễn cả số âm v số
dơng nằm trong khoảng -127 -0, +0 +127 (chú ý hai giá trị 0 khác
nhau !).
3. Số bù hai đợc tạo ra theo cách gần giống nh kiểu dấu v độ lớn nhng
nó dùng cả 8 bit để biểu diễn giá trị của số đợc mã hoá. Mã bù hai di 8
bit có khả năng biểu diễn các số âm v dơng trong khoảng -128 0 +127.
Một số dơng có mã bù hai giống nh mã hệ hai thông thờng.
4. Một số biểu diễn theo hệ hai sẽ có các giá trị khác nhau nếu hiểu đó l mã
để biểu diễn số theo kiểu hệ hai có dấu hoặc kiểu số bù hai. Nói khác đi,
một cụm các số 0 v 1 sẽ đợc cảm nhận khác nhau khi nó biểu diễn giá

11
trị số theo các mã khác nhau. Cho dù có đợc biểu diễn bằng số hệ hai có
dấu hay số bù hai thì các số âm đều có bit b7=1, còn các số dơng có bit
b7=0.
Bây giờ ta nói cụ thể cách tính số bù hai của một số no đó. Về mặt toán học
thì số bù hai của một số chính l số đối của nó. Nh vậy một số dơng sẽ có số bù hai
l một số âm cùng giá trị tuyệt đối v ngợc lại.

Quy tắc: Muốn tìm số bù hai (còn gọi l bù số học) của một số A ta lm theo
các bớc sau:
+ biểu diễn số A theo mã bù hai của nó.
+ tìm số bù một (bù logic) của số đó (bằng cách đảo bit).
+ cộng 1 vo số bù một ở trên để nhận đợc số bù hai của số A.
Ghi chú: Khi có một số âm đợc biểu diễn theo mã bù hai nếu muốn tính giá
trị tuyệt đối của nó ta cũng áp dụng quy tắc ny (áp dụng các bớc 2,3).

Ví dụ: Tìm số bù hai của 13.

13 = 0000 1101 B (mã bù hai của 13)

số bù 1 của 13: 1111 0010 B (đảo bit của số trên)
cộng thêm 1: 1
số bù hai của 13: 1111 0011 B (tức l -13)
Có thể lấy một ví dụ khác để chứng tỏ kết quả trên l đúng v qua đó cũng
thấy đợc ứng dụng của số bù hai trong khi lm phép trừ.

Ví dụ: 15 - 13 = ?

Ta có thể viết lại phép trừ trên thnh phép cộng 15+(-13) v sử dụng kết quả
vừa tính đợc ở trên cho số (-13):

15 0000 1111
(-13) 1111 0011
tổng 0000 0010 (nhớ 1)

Nếu không để ý đến nhớ ta có kết quả l 2.
Ví dụ: 12 - 13 = ?
12 0000 1100
(-13) 1111 0011
tổng 1111 1111 (tức -1)

12
Đây l một số âm (bit b7=1) với giá trị tuyệt đối l 1 (tra theo bảng 1.3). Mặt
khác ta cũng có thể tìm đợc giá trị tuyệt đối của kết quả bằng cách tìm số bù hai của
nó:

mã bù hai của kết quả trên 1111 1111
số bù 1 của kết quả trên 0000 0000
cộng 1 để tìm giá trị tuyệt đối 0000 0001


2.3. Phép nhân
Phép nhân các số hệ hai thực hiện giống nh khi ta lm với số hệ mời. Quy
tắc phép nhân số hệ hai đợc chỉ ra trong bảng 1.4.

Bảng 1.4. Quy tắc phép nhân y=a.b
a b y
0 0 0
0 1 0
1 0 0
1 1 1


Trên cơ sở quy tắc vừa nêu v để cho đơn giản ta thực hiện ví dụ một phép
nhân 2 số hệ hai với độ di 4 bit để lm sáng tỏ thuật toán nhân.

1001 Số bị mhân (9)
0110 Số nhân (6)
0000 Thnh phần 1 của tổng tích luỹ
1001 Thnh phần 2 của tổng tích luỹ
1001 Thnh phần 3 của tổng tích luỹ
0000 Thnh phần 4 của tổng tích luỹ
0110110 Tổng tích luỹ (54)

Độ di cực đại của kết quả trong trờng hợp ny l 8 bit. Nếu ta có các toán
hạng 8 (hoặc 16) bit thì độ di cực đại của kết quả l 16 (hoặc 32) bit. Mỗi lần nhân 1
bit khác 0 của số nhân với số bị nhân ta thu đợc chính số bị nhân. Nếu dịch trái nó
một số lần tơng ứng với vị trí của bit khác 0 đó trong số nhân, ta tạo ra 1 thnh
phần của tổng tích luỹ. Tổng của các thnh phần nh trên l kết quả của phép nhân.
Phân tích kỹ quá trình trên ta thấy phép nhân có thể thực hiện theo thuật
toán cộng v dịch (trên cơ sở các bộ cộng v dịch) nh sau:


13
Thnh phần đầu tiên của tổng tích luỹ thu đợc l tích của số LSB trong số
nhân với số bị nhân. Nếu LSB = 0 thì thnh phần ny cũng bằng 0, còn nếu
LSB = 1 thì thnh phần ny chính bằng số bị nhân.
Mỗi thnh phần thứ i tiếp theo của tổng tích luỹ sẽ tính đợc bằng cách
tơng tự, nhng phải dịch trái i bit (có thể bỏ qua các thnh phần bằng 0).
Tổng của các tổng thnh phần l tích cần tìm.
Để minh hoạ cho thuật toán trên, ta dùng luôn nó để rút gọn ví dụ đã lm
trớc đây nh sau:
1001 Số bị mhân (9)
0110 Số nhân (6)
1001 Số bị nhân dịch trái 1 lần
1001 Số bị nhân dịch trái 2 lần
0110110 Tổng tích luỹ (54)
2.4. Phép chia
Phép chia l phép tính ngợc của phép nhân. Từ đó suy ra phép chia có thể
đợc thực hiện bằng các phép trừ v phép dịch liên tiếp cho tới khi không thể trừ
đợc nữa (do không còn gì để trừ hoặc số bị trừ nhỏ hơn số chia). Sau đây l thuật
toán của phép chia thông qua ví dụ cụ thể.

Ví dụ: 35/5 = 7.
Ta hãy quan sát kỹ các bớc phải lm khi chia bằng tay:

100011 101
000 0111
1000
101
111
101

101
101
0











Trong các bớc tính ở trên liên tục cần phải có các dự đoán v kiểm tra để tìm
ra đợc kết quả đúng. Công việc ny l rất khó khăn đối với các mạch điện tử của
khối tính toán số học (vốn l các phần tử để thực hiện phép cộng v dịch trong máy
tính). Sau đây l một thuật toán khắc phục đợc các vấn đề nêu ở trên:
1. Đổi số chia ra số bù hai của nó (để bớc ở sau lm tính trừ bằng tính cộng).

14
2. Lấy số bị chia trừ đi số chia.
Nếu kết quả ny có bit dấu bằng 0 (có nghĩa l phần ny của số bị chia
chia đợc cho số chia) thì bit tơng ứng của thơng bằng 1.
Nếu kết quả ny có bit dấu bằng 1 (có nghĩa l phần ny của số bị chia
không chia đợc cho số chia) thì bit tơng ứng của thơng bằng 0 v ta
buộc phải khôi phục lại giá trị ban đầu của số bị chia bằng cách cộng kết
ny quả với số chia ở mã hệ hai.
3. Dịch trái kết quả thu đợc ở trên v lm lại bớc 2 cho đến khi nhận đợc
kết quả cuối cùng l 0 (chia hết) hoặc nhỏ hơn số chia (chia còn d).


Ví dụ: 36/5 = 7, d 1. Thực hiện phép chia ny trong hệ hai.

Đầu tiên ta có 5 = 0101 B v số bù hai của nó l 1011 B.
Các bớc tính toán tiếp của phép chia theo thuật toán đã nêu ở trên đợc liệt
kê ra nhu sau:
Toán hạng Thơng Tên toán hạng, thao tác
0 100100 Số bị chia
1 011000 Số chia ở mã bù hai để cộng
1 111100 0 Tổng, kết quả 1 (kq1)
1 111100 kq1
0 101000 Số chia ở mã hệ hai để cộng
0 100100 Số bị chia
1 00100 Số bị chia dịch trái 1 lần
1 01100 Số chia ở mã bù hai để cộng
0 10000 1 Tổng, kết quả 2 (kq2)
1 0000 kq2 dịch trái 2 lần
1 0110 Số chia ở mã bù hai để cộng
0 0110 1 Tổng, kết quả 3 (kq3)
0 110 kq3 dịch trái 3 lần
1 011 Số chia ở mã bù hai để cộng
0 001 1 Tổng, kết quả 4 (kq4)

Bit dấu

Từ đây ta rút ra 36/5 = 7 v d 1.


15
3. Mã ASCII - mã tiêu chuẩn cho trao đổi thông tin


Bảng 1.5. Bảng mã ASCII tiêu chuẩn.
Hexa-
decimal

0 1 2 3 4 5 6 7
0
<NUL> <DLE> <SP>
0 @ P ` p
0 16 32 48 64 80 96 112
1
<SOH> <DC1>
! 1 A Q a q
1 17 33 49 65 81 97 113
2
<STX> <DC2>
" 2 B R b r
2 18 34 50 66 82 98 114
3
<ETX> <DC3>
# 3 C S c s
3 19 35 51 67 83 99 115
4
<EOT> <DC4>
$ 4 D T d t
4 20 36 52 68 84 100 116
5
<ENQ> <NAK>
% 5 E U e u
5 21 37 53 69 85 101 117

6
<ACK> <SYN>
& 6 F V f v
6 22 38 54 70 86 102 118
7
<BEL> <ETB>
' 7 G W g w
7 23 39 55 71 87 103 119
8
<BS> <CAN>
( 8 H X h x
8 24 40 56 72 88 104 120
9
<HT> <EM>
) 9 I Y i y
9 25 41 57 73 89 105 121
A
<LF> <SUB>
* : J Z j z
10 26 42 58 74 90 106 122
B
<VT> <ESC>
+ ; K [ k {
11 27 43 59 75 91 107 123
C
<FF> <FS>
, < L \ l |
12 28 44 60 76 92 108 124
D
<CR> <GS>

- = M ] m }
13 29 45 61 77 93 109 125
E
<SO> <RSl>
. > N ^ n ~
14 30 46 62 78 94 110 126
F
<SI> <US>
/ ? O _ o
<DEL>
15 31 47 63 79 95 111 127


Trong các phần trớc ta đã nói đến cách biểu diễn số trong các hệ đếm. Bây
giờ ta xem xét việc biểu diễn thông tin nói chung trong máy tính. Tất cả các thông tin
trong máy tính đều đợc biểu diễn dới dạng các số 0 v 1. Mỗi tổ hợp của các số 0 v
1 đợc gán một ký tự chữ cái, chữ số hoặc một ký tự khác theo một cách thức nhất
định. Trong thực tế thông tin đợc truyền đi, đợc lu giữ trong các bộ nhớ hoặc để

16
hiện thị trên mn hình đều ở dới dạng ký tự v tuân theo một loại mã đợc dùng rất
rộng rãi gọi l mã ASCII (American Standard Code for Information Interchange, mã
chuẩn của Mỹ dùng cho trao đổi thông tin). Việc dùng các ký tự để mã hoá thông tin
theo bảng mã ASCII (bảng 1.5) cho ta khả năng trao đổi thông tin với hầu hết các
máy tính khác.
Trong bảng mã ASCII tiêu chuẩn, ngời ta dùng 7 bit để mã hoá các ký tự
thông dụng, nh vậy bảng mã ny sẽ có 128 ký tự ứng với các mã số từ 0 127. Bit
thứ 8 có thể cho liên tục bằng 0, 1 hoặc có thể dùng để chứa bit parity (xem ý nghĩa
của parity ở chơng 3, phần nói về các cờ) phục vụ cho việc phát hiện lỗi khi truyền.
Bên cạnh bảng ASCII tiêu chuẩn ngời ta còn dùng bảng ASCII mở rộng cho

các ký tự đặc biệt (khác các ký tự tiêu chuẩn) với mã từ 128 255.
Khi tra các bảng ny ta đọc mã của ký tự theo thứ tự cột-hng.

Ví dụ: Mã ASCII của một số ký tự thờng dùng trong khi lập trình:
<Bel> (Bell, chuông): 7
<BS> (Back space, xoá lùi): 8
<HT> (Horizont tab, giãn cách ngang): 9
<LF> (Line feed, thêm dòng mới): OAH
<CR> (Carriage return, về đầu dòng): ODH
<SP> (Space, dấu cách): 20H;
'$': 24H; '0': 30H; '9':39H; 'A': 41H; 'a': 61H

Khi xem xét bảng 1.5 ta có thể rút ra mấy nhận xét sơ bộ nh sau:

1. 2 cột đầu của bảng mã đợc dùng cho các ký tự điều khiển.
2. Cột 2 dnh riêng cho các ký tự ngăn cách.
3. Các ký tự số nằm ở cột 3. Mã của ký tự '0' l 30H, '9' l 39H.
Giữa giá trị số v mã ASCII của số đó có khoảng cách l 30H.
4. Các chữ cái hoa nằm ở các cột 4, 5, các chữ cái thờng ở cột 6, 7.
Khoảng cách giữa chữ thờng v chữ hoa cùng tên l 20H.

4. Quan hệ giữa mã ASCII với số BCD
Trong khi lm toán với các số BCD ta thờng kết hợp 2 số BCD thnh 1 byte.
Dạng số BCD viết theo kiểu ny gọi l dạng BCD chuẩn hay còn đợc gọi l dạng
BCD gói (packed BCD). Khi lu trữ, khi hiện thị hoặc khi truyền giữa các thiết bị các
giá trị số 0 9, thực chất ta lm việc với mã ASCII của các số đó, tức l các số 30H
39H. Nh vậy ta thấy trong 1 byte mã ASCII biểu diễn các số 0 9 có 4 bit thấp ứng
với mã BCD của chính các số đó, 4 bit cao bao giờ cũng ứng với mã BCD của số 3 (tức
l 0011B). Nếu trong byte mã ASCII ny ta thay 4 bit cao bằng 0H thì ta thu đợc số


17
BCD không gói. Nói cách khác số BCD không gói l số di 1 byte, trong đó 4 bit cao
bằng không, 4 bit thấp l số BCD chuẩn mã hoá số cần biểu diễn.
Ví dụ sau minh hoạ quan hệ giữa số BCD gói, BCD không gói v mã ASCII.

Mã ASCII của 5 l 0011 0101B = 35H
Mã ASCII của 9 l 0011 1001B = 39H
Mã BCD không gói của 5 l 0000 0101B = 05H
Mã BCD không gói của 9 l 0000 1001B = 09H
Mã BCD gói (chuẩn) của 59 l 0101 1001B = 59H

Từ đây ta có thể rút ra các bớc phải lm để đổi 2 số ở dạng mã ASCII sang
dạng số BCD chuẩn:
+ Đổi số đầu tiên từ mã ASCII ra số BCD không gói,
+ Đổi số thứ 2 từ mã ASCII ra số BCD không gói,
+ Lấy 4 bit thấp của số đầu ghép với 4 bit thấp của số sau tạo thnh 1 byte
biểu diễn số BCD gói.
Đây l các công việc hay gặp khi thao tác với các số trong các hệ vi xử lý.

18

×