Bài giảng Kỹ thuật Vi xử lý - Văn Thế Minh
Kỹ thuật Vi xử lý MỤC LỤC [Type text] Trang 1 Kỹ thuật Vi xử lý CHƯƠNG I : CÁC HỆ ĐẾM VÀ VIỆC MÃ HÓA 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 hàng ngày chúng ta dùng hệ cơ số mười hoặc nói gọn hơn hệ mười để biểu diễn các giá trị số. Điều này là rất tự nhiên vì từ khi xưa một con người bình thường đã biết dùng 10 ngón tay của mình như là “công cụ tính toán sơ đẳng. Trong hệ thống này 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 đ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 1 giá trị số chúng ta dùng hệ cơ số hai hoặc nói gọn hơn hệ hai, trong đó chỉ tồn tại hai chữ số 0 và 1để biểu diễn các giá trị số (ứng với hai 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 trên máy). 0 và 1 cũng là các giá trị có thể có của một chữ số hệ hai. Hệ hai là hệ dùng trong các máy tính. Một số hệ hai 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 làm 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 thành 1 nibble, cụm 8 bit sẽ tạo thành 1 byte, cụm 16 bit thông thường sẽ trạo thành một từ(word), cụm 32 bit sẽ tạo thành một từ kép. Chữ số đầu tiên bên trái trong dãy các số hệ hai gọi là bít có ý nghĩa lớn nhất, còn bit cuối cùng bên phải trong dãy gọi là bit có ý nghĩa bé nhất. Ứng với việc đếm thứ tự 1,2,3…ở hệ 10 thì ở hệ 2 ta có 1,10,11… Nibble byte word Double Word Hình1.1. Các đơn vị đo độ dài 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 làm 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 vào 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 này. 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 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ược 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: Đổ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 giá trị 2 i tương ứng với các chữ số khác không thứ i của hệ số hai rồi cộng lại như đã nói ở trên: Ví dụ [Type text] Trang 2 Kỹ thuật Vi xử lý 10111,11B =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 hệ hai ta có thể làm theo hai cách: • Cách một để đổ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ệ 10 cần đổi), ghi lại giá trị 1 cho chữ số hệ hai ứng với 2 x . Tiếp tục làm 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 đạt tới 2 0 và ghi lại các gia trị (0 hoặc 1) cho chữ số hệ hai thứ i tùy theo quan hệ giữa số dư và lũy 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 hoặc bằng 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 dế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=100010B. • 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ư. Làm 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. Ví dụ : Đổi số 34 sang hệ hai (hình 1.1.). Kết quả được 100010B. 34 2 0 17 2 1 8 2 0 4 2 0 2 2 0 1 2 1 0 Các số dư trong khung sẽ được sắp xếp theo chiều mũi tên 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ể làm 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 bày 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. Làm 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ụ: Đôỉ số 0.125 ra số hệ hai. [Type text] Trang 3 Kỹ thuật Vi xử lý 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 và thu được kết quả là 0,125 = 0,001B (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ã hóa 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ã hóa bằng hệ hai (Binary Coded Decimal number), rất thích hợp cho các thiết bị do 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ã hóa 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ả này cũng gợi ý cho ta cách thức chuyển đổi giữa hai 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á dài. 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ác số cho gọn lại người ta tìm cách nhóm 4 số hệ hai (1 nibble) thành 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ố. Để làm được điều này 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 làm với số hệ mười. Quy tắc phép cộng số hệ hai được chỉ ra trong bảng 1.1. 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 [Type text] Trang 4 Kỹ thuật Vi xử lý 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 làm 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 9 số trừ 0011 0001 060 Hiệu 0011 1100 b) Số bù hai Trong khi làm phéo 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 này 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ể ứng dụng được tính chất nói trên. Có rất nhiều cách mã hóa các số hệ hai đê biểu diến số âm nhưng trong thực tế hay dùng nhất là dùng cách mã hóa 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 [Type text] Trang 5 Kỹ thuật Vi xử lý 1111 1110 126 -126 - 2 1111 1111 255 -127 - 1 Quan sát kỹ bảng này 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 để dành cho dấu và 7 bit còn lại để định giá trị. Với cách làm này 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ú ý 2 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 nhưng nó dùng cả 8 bit để biểu diễn giá trị của số được mã hóa. Mã bù hai dài 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ư hệ mã 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á 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ố nào đó. 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 làm 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 vào 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 này (á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 làm phép trừ. Ví dụ: 15 - 13 = ? Ta có thể viết lại phép trừ trên thành 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 = ? [Type text] Trang 6 Kỹ thuật Vi xử lý 12 0000 1100 (-13) 1111 0011 tổng 1111 1111 (tức -1) Đây là một số âm (bit b7=1) với giá trị tuyệt đối là 1 (tra theo bảng 1.2). 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 - để 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 làm với hệ số 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 độ dài 4 bit để làm sáng tỏ thuật toán nhân. 1001 Số bị nhân (9) 0110 Số nhân (6) 0000 Thành phần 1 của tổng tích luỹ 1001 Thành phần 2 của tổng tích luỹ 1001 Thành phần 3 của tổng tích luỹ 0000 Thành phần 4 của tổng tích luỹ 0110110 Tổng tích luỹ (54) Độ dài cực đại của kết quả trong trường hợp này là 8 bit. Nếu ta có các toán hạng 8 (hoặc 16) bit thì độ dài 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 thành phần của tổng tích luỹ. Tổng của các thành 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: • Thành 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ì thành phần này cũng bằng 0, còn nếu LSB = 1 thì thành phần này chính bằng số bị nhân. • Mỗi thành 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ự, nhưng phải dịch trái i bit (có thể bỏ qua các thành phần bằng 0). • Tổng của các tổng thành 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ụ đã làm trước đây như sau: 1001 Số bị nhân (9) 0110 Số nhân (6) [Type text] Trang 7 Kỹ thuật Vi xử lý 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 làm 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 này 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 làm tính trừ bằng tính cộng). 2.Lấy số bị chia trừ đi số chia. Nếu kết quả này có bit dấu bằng 0 (có nghĩa là phần này 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ả này có bit dấu bằng 1 (có nghĩa là phần này 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 quả này với số chia ở mã hệ hai. 3.Dịch trái kết quả thu được ở trên và làm 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 này trong hệ hai. Đầu tiên ta có 5 = 0101B và số bù hai của nó là 1011B. 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 như 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) [Type text] Trang 8 Kỹ thuật Vi xử lý 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. 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> 0 <DLE> 16 <SP> 32 0 48 @ 64 P 80 ` 96 P 112 1 <SOH> 1 <DC1> 17 ! 33 1 49 A 65 Q 81 a 97 q 113 2 <STX> 2 <DC2> 18 “ 34 2 50 B 66 R 82 b 98 r 114 3 <ETX> 3 <DC3> 19 # 35 3 51 C 67 S 83 c 99 s 115 4 <EOT> 4 <DC4> 20 $ 36 4 52 D 68 T 84 d 100 t 116 5 <ENQ> 5 <NAK> 21 % 37 5 53 E 69 U 85 e 101 u 117 6 <ACK> 6 <SYN> 22 & 38 6 54 F 70 V 86 f 102 v 118 7 <BEL> 7 <ETB> 23 ‘ 39 7 55 G 71 W 87 g 103 w 119 8 <BS> 8 <CAN> 24 ( 40 8 56 H 72 X 88 h 104 x 120 9 <HT> 9 <EM> 25 ) 41 9 57 I 73 Y 89 i 105 y 121 A <LF> 10 <SUB> 26 * 42 : 58 J 74 Z 90 j 106 z 122 B <VT> 11 <ESC> 27 + 43 ; 59 K 75 [ 91 k 107 { 123 C <FF> 12 <FS> 28 , 44 < 60 L 76 \ 92 l 108 | 124 D <CR> 13 <GS> 29 - = M ] m } [Type text] Trang 9 Kỹ thuật Vi xử lý 45 61 77 93 109 125 E <SO> 14 <RSI> 30 . 46 > 62 N 78 ^ 94 n 110 ~ 126 F <SI> 15 <US> 31 / 47 ? 63 O 79 _ 95 o 111 <DEL> 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. Trogn thực tế thông tin được truyền đi, được lưu giữ trong các bộ nhớ hoặc để hiển thị trên màn hình đều ở dưới dạng ký tự và tuân theo 1 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ã hóa các kỹ tự thông dụng, như vậy bảng mã này 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 này ta đọc mã của ký tự theo thứ tự cột – hàng. 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): 2OH; ‘$’: 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 dành 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 làm toán với các số BCD ta thường kết hợp 2 số BCD thành 1 byte. Dạng số BCD viết theo kiểu này gọi là dạng BCD chuẩn hay còn được gọi là dạng BCD gói (packed BCD). Khi lưu 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 làm 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). [Type text] Trang 10 [...]... Trang Kỹ thuật Vi xử lý CHƯƠNG 3: BỘ VI XỬ LÝ INTEL 8088 Sau khi đã tìm hiểu qua về cấu trúc của hệ vi xử lý Trong chương này ta sẽ đi sâu tìm hiểu mọt b vi xử lý cụ thể và rất điển hình: bộ vi xử lý của Intel Trước hết cần nói rỏ lý do tại sao ở đâyta lại chọn đích danh bộ vi zử láy 8088 để tìm hiểu mà không phải là bộ vi xử lý nào khác ( điều mà nhiều người khác phải làm ) Thứ nhất, đây là bộ vi xử lý. .. 34 Trang Kỹ thuật Vi xử lý Không tác động: CF INT-Interupt Program Execution ( ngắt, gián đoạn chương trình đang chạy ) Vi t lệnh: INT N, N = 0 FFH Mô tả: các thao tác của 8088 khi chạy lệnh INT N: 1 SP . +127 1000 0000 128 - 0 - 128 1000 0001 129 - 1 - 127 1000 0010 130 - 2 - 126 1111 1101 125 -1 25 - 3 [Type text] Trang 5 Kỹ thuật Vi xử lý 1111 1110 126 -1 26 - 2 1111 1111 255 -1 27 - 1 Quan sát kỹ. (198 3-1 999) Các bộ vi xử lý đại diện trong thế hệ này là các vi xử lý 32 bit 80386/80486 và 64 bit Pentium của Intel 6 0-6 6MHz, Intel P6 - Pentium Pro 12 0- 133 MHz, Intel Pentium 15 0- 166 - 200. phép cộng 15 + (-1 3) và sử dụng kết quả vừa tính được ở trên cho số (-1 3): 15 0000 1111 (-1 3) 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 = ? [Type