Chương 3

MÃ MÁY

Computer Codes

Nội Dung

1

4.1. Các loại mã máy 4.2. Trình tự sắp xếp 4.3. Câu hỏi và Bài tập

Các Loại Mã Máy

2

 BCD : Binary Coded Decimal (6 bits)  EBCDIC: Extended Binary-Code decimal

Interchange Code (8 bits)

 Zoned and Packed Decimal

Numbers

 ASCII

Mã BCD – Binary Coded Decimal

3

 Mã Binary Coded Decimal (BCD) là một mã ra đời

sớm nhất.

 Tất cả ký số thập phân được mô tả trong BCD gồm 4

2

4

bits.  Ví dụ: 42(10) = 0100 0010 hay 01000010 trong BCD

Mã BCD – Binary Coded Decimal

4

Ký số thập phân

BCD tương đương

0

0000

1

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

1000

9

1001

BCD tương ứng với các ký số thập phân

Mã BCD – Binary Coded Decimal

5

 Vậy các số thập phân có giá trị từ 10 đến 15 được

biểu diễn như thế nào trong BCD???

1

0000 hay 00010000 trong BCD 0

0101 hay 00010101 trong BCD 5

 Ví dụ: 10(10) = 0001 15(10) = 0001 1

Mã BCD – Binary Coded Decimal

6

 Thay vì sử dụng 4-bits cho 16 (24)ký tự, người thiết kế máy tính thường sử dụng 6 bits để mô tả mã BCD.

 Trong 6-bits mã BCD, 4 bits cho mã BCD, 2 bits còn

lại được thêm vào là mã vùng.

 Mô tả 64(26) ký tự khác nhau bao gồm các số(0..9),

chữ cái (A..Z) và các ký tự đặc biệt.

Mã BCD – Binary Coded Decimal

7

Ký tự Mã BCD

Biểu diễn hệ bát phân Octal Vùng (zone) Ký số (Digit)

A 11 0001 61

B 11 0010 62

C 11 0011 63

D 11 0100 64

E 11 0101 65

F 11 0110 66

G 11 0111 67

H 11 1000 70

I 11 1001 71

J 10 0001 41

K 10 0010 42

L 10 0011 43

Mã BCD – Binary Coded Decimal

9

Ký tự Mã BCD

Biểu diễn hệ bát phân Octal Vùng(Zone) Ký số (Digit)

A 11 0001 61

B 11 0010 62

C 11 0011 63

D 11 0100 64

E 11 0101 65

F 11 0110 66

G 11 0111 67

H 11 1000 70

I 11 1001 71

J 10 0001 41

K 10 0010 42

L 10 0011 43

Mã BCD – Binary Coded Decimal

8

 Ví dụ: Biểu diễn số nhị phân cho từ BASE trong BCD

– B = 110010 trong hệ đếm nhị phân BCD – A = 110001 trong hệ đếm nhị phân BCD – S = 010010 trong hệ đếm nhị phân BCD – E = 110101 trong hệ đếm nhị phân BCD

110001 A

010010 S

110101 E

110010 B

Vì vậy, các chữ số nhị phân biểu diễn chữ Base

Mã BCD – Binary Coded Decimal

11

 Ví dụ 4.2: Dùng hệ bát phân, biểu diễn mã BCD cho

từ DIGIT Giải pháp:

Như vậy mã hóa BCD cho từ DIGIT trong hệ bát

phân sẽ là: 64 D

71 I

67 G

71 I

23 T

– D = 64 trong hệ đếm bát phân BCD – I = 71 trong hệ đếm bát phân BCD – G = 67 trong hệ đếm bát phân BCD – I = 71 trong hệ đếm bát phân BCD – T = 23 trong hệ đếm bát phân BCD

Mã BCD – Binary Coded Decimal

10

Ký tự Mã BCD

Biểu diễn hệ bát phân (Octal) Vùng(Zone) Ký số(Digit)

A 11 0001 61

B 11 0010 62

C 11 0011 63

D 11 0100 64

E 11 0101 65

F 11 0110 66

G 11 0111 67

H 11 1000 70

I 11 1001 71

J 10 0001 41

K 10 0010 42

L 10 0011 43

13 Mã EBCDIC–Extended Binary Coded Decimal Interchange Code

 EBCDIC là một mã 8 bit (thêm 2 bit vào mã vùng để

mở rộng thêm vùng nhớ).

 Được chia thành 2 nhóm 4-bits, mỗi nhóm biểu diễn 1 số thập lục phân, nhóm đầu biểu diễn mã vùng và nhóm kế tiếp là số.

 Mô tả cho 256 (28) kí tự khác nhau

14 Mã EBCDIC–Extended Binary Coded Decimal Interchange Code

Mã EBCDIC

Kí tự Vùng(zone) Ký số(Digit) Biểu diễn hệ thập lục phân (Hexa)

A 1100 0001 C1

B 1100 0010 C2

C 1100 0011 C3

D 1100 0100 C4

E 1100 0101 C5

F 1100 0110 C6

G 1100 0111 C7

H 1100 1000 C8

I 1100 1001 C9

J 1101 0001 D1

K 1101 0010 D2

L 1101 0011 D3

15 Mã EBCDIC–Extended Binary Coded Decimal Interchange Code

Mã EBCDIC

Kí tự Vùng(Zone) Ký số(Digit) Biểu diễn hệ thập lục phân (Hexa)

A 1100 0001 C1

B 1100 0010 C2

C 1100 0011 C3

D 1100 0100 C4

E 1100 0101 C5

F 1100 0110 C6

G 1100 0111 C7

H 1100 1000 C8

I 1100 1001 C9

J 1101 0001 D1

K 1101 0010 D2

L 1101 0011 D3

16 Mã EBCDIC–Extended Binary Coded Decimal Interchange Code

 Ví dụ: Biểu diễn số nhị phân cho từ BASE trong EBCDID

– B = 11000010 trong hệ đếm nhị phân EBCDID – A = 11000001 trong hệ đếm nhị phân EBCDID – S = 11100010 trong hệ đếm nhị phân EBCDID – E = 11000101 trong hệ đếm nhị phân EBCDID

Vì vậy, các chữ số nhị phân biểu diễn chữ Base

11000001 A 11100010 S 11000101 E

11000010 B

17 Mã EBCDIC–Extended Binary Coded Decimal Interchange Code

Mã EBCDIC

Kí tự Vùng(Zone) Ký số(Digit) Biểu diễn hệ thập lục phân (Hexa)

A 1100 0001 C1

B 1100 0010 C2

C 1100 0011 C3

D 1100 0100 C4

E 1100 0101 C5

F 1100 0110 C6

G 1100 0111 C7

H 1100 1000 C8

I 1100 1001 C9

J 1101 0001 D1

K 1101 0010 D2

L 1101 0011 D3

19

Zoned and Packed Decimal Numbers

Mã Zoned  Dùng để biểu diễn các số dương, âm hay không

dấu.

 Ký hiệu để biểu hiện cho số hệ thập lục phân dương là C (+), hệ thập lục phân âm là D (-), và hệ thập lục phân không dấu là F.

Giá trị số EBCDIC

Dấu hiệu chỉ báo

345

F3F4F5

F cho không dấu

+345

F3F4C5

C cho số dương

-345

F3F4D5

D cho số âm

Giá trị số ở EBCDIC trong hệ đếm thập lục phân

20

Zoned and Packed Decimal Numbers

Mã Packed  Phải chuyển dữ liệu từ Zoned thành dạng Packed theo các bước sau thì máy tính mới thực hiện được các phép toán số học. – Bước 1: Di chuyển ký hiệu dấu đến cực bên phải của số. – Bước 2: Tất cả các ký hiệu còn lại bị loại ra.

Giá trị số Định dạng khu vực Định dạng đóng gói

345 F3F4F5 345F

+345 F3F4C5 345C

-345 F3F4D5 345D

3456 F3F4F5F6 03456F

Quá trình chuyển đổi dữ liệu thập phân thành dữ liệu đóng gói

21

Zoned and Packed Decimal Numbers

Ví dụ:  Sử dụng hệ thống đếm nhị phân, mã hóa EBCDIC cho mẫu từ BIT. Bao nhiêu bytes được yêu cầu?

 Giải pháp:

Vì vậy, mã EBCDIC cho từ BIT trong nhị phân sẽ

11100011

11000010 B

11001001 I T

Từ Bit yêu cầu ba byte để lưu trữ, vì mỗi ký tự là 1 byte (hoặc 8 bit).

– B= 1100 0010 trong hệ đếm nhị phân EBCDIC – I = 1100 1001 trong hệ đếm nhị phân EBCDIC – T = 1110 0011 trong hệ đếm nhị phân EBCDIC

22

Zoned and Packed Decimal Numbers

Ví dụ:  Dùng mã EBCDIC cho từ ZONE (dùng hệ thập lục

phân). Bao nhiêu bytes được yêu cầu?

Giải pháp:

– Z = E9 trong hệ đếm thập lục phân EBCDIC – O = D6 trong hệ đếm thập lục phân EBCDIC – N = D5 trong hệ đếm thập lục phân EBCDIC – E = C5 trong hệ đếm thập lục phân EBCDIC

E9 Z

D6 O

D5 C5 N E

 Mỗi chữ số hệ thập lục phân yêu cầu 4 bit và đòi hỏi phải có đầy đủ 8 chữ số hệ thập lục phân. Vì vậy, cần 8 x 4 = 32 bit hay 4 byte (8 bit = 1byte).

Mã EBCDIC cho từ ZONE trong hệ đếm thập lục phân sẽ là:

23

Zoned and Packed Decimal Numbers

Ví dụ:  Mã hóa thập phân EBCDIC cho giá trị +256 (sử dụng hệ 16). Bao nhiêu bytes sẽ được yêu cầu?

Giải pháp:

 Mỗi chữ số thập lục phân yêu cầu 4 bit và đòi hỏi

phải có đầy đủ 6 chữ số thập lục phân.

 Vì vậy, cần 6 x 4 = 24 bit, hoặc 3 byte (8 bit = 1

byte)

+256=F2F5C6 trong EBCDIC

24

Zoned and Packed Decimal Numbers

Ví dụ:  Mã hóa -128 theo dạng đóng gói số thập phân (sử dụng thập lục phân). Bao nhiêu bytes được yêu cầu?

-128

= F1F2D8 in EBCDIC =128D Định dạng đóng gói

 Giải pháp:  Mỗi chữ số thập lục phân yêu cầu 4 bit và đòi hỏi

phải có đầy đủ 4 chữ số thâp lục phân.

 Vì vậy, cần 4 x 4 = 16 bit hoặc 2 byte (8 bit = 1

byte).

26 ASCII- American Standard Code for Information Interchange

 Mã ASCII được sử dụng theo chuẩn của Mỹ.  ASCII có hai kiểu ASCII-7 và ASCII-8.  ASCII-7 là một mã 7-bits biểu diễn 128(27) kí tự khác nhau. 3 bits đầu tiên được sử dụng cho bit vùng và 4 bits sau cho ký số.

 ASCII-8 là một mã 8-bit, biểu diễn 256 (28) ký tự

khác nhau. Các bit sẽ được thêm vào các bit vùng và mã hóa ký tự liên tục theo cơ số 16.

27 ASCII- American Standard Code for Information Interchange

ASCII-7 code

Character Zone Hexadecimal Equivalent Digit

0 11 0000 30

1 11 0001 31

2 11 0010 32

3 11 0011 33

4 11 0100 34

5 11 0101 35

6 11 36 0110

7 11 0111 37

8 11 1000 38

9 11 1001 39

28 ASCII- American Standard Code for Information Interchange

Mã ASCII-8

Kí tự Vùng Kí số Hệ thập lục phân

0 101 0000 50

1 101 0001 51

2 101 0010 52

3 101 0011 53

4 101 0100 54

5 101 0101 55

6 101 0110 56

7 101 0111 57

8 101 1000 58

9 101 1001 59

Tham khảo thêm giáo trình trang 61 và 62

29 ASCII- American Standard Code for Information Interchange

Ví dụ:  Viết mã hóa nhị phân cho các chữ BOY trong

ASCII-7. Cần bao nhiêu byte?

Giải pháp:

B = 1000010 trong ASCII-7 hệ nhị phân O = 1001111 trong ASCII-7 hệ nhị phân Y = 1011001 trong ASCII-7 hệ nhị phân

1011001

Do đó, mã hóa nhị phân cho các chữ BOY trong ASCII-7 sẽ

1000010 B

1001111 O

Y

 Vì mỗi ký tự trong ASCII-7 yêu cầu một byte để mô tả 1 ký tự

được

nên cần 3 byte mô tả chữ BOY

30 ASCII- American Standard Code for Information Interchange

Ví dụ:  Dùng mã thập lục phân cho từ GIRL trong ASCII-7.

Bao nhiêu byte được yêu cầu?

Giải pháp:

 Do đó, sự mã hóa hệ thập lục phân cho từ GIRL trong ASCII-

– G = 47 trong ASCII-7 hệ đếm thập lục phân – I = 49 trong ASCII-7 hệ đếm thập lục phân – R = 52 trong ASCII-7 hệ đếm thập lục phân – L = 4C trong ASCII-7 hệ đếm thập lục phân

4C L  Vì mỗi ký tự trong ASCII-7 yêu cầu một byte để mô

tả nên cần 4 byte để mô tả chữ GIRL.

7 sẽ là 47 G 49 I 52 R

31 ASCII- American Standard Code for Information Interchange

Ví dụ:  Viết mã nhị phân cho các chữ SKY trong ASCII-8.

Cần bao nhiêu byte?

Giải pháp:

– S = 10110011 trong ASCII-8 hệ đếm thập lục phân – K = 10101011 trong ASCII-8 hệ đếm thập lục phân – Y = 10111001 trong ASCII-8 hệ đếm thập lục phân  Do đó, các mã nhị phân cho từ SKY trong ASCII-8 sẽ là 10101011 K  Vì mỗi ký tự trong ASCII-8 yêu cầu một byte để mô

tả nên cần 3 byte mô tả chữ SKY.

10111001 Y 10110011 S

32 ASCII- American Standard Code for Information Interchange

Ví dụ:  Dùng mã thập lục phân cho chữ STAR trong

ASCII-8. Cần bao nhiêu byte?

Giải pháp:

 Mã thập lục phân cho từ STAR trong ASCII-8 sẽ là

– S = B3 trong ASCII-8 hệ đếm thập lục phân – T = B4 trong ASCII-8 hệ đếm thập lục phân – A = A1 trong ASCII-8 hệ đếm thập lục phân – R = B2 trong ASCII-8 hệ đếm thập lục phân

B3 S A1 A B4 T

tả nên cần 4 byte mô tả chữ STAR.

B2 R  Vì mỗi ký tự trong ASCII-8 yêu cầu một byte để mô

34

Trình Tự Sắp Xếp – Collating Sequence

( A < B < C < … < Z )

 Thứ tự sắp xếp các chữ cái (alphabetic order)  Thứ tự sắp xếp các số (numeric order)

(0 < 1< 2< … < 9 )

35

Trình Tự Sắp Xếp – Collating Sequence

Ví dụ:  Giả sử, một máy tính dùng mã EBCDIC miêu tả cho các ký tự. Trong đó yêu cầu máy tính sắp xếp chuỗi 23, A1, 1A?

Giải:  Trong EBCDIC, ký tự số > ký tự trong bảng chữ cái.  Chuỗi sẽ được sắp xếp như sau:

23 > 1A > A1  A1, 1A, 23

35

Trình Tự Sắp Xếp – Collating Sequence

Ví dụ:  Giả sử, một máy tính dùng mã ASCII miêu tả cho các ký tự. Trong đó yêu cầu máy tính sắp xếp chuỗi 23, A1, 1A?

Giải:  Trong ASCII, ký tự số < ký tự trong bảng chữ cái.  Chuỗi sẽ được sắp xếp như sau:

1A < 23