- Kiểu MODEM 91h 92h Kích th−ớc bản tin nhận từ Host(RxSize) 93h
5. Chuyển đổi giữa cỏc hệ
Đổi số nguyờn hệ 10 ra số nhị phõn:
Lấy con số cần đổi chia cho 2 được thương số thứ nhất và số dư thứ nhất. Lấy thương số thứ nhất chia cho 2 được thương số thứ hai và số dư thứ hai. Tiếp tục làm với thương số thứ hai... đểđược số dư thứ 3. Làm liờn tục cho đến khi kết quả
thương số bước n bằng 0 tại bước này cú số dư thứ n. Viết ngược số dư n, số dư n-1, ..., số dư bước 2, số dư bước 1. sẽđược số nhị phõn cần tỡm.
Vớ dụđổi 21D ra số nhị phõn: + Lấy 22 chia 2 được 11 dư 0 + Lấy 11 chia 2 được 5 dư 1 + Lấy 5 chia 2 được 2 dư 1 + Lấy 2 chia 2 được 1 dư 0 + Lấy 1 chia 2 được 0 dư 1.
Dừng lại ởđõy. Viết ngược dóy số dư được dóy số ‘10110’ đõy là số nhị phõn ‘10110B’ biểu diễn số 21D.
Đổi số thập phõn hệ 10 ra số nhị phõn:
Lấy số thập phõn (sau dấu phảy) nhõn 2 làm cho đến khi kết quả là một số chẵn thỡ dừng. Viết lần lượt cỏc con số trước dấu phảy sẽ được con số thập phõn nhị phõn. Vớ dụ:
Đổi 0.125 ra số nhị phõn: 0.125 x 2 = 0.250 0.250 x 2 = 0.500
0.500 x 2 = 1.000. Dừng lại ởđõy và viết cỏc con số trước dấu thập phõn được ‘001’.
Vậy 0.125D = 0.001B
Đổi số 10.127D ra số nhị phõn
Phần trước dấu phảy (chấm) thập phõn đổi bỡnh thường như với số nguyờn được ‘1010’. Phần sau dấu phảy (chấm) thập phõn được 0.127 x 2 = 0.254 0.254 x 2 = 0.580 0.580 x 2 = 1.160 0.160 x 2 = 0.320 0.320 x 2 = 0.640 0.640 x 2 = 1.280 0.280 x2 = 0.560
0.560 x 2 = 1.120.
... Ta thấy khụng thể dừng được là một số chẵn. Do vậy tuỳ theo độ chớnh xỏc mà cú thể dừng ởđõu.
Vậy ta cú 10.127D = 1010.001B - nếu lấy đến 3 số sau dấu thập phõn hoặc
10.127D = 1010.001001B nếu lấy đến 6 số sau dấu thập phõn. Tuy nhiờn ởđõy đó cú sai số.
Đổi số thập phõn ra số hexa: Làm như với số nhị phõn. Tuy nhiờn thay cho chia cho 2 thỡ bõy giờ chỳng ta chia cho 16.
Vớ dụ: Đổi 254D ra số hexa
+ Lấy 254 chia cho 16 được 15 dư 14
+ Lấy 15 chia cho 16 được 0 dư 15. Dừng lại ở đõy và viết ngược để cú số hexa. Tuy nhiờn ta khụng viết là ‘1514’ mà viết là ‘FE’ vỡ ‘0FH’ = 15 và ‘0E’ =14. Cuối cựng cú: 254D = 0FEH.
Đổi 11900D ra số hexa:
+ Lấy 11900 chia cho 16 được 743 dư 12
+ Lấy 743 chia cho 16 được 46 dư 7
+ Lấy 46 chia cho 16 được 2 dư 14.
+ Lấy 2 chia cho 16 được 0 dư 2.
Dừng lại ởđõy và viết ngược lại được 2E7CH . Vậy 11900D = 2E7CH. Đổi số nhị phõn ra số thập phõn Cú số nhị phõn gồm n chữ số bnbn-1bn-2...b2b1 trong đú bi là cỏc hệ số ∈ {0,1}, i=1..n. Chữ số thập phõn tương ứng sẽ là D = bn*2n-1 + bn-1*2n-2 + bn-2*2n-3 +...+b2*22-1 + b1*21-1 Vớ dụ: Đổi 101101B ra số thập phõn. Ở đõy n = 6 D = 1*25+0*24+1*23+1*22+0*21+1*20 = 32+0+8+4+0+1=45 Đổi số hexa ra số thập phõn Cú số hexa gồm n chữ số hnhn-1hn-2...h2h1 trong đú hi là cỏc hệ số ∈ {0,1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}, i=1..n. Chữ số thập phõn tương ứng sẽ là D = hn*16n-1 + hn-1*16n-2 + hn-2*16n-3 +...+ h2*162-1 + h1*161-1 Vớ dụ: Đổi 2AE101H ra số thập phõn. Ởđõy n = 6
D = 2*165+10*164+15*163+1*162+0*161+1*160
D = 2*1048576 + 10*65536 + 15*4096 + 1*256 + 0*16 +1*1 D = 2097152 + 655360 + 61440 + 256 + 1 = 2814209
Đổi số nhị phõn ra số hexa Thực hiện theo quy tắc:
Từ phải sang trỏi nhúm 4 chữ số nhị phõn một và đổi ra số hexa. Vớ dụ: 10110001011101B = ? Nhúm 4 chữ số từ phải sang: 1101B = DH 0101B = 5H 1100B = CH 10B = 2H Như vậy 10110001011101B = 2C2DH
TÀI LIỆU THAM KHẢO
[1]. Văn Thế Minh, Kỹ thuật vi xử lý, NXBGD, 1997.
[2]. Đỗ Xuân Tiến, Kỹ thuật vi xử lý và lập trình assembly cho hệ vi xử lý, NXBKHKT, 2001.
[3]. Ytha yu & charles marut, Lập trình hợp ngữ và máy vi tính IBM-PC, NXBGD, 1998.
[4]. John Uffenbeck, The 80x86 family - Design, Programming, and Interfacing, Prentice Hall, 1998.