Kỹ thuậtVi xử lý &
Lập trình Assembly cho hệ vi xử lý
Bài giảng, Ngành CNTT
ĐạihọcNôngnghiệpHàNội
Nộidung mônhọc
Chương 1: Nhậpmôn
Các hệđếm, mã hóa, các phầntửđiệntử số cơ bản
Chương 2: Kiếntrúchệ vi xử lý
Chương 3: Bộ vi xử lý Intel 8088
Chương 4: LậptrìnhAssembly chohệ vi xử lý (*)
Chương 5: Thiếtkế hệ vi xử lý chuyên dụng
Chương 6: Các tín hiệucủa 8088 và mộtsố mạch phụ trợ
Chương 7: Phối ghép 8088 vớibộ nhớ
Chương 8: Mộtsố phốighépvào/racơ bản
Chương 9: Mộtsố chủđềnâng cao/Bài tậplớn.
Thi hếtmôn
Tài liệuthamkhảo
[1] Kỹ thuậtvi xử lý, VănThế Minh, NXB Giáo dục, 1997
[2] Kỹ thuậtvi xử lý và Lập trình Assembly cho hệ vi xử
lý, Đỗ Xuân Tiến, NXB Khoa học& kỹ thuật, 2001
[3] Bài giảng khác
Các sách tham khảokhácvề kiếntrúchệ vi xử lý (The
Intel Microprocessors), lậptrìnhhợpngữ Assembly,
lậptrìnhhệ thống.
Đánh giá
Số tín chỉ: 3 (2 LT + 1 TH)
Chuyên cần: dự lớp, làm bài tập, 10%
Kiểmtragiữakỳ/bài tậplớn: 30%
Kiểmtracuốikỳ: 60%
! Cấmthi(nghỉ học 1/5, 1/3 số buổi)
Chương 1
1.1 Các hệđếm
- Hệ thậpphân, Decimal
-Hệ nhị phân, Binary
-Hệ thậplục phân, Hexa
1.2 Các hệ thống mã hoá
- ASCII
-BCD
1.3 Các linh kiện điệntử số cơ bản
-Cáccổng logic: AND, OR, XOR, NOT
-Cácbộ giảimã
1.1 Các hệđếm
Hệđếmthập phân (Decimal, hệđếmcơ số 10)
Dùng mườikýhiệu:
0,1,2,3,4,5,6,7,8,9
Ví dụ 1.1:
Hai nghìn Chín trămBamươiBa
2933 = 2x10
3
+ 9x10
2
+ 3x10
1
+ 3x10
0
= 2000 + 900 + 30 + 3
1.1 Các hệđếm
Hệđếmnhị phân (Binary, hệđếmcơ số 2)
Sử dụng hai ký hiệu(bit): 0 và1
(Các hệ thống điệntử số chỉ sử dụng hai mức điện
áp 0, 1)
Kích cỡ, LSB, MSB củasố nhị phân
Số nhị phân không dấu(Unsigned)
Số nhị phân có dấu(Số bù hai, signed)
Số nhị phân
Mỗikýhiệu0 hoặc1 đượcgọilà1 Bit (Binary Digit -
Chữ số nhị phân)
Kích cỡ củamộtsố nhị phân là số bit củanó
MSB (Most Significant Bit): Bit lớnnhất(sáttrái)
LSB (Least Significant Bit): Bit bé nhất(sátphải)
Ví dụ 1.1: 10101010
là mộtsố nhị phân 8-bit
MSB LSB
Số nhị phân không dấu
Biểudiễncácgiátrị không âm (>= 0)
Vớin-bit cóthể biểudiễncácgiátrị từ 0 đến2
n
–1
Ví dụ 1.2: Giá trị V củasố nhị phân không dấu 1101
được tính:
V(1101) = 1x2
3
+ 1x2
2
+ 0x2
1
+ 1x2
0
= 8 + 4 + 0 + 1 = 13
Số nhị phân không dấu
Tổng quát: Nếusố nhị phân N n-bit:
N = b
( n-1)
b
( n-2)
…. b
1
b
0
thì giá trị V củanólà:
V = b
(n -1)
x 2
(n-1)
+b
(n-2)
x2
(n-2)
+
… + b
1
x 2
1
+ b
0
x 2
0
Các số nhị phân không dấu4-bit biểudiễn đượccácgiá
trị từ ? đến?
16 giá trị từ 0 đến15
Nhị phân không dấu Giá trị thậpphân
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 10
1011 11
1100 12
1101 13
1110 14
1111 15
Số nhị phân không dấu
Dảigiátri củacácsố không dấu 8-bit là [0,255]
(unsigned char trong C)
Dảigiátri củacácsố không dấu 16-bit là [0,65535]
(unsigned int trong C)
Chuyển đổithập phân sang nhị phân
Ví dụ 1.3
Chuyển25sang nhị phân không dấu. Dùng phương pháp chia 2
liên tiếp
Chia 2 thương số dư
25/2 = 12 1 LSB
12/2 = 6 0
6/2 = 3 0
3/2 = 1 1
1/2 = 0 1 MSB
Kếtquả: 11001
Chuyển đổithập phân sang nhị phân
Ví dụ 1.4
Chuyển 0.625 sang dạng nhị phân: Dùng phương pháp nhân 2
liên tiếp
Nhân 2 kếtquả phầnnguyên
0.625x2 = 1.25 1 MSB
0.25 x2 = 0.50 0
0.50 x2 = 1.00 1 LSB
Kếtquả: .625
10
= .101
2
Chuyển đổinhị phân sang thậpphân
Ví dụ: 10110 =?
Phầnlẻ: 0.101=?
Số nhị phân có dấu
Biểudiễncácgiátrị âm (bù hai)
Bit bên trái nhấtbằng 0: biểudiễnsố dương
Bit bên trái nhấtbằng 1: biểudiễnsố âm
Ví dụ 1.4: Giá trị V củasố nhị phân có dấu 1101
được tính:
V(1101) = – 1x2
3
+ 1x2
2
+ 0x2
1
+ 1x2
0
= – 8 + 4 + 0 + 1 = – 3
Số nhị phân có dấu
Vớin-bit cóthể biểudiễncácgiátrị từ –2
(n-1)
đến
2
(n-1)
–1
Tổng quát: Nếusố nhị phân N n-bit:
N = b
( n-1)
b
( n-2)
…. b
1
b
0
thì giá trị V củanólà:
V = –b
(n -1)
x 2
(n-1)
+b
(n-2)
x2
(n-2)
+
… + b
1
x 2
1
+ b
0
x 2
0
Các số nhị phân có dấu4-bit biểudiễn đượccácgiátrị
từ ? đến?
16 giá trị từ -8 đến7
Nhị phân có dấu Giá trị thậpphân
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 -8
1001 -7
1010 -6
1011 -5
1100 -4
1101 -3
1110 -2
1111 -1
Số nhị phân có dấu
Dảigiátri củacácsố có dấu 8-bit là
[-128,+127]
(char trong C)
Dảigiátri củacácsố có dấu16-bit là
[-32768,+32767]
(int trong C)
Chuyểnsố thập phân sang nhị phân có dấu
Vơísố dương: tương tự chuyểnsố thậpphânsang
nhị phân không dấu, rồithêmbit 0 vàobên trái
-Vídụ: Chuyển 25 sang nhị phân có dấu:
Kếtquả: 011011
Vớisố âm: Chuyển đổi sốđối sang dạng nhị phân có
dấurồilấysố “bù 2”
Chuyểnsố thập phân sang nhị phân có dấu
Ví dụ 1.6: Chuyển – 45 sang nhị phân
1. chuyểnsốđối: +45 = 00101101
2. Bù 1 (đảo bít): 11010010
4. Bù 2 (cộng 1): + 1
-45
10
= 11010011
2
Số thậplụcphân
Số Hexa (Hexadecimal): hệđếmcơ số 16
Sử dụng 16 ký hiệu để biểudiễn:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Mỗikýhiệutương ứng với1 nhóm4 bit
Để biểudiễnsố nhị phân ở dạng ngắngọn
Ví dụ
11110001 = F1
101101010010 = B52
Nhị phân Thậplụcphân
Mỗikýhiệutương ứng với4-bit
Hexa Binary Hexa Binary
0
0000 8 1000
1
0001 9 1001
2
0010 A 1010
3
0011 B 1011
4
0100 C 1100
5
0101 D 1101
6
0110 E 1110
7
0111 F 1111
Số thậplụcphân
Chuyển đổiHexa& nhị phân
Ví dụ 1.7
Chuyểnsố hexa E8 và ABBA sang nhị phân
Thay thế mỗikýhiệuhexabằng 1 nhóm4-bit tương
ứng
. E 8
1110 1000
. A B B A
1010 1011 1011 1010
Kếtquả: E8h = 11101000b
ABBAh = 1010101110111010b
Chuyển đổiHexa& nhị phân
Ví dụ 1.8
Chuyểnsố nhị phân 1100101011111110 sang hexa
- Gom thành các nhóm 4-bit theo hướng từ LSB về
MSB (phải sang trái)
- Chuyểnmỗi nhóm 4-bit sang ký hiệuhexatương
ứng vớinó
1100 1010 1111 1110
C A F E
Kếtquả: 1100101011111110b = CAFEh