Vi xử lý
Bài Bài giảng giảng Kỹ Kỹ thuật thuật Vi Vi xử lý xử lý
Ngành Điện tử Ngành Điện tử- -Viễn thông Viễn thông
Đại học Bách khoa Đà Nẵng Đại học Bách khoa Đà Nẵng
của của Hồ Hồ Viết Việt Viết Việt, , Khoa Khoa ĐTVT ĐTVT
Tài liệu tham khảo Tài liệu tham khảo
[1] Kỹ [1] Kỹ thuật thuật vi vi xử lý xử lý, , Văn Thế Minh Văn Thế Minh, NXB , NXB Giáo Giáo
dục dục, 1997 , 1997
[2] Kỹ [2] Kỹ thuật thuật vi vi xử lý và Lập trình xử lý và Lập trình Assembly Assembly cho cho
hệ hệ vi vi xử lý xử lý, , Đỗ Xuân Tiến Đỗ Xuân Tiến, NXB , NXB Khoa học Khoa học & & kỹ kỹ
thuật thuật, 2001 , 2001Chương Chương 1 1
1.1 1.1 Các hệ thống số Các hệ thống số
- - Hệ Hệ thập phân thập phân
- - Hệ Hệ nhị phân nhị phân
- - Hệ Hệ thập lục phân thập lục phân
1.2 1.2 Các hệ thống mã hoá Các hệ thống mã hoá
- - ASCII ASCII
- - BCD BCD
1.3 1.3 Các linh kiện điện tử số cơ bản Các linh kiện điện tử số cơ bản
- - Các cổng Các cổng logic: AND, OR, XOR,NOT logic: AND, OR, XOR,NOT
- - Các bộ giải mã Các bộ giải mã1.1 1.1 Các hệ thống số Các hệ thống số
Hệ Hệ đếm thập phân đếm thập phân (Decimal) (Decimal)
Còn gọi là hệ đếm cơ số mười Còn gọi là hệ đếm cơ số mười
( (Vì có quá ít người có chín ngón tay hoặc mười một ngón chân Vì có quá ít người có chín ngón tay hoặc mười một ngón chân?) ?)
Dùng mười ký hiệu Dùng mười ký hiệu: :
1,2,3,4,5,6,7,8,9,0 1,2,3,4,5,6,7,8,9,0
Ví dụ Ví dụ:1.1: :1.1:
Ba nghìn Chín trăm Bảy mươi Tám Ba nghìn Chín trăm Bảy mươi Tám
3978 3978 = 3x10 = 3x103 3 + 9x10 + 9x102 2 + 7x10 + 7x101 1 + 8x10 + 8x100 0
= 3000 + 900 + 70 + 8 = 3000 + 900 + 70 + 81.1 1.1 Các hệ thống số Các hệ thống số
Hệ Hệ đếm nhị phân đếm nhị phân (Binary) (Binary)
Còn gọi là Còn gọi là Hệ Hệ đếm cơ số hai đếm cơ số hai
Sử Sử dụng hai ký hiệu dụng hai ký hiệu (bit): 0 (bit): 0 và và 1 1
( (Các hệ thống điện tử số chỉ sử dụng hai mức điện áp Các hệ thống điện tử số chỉ sử dụng hai mức điện áp?) ?)
Kích cỡ Kích cỡ, LSB, MSB , LSB, MSB của số nhị phân của số nhị phân
Số Số nhị phân không dấu nhị phân không dấu (Unsigned) (Unsigned)
Số Số nhị phân có dấu nhị phân có dấu (Số (Số bù hai bù hai) )Số Số nhị phân nhị phân
Mỗi ký hiệu Mỗi ký hiệu 0 0 hoặc hoặc 1 1 được gọi là được gọi là 1 Bit ( 1 Bit (B Binary inary
Dig Digit it- - Chữ số nhị phân Chữ số nhị phân) )
Kích cỡ của một số nhị phân là số Kích cỡ của một số nhị phân là số bit bit của nó của nó
MSB (Most Significant Bit): Bit MSB (Most Significant Bit): Bit sát trái sát trái
LSB (Least Significant Bit): Bit LSB (Least Significant Bit): Bit sát phải sát phải
Ví dụ Ví dụ 1.1: 1.1: 1010101010101010 1010101010101010
là một số nhị phân là một số nhị phân 16 16- -bit bit
MSB LSBSố Số nhị phân không dấu nhị phân không dấu
Chỉ biểu diễn được các giá trị không Chỉ biểu diễn được các giá trị không
âm âm (>= 0) (>= 0)
Với Với n n- -bit bit có thể biểu diễn các giá trị có thể biểu diễn các giá trị
từ từ 0 0 đến đến 2 2n n - - 1 1
Ví dụ Ví dụ 1.3: 1.3: Giá trị Giá trị V V của số nhị phân của số nhị phân
không dấu không dấu 1101 1101 được tính được tính: :
V(1101) = 1x2 V(1101) = 1x23 3 + 1x2 + 1x22 2 + 0x2 + 0x21 1 + 1x2 + 1x20 0
= 8 + 4 + 0 + 1 = 13 = 8 + 4 + 0 + 1 = 13Số Số nhị phân không dấu nhị phân không dấu
Tổng quát Tổng quát: : Nếu số nhị phân Nếu số nhị phân N n N n- -bit: bit:
N = b N = b( n ( n- -1) 1) b b( n ( n- -2) 2) .... .... b b1 1 b b0 0
thì giá trị thì giá trị V V của nó là của nó là: :
V = b V = b(n (n - -1) 1) x 2 x 2(n (n- -1) 1)
+b +b (n (n- -2) 2) x2 x2 (n (n- -2) 2)
+ +
... ... + b + b1 1 x 2 x 21 1
+ b + b0 0 x 2 x 20 0
Các số nhị phân không dấu Các số nhị phân không dấu 4 4- -bit bit biểu biểu
diễn được các giá trị từ diễn được các giá trị từ ? ? đến đến ? ?16 16 giá trị từ giá trị từ 0 0 đến đến 15 15
15 15 1111 1111
14 14 1110 1110
13 13 1101 1101
12 12 1100 1100
11 11 1011 1011
10 10 1010 1010
9 9 1001 1001
8 8 1000 1000
7 7 0111 0111
6 6 0110 0110
5 5 0101 0101
4 4 0100 0100
3 3 0011 0011
2 2 0010 0010
1 1 0001 0001
0 0 0000 0000
Giá trị thập phân Giá trị thập phân Nhị phân không dấu Nhị phân không dấuSố Số nhị phân không dấu nhị phân không dấu
Dải giá Dải giá tri tri của các số không dấu của các số không dấu 8 8- -bit bit
là là [0,255] [0,255] (unsigned char (unsigned char trong trong C) C)
Dải giá Dải giá tri tri của các số không dấu của các số không dấu 16 16- -
bit bit là là [0,65535] [0,65535] (unsigned (unsigned int trong int trong C) C)Chuyển đổi thập phân Chuyển đổi thập phân sang sang nhị phân nhị phân
Ví dụ 1.4
Chuyển 25 sang 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ư số
25/2 = 12 1 LSB
12/2 = 6 0
6/2 = 3 0
3/2 = 1 1
1/2 = 0 1 MSB
Kết quả là: 11001Số Số nhị phân có dấu nhị phân có dấu
Biểu diễn được cả các giá trị âm Biểu diễn được cả các giá trị âm
Còn gọi là Còn gọi là Số Số bù hai bù hai
Với Với n n- -bit bit có thể biểu diễn các giá trị có thể biểu diễn các giá trị
từ từ - - 2 2(n (n- -1) 1) đến đến 2 2(n (n- -1) 1) - - 1 1
Ví dụ Ví dụ 1.3: 1.3: Giá trị Giá trị V V của số nhị phân của số nhị phân
có dấu có dấu 1101 1101 được tính được tính: :
V(1101) = V(1101) = - - 1x2 1x23 3 + 1x2 + 1x22 2 + 0x2 + 0x21 1 + 1x2 + 1x20 0
= = - - 8 + 4 + 0 + 1 = 8 + 4 + 0 + 1 = - - 3 3Số Số nhị phân có dấu nhị phân có dấu
Tổng quát Tổng quát: : Nếu số nhị phân Nếu số nhị phân N n N n- -bit: bit:
N = b N = b( n ( n- -1) 1) b b( n ( n- -2) 2) .... .... b b1 1 b b0 0
thì giá trị thì giá trị V V của nó là của nó là: :
V = V = - -b b(n (n - -1) 1) x 2 x 2(n (n- -1) 1)
+b +b (n (n- -2) 2) x2 x2 (n (n- -2) 2)
+ +
... ... + b + b1 1 x 2 x 21 1
+ b + b0 0 x 2 x 20 0
Các số nhị phân có dấu Các số nhị phân có dấu 4 4- -bit bit biểu diễn biểu diễn
được các giá trị từ được các giá trị từ ? ? đến đến ? ?16 16 giá trị từ giá trị từ - - 8 8 đến đến 7 7
- -1 1 1111 1111
- -2 2 1110 1110
- -3 3 1101 1101
- -4 4 1100 1100
- -5 5 1011 1011
- -6 6 1010 1010
- -7 7 1001 1001
- - 8 8 1000 1000
7 7 0111 0111
6 6 0110 0110
5 5 0101 0101
4 4 0100 0100
3 3 0011 0011
2 2 0010 0010
1 1 0001 0001
0 0 0000 0000
Giá trị thập phân Giá trị thập phân Nhị phân có dấu Nhị phân có dấuSố Số nhị phân có dấu nhị phân có dấu
Dải giá Dải giá tri tri của các số có dấu của các số có dấu 8 8- -bit bit là là
[ [- -128,+127] 128,+127] (char (char trong trong C) C)
Dải giá Dải giá tri tri của các số có dấu của các số có dấu 16 16- -bit bit là là
[ [- -32768,+32767] 32768,+32767] ( (int trong int trong C) C)Tìm đối số Tìm đối số ( (Lấy bù Lấy bù 2) 2)
Tổng của một số với đối số củanóbằng 0
Ví dụ 1.5
Đối số của số nhị phân có dấu 10011101?
10011101 Số có dấu (-99)
01100010 Lấy bù 1
+ 1 Cộng 1
-------------
01100011 Kết quả (+99)Chuyển số thập phân Chuyển số thập phân sang sang nhị phân có dấu nhị phân có dấu
Vơí số dương Vơí số dương: :Giống như chuyển thập Giống như chuyển thập
phân phân sang sang nhị phân không dấu rồi nhị phân không dấu rồi
thêm thêm bit 0 bit 0 vào vào sát bên trái sát bên trái
Ví dụ Ví dụ: : Chuyển Chuyển 25 sang 25 sang nhị phân có nhị phân có
dấu dấu: :
Kết quả Kết quả: : 0 011011 11011
Với số âm Với số âm: : Chuyển đối số Chuyển đối số sang sang nhị nhị
phân có dấu rồi lấy bù phân có dấu rồi lấy bù 2 2Chuyển số thập phân Chuyển số thập phân sang sang nhị phân có dấu nhị phân có dấu
V Ví dụ í dụ 1.6 1.6 Chuyển Chuyển - - 26 sang 26 sang nhị phân nhị phân
1. 1. chuyển đối số chuyển đối số: : +26 +26 = 11010 = 11010
2. 2. Đưa Đưa 0 0 vào sát trái vào sát trái: : 011010 011010
3. 3. B Bù ù 1 1: : 100101 100101
4. 4. C Cộng ộng 1: 1: + 1 + 1
------------- -------------
- -26 = 26 = 100110 100110Số Số thập lục phân thập lục phân
Quen gọi là số Hexa Quen gọi là số Hexa (Hexadecimal) (Hexadecimal)
Còn gọi là hệ đếm cơ số mười sáu Còn gọi là hệ đếm cơ số mười sáu
Sử Sử dụng dụng 16 16 ký hiệu để biểu diễn ký hiệu để biểu diễn: :
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Mỗi ký hiệu tương ứng với Mỗi ký hiệu tương ứng với 4 4- -bit bit
Mục đích Mục đích: : Biểu diễn số nhị phân Biểu diễn số nhị phân ở ở dạng ngắn gọn dạng ngắn gọn
11110000 11110000 = = F0 F0
10101010 10101010 = = AA AA
01010101 01010101 = = 55 55
Nhị phân Thập lục phân Nhị phân Thập lục phânMỗi ký hiệu tương ứng với Mỗi ký hiệu tương ứng với 4 4- -bit bit
1111 1111 F F 0111 0111 7 7
1110 1110 E E 0110 0110 6 6
1101 1101 D D 0101 0101 5 5
1100 1100 C C 0100 0100 4 4
1011 1011 B B 0011 0011 3 3
1010 1010 A A 0010 0010 2 2
1001 1001 9 9 0001 0001 1 1
1000 1000 8 8 0000 0000 0 0
Binary Binary Hexa Hexa Binary Binary Hexa HexaChuyển đổi Hexa Chuyển đổi Hexa & & nhị phân nhị phân
Ví dụ 1.7
Chuyển số hexa 2F8 và ABBA sang nhị phân
Thay thế mỗi ký hiệu hexa bằng 4-bit
tương ứng với nó
2 F 8
0010 1111 1000
AB BA
1010 1011 1011 1010
Kết quả 2F8h = 001011111000b
ABBAh = 1010101110111010bChuyển đổi Hexa Chuyển đổi Hexa & & nhị phân nhị phân
Ví dụ 1.8
Chuyển số nhị phân 1100101011111110 sang
hexa
-Trước hết theo hướng từ LSB về MSB chia số nhị
phân đó thành các nhóm 4-bit
-Sau đóthay thế mỗi nhóm 4-bit bằng ký hiệu
hexa tương ứng với nó
1100 1010 1111 1110
C A F E
Kết quả: 1100101011111110b = CAFEh1.2 1.2 Các hệ thống mã hoá Các hệ thống mã hoá
ASCII: ASCII: A American merican S Standard tandard C Code for ode for
I Information nformation I Interchange. nterchange.
Dùng để biểu diễn các ký tự Dùng để biểu diễn các ký tự (characters): (characters):
Gồm Gồm ký tự ký tự hiển thị được hiển thị được và và ký tự ký tự điều khiển điều khiển
Mỗi ký tự được biểu diễn bằng Mỗi ký tự được biểu diễn bằng 8 8- -bit bit gọi là gọi là
mã mã ASCII ASCII của ký tự đó của ký tự đó
• • C Các chữ cái ác chữ cái in in và thường và thường: : A..Z A..Z v và à a..z a..z
• • C Các chữ số thập phân ác chữ số thập phân: : 0,1,...,9 0,1,...,9
• • C Các dấu chấm câu ác dấu chấm câu: : ; , . : ; , . : v vân vân ân vân
• • C Các ký tự đặc biệt ác ký tự đặc biệt: : $ & @ / { $ & @ / { v vân vân ân vân
• • C Các ký tự điều khiển ác ký tự điều khiển: : carriage return (CR) , carriage return (CR) ,
line feed (LF), beep, line feed (LF), beep, v vân vân ân vânMã Mã ASCII ASCII
Với bảng mã được sắp xếp theo trật tự tăng dần Với bảng mã được sắp xếp theo trật tự tăng dần
của mã của mã ASCII: ASCII:
• • Các chữ số thập phân Các chữ số thập phân: 0,1,...,9 : 0,1,...,9 nằm liên tiếp nhau nằm liên tiếp nhau, , chữ chữ
số số 0 0 có mã có mã ASCII ASCII là là 30h 30h
• • Các chữ cái Các chữ cái in:A..Z in:A..Z nằm liên tiếp nhau nằm liên tiếp nhau, , chữ chữ A A có mã có mã
ASCII ASCII là là 41h 41h
• • Các chữ cái thường Các chữ cái thường: a..z : a..z nằm liên tiếp nhau nằm liên tiếp nhau, , chữ chữ a a có có
mã mã ASCII ASCII là là 61h 61h
• • Mã Mã ASCII ASCII của chữ của chữ in in và chữ thường tương ứng chỉ khác và chữ thường tương ứng chỉ khác
nhau nhau ở bit 5 ở bit 5
A: 01 A: 010 000001 00001 B: 01 B: 010 000010 00010 Z: 01 Z: 010 011010 11010
a: 01 a: 011 100001 00001 b: 01 b: 011 100010 00010 z: 01 z: 011 111010 11010
• • 32 32 ký tự điều khiển được xếp đầu bảng mã ký tự điều khiển được xếp đầu bảng mã (00h (00h đến đến
1Fh) 1Fh)Bảng mã Bảng mã ASCII ASCIIBảng mã Bảng mã ASCII ASCIIMã Mã BCD BCD
BCD ( BCD (B Binary inary C Coded oded D Decimal) ecimal)
Quen gọi là số Quen gọi là số BCD BCD
Dùng để mã hoá các số thập phân bằng Dùng để mã hoá các số thập phân bằng
các ký hiệu nhị phân các ký hiệu nhị phân
Mỗi chữ số thập phân được biểu diễn bằng Mỗi chữ số thập phân được biểu diễn bằng
một tổ hợp một tổ hợp 4 4- -bit bit
Các tổ hợp Các tổ hợp 4 4- -bit bit không sử dụng gọi là các không sử dụng gọi là các
tổ hợp cấm tổ hợp cấm
Nhiều linh kiện điện tử sử dụng mã này Nhiều linh kiện điện tử sử dụng mã này
(Bộ (Bộ giải mã giải mã BCD BCD- -LED LED bảy đoạn bảy đoạn 7447) 7447)Bảng mã Bảng mã BCD BCD
1111 1111 0111 0111 7 7
1110 1110 0110 0110 6 6
1101 1101 0101 0101 5 5
1100 1100 0100 0100 4 4
1011 1011 0011 0011 3 3
1010 1010 0010 0010 2 2
1001 1001 9 9 0001 0001 1 1
1000 1000 8 8 0000 0000 0 0
BCD BCD Thập phân Thập phân BCD BCD Thập phân Thập phânMã Mã BCD BCD
Đừng nhầm mã hoá Đừng nhầm mã hoá BCD BCD với việc với việc
chuyển đổi thập phân chuyển đổi thập phân sang sang nhị phân nhị phân: :
Ví dụ Ví dụ 1.9: 1.9: Cho số thập phân Cho số thập phân 15 15
Mã Mã BCD BCD của nó là của nó là: : 00010101 00010101
Số Số nhị phân không dấu nhị phân không dấu
8 8- -bit bit tương ứng là tương ứng là: : 00001111 00001111Bit, Nibble, Byte, Word Bit, Nibble, Byte, Word
Bit: Bit: Một chữ số nhị phân Một chữ số nhị phân 0 0 hoặc hoặc 1 1
Nibble: 4 Nibble: 4- -bit ( bit (nửa nửa byte) byte)
Byte: 8 Byte: 8- -bit ( bit (Còn gọi là Còn gọi là Octet) Octet)
Word (Từ): 16 Word (Từ): 16- -bit bit
Double Word (Từ Double Word (Từ kép kép): 32 ): 32- -bit bit
K = 2 K = 210 10 = 1024 = 1024
Kb ( Kb (kilôbit kilôbit) ) = 1024 bit = 1024 bit = 128 byte = 128 byte
KB ( KB (kilôbyte kilôbyte) ) = 1024 byte = 1024 byte
Kbps (Kilobit per second): Kbps (Kilobit per second): Kilôbit trên giây Kilôbit trên giây
M = 2 M = 220 20 = 1024 K = 1048576 = 1024 K = 1048576
Mb ( Mb (Mêgabit Mêgabit) ) = 1024 Kb = 1024 Kb = 1048576 bit = 1048576 bit
MB ( MB (Mêgabyte Mêgabyte) ) = 1024 KB = 1024 KB = 1048576 byte = 1048576 byte
G = 2 G = 230 30 = 1024 M = 1048576 K = 1024 M = 1048576 K
Gb Gb (Gigabit) (Gigabit) = 1024 Mb = 1024 Mb = 1048576 Kb = 1048576 Kb
GB (Gigabyte) GB (Gigabyte) = 1024 MB = 1024 MB = 1048576 KB = 1048576 KB
T = ? T = ? 1.3 1.3 Các linh kiện điện tử số cơ bản Các linh kiện điện tử số cơ bản
Phân chia linh liện số theo mật độ tích Phân chia linh liện số theo mật độ tích
hợp hợp: SSI, MSI, LSI, VLSI : SSI, MSI, LSI, VLSI
SSI (Small Scale Integration): Vi SSI (Small Scale Integration): Vi mạch tích hợp cỡ nhỏ mạch tích hợp cỡ nhỏ
MSI (Medium Scale Integration): Vi MSI (Medium Scale Integration): Vi mạch tích hợp cỡ trung mạch tích hợp cỡ trung
LSI (Large Scale Integration): Vi LSI (Large Scale Integration): Vi mạch tích hợp cỡ lớn mạch tích hợp cỡ lớn
VLSI (Very Large Scale Integration):Vi VLSI (Very Large Scale Integration):Vi mạch tích hợp cỡ cực lớn mạch tích hợp cỡ cực lớn
SSI: SSI: Các cổng Các cổng logic and, or, logic and, or, xor xor, not , not
MSI: MSI: Các bộ giải mã Các bộ giải mã, , Các chốt Các chốt, , đệm đệm
LSI,VLSI: LSI,VLSI: Các bộ Các bộ vi vi xử lý xử lý, vi , vi điều khiển điều khiển, ,
DSPs DSPsCổng Cổng logic AND logic AND
0 0 1 1 0 0
1 1 1 1 1 1
0 0 0 0 0 0
0 0 0 0 1 1
A A AND B AND B B B A A
A
B
A AND B
Cổng AND có thể có nhiều hơn 2 đầu
vào
Trên một chip có thể có nhiều cổng
ANDCổng Cổng logic AND: IC 7408 logic AND: IC 7408Cổng Cổng logic AND: IC 7411 logic AND: IC 7411Cổng Cổng logic OR logic OR
Cổng OR có thể có nhiều hơn 2 đầu
vào
Trên một chip có thể có nhiều cổng
OR
1 1 1 1 0 0
1 1 1 1 1 1
0 0 0 0 0 0
1 1 0 0 1 1
A A OR B OR B B B A A
A
B
A OR BCổng Cổng logic OR: IC 7432 logic OR: IC 7432Cổng Cổng logic XOR logic XOR
Cổng XOR có thể có nhiều hơn 2 đầu
vào
Trên một chip có thể có nhiều cổng
XOR
1 1 1 1 0 0
0 0 1 1 1 1
0 0 0 0 0 0
1 1 0 0 1 1
A A XOR B XOR B B B A A
A
B
A XOR BCổng Cổng logic NOT logic NOT
1 1 0 0
0 0 1 1
1 1 0 0
0 0 1 1
NOT A NOT A A A
A NOT AĐệm Đệm 3 3 trạng thái trạng thái
HiZ HiZ 0 0
x x 1 1
z z c c
HiZ HiZ 1 1
x x 0 0
z z c cChip Chip giải mã giải mã 74138 74138Chip Chip giải mã giải mã 74138 74138Flip Flop Flip Flop kiểu kiểu D DFlip Flop Flip Flop kiểu kiểu D DFlip Flop Flip Flop kiểu kiểu D DFlip Flop Flip Flop kiểu kiểu D DChốt Chốt 8 8- -bit 74373 bit 74373Chốt Chốt 8 8- -bit 74573 bit 74573IC 74244 IC 74244IC 74244 IC 74244Đệm Đệm 2 2 chiều chiều 74245 74245Đệm Đệm 2 2 chiều chiều 74245 74245
Bài Bài giảng giảng Kỹ Kỹ thuật thuật Vi Vi xử lý xử lý
Ngành Điện tử Ngành Điện tử- -Viễn thông Viễn thông
Đại học Bách khoa Đà Nẵng Đại học Bách khoa Đà Nẵng
của của Hồ Hồ Viết Việt Viết Việt, , Khoa Khoa ĐTVT ĐTVT
Tài liệu tham khảo Tài liệu tham khảo
[1] Kỹ [1] Kỹ thuật thuật vi vi xử lý xử lý, , Văn Thế Minh Văn Thế Minh, NXB , NXB Giáo Giáo
dục dục, 1997 , 1997
[2] Kỹ [2] Kỹ thuật thuật vi vi xử lý và Lập trình xử lý và Lập trình Assembly Assembly cho cho
hệ hệ vi vi xử lý xử lý, , Đỗ Xuân Tiến Đỗ Xuân Tiến, NXB , NXB Khoa học Khoa học & & kỹ kỹ
thuật thuật, 2001 , 2001Chương Chương 2 2
Vi Vi xử lý và xử lý và Hệ Hệ thống thống vi vi xử lý xử lý
2.1 Bộ vi 2.1 Bộ vi xử lý xử lý
- - Bộ vi Bộ vi xử lý xử lý (Microprocessor) (Microprocessor) là gì là gì? ?
- - Các thành phần của bộ Các thành phần của bộ vi vi xử lý xử lý
- - Ứng dụng của bộ Ứng dụng của bộ vi vi xử lý xử lý
2.2 2.2 Các họ Các họ vi vi xử lý xử lý
- - Họ x86 Họ x86 của của Intel Intel- - Luật Luật Moore Moore
- - Họ 68x Họ 68x của của Motorola Motorola
2.3 Hệ 2.3 Hệ thống thống vi vi xử lý xử lý
- - Bộ Bộ nhớ nhớ
- - Các cổng Các cổng I/O I/O
- - Bus Bus hệ thống hệ thống: D : D- -Bus, A Bus, A- -Bus, C Bus, C- -Bus Bus
- - Thiết kế hệ thống Thiết kế hệ thống vi vi xử lý xử lý? ?2.1 Bộ vi 2.1 Bộ vi xử lý xử lý
Một bộ Một bộ vi vi xử lý là một mạch xử lý là một mạch
tích hợp chứa hàng ngàn tích hợp chứa hàng ngàn, ,
thậm chí hàng triệu thậm chí hàng triệu
transistor (LSI, VLSI) transistor (LSI, VLSI) được được
kết nối với nhau kết nối với nhau
Các Các transistor transistor ấy cùng nhau ấy cùng nhau
làm việc để lưu trữ và xử lý làm việc để lưu trữ và xử lý
dữ liệu cho phép bộ dữ liệu cho phép bộ vi vi xử lý xử lý
có thể thực hiện rất nhiều có thể thực hiện rất nhiều
chức năng hữu ích chức năng hữu ích
Chức năng cụ thể của một Chức năng cụ thể của một
bộ bộ vi vi xử lý được xác định xử lý được xác định
bằng phần mềm bằng phần mềm ( (có có thể thể lập lập
trình trình được được) )Bộ vi Bộ vi xử lý xử lý
Bộ vi Bộ vi xử xử lý lý đầu đầu tiên tiên của của
Intel,4004, Intel,4004, được được giới thiệu giới thiệu
vào vào năm năm 1971. 1971.
4004 4004 chứa chứa 2300 transistor. 2300 transistor.
Bộ vi Bộ vi xử xử lý lý Pentium 4 Pentium 4 hiện hiện
nay nay chứa chứa 55 55 triệu triệu
transistor. transistor.
Bộ vi Bộ vi xử lý thường được sử xử lý thường được sử
dụng trong các máy dụng trong các máy vi vi tính tính
(microcomputer) (microcomputer) với vai với vai
trò là trò là CPU. CPU. Ngoài ra Ngoài ra, ,
chúng còn có mặt chúng còn có mặt ở ở nhiều nhiều
thiết bị khác thiết bị khác. .Các thành phần của bộ Các thành phần của bộ vi vi xử lý xử lýALU ALU và và Control Unit Control Unit
ALU
Thựchiện các phép toán logic (AND, OR, XOR,
NOT) và các phép toán số học(cộng, trừ, nhân, chia)
Thực hiện việc chuyển dữ liệu
Việc thực hiện lệnh thực sự diễn ra ở ALU
Control Unit
Có trách nhiệm liên quan đến việc tìm và thực hiện
các lệnh bằng cách cung cấp các tín hiệu điều khiển
và định thời cho ALU và các mạch khác biết phải làm
gì và làm khi nào.Các thanh ghi Các thanh ghi (Registers) (Registers)
Thanh ghi là nơimàbộ vi xử lý có thể lưutrữđược
mộtsố nhị phân (Kích cỡ của thanh ghi tính bằng bit)
Bộ vi xử lý dùng các thanh ghi để lưu trữ dữ liệu tạm
thời trong quá trình thực hiện chương trình
Các thanh ghi có thể được truy cập bằng các câu lệnh
ngôn ngữ máy thường được gọi là các thanh ghi người
sử dụng có thể nhìn thấy được (có thể truy cập được)
Các thanh ghi điều khiển và các thanh ghi trạng thái
được CU dùng để điều khiển việc thực hiện chương
trình. Đa số các thanh ghi này người sử dụng không
thể nhìn thấy được2.2 C 2.2 Các họ ác họ vi vi xử lý xử lý
Hiện Hiện nay, nay, có rất nhiều nhà sản xuất ra các có rất nhiều nhà sản xuất ra các
chip vi chip vi xử lý xử lý:Intel, AMD, Motorola, Cyrix ... :Intel, AMD, Motorola, Cyrix ...
Thông thường Thông thường, , một họ một họ vi vi xử lý là các xử lý là các chip chip
vi vi xử lý được sản xuất bởi một nhà sản xử lý được sản xuất bởi một nhà sản
xuất nào đó xuất nào đó. .
Trong phạm Trong phạm vi vi một họ một họ vi vi xử lý xử lý, , theo thời theo thời
gian và theo công nghệ chế tạo có các đời gian và theo công nghệ chế tạo có các đời
( (thế thế hệ hệ) vi ) vi xử lý khác nhau phân biệt theo xử lý khác nhau phân biệt theo
Độ dài Độ dài Từ Từ của chúng của chúng (bit) (bit) và tốc độ và tốc độ (Hz). (Hz).
Độ dài Độ dài Từ (Word Length) Từ (Word Length) của một của một chip vi chip vi
xử lý là kích cỡ tối đa của các toán hạng xử lý là kích cỡ tối đa của các toán hạng
nhị phân mà nó có thể thực hiện các phép nhị phân mà nó có thể thực hiện các phép
toán trên đó toán trên đó. .Tốc Tốc độ độ của của họ họ vi vi xử xử lý lý x86 x86 của của Intel Intel
The Continuing Evolution of Intel Microprocessors
CIS105
December 2002
0.74 2 8 12 33
100
200 200 233
333
400 400
550
1,400
0
200
400
600
800
1000
1200
1400
1600
1971 1974 1979 1982 1985 1989 1993 1995 1997 1998 1998 1999 1999 2000
Year
Speed (MHZ)Họ vi Họ vi xử xử lý lý x86 x86 của của Intel Intel
Model Model Năm sản xuất Năm sản xuất Số Số lượng lượng Transistor Transistor
4004 4004 1971 1971 2,300 2,300
8008 8008 1972 1972 2,500 2,500
8080 8080 1974 1974 5,000 5,000
8086 8086 1978 1978 29,000 29,000
80286 80286 1982 1982 120,000 120,000
80386™ processor 80386™ processor 1985 1985 275,000 275,000
80486™ DX processor 80486™ DX processor 1989 1989 1,180,000 1,180,000
Pentium® processor Pentium® processor 1993 1993 3,100,000 3,100,000
Pentium II processor Pentium II processor 1997 1997 7,500,000 7,500,000
Pentium III processor Pentium III processor 1999 1999 24,000,000 24,000,000
Pentium 4 processor Pentium 4 processor 2000 2000 55,000,000 55,000,000Họ vi Họ vi xử xử lý lý x86 x86 của của Intel 70's Intel 70's
4004 8008 8080 8086
Introduced 11/15/71 4/1/72 4/1/74 6/8/78
Clock Speeds 108KHz 200KHz 2MHz 5MHz, 8MHz, 10MHz
Bus Width 4 bits 8 bits 8 bits 16 bits
Number of
Transistors
2,300
(10 microns)
3,500
(10 microns)
6,000
(6 microns)
29,000
(3 microns)
Addressable Memory 640 bytes 16 KBytes 64 KBytes 1 MB
Virtual Memory -- -- -- --
Brief Description First microcomputer
chip, Arithmetic
manipulation
Data/character
manipulation
10X the performance
of the 8008
10X the performance
of the 8080
Họ vi Họ vi xử xử lý lý x86 x86 của của Intel 80's Intel 80's
80286
Intel386TM DX
Microprocessor
Intel386TM SX
Microprocessor
Intel486TM
DX CPU
Microprocessor
Introduced 2/1/82 10/17/85 6/16/88 4/10/89
Clock Speeds 6MHz, 8MHz, 10MHz,
12.5MHz
16MHz, 20MHz,
25MHz, 33MHz
16MHz, 20MHz,
25MHz, 33MHz
25MHz, 33MHz,
50MHz
Bus Width 16 bits 32 bits 16 bits 32 bits
Number of
Transistors
134,000
(1.5 microns)
275,000
(1 micron)
275,000
(1 micron)
1.2 million
(1 micron)
(.8 mic ron wi th 50MHz)
Addressable Memory 16 megabytes 4 gigabytes 16 megabytes 4 gigabytes
Virtual Memory 1 gigabyte 64 terabytes 64 terabytes 64 terabytes
Brief Description 3-6X the performance
of the 8086
Fi rst X86 chip to
handle 32-bit data sets
16-bit address bus
enabled low-c ost 32-bi t
processing
Level 1 cache on chip
Họ vi Họ vi xử xử lý lý x86 x86 của của Intel 90's Intel 90's
Intel486TM SX
Microprocessor
Pentium®
Processor
Pentium® Pro
Processor
Pentium® II
Processor
Introduced 4/22/91 3/22/93 11/01/95 5/07/97
Clock Speeds 16MHz, 20MHz,
25MHz, 33MHz
60MHz,66MHz 150MHz, 166MHz,
180MHz, 200MHz
200MHz, 233MHz,
266MHz, 300MHz
Bus Width 32 bits 64 bits 64 bits 64 bits
Number of
Transistors
1.185 million
(1 micron)
3.1 million
(.8 micron)
5.5 million
(0.35 micron)
7.5 million
(0.35 micron)
Addressable Memory 4 gigabytes 4 gigabytes 64 gigabytes 64 gigabytes
Virtual Memory 64 terabytes 64 terabytes 64 terabytes 64 terabytes
Brief Description Identical in design to
Intel486TM DX but
without math
coprocessor
Superscalar
archi tecture brought
5X the performance of
the 33-MHz Intel486TM
DX processor
Dynamic execution
architecture drives
high-performing
processor
Dual independent bus,
dynamic execution,
Intel MMXTM
technology
2.3 Hệ 2.3 Hệ thống thống vi vi xử lý xử lýLuật Luật Moore Moore
Dr. Gordon E. Moore, Chairman Emeritus of Intel Corporation, dự đoán rằng
Cứ một năm rưỡi thì số lượng transistor được tích hợp trên chip vi xử lý tăng gấp đôi2.3 Hệ 2.3 Hệ thống thống vi vi xử lý xử lý
Microprocessor
MEMORY I/O Ports
Data Bus
Control Lines (Control Bus)
Address Bus
Sơ đồ khối chức năng của một hệ thống vi xử lýHệ Hệ thống thống vi vi xử lý xử lý
Gồm Gồm 3 3 khối chức năng khối chức năng: Vi : Vi xử lý xử lý, Bộ , Bộ nhớ nhớ, ,
Các cổng Các cổng I/O I/O
Bộ Bộ nhớ được thực hiện bằng các nhớ được thực hiện bằng các chip chip nhớ nhớ
bán dẫn bán dẫn ROM ROM hoặc hoặc RWM, RWM, là nơi lưu trữ là nơi lưu trữ
chương trình và dữ liệu chương trình và dữ liệu. . Đối với Đối với vi vi xử lý xử lý, ,
bộ nhớ là một tập hợp các bộ nhớ là một tập hợp các ô ô nhớ phân biệt nhớ phân biệt
theo địa chỉ của chúng theo địa chỉ của chúng. .
Các cổng Các cổng I/O I/O được thực hiện bằng các được thực hiện bằng các chip chip
MSI MSI hoặc hoặc LSI, LSI, là phần mạch giao tiếp giữa là phần mạch giao tiếp giữa
vi vi xử lý với các thiết bị xử lý với các thiết bị I/O. Bộ vi I/O. Bộ vi xử lý xử lý
cũng phân biệt các cổng cũng phân biệt các cổng I/O I/O theo địa chỉ theo địa chỉ
của chúng của chúng. .Hệ Hệ thống thống vi vi xử lý xử lý
3 3 khối chức năng khối chức năng: Vi : Vi xử lý xử lý, Bộ , Bộ nhớ nhớ, , Các Các
cổng cổng I/O I/O của một hệ thống của một hệ thống vi vi xử lý trao xử lý trao
đổi tín hiệu với nhau thông đổi tín hiệu với nhau thông qua Bus qua Bus hệ hệ
thống thống. .
Bus Bus hệ thống là một tập hợp các đường hệ thống là một tập hợp các đường
truyền dẫn dùng chung truyền dẫn dùng chung, , bao gồm bao gồm: Bus : Bus địa địa
chỉ chỉ (A (A- -Bus), Bus Bus), Bus dữ liệu dữ liệu (D (D- -Bus) Bus) và và Bus Bus
điều khiển điều khiển (C (C- -Bus) Bus)
Các tín hiệu địa chỉ di chuyển trên Các tín hiệu địa chỉ di chuyển trên A A- -Bus Bus
theo hướng từ theo hướng từ vi vi xử lý đến xử lý đến Bộ Bộ nhớ và các nhớ và các
cổng cổng I/O. Số I/O. Số lượng đường truyền dẫn của lượng đường truyền dẫn của
A A- -Bus ( Bus (gọi là gọi là Độ Độ rộng rộng của của A A- -Bus) Bus) tính tính
bằng bằng bit, bit, phản ánh khả năng quản lý bộ phản ánh khả năng quản lý bộ
nhớ của nhớ của chip vi chip vi xử lý xử lý. .Hệ Hệ thống thống vi vi xử lý xử lý
Các tín hiệu dữ liệu di chuyển trên Các tín hiệu dữ liệu di chuyển trên D D- -Bus Bus
theo cả theo cả 2 2 hướng từ hướng từ vi vi xử lý đến xử lý đến Bộ Bộ nhớ và nhớ và
các cổng các cổng I/O I/O và và ngược ngược lại lại ( (mỗi lúc mỗi lúc một một
hướng hướng). Số ). Số lượng đường truyền dẫn của lượng đường truyền dẫn của D D- -
Bus ( Bus (gọi là gọi là Độ Độ rộng rộng của của D D- -Bus) Bus) tính bằng tính bằng
bit, bit, phản ánh một phần tốc độ trao đổi dữ phản ánh một phần tốc độ trao đổi dữ
liệu của liệu của chip vi chip vi xử lý xử lý vớI vớI các các khối chức khối chức
năng năng khác khác. .
Đa số các tín hiệu trên Đa số các tín hiệu trên C C- -Bus Bus là các tín là các tín
hiệu điều khiển riêng lẽ hiệu điều khiển riêng lẽ, , có tín hiệu xuất có tín hiệu xuất
phát từ phát từ vi vi xử lý xử lý, , có tín hiệu đi vào có tín hiệu đi vào vi vi xử lý xử lý. .
Vi Vi xử lý sử dụng các tín hiệu này để điều xử lý sử dụng các tín hiệu này để điều
khiển hoạt động và nhận biết trạng thái khiển hoạt động và nhận biết trạng thái
của các khối chức năng khác của các khối chức năng khác. . Thiết kế bộ nhớ cho hệ thống Thiết kế bộ nhớ cho hệ thống vi vi xử lý xử lý: :
Ghép nối các Ghép nối các chip chip nhớ bán dẫn sẵn có với nhớ bán dẫn sẵn có với
bus bus hệ thống sao cho khi bộ hệ thống sao cho khi bộ vi vi xử lý truy xử lý truy
cập bộ nhớ thì không xảy ra xung đột giữa cập bộ nhớ thì không xảy ra xung đột giữa
các các chip chip nhớ với nhau và không xung đột nhớ với nhau và không xung đột
với các với các chip chip dùng làm cổng dùng làm cổng I/O I/O
Tương tự Tương tự, , Thiết kế các cổng Thiết kế các cổng I/O I/O cho hệ cho hệ
thống thống vi vi xử lý xử lý: : Ghép nối các Ghép nối các chip MSI chip MSI hoặc hoặc
LSI LSI thường dùng làm cổng thường dùng làm cổng I/O I/O với với bus bus hệ hệ
thống sao cho khi bộ thống sao cho khi bộ vi vi xử lý truy cập các xử lý truy cập các
thiết bị thiết bị I/O I/O thì không xảy ra xung đột giữa thì không xảy ra xung đột giữa
các các chip chip đó với nhau và không xung đột đó với nhau và không xung đột
với các với các chip chip dùng làm bộ nhớ dùng làm bộ nhớ
Thiết Thiết kế kế phần cứng của hệ thống phần cứng của hệ thống vi vi xử lý xử lýThiết Thiết kế kế phần mềm của hệ thống phần mềm của hệ thống vi vi xử lý xử lý
Viết chương trình điều khiển hoạt động của Viết chương trình điều khiển hoạt động của
hệ thống phần cứng theo chức năng mong hệ thống phần cứng theo chức năng mong
muốn muốn ( (thường thường dùng dùng ngôn ngôn ngữ ngữ Assembly Assembly
của của chip vi chip vi xử xử lý lý dùng trong hệ dùng trong hệ thống thống) )
Dịch chương trình đã viết Dịch chương trình đã viết sang sang ngôn ngữ ngôn ngữ
máy sử dụng các chương trình dịch thích máy sử dụng các chương trình dịch thích
hợp hợp
Nạp chương trình ngôn ngữ máy vào bộ Nạp chương trình ngôn ngữ máy vào bộ
nhớ của hệ thống nhớ của hệ thống vi vi xử lý xử lý
Kiểm tra hoạt động của hệ thống và thực Kiểm tra hoạt động của hệ thống và thực
hiện các hiệu chỉnh nếu cần thiết hiện các hiệu chỉnh nếu cần thiết
Có thể nhờ sự trợ giúp của các chương Có thể nhờ sự trợ giúp của các chương
trình mô phỏng trên máy tính trình mô phỏng trên máy tính
Bay giảng Kỹ thuậtVi xử lý
Ngành Điện tử-Viễn thông
Đại học Bách khoa Đà Nẵng
củaHồ Viết Việt, Khoa ĐTVT
Tài liệu tham khảo
[1] Kỹ thuậtvi xử lý, Văn Thế 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, 2001Chương 3
Vi xử lý 8088-Intel
3.1 Kiến trúc và hoạt động của 8088
- Nguyên lý hoạt động
-Sơ đồ khối chức năng
3.2 Cấu trúc thanh ghi của 8088
3.3 Phương pháp quản lý bộ nhớ
3.4 Mô tả tập lệnh AssemblyLấy - Giải mã - Thực hiện lệnh
Tìm và copy
các byte lệnh từ bộ nhớ
Giải mã lệnh Tạo ra các tín hiệu điều khiển
để thực hiện lệnh
Nguyên lý hoạt động của một bộ vi xử lýChu kỳ lệnh và Chu kỳ máy
• Chu kỳ lệnh: Tổng thời gian tìm lệnh, giải
mã lệnh và thực hiện 1 lệnh
• Nói chung, Chu kỳ lệnh của các lệnh khác
nhau là khác nhau
• Chu kỳ lệnh bao giờ cũng bằng một số
nguyên lần chu kỳ máy
• Chu kỳ máy bằng nghịch đảo của tần số
hoạt động (tốc độ đồng hồ) của bộ vi xử lý3.1 Kiến trúc và Hoạt động của 8088Đơnvị giao tiếpBus -BIU
• Phát các tín hiệu địa chỉ đến bộ nhớ và các
cổng I/O thông qua A-Bus
• Đọc mã lệnh từ bộ nhớ thông qua D-Bus
• Đọc dữ liệu từ bộ nhớ thông qua D-Bus
•Ghi dữ liệu vào bộ nhớ thông qua D-Bus
• Đọc dữ liệu từ các cổng I thông qua D-Bus
•Ghi dữ liệu ra các cổng O thông qua D-BusĐơn vị thực hiện - EU
•Bao gồm CU và ALU
•CU :Giải mã lệnh để tạo ra các tín hiệu
điều khiển nhằm thực hiện lệnh đã được
giải mã
•ALU: thực hiện các thao tác khác nhau đối
với các toán hạng của lệnhTổ chức của microprocessor
ALU
BIU
Control
Control
General
purpose
Status
Registers
Control
Data
Address
CPUXử lý lệnh của các vi xử lý trước 8086/8088
•Một thủ tục đơn giản gồm 3 bước:
-Lấy lệnh từ bộ nhớ
-Giải mã lệnh
-Thực hiện lệnh
•Lấy các toán hạng từ bộ nhớ (nếucó)
•Lưu trữ kết quả
Fetch
1
Decode
1
Execute
1
Fetch
2
Decode
2
Execute
2
......
Busy Idle Busy ...... Busy Idle Busy
Microprocessor
BusCơ chế Pipelining
Pipelining
Bus Fetch
1
Fetch
2
Fetch
3
Fetch
4
Store
1
Fetch
5
...... Fetch
6
Fetch
7
Load
2
Instruction
Unit
Decode
1
Decode
2
Decode
3
Decode
4
Idle
Decode
5
...... Decode
6
Idle Decode
7
Exec.
1
Exec.
2
Exec.
3
Exec.
4
Idle
Idle Exec.
5
Exec.
6
Exec.
7
Idle Execution
Unit
Memory request Memory request3.2 Cấu trúc thanh ghi của 8088
8088 có 14 thanh ghi 16-bitCấu trúc thanh ghi củahọ x86
Accumulator
EAX
AH AL
AX
Base
EBX
BH BL
BX
Count
ECX
CH CL
CX
Data
EDX
DH DL
DX
General Purpose
Instr Pointer
EIP
IP
Flags
EFLAG
FLAG
Special Registers
Stack Segment
Code Segment CS
Data Segment DS
Extra Segment ES
SS
FS
GS
Segment Registers
Stack Pointer
ESP
SP
Base Pointer
EBP
BP
Dest Index
EDI
DI
Source Index
ESI
SI
Index RegistersCấu trúc thanh ghi 8086/8088
AH
BH
CH
DH
AL
BL
CL
DL
0 70 7
0 15
IP
SP
BP
SI
DI
Accumulator
Base
Counter
Data
CS
DS
SS
ES
0 15
Code Segment
Data Segment
Stack Segment
Extra Segment
Instruction Pointer
Stack Pointer
Base Pointer
Source Index
Destination Index
}
}
}
AX
BX
CX
DXAH
BH
CH
DH
AL
BL
CL
DL
0 70 7
Accumulator
Base
Counter
Data
AX
BX
CX
DX
- Có thể truy cập như các thanh ghi 8-bit
-Lưu trữ tạm thời dữ liệu để truy cập nhanh hơn
và tránh khỏi phải truy cập bộ nhớ
- Có công dụng đặc biệt đối với một số câu lệnh
Các thanh ghi đa năngCác thanh ghi segment
CS
DS
SS
ES
0 15
Code Segment
Data Segment
Stack Segment
Extra Segment
- Lưu trữ địa chỉ segment của một ô nhớ cần truy cập
-Kết hợp với các thanh ghi offset nhất định - Lưu trữ địa chỉ offset của một ô nhớ cần truy cập
-Kết hợp với các thanh ghi segment nhất định
Các thanh ghi offset
IP
SP
BP
SI
DI
Instruction Pointer
Stack Pointer
Base Pointer
Source Index
Destination Indexx x x x OF DF IF TF SF ZF x AF x PF x CF
0 15
Thanh ghi cờ
- Không phải tất cả các bit đều được sử dụng
-Mỗi bit được sử dụng được gọi là một cờ
-Các cờ đều có tên và có thể được Lập/Xoá
riêng lẽ
-Bao gồm các cờ trạng thái và các cờ điều
khiểnFlags register
8086, 8088, 80186 8086, 8088, 80186
80286 80286
80386, 80486DX 80386, 80486DX
80486SX 80486SX
AC AC (Alignment check) (Alignment check)
(VM) (VM) Virtual mode Virtual mode
(RF) (RF) Resume Resume
(NT) (NT) Nested task Nested task
(IOPL) (IOPL) Input/output Input/output
privilege level privilege level
(O) (O) Overflow Overflow
(D) (D) Direction Direction
(I) (I) Interrupt Interrupt
(T) (T) Trace Trace
(S) (S) Sign Sign
(Z) (Z) Zero Zero
(A) (A) Auxiliary Carry Auxiliary Carry
(P) (P) Parity Parity
(C) (C) Carry Carry3.3 Phương pháp quản lý bộ nhớ
-Bộ nhớ được xem là một tập hợp các ô nhớ
-Mỗi ô nhớ được nhận dạng bằng một Địa chỉ
vật lý duy nhất 20-bit
- Trong hoạt động truy cập một ô nhớ, Địa chỉ
vật lý của nó được tạo ra từ hai giá trị 16-bit:
Địa chỉ segment và Địa chỉ Offset
- Địa chỉ logic = Địa chỉ segment:Địa chỉ offsetMối liên hệ giữa ĐCVL và ĐCLG
A=Bus
0000 Thanh ghi offset. Thanh ghi Segment
Địa chỉ vật lý
0 0
0
15 15
193.4 Mô tả tập lệnh Assembly của
8086/8088
- Khuôn dạng: Mnemonics Các toán hạng
- Nhóm lệnh chuyển số liệu
- Nhóm lệnh số học
- Nhóm lệnh logic
- Nhóm lệnh Rẽ nhánh
- Nhóm lệnh thao tác string
- Nhóm lệnh hỗn hợpNhóm lệnh chuyển số liệu
Data Transfer Instructions
-Chuyển số liệu (sao chép số liệu) từ vị trí này
sang vị trí khác
-Nguồn số liệu không thay đổi
- Đich sẽ có giá trị như giá trị của Nguồn
-Các lệnh chuyển số liệu không ảnh hưởng đến
các cờ trạng thái trên thanh ghi cờ
-Một số lệnh tiêu biểu: MOV, XCHGData Transfer Instructions - MOV
Khuôn dạng: MOV Đích,Nguồn
- Tác dụng: (Đích) Å (Nguồn)
- Đích: có thể là:
1. Một thanh ghi 8 hoặc 16 bit của VXL
2. Một vị trí nhớ (1 hoặc 2 ô nhớ liên tiếp
nhau)
-Nguồn: có thể là:
1. Một thanh ghi 8 hoặc 16 bit củaVXL
2. Một vị trí nhớ (1 hoặc2 ônhớ liên tiếp
nhau)
3. Một giá trị cụ thểMộtsố lưuý đối vớiMOV
- Đích và Nguồn phải có cùng kích cỡ
- Đích và Nguồn không thể đồng thời
thuộc bộ nhớ
-Nếu Đích là một thanh ghi segment
của VXL thì Nguồn không thể là một
giá trị cụ thể (nói cách khác, không thể
nạp giá trị trựctiếp cho một thanh ghi
segment bằng lệnh MOV)Data Transfer Instructions - XCHG
Khuôn dạng: XCHG T/h1,T/h2
- Tác dụng: (T/h1) Å (T/h2)
- T/h1: có thể là:
1. Một thanh ghi 8 hoặc 16 bit của VXL
2. Một vị trí nhớ (1 hoặc 2 ô nhớ liên tiếp
nhau)
- T/h2: có thể là:
1. Một thanh ghi 8 hoặc 16 bit củaVXL
2. Một vị trí nhớ (1 hoặc2 ônhớ liên tiếp
nhau)Mộtsố lưuý đối vớiXCHG
- T/h1 và T/h2 phải có cùng kích cỡ
- T/h1 và T/h2 không thể đồng thời
thuộc bộ nhớ
- T/h1 và T/h2 không thể là các thanh
ghi segmentCác mode địa chỉ
- Khi thực hiện lệnh, VXL sẽ thực hiện những
thao tác nhất định trên số liệu, các số liệu này
được gọi chung là các toán hạng.
- Các toán hạng trong một câu lệnh có thể là một
phần của câu lệnh (ở dạng mã máy), có thể nằm
ở một thanh ghi của VXL hoặc ở Bộ nhớ
-Cách xác định toán hạng trong các câu lệnh
được gọi là các mode (định) địa chỉCác mode địa chỉ
- Mode địa chỉ thanh ghi: MOV AX,BX
- Mode địa chỉ tức thì: MOV AL,55h
- Các mode địa chỉ bộ nhớ: Các cách thức xác
định địa chỉ vât lý của toán hạng nằm trong bộ
nhớ:
Mode địa chỉ trực tiếp
Các mode địa chỉ gián tiếp...Mode địa chỉ trựctiếp
(Direct Addressing Mode)Mode địa chỉ gián tiếp thanh ghi
(Register Indirect Addressing Mode)Mode địa chỉ cơ sở-chỉ số
(Based-Indexed Addressing Mode)Nhớ các mode địachỉ bộ nhớ như thế nào?
•Tất cả bắt đầu trong bảng sau đây:
•Lấyra0 hoặc1 phầntử từ mỗicột
• (Không lấy2 phầntử từ mộtcột)
•Phải lấy ít nhất 1 phần tử từ bảng
BX
BP
SI
DI
DISPCác ví dụ
89 D8 MODE OP Move to AX the 16-bit value in BX MOV AX, BX Register
Memory Contents Comment Instruction Addressing
Mode
89 F8 MODE OP Move to AX the 16-bit value in DI MOV AX, DI Register
88 C4 MODE OP Move to AL the 8-bit value in AX MOV AH, AL Register
B4 12 DATA8 OP Move to AH the 8-bit value 12H MOV AH, 12h Immediate
B8 34 DATA16 OP Move to AX the value 1234h MOV AX, 1234h Immediate
B8 lsb msb DATA16 OP
Move to AX the constant defined as
CONST MOV AX, CONST Immediate
B8 lsb msb DATA16 OP
Move to AX the address or offset of
the variable X MOV AX, X Immediate
A1 34 12 DISP16 OP
Move to AX the value at memory
location 1234h
MOV AX, [1234h] Direct
A1 lsb msb DISP16 OP
Move to AX the value in memory
location DS:X MOV AX, [X] DirectCác ví dụ
A3 lsb msb DATA16 OP
Move to the memory location
pointed to by DS:X the value in AX MOV [X], AX Direct
Memory Contents Comment Instruction Addressing
Mode
8B 05 MODE OP
Move to AX the 16-bit value pointed
to by DS:DI
MOV AX, [DI] Indexed
89 05 MODE OP
Move to address DS:DI the 16-bit
value in AX MOV [DI], AX Indexed
8B 07 MODE OP
Move to AX the 16-bit value pointed
to by DS:BX MOV AX, [BX]
Register
Indirect
89 07 MODE OP
Move to the memory address DS:BX
the 16-bit value stored in AX MOV [BX], AX Register
Indirect
89 46 MODE OP
Move to memory address SS:BP
the 16-bit value in AX MOV [BP], AX Register
Indirect
8B 87 lsb msb MODE OP
Move to AX the value in memory at
DS:BX + TAB MOV AX, TAB[BX]
Register
Relative
89 87 lsb msb DISP16 OP
Move value in AX to memory
address DS:BX + TAB MOV TAB[BX], AX Register
Relative
8B 01 MODE OP
Move to AX the value in memory at
DS:BX + DI
MOV AX, [BX + DI]
Base Plus
Index
DISP16
MODECác ví dụ
89 01 MODE OP
Move to the memory location
pointed to by DS:X the value in AX MOV [BX + DI], AX Base Plus
Index
Memory Contents Comment Instruction Addressing
Mode
8B 81 34 12 MODE OP
Move word in memory location
DS:BX + DI + 1234h to AX register
MOV AX, [BX + DI + 1234h]
Base Rel
Plus Index DISP16
C7 81 34 12 78 56
Move immediate value 5678h to
memory location BX + DI + 1234h
MOV word [BX + DI +
1234h], 5678h
Base Rel
Plus IndexMã máy
Mộtlệnh có thể dài từ1 đến6 byte
• Byte 1 gồm:
- Opcode (6 bit) xác định phép toán cần thực hiện
- Bit D xác định toán hạng ở REG của Byte 2 là nguồn hay đích:
1: Đích
0: Nguồn
- Bit W xác định kích cỡ của toán hạng là 8 bit hay 16 bit
0: 8 bit
1: 16 bit
• Byte 2 gồm:Mode field (MOD), Register field (REG)
Register/memory field (R/M field)Anatomy of an instruction
• Opcode contains the type of instruction we
execute plus two special bits, D and W
• The mode byte is used only in instructions that
use register addressing modes and encodes the
source and destination for instructions with two
operands
• D stands for direction and defines the data flow
of the instruction
- D=0, data flows from REG to R/M
- D=1, data flows from R/M to REG
• W stands for the size of data
- W=0, byte-sized data
- W=1, word (in real mode) or double-word sized (in
protected mode)
D W
OPCODE
MOD R/M REG
Opcode Mode Displacement Data/ImmediateAnatomy of an instruction Anatomy of an instruction
• • MOD field specifies the addressing mode MOD field specifies the addressing mode
• • 00 00 - - no displacement no displacement
• • 01 01 - - 8 8- -bit displacement, sign extended bit displacement, sign extended
• • 10 10 - - 16 16- -bit displacement bit displacement
• • 11 11 - - R/M is a register, register addressing mode R/M is a register, register addressing mode
• • If MOD is 00,01, or 10, the R/M field selects one of If MOD is 00,01, or 10, the R/M field selects one of
the memory addressing modes the memory addressing modes
D W
OPCODE
MOD R/M REG
Opcode Mode Displacement Data/ImmediateRegisters in the REG and R/M
fields
Code W=0 (Byte) W=1 (Word) W=1 (DWord)
000 AL AX EAX
001 CL CX ECX
010 DL DX EDX
011 BL BX EBX
100 AH SP ESP
101 CH BP EBP
110 DH SI ESI
111 BH DI EDIExample
• Consider the instruction 8BECh
• 1000 1011 1110 1100 binary
• Opcode 100010 -> MOV
• D=1 data goes from R/M to REG
• W=1 data is word-sized
• MOD=11, register addressing
• REG=101 destination, R/M=100
source
• MOV BP, SP
Code W=0 W=1 W=1
000 AL AX EAX
001 CL CX ECX
010 DL DX EDX
011 BL BX EBX
100 AH SP ESP
101 CH BP EBP
110 DH SI ESI
111 BH DI EDIDisplacement addressing
• If MOD is 00, 01, or 10 R/M has an entirely
different meaning
R/M Code Function
000 DS:BX+SI
001 DS:BX+DI
010 SS:BP+SI
011 SS:BP+DI
100 DS:SI
101 DS:DI
110 SS:BP
111 DS:BX
00
MOD
01
FUNCTION
10
11
No displacement
8-bit sign-extended displacement
16-bit displacement
R/M is a register (register addressing mode)
Examples: Examples:
If MOD=00 and R/M=101 mode is [DI] If MOD=00 and R/M=101 mode is [DI]
If MOD=01 and R/M=101 mode is If MOD=01 and R/M=101 mode is
[DI+33h] [DI+33h]
If MODE=10 and R/M=101 modes is If MODE=10 and R/M=101 modes is
[DI+2233h] [DI+2233h]Example
• Instruction 8A15h
• 1000 1010 0001 0101
• Opcode 100010 -> MOV
• D=1, data flows from R/M to REG
• W=0, 8-bit argument
• MOD=00 (no displacement)
•REG=010 (DL)
• REG=101 ([DI] addressing mode)
• MOV DL, [DI]
Code W=0 W=1 W=1
000 AL AX EAX
001 CL CX ECX
010 DL DX EDX
011 BL BX EBX
100 AH SP ESP
101 CH BP EBP
110 DH SI ESI
111 BH DI EDI
R/M Code Function
000 DS:BX+SI
001 DS:BX+DI
010 SS:BP+SI
011 SS:BP+DI
100 DS:SI
101 DS:DI
110 SS:BP
111 DS:BXDirect Addressing Mode
•MOD is always 00
• R/M is always 110
• REG encodes the register to/from we take
data as usual
• Third byte contains the lower-order bytes
of the displacement, fourth byte contains the
high order byte of the displacementDirect Addressing
• Example: 8816 00 10
• 1000 1000 0001 0110 0000 0000 0001 0000
• Opcode 100010 -> MOV
• W=0 (byte-sized data)
• D=0 data flows from REG
• MOD 00, REG=010 (DL), R/M=110
• Low-order byte of displacement 00
• High-order byte of displacement 10
• MOV [1000h], DL
Code W=0 W=1 W=1
000 AL AX EAX
001 CL CX ECX
010 DL DX EDX
011 BL BX EBX
100 AH SP ESP
101 CH BP EBP
110 DH SI ESI
111 BH DI EDISegment MOV instructions
• Different opcode 100011
• Segments are selected by setting the REG
field
REG Code Segment reg.
000 ES
001 CS
010 SS
011 DS
100 FS
101 GS
Example MOV BX, CS Example MOV BX, CS
Opcode Opcode 10001100 10001100
MOD=11 (register addressing) MOD=11 (register addressing)
REG=001 (CS) REG=001 (CS)
R/M=011 (BX) R/M=011 (BX)
8CCB 8CCBMã máy
REG xác định thanh ghi cho toán hạng thứ nhấtMã máy
MOD và R/M cùng nhau xác định toán hạng thứ haiMã máy
MOD và R/M cùng nhau xác định toán hạng thứ haiVí dụ
Mã hoá lệnh MOV BL,AL
• Opcode đối với MOV là 100010
• Ta mã hoá AL sao cho AL là toán hạng nguồn:
- D = 0 (AL là toán hạng nguồn)
• W bit = 0 (8-bit)
• MOD = 11 (register mode)
• REG = 000 (mã của AL)
• R/M = 011 (mã củaBL)
Kết quả:: 10001000 11000011 = 88 C3Nhóm lệnh Số học
•Bên cạnh tác dụng, cần chú ý đến ảnh hưởng của
lệnh đối với các cờ trạng thái
•Cáclệnh số học th/thường: ADD, SUB, ...
•Các lệnh số học khác: CMP. NEG, INC, DEC, ...
• Ảnh hưởng đến các cờ trạng thái
-CF
- OF Phụ thuộc vào quá trình thực hiện phép toán
-AF
-ZF = 1 nếu Kết quả bằng 0
- SF = 1 nếu MSB của Kết quả = 1
- PF = 1 nếu byte thấp của kết quả có Parity chẳnArithmetic Instructions - ADD
Khuôn dạng: ADD Đích,Nguồn
- Tác dụng: (Đích) Å (Đích)+(Nguồn)
- Đích: có thể là:
1. Một thanh ghi 8 hoặc 16 bit của VXL
2. Một vị trí nhớ (1 hoặc 2 ô nhớ liên tiếp
nhau)
-Nguồn: có thể là:
1. Một thanh ghi 8 hoặc 16 bit củaVXL
2. Một vị trí nhớ (1 hoặc2 ônhớ liên tiếp
nhau)
3. Một giá trị cụ thểẢnh hưởng của ADD
-ZF = 1nếu Kết quả bằng 0
- SF = 1 nếuMSBcủa Kết quả = 1
- PF = 1 nếu byte thấp của kết quả có Parity chẳn
•CF được lập nếu tràn không dấu (có nhớ từ
MSB)
•OF được lập nếu tràn có dấu:
- Có nhớ từ MSB, Không có nhớ vào MSB
- Có nhớ vào MSB, Không có nhớ từ MSB
•AF được lập nếu có nhớ từ nibble thấp vào
nibble cao (từ bit 3 vào bit 4)Các cờ trên thanh ghi cờ
• Các bit nhất định trên thanh ghi cờ điều
khiển hoạt động hoặc phản ánh trạng thái
của vi xử lý
-Các cờ điều khiển (TF, IF, DF)
•Quyết định cách đáp ứng của vi xử lý trong các tình
huống nhất định
-Các cở trạng thái (CF, PF, AF, ZF, SF, OF)
•Bị ảnh hưởng bởi các phép toán nhất định
•Phục vụ cho các lệnh có điều kiệnCác cờ điều khiển
• DF - Direction flag (Cờ hướng)
- DF = 1: huớng xuống
-DF = 0: hướng lên
• IF - Interrupt flag (Cờ ngắt)
- IF = 1: cho phép ngắt ngoài
-IF = 0: cấm ngắt ngoài (đối với ngắtche được)
• TF - Trace flag
- TF = 1: vi xử lý thực hiện từng lệnh mộtCác cờ trạng thái
•Carry
- carry or borrow at
MSB in add or subtract
- last bit shifted out
• Parity
- low byte of result has
even parity
• Auxiliary
- carry or borrow at bit 3
• Zero
- result is 0
•Sign
- result is negative
•Overflow
- signed overflow
occurred during add or
subtract(Signed) Overflow
• Can only occur when adding numbers of the
same sign (subtracting with different signs)
• Detected when carry into MSB is not equal
to carry out of MSB
- Easily detected because this implies the result
has a different sign than the sign of the
operands
• Programs can ignore the Flags!Signed Overflow Example
10010110
+ 10100011
00111001
Carry in = 0, Carry out = 1
Neg+Neg=Pos
Signed overflow occurred
OF = 1 (set)
00110110
+ 01100011
10011001
Carry in = 1, Carry out = 0
Pos+Pos=Neg
Signed overflow occurred
OF = 1 (set)Examples of No Signed
Overflow
10010110
+ 01100011
11111001
Carry in = 0, Carry out = 0
Neg+Pos=Neg
No Signed overflow occurred
OF = 0 (clear)
10010110
+ 11110011
10001001
Carry in = 1, Carry out = 1
Neg+Neg=Neg
No Signed overflow occurred
OF = 0 (clear)Unsigned Overflow
• The carry flag is used
to indicate if an
unsigned operation
overflowed
• The processor only
adds or subtracts - it
does not care if the
data is signed or
unsigned!
10010110
+ 11110011
10001001
Carry out = 1
Unsigned overflow occurred
CF = 1 (set)DEBUG's Register Display
-R
...000 SP=0010 BP=0000 SI=0000 DI=0000
...00F IP=004F NV UP DI PL NZ NA PO NC
• The state of the Flags are shown in line 2
• OV/NV: (no)oVerflow DN/UP: direction
• EI/DI: En(Dis)abled Interrupts
• NG/PL: sign ZR/NZ: (not)Zero
• AC/NA: (no)Auxiliary PE/PO: Even/Odd
• CY/NC: (no)Carry (set/clear)Arithmetic Instructions - SUB
Khuôn dạng: SUB Đích,Nguồn
- Tác dụng: (Đích) Å (Đích)-(Nguồn)
- Đích: có thể là:
1. Một thanh ghi 8 hoặc 16 bit của VXL
2. Một vị trí nhớ (1 hoặc 2 ô nhớ liên tiếp
nhau)
-Nguồn: có thể là:
1. Một thanh ghi 8 hoặc 16 bit củaVXL
2. Một vị trí nhớ (1 hoặc2 ônhớ liên tiếp
nhau)
3. Một giá trị cụ thểẢnh hưởng của SUB
-ZF = 1nếu Kết quả bằng 0
- SF = 1 nếuMSBcủa Kết quả = 1
- PF = 1 nếubytethấp của kết quả có Parity chẳn
•CF được lập nếu tràn không dấu (có mượn vào
MSB)
•OF được lập nếu tràn có dấu:
-Có mượn từ MSB, Không có mượn từ MSB
-Có mượn từ MSB, Không có mượn vào MSB
•AF được lập nếu có mượn từ nibble cao vào
nibble thấp(từ bit 4 vào bit 3)Arithmetic Instructions - CMP
Khuôn dạng: CMP Đích,Nguồn
- Tác dụng: (Đích)-(Nguồn)
- Đích: có thể là:
1. Một thanh ghi 8 hoặc 16 bit của VXL
2. Một vị trí nhớ (1 hoặc 2 ô nhớ liên tiếp
nhau)
-Nguồn: có thể là:
1. Một thanh ghi 8 hoặc 16 bit củaVXL
2. Một vị trí nhớ (1 hoặc2 ônhớ liên tiếp
nhau)
3. Một giá trị cụ thểArithmetic Instructions - INC, DEC, NEG
•INC T/h
• Trong đó: T/h có thể là các thanh ghi hoặc vị trí nhớ
• Tác dụng: (T/h) Å (T/h)+1
• DEC T/h
• Trong đó: T/h có thể là các thanh ghi hoặc vị trí nhớ
• Tác dụng: (T/h) Å (T/h)-1
•Lưu ý: Các lệnh INC và DEC không ảnh hưởng đến cờ CF
•Lệnh NEG T/h: Đảo dấu của T/h (Lấybù2)
• Lệnh NEG sẽ lập cờ OF nếu giá trị của T/h là giá trị âm
nhất trong dải giá trị của các số có dấu tương ứngNhóm lệnh Logic
•Cần chú ý đến ảnh hưởng của lệnh đối với các cờ
trạng thái
•Cáclệnh logic th/thường: NOT, AND, OR, XOR
NOT A: ~A
AND A,B: A &= B
OR A,B : A |= B
XOR A,B: A ^= B
• NOT không ảnh huởng đến các cờ trạng thái.
•Các lệnh khác:
-CF = 0
-OF = 0
-ZF = 1 nếu Kết quả bằng 0
- SF = 1 nếu MSB của Kết quả = 1
- PF = 1 nếu byte thấp của kết quả có Parity chẳn
- AF không xác địnhMột số ví dụ
1100 1010
NOT AL
AL
0011 0101 AL
AL
BL
0011 0101
0110 1101
AND AL, BL
0010 0101 AL
AL
BL
0011 0101
0110 1101
OR AL, BL
0111 1101 AL
AL
BL
0011 0101
0110 1101
XOR AL, BL
0101 1000 AL
AL
BL
0011 0101
0000 1111
AND AL, BL
0000 0101 AL
AL
BL
0011 0101
0000 1111
OR AL, BL
0011 1111 ALMột số ứng dụng
• Bài toán Xoá bit: Xoá một bit nào đó của
một toán hạng mà không làm ảnh hưởng đến
các bit còn lại của toán hạng đó
• Bài toán Kiểm tra bit: Xác định một bit nào
đó của một toán hạng là bằng 0 hay 1 (thông
qua giá trị củamộtcờ trạng thái)
• Bài toán Lập bit: Lập một bit nào đó của
một toán hạng mà không làm ảnh hưởng đến
các bit còn lại của toán hạng đóNhóm lệnh logic
•Các lệnh logic khác: Lệnh TEST, Các lệnh dịch
(Shift) và Các lệnh quay (Rotate)
•Lệnh TEST chỉ khác lệnh AND là không giữ lại
kết quả của phép toán
•Các lệnh dịch và Các lệnh quay đều có hai khuôn
dạng:
Khuôn dạng 1: Mnemonic Toán hạng,1
Khuôn dạng 2: Mnemonic Toán hạng,CL
• Tác dụng của một câu lệnh theo khuôn dang 2
giống như tác dụng liên tiếp của N câu lệnh tương
ứng theo khuôn dạng 1, với N là giá trị của thanh
ghi CL Các lệnh Dịch trái: SHL, SAL
0
Register
CFShift right SHR Shift right SHR
Register
CF
0Shift right SAR
Register CFRotate through Carry L/R
(Quay trái/phải thông qua carry)
RCL
RCRRotate left/right Rotate left/right
( (Quay Quay tr trá ái i/ /ph phả ải kh i khô ông ng qua carry qua carry) )
ROL
RORNhóm lệnh rẽ nhánh
• Làm thay đổi trật tự thực hiện lệnh bình thường
của vi xử lý
• Lệnh nhảy không điều kiện: JMP
• Các lệnh nhảy có điều kiện: Jxxx
• Lệnh lặp: LOOP và các biến thể của nó
• Các lệnh có liên quan đến Chương trình con:
-CALL (gọi chương trình con)
- RET (trở về chương trình gọi)
• Các lệnh có liên quan đến Chương trình con phục vụ ngắt
-INT (gọi chương trình con phụcvụ ngắt-Gọi ngắt)
- IRET (quay về chương trình gọi ngắt)Lệnh nhảy không điều kiện
•JMP nhãn
-Nhảy gần: E9 xx xx (3 byte)
-Nhảy ngắn: EB xx (2 byte)
-Nhảy xa: EA xx xx xx xx (5 byte)
• Nhãn: tên do ngườIlập trình tựđặt ra theo qui tắc đặt tên
của Assembler và có thể đặt vào trước một câu lệnh bất kỳ
trong chương trình cùng với dấu :
nhãn: Câu lệnh cần thực hiện
• Nhãn sẽ được dịch thành địa chỉ
• Khoảng cách nhảy: Khoảng cách đại số (có dấu) từ lệnh
nhảy đến lệnh cần thực hiệnCơ chế thực hiện lệnh nhảy
•Cáclệnh nhảyngắnvàgầnchỉ làm thay đổi
giá trị của thanh ghi IP
-Lệnh nhảyngắncộng khoảng cách nhảy 8-bit có dấu
vào giá trị hiệnthời củaIP
-Lệnh nhảygầncộng khoảng cách nhảy 16-bit có dấu
vào giá trị hiệnthời củaIP
•Lệnh nhảyxalàmthay đổi cả CS và IP
- Gán cho CS và IP các giá trị mớiMã máy của lệnh nhảy
1106:0100 EB2A JMP 012C
• 012C-0102=002A
1106:0102 EBFC JMP 0100
• 0100-0104=FFFC
1106:0104 E97F00 JMP 0186
• 0186-0106=0080 (too far for short!)
• 0186-0107=007F
1106:0107 E9F5FE JMP FFFF
• FFFF-010A=FEF5Các lệnh nhảy có điều kiện
• Jxxx nhãn
- Có gần 40 menmonic khác nhau
•Các lệnh nhảy điều kiện đơn: phụ thuộc vào giá trị
của 1 cờ.
• JNZ/JNE - Nhảy nếu cờ ZF = 0, nghĩa là kết quả
của phép toán trước đó khác không
•JC -Nhảy nếu CF = 1, nghĩa là câu lệnh trước đó
lập cờ carry
• JZ/JE
•JNCCác lệnh nhảy có điều kiện
•Tất cả các lệnh nhảy có điều kiện phải là nhảy
ngắn
- khoảng cách nhảy: -128 to +127 bytes
•Tổ hợp với lệnh nhảy không điều kiện để có thể
vượt qua giới hạn này.
•Các lệnh nhảy điều kiện kép: phụ thuộc vào giá
trị của nhiều cờ
• JB/JNAE
• JNL/JGEứng dụng của các lệnh nhảy có điều kiện
•Kết hợp vớiJMP để xây dựng các cấu trúc lập
trình cơ bản:
-Cấu trúc điều kiện
-Cấu trúc lặp
•Các lệnh nhảy thường theo sau các lệnh làm thay
đổi giá trị của các cờ trạng thái:
-CMP
- TEST ...Cấu trúc điều kiện
mov ax,n
cmp ax,7
jz nhan1
lệnh 1
jmp nhan2
nhan1:lệnh 2
nhan2:lệnh 3Cấu trúc lặp
mov ax,n
nhan1: cmp ax,0
jz nhan2
lệnhi
sub ax,2
jmp nhan1
nhan2: lệnhk Cấu trúc điều kiện - AND
char n; int w,x;
if (n>='A' && w==x)
whatever();
;if(n>='A'&&w==x)
mov ah,n
cmp ah,'A'
jl nogo
mov ax,w
cmp ax,x
jne no_go
;then-part
call whatever
nogo:Cấu trúc điều kiện-OR
char n,k; unsigned int w;
if (n<>k || w<=10)
whatever();
;if(n<>k||w<=10)
mov ah,n
cmp ah,k
jne then_
cmp w,10
ja end_if
then_:
call whatever
end_if:Lệnh LOOP
•LOOP nhan
-Giảm CX đi 1
-Nếu (CX) <> 0 thì
JMP nhan. Nếu không
thì tiếp tục thực hiện
lệnh theo trật tự bình
thường
mov cx,9
nhan: lệnh 1
lệnh 2
lệnh 3
loop nhanLOOPZ/E và LOOPNZ/E
•Các biến thể của
LOOP
• Giá trị của cờ ZF có
thể làm kết thúc sớm
vòng lặp
• Loop while ZF/equal
&& CX!=0
• Loop while (NZ/ not
equal) && CX!=0
•Lưu ý: LOOP giảm
CX nhưng không ảnh
huởng đến các cờ
• LOOPZ == LOOPE
• LOOPNZ==LOOPNE
•Cáclệnh trong vòng
lặpcóthể tác động đến
cờ ZF (CMP ?) Chương trình con
•Chương trình con trong ngôn ngữ Assembly
được gọi là Thủ tục (Procedure)
•Một thủ tục có thể được thực hiện nhiều lần
• Có liên quan đến stack:
-lưu giữ Địa chỉ quay về
-lưu giữ giá trị của các thanh ghi của vi xử
lýStack ?
•Cấutrúcdữ liệuLIFO ở RWM
- PUSH : ghi dữ liệu vào stack,
-POP: đọc dữ liệu từ stack
• (SS:SP) trỏ đến đỉnh của stack
• (SS:BP) truy cập stack ngẫu nhiên (không
theo LIFO)Stack Initialization
• The .stack directive hides an array
allocation statement that looks like this
- The_Stack DB Stack_Size dup (?)
• On program load...
- SS is set to a segment address containing this
array (usually The_Stack starts at offset 0)
- SP is set to the offset of The_Stack+Stack_Size
which is one byte past the end of the stack array
• This is the condition for an empty stackInitial Stack Configuration
.stack 12 ;Reserve space for the stack
• Loader determines actual segment address
for the start of the stack
- This is an empty stack
SP:000C SP:000C SS:0340 SS:0340
Stack Size: 000CHow Does The Stack Work?
• The stack grows backwards through
memory towards the start of the stack
• Push decrements stack pointer
Pop increments stack pointer
SP:0008 SP:0008 SS:0340 SS:0340
Stack Size: 000CPUSH
• PUSH nguồn
- Push nguồn vào stack
• PUSHF
- Push thanh ghi cờ vào stack
•Lệnh PUSH trước hết sẽ giảm SP đi2 rồi
lưu giá trị của nguồn vào vị trị nhớ được trỏ
bởi (SS:SP)Ví dụ PUSH
PUSH AX
3C 09 A4 40 2C FF A2 43 2A 09 46
SP:0008 SP:0008
07 06 4C
SS:0340 SS:0340
Stack Size: 000C
3C 09 A4 40 2C FF A2 23 2A 09 46
SP:0006 SP:0006
01 06 4C
SS:0340 SS:0340
AX: 0123 AX: 0123POP
•POP đích
- Pop dữ liệu từ đỉnh stack vào đích
•POPF
- Pop dữ liệu từ đỉnh stack vào thanh ghi cờ
•Lệnh POP trướchết copy dữ liệu đượctrỏ
bởi (SS:SP) đến đích rồi tăng SP lên 2Ví dụ POP
POP ES
3C 09 A4 40 2C FF A2 23 2A 09 46
SP:0008 SP:0008
01 06 4C
SS:0340 SS:0340
3C 09 A4 40 2C FF A2 23 2A 09 46
SP:0006 SP:0006
01 06 4C
SS:0340 SS:0340
ES: 0123 ES: 0123Tràn stack!
• Stack Overflow
• Stack Underflow
SP:000D SP:000D SS:0340 SS:0340
Stack Size: 000C
SP:FFFE SP:FFFE SS:0340 SS:0340
Stack Size: 000CThủ tục
Tên_Thủ_tục PROC kiểu
;thân của thủ tục
RET ;quay về chuơng trình gọi
Tên_Thủ_tục ENDP
• kiểu là NEAR hoặcFAR
-ngầm định là NEAR
•Một thủ tục có thể có nhiều lệnh RETLệnh CALL và RET
•Gọi một thủ tục (NEAR)
CALL Tên_Thủ_tục
- push IP vào stack
- copy địa chỉ của Tên_Thủ_tục vào IP
•Trở về từ một thủ tục(NEAR)
RET
-pop giá trị ở đỉnh stack vào IPThủ tụcFar
•Gọi thủ tục (FAR)
CALL Tên_thủ_tục
-lầnlượt push CS và IP vào stack
- copy địa chỉ của Tên_thủ_tục vào CS và IP
•Trở về từ thủ tục (FAR)
RET
-pop giá trị từ đỉnh stack lần lượt vào IP và CSGọi ngắt
•Gọi ngắt là một lời gọi thủ tục đặc biêt
-FAR
- Thanh ghi cờ phải được bảo toàn
•INT Số ngắt
- Thanh ghi cờđược push, TF và IF bị xoá
- CS và rồI IP được push
- Địachỉ củamộtchương trình con phụcvụ ngắt (Vector
ngắt) tương ứng vớiSố ngắt được copy vào CS và IP Trở về từ ngắt
•IRET
• Tác dụng của lênh:
- Giá trị ở đỉnh của stack được pop vào IP
- Giá trịở đỉnh của stack được pop vào CS
- Giá trịởđỉnh của stack được pop vào thanh ghi cờ
•Chương trình bị ngắt tiếp tục thực hiện dường như
không có chuyện gì xảy raXuất ký tự ra màn hình PC
•Ngắt21h
-Ngắt này hỗ trợ rất nhiều dịch vụ trên PC
-Nhận dạng dịch vụ bằng số dịch vụ (số hàm). Số dịch
vụ cần được nạp voà thanh ghi AH
-Tuỳ theo từng dịch vụ, có thể cần thêm một số đối số
khác được nạp vào các thanh ghi xác định
• AH = 2, DL = Mã ASCII của ký tự cần xuất
- Ký tự được hiển thị tại vị trí hiện thờI của con trỏXuất xâu ký tự ra màn hình PC
•Dịch vụ 09h của ngắt 21h
- DX = Địa chỉ Offset của xâu (trong đoạndữ liệu)
-DS = Địa chỉ segment của xâu
- Xâu ký tự phải kết thúc bằng ký tự '$'
• Để nạp địa chỉ offset của xâu vào DX, có thể:
- LEA DX, Tênxâu
- MOV DX, OFFSET Tên xâuNhập 1 ký tự từ bàn phím PC
•Dịch vụ 01h của ngắt 21h
• Khi NSD gõ một ký tự từ bàn phím:
-Ký tự sẽ hiện trên màn hình
-AL sẽ chứa mã ASCII của ký tự đó
•AL=0 nếu ký tự được nhập là ký tự điều khiểnNhóm lệnh thao tác string
• Chúng ta hiểu: string là một mảng byte hoặc
từ nằm trong bộ nhớ
• Các thao tác string:
- Sao chép
-Tìm kiếm
-Lưu trữ
- So sánhCác đặc điểm
•Nguồn: (DS:SI), Đích: (ES:DI)
- DS, ES chứa Địa chỉ Segment của string
-SI, DI chứa Địa chỉ Offset của string
•Cờ hướng DF (0 = Up, 1 = Down)
-DF = 0 -Tăng địa chỉ (trái qua phải)
-DF = 1 -Giảm địa chỉ (phảIqua trái) Chuyển (Sao chép)
•MOVSB, MOVSW
- Chuyển 1 byte hoặc 1 word từ vị trí nhớ này
sang vị trí nhớ khác
- Tác dụng của lệnh:
• Sao chép byte/word từ (DS:SI) đến(ES:DI)
•Tăng/Giảm SI và DI 1 hoặc 2 giá trị
-NếuCX chứa một giá trị khác không:
• REP MOVSB hoặc REP MOVSW sẽ tựđộng sao
chép (CX) lần và CX sẽ về không Ví dụ:Sao chép mảng
; Sao chép 10 byte từ mảng a sang mảng b, giả sử (DS) = (ES)
mov cx, 10
mov di, offset b
mov si, offset a
cld ;xoá cờ DF
rep movsbVí dụ: Tịnh tiến các ô nhớ
mov cx, 7
mov di, offset a+9
mov si, offset a+6
std ;lập cờ DF
rep movsb DI
a
SIVí dụ
pattern db "!@#*"
db 96 dup (?)
mov cx,96
mov si, offset pattern
mov di, offset pattern+4
cld
rep movsb
! @ # *
DI
a
SILưu trữ string
STOSB, STOSW
• Copy AL hoặc AX
vào một mảng byte
hoặc word
- Đích (ES:DI)
•Tăng hoặc Giảm DI
-phụ thuộcDF
•Thường được sử dụng
có tiền tố REP và số
lần lặp trong CXVí dụ:
arr dw 200 dup (?)
mov ax,50A0h
mov di,offset arr
mov cx,200
cld
rep stosw
A0 50A0 50
arr
50A0 AX
DINạp String
•LODSB, LODSW
-Byte hoặcword tại (DS:SI) được copy vào AL
hoặcAX
-SI tăng hoặc giảm1 hoặc2 giá trị phụ thuộc DF
•Thường được dùng với STOSx trong một
vòng lặp để xử lý từng phần tử trong một
mảngVí dụ:
mov di, offset b
mov si, offset a
mov cx,30
cld
lp:
lodsb
and al,0DFh
loop lpQuét String
SCASB, SCASW
• So sánh AL hoặcAX với byte hoặc word
tạI (ES:DI) và tự động tăng hoặc giảm DI
•Lệnh này ảnh hưởng đến các cờ trạng thái
-Tuỳ theo kết quả so sánh
- Dùng trong một vòng lặp REPs
• REPZ, REPE, REPNZ, REPNEVí dụ
arr db 'abcdefghijklmnopqrstuvwxyz'
mov di, offset arr
mov cx,26
cld
mov al,target
repne scasb
jne nomatchSo sánh String
CMPSB, CMPSW
• So sánh byte hoặc word tại (DS:SI) với byte
hoặc word tạI (ES:DI), tác động đến các cờ
và tăng hoặc giảm SI và DI
•Thường dùng để so sánh hai mảng với nhauVí dụ
mov si, offset str1
mov di, offset str2
cld
mov cx, 12
repe cmpsb
jl str1smaller
jg str2smaller
;the strings are equal - so far
;if sizes different, shorter string is
lessNhóm lệnh hỗn hợp
- Các lệnh Lập/Xoá trực tiếp các cờ:
STC, CLC
STD, CLD
STI, CLI
-Lệnh NOP (No Operation): Không làm
gì!!!
-Lệnh NOP thường được dùng trong các
vòng lặp tạo trễ (delay)bằng phần mềm
- Các lệnh Nhập/Xuất dữ liệu đối với
các cổng I/O
IN
OUTLệnh IN
-Nếu Địa chỉ của cổng Nhỏ hơn hoặc
bằng FFh:
IN Acc, Địa chỉ cổng
- Trong đó: Acc có thể là AL hoặc AX
-Nhập dữ liệu từ cổng vào Acc
-Nếu Địa chỉ của cổng Lớn hơn FFh:
MOV DX, Địa chỉ cổng
IN Acc, DX
- Trong đó: Acc có thể là AL hoặcAX
-Nhập dữ liệu từ cổng vào AccLệnh OUT
-Nếu Địa chỉ của cổng Nhỏ hơn hoặc
bằng FFh:
OUT Địa chỉ cổng, Acc
- Trong đó: Acc có thể là AL hoặc AX
-Xuất dữ liệu từ Acc ra cổng
-Nếu Địa chỉ của cổng Lớn hơn FFh:
MOV DX, Địa chỉ cổng
OUT DX, Acc
- Trong đó: Acc có thể là AL hoặcAX
-Xuất dữ liệu từ Acc ra cổngTóm tắt chương
- Tính tương thích về Cấu trúc thanh
ghi của các vi xử lý họ x86
- Tính tương thích về Tập lệnh của các
vi xử lý họ x86
Kỹ Kỹ thuật thuật Vi Vi xử lý xử lý
Điện tử Điện tử- -Viễn thông Viễn thông
Đại học Bách khoa Đà Nẵng Đại học Bách khoa Đà NẵngChương Chương 4 4
4.1 4.1 Phân loại bộ nhớ bán dẫn Phân loại bộ nhớ bán dẫn
4.2 4.2 Hoạt động của các Hoạt động của các chip EPROM chip EPROM
4.3 4.3 Hoạt động của các Hoạt động của các chip SRAM chip SRAM
4.4 Bus 4.4 Bus hệ thống của hệ hệ thống của hệ vi vi xử lý xử lý 8088 8088
4.5 4.5 Bài toán thiết kế bộ nhớ Bài toán thiết kế bộ nhớM Mục tiêu và biện pháp thiết kế ục tiêu và biện pháp thiết kế
Ghép nối các Ghép nối các chip chip nhớ nhớ EPROM EPROM và và SRAM SRAM
với với Bus Bus hệ thống sao cho không xảy ra hệ thống sao cho không xảy ra
xung đột xung đột: :
Các Các chip chip nhớ bị cấm khi nhớ bị cấm khi vi vi xử lý truy cập xử lý truy cập
các cổng các cổng I/O I/O
Chỉ có một Chỉ có một chip chip nhớ hoạt động khi nhớ hoạt động khi vi vi xử lý xử lý
truy cập bộ nhớ truy cập bộ nhớ
Thực hiện một mạch giải mã địa chỉ bộ Thực hiện một mạch giải mã địa chỉ bộ
nhớ dùng các nhớ dùng các chip chip giải mã hoặc các cổng giải mã hoặc các cổng
logic logic hoặc kết hợp cả hai hoặc kết hợp cả hai4.1 4.1 Phân loại bộ nhớ bán dẫn Phân loại bộ nhớ bán dẫn
Bộ nhớ bán dẫn
(Semiconductor memory)
SAM
(Sequential Access Memory)
RAM
(Random Access Memory)
ROM (Read Only Memory) RWM (Read Write memory)
PROM EPROM
EEPROM Flash ROM
SRAM DRAM4.2 4.2 Các Các chip EPROM chip EPROM
EPROM
A0
A1
A2
A3
A4
A5
A6
A7
A8
A p-1
Vpp
D0
D1
D2
D3
D4
D5
D6
Dm-1
CE
OE
PGM
pchân địa chỉ
Các chân điều khiển
m chân dữ liệu
Điều khiển đọc
ChọnchipDung Dung lượng của lượng của 1 chip 1 chip nhớ nhớ
Một Một chip chip nhớ được xem như một mảng nhớ được xem như một mảng
gồm gồm n ô n ô nhớ nhớ. . Mỗi Mỗi ô ô nhớ lưu trữ được nhớ lưu trữ được m m- -bit bit
dữ liệu dữ liệu
Dung Dung lượng của lượng của chip chip thường được biểu thường được biểu
diễn diễn: : nxm nxm
Ví dụ Ví dụ: : Một Một chip chip có có dung dung lượng lượng 2Kx8 2Kx8 nghĩa nghĩa
là là chip chip đó có đó có 2048 ô 2048 ô nhớ và mỗi nhớ và mỗi ô ô nhớ có nhớ có
thể lưu trữ được thể lưu trữ được 1 byte 1 byte dữ liệu dữ liệu
m m chính là số chân dữ liệu của chính là số chân dữ liệu của chip chip
log log2 2(n) = p (n) = p là số chân địa chỉ của là số chân địa chỉ của chip chipHoạt động ghi dữ liệu vào Hoạt động ghi dữ liệu vào EPROM EPROM
Việc ghi dữ liệu vào Việc ghi dữ liệu vào EPROM EPROM được gọi là lập được gọi là lập
trình cho trình cho EPROM EPROM
Được thực hiện bằng thiết bị chuyên dụng Được thực hiện bằng thiết bị chuyên dụng
gọi là gọi là Bộ Bộ nạp nạp EPROM EPROM
Chân Vpp được cấp điện áp tương ứng với Chân Vpp được cấp điện áp tương ứng với
từng loại từng loại chip chip gọi là điện áp lập trình gọi là điện áp lập trình
Dữ Dữ liệu tại các chân dữ liệu sẽ được ghi liệu tại các chân dữ liệu sẽ được ghi
vào một vào một ô ô nhớ xác định nhờ các tín hiệu nhớ xác định nhờ các tín hiệu
đưa vào đưa vào ở ở các chân địa chỉ và một xung các chân địa chỉ và một xung
( (thường gọi là xung lập trình thường gọi là xung lập trình) ) đưa vào đưa vào
chân chân PGM PGMHoạt động đọc dữ liệu từ một Hoạt động đọc dữ liệu từ một chip EPROM chip EPROM
Để đọc dữ liệu từ Để đọc dữ liệu từ 1 ô 1 ô nhớ nào đó của nhớ nào đó của
1 chip EPROM 1 chip EPROM nào đó nào đó, Bộ vi , Bộ vi xử lý cần xử lý cần
phải phải: :
Chọn Chọn chip chip đó đó: 0 : 0 ----- -----> CE > CE
Áp các tín hiệu địa chỉ của Áp các tín hiệu địa chỉ của ô ô nhớ cần đọc vào nhớ cần đọc vào các các
chân địa chỉ chân địa chỉ A Ap p- -1 1 - - A A0 0
Đọc Đọc: 0 : 0 ------ ------ > OE > OE
Kết quả là Kết quả là m bit m bit dữ liệu cần đọc xuất hiện dữ liệu cần đọc xuất hiện ở ở các các
chân dữ liệu chân dữ liệu D Dm m- -1 1 - - D D0 0Họ EPROM Họ EPROM thông dụng thông dụng 27x 27x
64Kx8 64Kx8 27512 27512
32Kx8 32Kx8 27256 27256
16Kx8 16Kx8 27128 27128
8Kx8 8Kx8 2764 2764
4Kx8 4Kx8 2732 2732
2Kx8 2Kx8 2716 2716
Dung Dung lượng lượng Số Số hiệu của hiệu của chip chip
Bảng 4.1 Họ EPROM 27x Sơ Sơ đồ chân đồ chân
của của 2716 2716
và và 2732 2732
1
2
3
4
5
6
7
9
10
11
12
8
19
20
17
18
15
16
13
14
21
22
23
24
GND
Vcc
A0
D0
D1
D2
D7
D6
D5
D4
D3
A10
A1
A2
A3
A4
A5
A6
A7
A9
A8
Vpp A11
2716 2732
__
OE Vpp
__
OE /
CE/PGM __
EPROM EPROM 2764 EPROM 2764
Chọnchip
Điều khiển đọc
Các chân địa chỉ
Các chân dữ liệuEPROM 2764 EPROM 2764Lập trình cho Lập trình cho 2764 2764
Tr Trước hết cần phải xoá ước hết cần phải xoá
• • Xo Xoá một á một chip chip tức là làm cho tất cả các tức là làm cho tất cả các bit = 1 bit = 1
Xo Xoá một á một chip EPROM chip EPROM bằng tia cực tím bằng tia cực tím
L Lập trình bằng cách ập trình bằng cách: :
• • VPP VPP m mắc ắc ở ở mức mức 12.5V 12.5V
• • E E v và à P P đều đều ở ở mức thấp mức thấp TTL TTL
C Các ác bit bit dữ liệu đưa vào các chân dữ liệu dữ liệu đưa vào các chân dữ liệu
C Các ác bit bit địa chỉ đưa vào các chân địa chỉ địa chỉ đưa vào các chân địa chỉ4.3 4.3 Các Các chip SRAM chip SRAM
SRAM
A0
A1
A2
A3
A4
A5
A6
A7
A8
A p-1
D0
D1
D2
D3
D4
D5
D6
Dm-1
WE
OE
CS
Pchân địa chỉ
m chân dữ liệu
Điều khiển đọc
Chọnchip
Điều khiển ghiĐọc dữ liệu từ một Đọc dữ liệu từ một chip SRAM chip SRAM
Để đọc dữ liệu từ Để đọc dữ liệu từ 1 ô 1 ô nhớ nào đó của nhớ nào đó của 1 chip 1 chip
SRAM SRAM nào đó nào đó, vi , vi xử lý cần phải xử lý cần phải: :
Chọn Chọn chip chip đó đó: 0 : 0 ----------- -----------> CS > CS
Áp các tín hiệu địa chỉ vào A Áp các tín hiệu địa chỉ vào Ap p- -1 1 - - A A0 0
Đọc Đọc: 0 : 0 ----------- ----------- > OE > OE
Kết quả là Kết quả là m bit m bit dữ liệu cần đọc xuất hiện dữ liệu cần đọc xuất hiện ở ở
các chân dữ liệu các chân dữ liệu D Dm m- -1 1 - - D D0 0Ghi dữ liệu vào một Ghi dữ liệu vào một chip SRAM chip SRAM
Để ghi Để ghi m bit m bit dữ liệu vào dữ liệu vào 1 ô 1 ô nhớ nào đó của nhớ nào đó của
1 chip SRAM 1 chip SRAM nào đó nào đó, vi , vi xử lý cần phải xử lý cần phải: :
Chọn Chọn chip chip đó đó: 0 : 0 -------- --------> CS > CS
Áp các tín hiệu địa chỉ vào A Áp các tín hiệu địa chỉ vào Ap p- -1 1 - - A A0 0
Áp Áp m bit m bit dữ liệu cần ghi vào các chân dữ dữ liệu cần ghi vào các chân dữ
liệu liệu D Dm m- -1 1 - - D D0 0
Ghi Ghi: 0 : 0 --------- --------- > WE > WE
Kết quả là các Kết quả là các bit bit dữ liệu dữ liệu ở ở các chân dữ liệu các chân dữ liệu
sẽ được ghi vào sẽ được ghi vào ô ô nhớ đã chọn nhớ đã chọnSRAM 6264 SRAM 6264
Dung Dung l lượng ượng 8Kx8 8Kx8
8 8 chân dữ liệu chân dữ liệu
13 13 chân địa chỉ chân địa chỉ
Hai chân chọn Hai chân chọn
chip chip
Chân điều khiển Chân điều khiển
đọc đọc
Chân điều khiển Chân điều khiển
ghi ghi
6264
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
CS2
I/O0
I/O1
I/O2
I/O3
I/O4
I/O5
I/O6
I/O7
CS1
OE
WE32K x 8 Static RAM 32K x 8 Static RAM
1
2
3
4
5
6
7
9
10
11
12
8
19
20
17
18
15
16 13
14
21
22
23
24
25
26
27
28
GND
Vcc
A12
A0
D0
D1
D2
A1
A2
A3
A4
A5
A6
A7
D7
D6
D5
D4
D3
A10
A9
A8
A11
51256S
CE
__
A14
OE
__
A13
WE
__Sơ Sơ đồ khối đồ khối 6264 6264Chức năng của Chức năng của 6264 62644.4 Bus 4.4 Bus hệ thống của hệ thống của 8088 8088
Bus Bus địa chỉ địa chỉ 20 20- -bit: bit: gồm các đường địa chỉ gồm các đường địa chỉ
được ký hiệu từ được ký hiệu từ A A19 19 đến đến A A0 0
Bus Bus dữ liệu dữ liệu 8 8- -bit: bit: gồm các đường dữ liệu gồm các đường dữ liệu
được ký hiệu từ được ký hiệu từ D D7 7 đến đến D D0 0
Bus Bus điều khiển gồm các đường điều khiển điều khiển gồm các đường điều khiển
riêng lẽ phục vụ cho hoạt động truy cập riêng lẽ phục vụ cho hoạt động truy cập
bộ nhớ và các cổng bộ nhớ và các cổng I/O, I/O, mỗi đường mỗi đường
thường được ký hiệu bằng tên của tín hiệu thường được ký hiệu bằng tên của tín hiệu
điều khiển điều khiển
Bus Bus hệ thống không nối trực tiếp với các hệ thống không nối trực tiếp với các
chân của chân của 8088: 8088: thông thông qua qua các mạch đệm các mạch đệm, ,
chốt chốt. .80x86 Microprocessors 80x86 Microprocessors
8,16,3 8,16,3
2 2
32 32
64 64
64 64
64T 64T
4GB 4GB
3M 3M
273 273
60 60- -
66+ 66+
BICMO BICMO
S S
1992 1992
Pent. Pent.
8,16 8,16
24 24
16 16
16 16
1G 1G
16M 16M
130K 130K
10 10- -
16? 16?
NMOS NMOS
1982 1982
8028 8028
6 6
8,16 8,16
20 20
8 8
16 16
1M 1M
133 133
29K 29K
40 40
5 5- -8 8
NMO NMO
S S
1979 1979
808 808
8 8
8,16,32 8,16,32
24,32 24,32
16,32 16,32
32 32
64T 64T
16M4GB 16M4GB
275K 275K
132 132
16 16- -40 40
CMOS CMOS
1985 1985
80386 80386
8,16,3 8,16,3
2 2
32 32
32 32
32 32
64T 64T
4GB 4GB
1.2M 1.2M
168 168
66 66
CMOS CMOS
1989 1989
80486 80486
8,16,3 8,16,3
2 2
8,16 8,16 8 8 8 8 8 8 Data Types Data Types
36 36 20 20 16 16 16 16 8 8 Address Bus Address Bus
64 64 16 16 8 8 8 8 8 8 External Data Bus External Data Bus
32 32 16 16 8 8 8 8 8 8 Internal Data Bus Internal Data Bus
64T 64T none none none none none none none none Virtual Memory Virtual Memory
64G 64G 1M 1M 64K 64K 64K 64K 16K 16K Physical Memory Physical Memory
133 133 113 113 111 111 66 66 Number of Number of
instructions instructions
5.5M 5.5M 29K 29K 6500 6500 4500 4500 3000 3000 Number of Number of
transistors transistors
387 387 40 40 40 40 40 40 18 18 Number of Pins Number of Pins
150 150 5 5- -10 10 3 3- -8 8 2 2- -3 3 0.5 0.5- -
0.8 0.8
Clock Rate Clock Rate
BICMO BICMO
S S
NMO NMO
S S
NMO NMO
S S
NMO NMO
S S
PMOS PMOS Technology Technology
1995 1995 1978 1978 1976 1976 1974 1974 1972 1972 Year Introduced Year Introduced
Pent. Pent.
Pro Pro
808 808
6 6
808 808
5 5
808 808
0 0
8008 8008 Product Product8088/8086 Microprocessor 8088/8086 Microprocessor
DIP 40 pin DIP 40 pin
Data bus Data bus
• • Bus Bus dữ dữ liệu liệu trong trong :16 bit :16 bit
• • Bus Bus dữ dữ liệu liệu ngoài ngoài của của 8088: 8 bit 8088: 8 bit dùng dùng
AD0 AD0- -AD7 AD7
• • Bus Bus dữ dữ liệu liệu ngoài ngoài của của 8086:16 bit 8086:16 bit dùng dùng
AD0 AD0- -AD15 AD15
• • ALE (Address Latch Enable) ALE (Address Latch Enable)8088/8086 Microprocessor 8088/8086 Microprocessor
Bus Bus địa chỉ địa chỉ
• • ALE = 1 ALE = 1
• • Sử Sử dụng dụng 74LS373 74LS373 để tách và chốt địa để tách và chốt địa
chỉ chỉ
Đầu Đầu vào vào: AD0 : AD0- -AD7 (8088) AD7 (8088) hoặc hoặc AD0 AD0- -AD15 AD15
(8086) (8086) và và ALE ALE
Đầu ra Đầu ra: A0 : A0- -A7 (8088) A7 (8088) hoặc hoặc A0 A0- -A15 (8086) A15 (8086)Sơ Sơ đồ chân của đồ chân của 8088 8088Sơ Sơ đồ đồ chân chân 8088/8086 8088/8086
(Min Mode) (Min Mode)Minimum/Maximum Mode Minimum/Maximum Mode
Ảnh hưởng đến các chân Ảnh hưởng đến các chân 24 24- -31 31
Minimum Mode Minimum Mode
• • Các chân Các chân 24 24- -31 31 là các tín hiệu điều khiển là các tín hiệu điều khiển I/O I/O
và bộ nhớ và bộ nhớ
• • Các tín hiệu điều khiển đều từ Các tín hiệu điều khiển đều từ 8088/8086 8088/8086
• • Tương Tương tự tự với với 8085A 8085A
Maximum Mode Maximum Mode
• • Một số tín hiệu điều khiển được tạo ra từ ngoài Một số tín hiệu điều khiển được tạo ra từ ngoài
• • Một số chân có thêm chức năng mới Một số chân có thêm chức năng mới
• • Khi Khi có có dùng dùng bộ bộ đồng đồng xử xử lý lý toán toán 8087 8087Sơ Sơ đồ chân của đồ chân của 8088 8088
8088
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
A8
A9
A10
A11
A12
A13
A14
A15
A16 / S3
A17 / S4
A18 / S5
A19 / S6
SSO
DEN
DT / R
IO / M
RD
WR
ALE
INTA
MN / MX
READY
CLK
RESET
TEST
HLDA
HOLD
NMI
INTRTín hiệu Tín hiệu ở ở các chân của các chân của 8088 8088
8088
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
A8
A9
A10
A11
A12
A13
A14
A15
A16 / S3
A17 / S4
A18 / S5
A19 / S6
SSO
DEN
DT / R
IO / M
RD
WR
ALE
INTA
MN / MX
READY
CLK
RESET
TEST
HLDA
HOLD
NMI
INTR
Các chân Địa chỉ/Dữ liệu
Cho phép chốt Địa chỉ
Các chân địa chỉ
Các chân Địa chỉ/Trạng tháiCác chân Địa chỉ Các chân Địa chỉ/Dữ /Dữ liệu liệu
Các chân Các chân AD AD7 7 đến đến AD AD0 0
Kỹ Kỹ thuật thuật Multiplexing: Multiplexing: Tín hiệu Tín hiệu ở ở các các
chân này lúc này là tín hiệu địa chỉ chân này lúc này là tín hiệu địa chỉ, ,
lúc khác là tín hiệu dữ liệu phụ thuộc lúc khác là tín hiệu dữ liệu phụ thuộc
vào tín hiệu điều khiển vào tín hiệu điều khiển ALE (Address ALE (Address
Latch Enable): Latch Enable):
ALE = 1: AD ALE = 1: AD7 7 đến đến AD AD0 0 = A = A7 7 đến đến A A0 0
ALE = 0: AD ALE = 0: AD7 7 đến đến AD AD0 0 = D = D7 7 đến đến D D0 0Các chân Địa chỉ Các chân Địa chỉ
và Các chân Địa chỉ và Các chân Địa chỉ/ /Trạng thái Trạng thái
Các chân địa chỉ Các chân địa chỉ: A : A15 15 đến đến A A8 8
Tín hiệu Tín hiệu ở ở các chân này luôn là tín các chân này luôn là tín
hiệu địa chỉ hiệu địa chỉ
Các chân địa chỉ Các chân địa chỉ/ /trạng thái trạng thái: A : A19 19/S /S6 6
đến đến A A16 16/S /S3 3: :
ALE = 1: A ALE = 1: A19 19 đến đến A A16 16
ALE = 0: S ALE = 0: S6 6 đến đến S S3 3Processor Timing Diagram of 8088 (Minimum Mode) Processor Timing Diagram of 8088 (Minimum Mode)
for Memory or I/O Read (with 74245) for Memory or I/O Read (with 74245)
ALE
T1
CLOCK
T2 T3 T4
AD7 - AD0
A15 - A8
A19/S6 - A16/S3
DT/R
__
IO/M
__
____
RD
DEN
______
A19 - A0
from 74LS373 to memory
S6 - S3 A19 - A16
A19 - A0 from 74LS373
if I/O ACCESS this is HIGH, if MEMORY ACCESS this is LOW
D7 - D0
from memory to 74LS245
D7 - D0 (from memory)
D7 - D0 from
74LS245
garbage A7 - A0
A15 - A874LS373 74LS373
74LS373
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
D0
D1
D2
D3
D4
D5
D6
D7
OE
LE74LS373 74LS373Dùng Dùng 74LS373 74LS373 để tách và chốt địa để tách và chốt địa
chỉ chỉMô tả chân Mô tả chân - - Min Min
DEN DEN
Data Enable Data Enable
Dữ Dữ liệu có nghĩa liệu có nghĩaMô tả chân Mô tả chân - - Min Min
DT/R DT/R
Điều khiển hướng của Điều khiển hướng của
tín hiệu dữ liệu tín hiệu dữ liệu: :
1: 1: Tín hiệu dữ liệu đi Tín hiệu dữ liệu đi
ra từ ra từ 8088 8088
0: 0: Tín hiệu dữ liệu đi Tín hiệu dữ liệu đi
vào vào 8088 8088Mô tả chân Mô tả chân - - Min Min
IO/M IO/M
Phân biệt Phân biệt: : truy cập truy cập
I/O hay Bộ I/O hay Bộ nhớ nhớ
• • 1: 8088 1: 8088 truy cập truy cập
I/O I/O
• • 0: 8088 0: 8088 truy cập bộ truy cập bộ
nhớ nhớ Mô tả chân Mô tả chân - - Min Min
WR WR
0: 0: Tín hiệu trên Tín hiệu trên bus bus
dữ liệu được ghi vào dữ liệu được ghi vào
bộ nhớ hoặc bộ nhớ hoặc I/O I/O
Ghi bộ nhớ Ghi bộ nhớ: ? : ?
Xuất dữ liệu ra cổng Xuất dữ liệu ra cổng: :
? ?Mô tả chân Mô tả chân - - Min Min
HLDA HLDA
Hold Acknowledge Hold Acknowledge
0: 0: Chấp nhận yêu cầu Chấp nhận yêu cầu
DMA ở HOLD DMA ở HOLD
• • Báo cho Báo cho Bộ Bộ điều khiển điều khiển
DMA DMA được phép sử được phép sử
dụng dụng bus bus hệ thống hệ thốngMô tả chân Mô tả chân - - Min Min
HOLD HOLD
Nhận Nhận tín tín hiệu hiệu yêu yêu cầu cầu
DMA DMA từ từ Bộ Bộ điều khiển điều khiển
DMA (DMAC) DMA (DMAC)
DMAC DMAC muốn sử dụng muốn sử dụng
bus bus hệ thống hệ thốngMô tả chân Mô tả chân - - Min Min
SSO SSO
8088 8088
Dùng với Dùng với IO/M IO/M và và
DT/R DT/R để xác định để xác định
trạng thái của chu kỳ trạng thái của chu kỳ
bus bus hiện thời hiện thờiCác tín hiệu điều khiển Các tín hiệu điều khiển
Có thể sử dụng các cổng Có thể sử dụng các cổng logic logic để tạo để tạo
ra các tín hiệu điều khiển khác từ các ra các tín hiệu điều khiển khác từ các
tín hiệu điều khiển sẵn có tín hiệu điều khiển sẵn có
• • 3 3 Tín hiệu Tín hiệu: :
RD, WR and IO/M RD, WR and IO/M
Never Never
happens happens
X X 0 0 0 0
IOW IOW 1 1 0 0 1 1
IOR IOR 1 1 1 1 0 0
MEMW MEMW 0 0 0 0 1 1
MEMR MEMR 0 0 1 1 0 0
Signal Signal IO/M IO/M W W
R R
RD RDTạo Tạo ra các ra các tín hiêụ điều tín hiêụ điều khiển khiển
(Min Mode) (Min Mode)Tạo ra các tín hiêụ điều khiển Tạo ra các tín hiêụ điều khiển
(Min Mode) (Min Mode)8088 Bus 8088 Bus - - Min Mode Min Mode74LS245 74LS245
74LS245
B0
B1
B2
B3
B4
B5
B6
B7
A0
A1
A2
A3
A4
A5
A6
A7
EDIRBus Bus hệ thống của hệ hệ thống của hệ 8088 ở Mode Minimum 8088 ở Mode Minimum
MEMORY
D7 - D0 Q7 - Q0
OE
LE 74LS373
D7 - D0 Q7 - Q0
OE
LE 74LS373 8088
AD7 - AD0
A15 - A8
A19/S6 - A16/
S3
DEN
DT / R
IO / M
RD
WR
ALE
D7 - D4 Q7 - Q4
OE
LE 74LS373
D3 - D0 Q3 - Q0
GND
GND
GND
D7 - D0 A7 - A0 B7 - B0
E
DIR 74LS245
A7 - A0
A15 - A8
A19 - A16
RD
WR
MEMR
MEMW
Bus địa chỉ
Bus dữ liệuMinimum Mode 8088 Minimum Mode 8088
MEMORY
D7 - D0
A19 - A0
RD
WR
8088 Minimum
Mode
D7 - D0
A19 - A0
MEMR
MEMW
Bộ nhớđượcchọn khi nào?Minimum Mode Minimum Mode
8088 8088
MEMORY
D7 - D0
A19 - A0
RD
WR
8088 Minimum
Mode
D7 - D0
A19 - A0
MEMR
MEMW CS
220 ô nhớ (1MB)Không gian địa chỉ bộ nhớ Không gian địa chỉ bộ nhớ 1M 1M
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00000 00000
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 FFFFF FFFFF
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)
Ví dụ: Một địachỉ bấtkỳ 34FD0h
0011 0100 11111 1101 0000Bộ Bộ nhớ nhớ đầy đầy đủ đủ 1MB 1MB
23 00000
00001
10000
10001
10002
10003
10004
10005
10006
10007
10008
95
:
:
45
98
27
39
42
88
07
F4
8A
:
:
20020
20021
20022
20023
FFFFD
FFFFE
FFFFF
29
12
7D
13
19
25
36
:
:
:
:
:
:
:
: A19
A0
:
D7
D0
:
RD
WR
A19
A0
:
D7
D0
:
MEMR
MEMW
XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
2000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
CSNếu chỉ cần bộ nhớ có Nếu chỉ cần bộ nhớ có
dung dung lượng nhỏ hơn lượng nhỏ hơn 1MB 1MB
thì giải quyết như thế nào thì giải quyết như thế nào? ?
Phụ thuộc vào các Phụ thuộc vào các chip chip nhớ sẵn có nhớ sẵn có
Phụ thuộc yêu cầu phân bố địa chỉ Phụ thuộc yêu cầu phân bố địa chỉ
cho các loại bộ nhớ vật lý khác nhau cho các loại bộ nhớ vật lý khác nhau
... ...512K 512K đầu tiên của không gian địa chỉ bộ nhớ đầu tiên của không gian địa chỉ bộ nhớ
( (Các Các địa địa chỉ chỉ có có bit bit cao cao nhất nhất A19 = 0) A19 = 0)
0000 0000 0000 0000 0000 0000 0000 0000 0 0000 000 00000 00000
1111 1111 1111 1111 1111 1111 1111 1111 0 0111 111 7FFFF 7FFFF
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
A AAAA AAA
1 1111 111
9 9876 876
A18 A18
đến đến
A0 A0
(HEX) (HEX)512K 512K tiếp theo của không gian địa chỉ bộ nhớ tiếp theo của không gian địa chỉ bộ nhớ
( (Các Các địa địa chỉ chỉ có có bit bit cao cao nhất nhất A19 = 1) A19 = 1)
0000 0000 0000 0000 0000 0000 0000 0000 1 1000 000 80000 80000
1111 1111 1111 1111 1111 1111 1111 1111 1 1111 111 FFFFF FFFFF
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
A AAAA AAA
1 1111 111
9 9876 876
A18 A18
đến đến
A0 A0
(HEX) (HEX)Bộ Bộ nhớ nhớ 512KB 512KB
A18
A0
:
D7
D0
:
MEMR
MEMW XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
2000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
23 00000
00001 95
:
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
29
12
7D
13
19
25
36
:
:
:
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
A19
Làm gì vớiA19?Điều Điều gì gì xảy xảy ra ra nếu nếu 8088 8088 đọc đọc ô ô nhớ nhớ A0023h? A0023h?
A18
A0
:
D7
D0
:
MEMR
MEMW XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
A000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
23 00000
00001 95
:
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
29
12
7D
13
19
25
36
:
:
:
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
A19
MOV AH, [BX]Điều gì xảy ra nếu Điều gì xảy ra nếu 8088 8088 đọc đọc ô ô nhớ nhớ A0023h? A0023h?
0011 0011 0010 0010 0000 0000 0000 0000 1 1010 010 A0023 A0023
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
A AAAA AAA
1 1111 111
9 9876 876
A19 A19
đến đến
A0 A0
(HEX) (HEX)
A19 không đượcnối đếnbộ nhớ nên
nếu 8088 phát logic "1" trên A19 thì
bộ nhớ cũng không nhậnbiết được.Điều gì xảy ra nếu Điều gì xảy ra nếu 8088 8088 đọc đọc ô ô nhớ nhớ 20023h? 20023h?
0011 0011 0010 0010 0000 0000 0000 0000 0 0010 010 20023 20023
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
A AAAA AAA
1 1111 111
9 9876 876
A18 A18
đến đến
A0 A0
(HEX) (HEX)
Với bộ nhớ tình hình không có gì khác!Nếu Nếu Bộ Bộ nhớ nhớ gồm gồm 2 2 khối khối 512KB 512KB như thế này như thế này? ?
A18
A0
:
D7
D0
:
MEMR
MEMW
XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
2000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
A19
23 00000
00001 95
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
29
12
7D
13
19
25
36
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
97 00000
00001 D4
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
A3
92
45
33
2C
98
12
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CSCó vấn đề Có vấn đề !!! !!!
Vấn Vấn đề đề là là: : Xung Xung đột đột Bus. Bus. Hai Hai khối khối
nhớ nhớ sẽ sẽ cung cung cấp cấp dữ dữ liệu liệu cùng cùng một một lúc lúc
khi khi 8088 8088 đọc đọc bộ bộ nhớ nhớ
Giải pháp Giải pháp: : Dùng Dùng A19 A19 làm làm " "người người
phân xử phân xử" " để để giải quyết giải quyết xung xung đột đột trên trên
bus. bus. Nếu Nếu A19 ở A19 ở mức mức logic "1" logic "1" thì thì
khối nhớ trên hoạt động khối nhớ trên hoạt động ( (khối nhớ khối nhớ
dưới bị dưới bị cấm cấm) ) và ngược lại và ngược lạiBộ Bộ nhớ gồm hai khối nhớ nhớ gồm hai khối nhớ 512KB 512KB
A18
A0
:
D7
D0
:
MEMR
MEMW
XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
2000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
A19
23 00000
00001 95
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
29
12
7D
13
19
25
36
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
97 00000
00001 D4
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
A3
92
45
33
2C
98
12
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CSKhông gian địa chỉ bộ nhớ Không gian địa chỉ bộ nhớ 1M 1M
1111 1111 1111 1111 1111 1111 1111 1111 0111 0111 7FFFF 7FFFF
0000 0000 0000 0000 0000 0000 0000 0000 1000 1000 80000 80000
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 FFFFF FFFFF
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00000 00000
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)A18
A0
:
D7
D0
:
MEMR
MEMW
XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
2000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
A19
23 00000
00001 95
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
29
12
7D
13
19
25
36
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
97 00000
00001 D4
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
A3
92
45
33
2C
98
12
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
Bộ Bộ nhớ gồm hai khối nhớ nhớ gồm hai khối nhớ 512KB 512KB
Khi µP xuất một địa
chỉ từ 80000h to
FFFFFh, Bộ nhớ này
hoạt động
Khi µP xuất một địa
chỉ từ 00000h đến
7FFFFh, Bộ nhớ này
hoạt độngBộ Bộ nhớ gồm hai khối nhớ nhớ gồm hai khối nhớ 512KB 512KB
A18
A0
:
D7
D0
:
MEMR
MEMW
XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
2000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
A19
23 00000
00001 95
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
29
12
7D
13
19
25
36
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
97 00000
00001 D4
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
A3
92
45
33
2C
98
12
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CSThiết kế Thiết kế Bộ Bộ nhớ cho nhớ cho Hệ vi Hệ vi xử lý xử lý
A18
A0
:
D7
D0
:
MEMR
MEMW
XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
2000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
A19
23 00000
00001 95
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
29
12
7D
13
19
25
36
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
97 00000
00001 D4
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
A3
92
45
33
2C
98
12
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
A18
A0
:
D7
D0
:
RD
WR
A19
Ghép nối các chip nhớ
riêng lẽ với Bus hệ
thống sao cho không
xảy ra xung đột nhờ
mạch giải mã địa chỉ
bộ nhớA18
A0
:
D7
D0
:
MEMR
MEMW
XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
2000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
A19
23 00000
00001 95
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
29
12
7D
13
19
25
36
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
97 00000
00001 D4
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
A3
92
45
33
2C
98
12
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
Nếu Nếu bỏ bỏ đi đi khối nhớ khối nhớ bên bên dưới dưới? ?Nếu bỏ đi khối nhớ bên dưới thì Nếu bỏ đi khối nhớ bên dưới thì ... ...
A18
A0
:
D7
D0
:
MEMR
MEMW
XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
2000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
A19
23 00000
00001 95
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
29
12
7D
13
19
25
36
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS Khi µP xuất ra một
địa chỉ từ 80000h
đến FFFFFh, Chip
nhớ này hoạt động
Khi µP xuất ra một
dịa chỉ từ 00000h
đến 7FFFFh, Không
có chip nhớ nào hoạt
động!
!Giải mã đầy đủ và không đầy đủ Giải mã đầy đủ và không đầy đủ
Giải mã Giải mã đầy đầy đủ đủ (Full Decoding) (Full Decoding)
• • Tất cả các đường địa chỉ có nghĩa đều được sử Tất cả các đường địa chỉ có nghĩa đều được sử
dụng vào mạch giải mã dụng vào mạch giải mã
• • Mỗi Mỗi ô ô nhớ chỉ có một địa chỉ vật lý duy nhất nhớ chỉ có một địa chỉ vật lý duy nhất
Giải mã Giải mã không không đầy đầy đủ đủ (Partial Decoding) (Partial Decoding)
• • Không phải tất cả các đường địa chỉ có nghĩa Không phải tất cả các đường địa chỉ có nghĩa
đều được sử dụng vào mạch giải mã đều được sử dụng vào mạch giải mã
• • Một Một ô ô nhớ có hơn một địa chỉ vật lý nhớ có hơn một địa chỉ vật lýGiải mã đầy đủ Giải mã đầy đủ
A18
A0
:
D7
D0
:
MEMR
MEMW
XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
2000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
A19
23 00000
00001 95
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
29
12
7D
13
19
25
36
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CSGiải mã đầy đủ Giải mã đầy đủ
0000 0000 0000 0000 0000 0000 0000 0000 1000 1000 80000 80000
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 FFFFF FFFFF
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)
A19 phải ở mức "1" thì chip nhớ mới
hoạt động (đượcchọn)Giải mã đầy đủ Giải mã đầy đủ
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00000 00000
1111 1111 1111 1111 1111 1111 1111 1111 0111 0111 7FFFF 7FFFF
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)
Do đó, nếuvi xử lý phát ra một địachỉ
từ 00000h đến 7FFFFh (A19 ở mức
logic "0") chip nhớ sẽ không được
chọn.Giải mã không đầy đủ Giải mã không đầy đủ
A18
A0
:
D7
D0
:
MEMR
MEMW XXXX
BP
ES
DS
SS
CX
BX
AX
XXXX
XXXX
XXXX
2000
0000
0023
3F1C
FCA1
SP
DX
XXXX
CS
SI
XXXX
XXXX IP
XXXX DI
23 00000
00001 95
:
:
20020
20021
20022
20023
7FFFD
7FFFE
7FFFF
29
12
7D
13
19
25
36
:
:
:
:
:
:
A18
A0
:
D7
D0
:
RD
WR
CS
A19Giải mã không đầy đủ Giải mã không đầy đủ
0000 0000 0000 0000 0000 0000 0000 0000 1000 1000 80000 80000
1111 1111 1111 1111 1111 1111 1111 1111 0111 0111 7FFFF 7FFFF
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00000 00000
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 FFFFF FFFFF
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)
A19 không có ý nghĩa với chip nhớGiải mã không đầy đủ Giải mã không đầy đủ
0000 0000 0000 0000 0000 0000 0000 0000 1000 1000 80000 80000
1111 1111 1111 1111 1111 1111 1111 1111 0111 0111 7FFFF 7FFFF
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00000 00000
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 FFFFF FFFFF
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)
Địa chỉ thực tếGiải mã không đầy đủ Giải mã không đầy đủ
0000 0000 0000 0000 0000 0000 0000 0000 1000 1000 80000 80000
1111 1111 1111 1111 1111 1111 1111 1111 0111 0111 7FFFF 7FFFF
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00000 00000
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 FFFFF FFFFF
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)
Địa chỉ thực tếBộ Bộ nhớ gồm nhớ gồm 2 chip 512Kx8 2 chip 512Kx8
8088
Minimum
Mode
A18
A0
:
D7
D0
:
MEMR
MEMW
A19
512KB
#2
A18
A0
:
D7
D0
:
RD
WR
CS
512KB
#1
A18
A0
:
D7
D0
:
RD
WR
CSBộ Bộ nhớ chỉ có một nhớ chỉ có một chip 512Kx8 ( chip 512Kx8 (Ver Ver. 1) . 1)
8088
Minimum
Mode
A18
A0
:
D7
D0
:
MEMR
MEMW
A19
512KB
A18
A0
:
D7
D0
:
RD
WR
CSBộ Bộ nhớ chỉ có một nhớ chỉ có một chip 512Kx8 ( chip 512Kx8 (Ver Ver. 2) . 2)
8088
Minimum
Mode
A18
A0
:
D7
D0
:
MEMR
MEMW
A19
512KB
A18
A0
:
D7
D0
:
RD
WR
CSBộ Bộ nhớ chỉ có một nhớ chỉ có một chip 512Kx8 ( chip 512Kx8 (Ver Ver. 3) . 3)
8088
Minimum
Mode
A18
A0
:
D7
D0
:
MEMR
MEMW
A19
512KB
A18
A0
:
D7
D0
:
RD
WR
CSBộ Bộ nhớ gồm nhớ gồm 4 chip 256Kx8 4 chip 256Kx8
8088
Minimum
Mode
A17
A0
:
D7
D0
:
MEMR
MEMW
A18
256KB
#3
A17
A0
:
D7
D0
:
RD
WR
CS
A19
256KB
#2
A17
A0
:
D7
D0
:
RD
WR
CS
256KB
#1
A17
A0
:
D7
D0
:
RD
WR
CS
256KB
#4
A17
A0
:
D7
D0
:
RD
WR
CSBộ Bộ nhớ gồm nhớ gồm 4 chip 256Kx8 4 chip 256Kx8
8088
Minimum
Mode
A17
A0
:
D7
D0
:
MEMR
MEMW
A18
256KB
#3
A17
A0
:
D7
D0
:
RD
WR
CS
A19
256KB
#2
A17
A0
:
D7
D0
:
RD
WR
CS
256KB
#1
A17
A0
:
D7
D0
:
RD
WR
CS
256KB
#4
A17
A0
:
D7
D0
:
RD
WR
CSDải địa Dải địa chỉ chỉ của của chip #1 chip #1
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- -----
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- -----
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)Dải địa Dải địa chỉ chỉ của của chip #2 chip #2
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- -----
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- -----
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)Dải địa Dải địa chỉ chỉ của của chip #3 chip #3
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- -----
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- -----
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)Dải địa Dải địa chỉ chỉ của của chip #4 chip #4
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- -----
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- -----
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)Bộ Bộ nhớ gồm nhớ gồm 4 chip 256Kx8 4 chip 256Kx8
dùng các cổng dùng các cổng logic logic
8088
Minimum
Mode
A17
A0
:
D7
D0
:
MEMR
MEMW
A18
256KB
#3
A17
A0
:
D7
D0
:
RD
WR
CS
A19
256KB
#2
A17
A0
:
D7
D0
:
RD
WR
CS
256KB
#1
A17
A0
:
D7
D0
:
RD
WR
CS
256KB
#4
A17
A0
:
D7
D0
:
RD
WR
CSBộ Bộ nhớ gồm nhớ gồm 4 chip 256Kx8 4 chip 256Kx8
dùng các cổng dùng các cổng logic logic
8088
Minimum
Mode
A17
A0
:
D7
D0
:
MEMR
MEMW
A18
256KB
#3
A17
A0
:
D7
D0
:
RD
WR
CS
A19
256KB
#2
A17
A0
:
D7
D0
:
RD
WR
CS
256KB
#1
A17
A0
:
D7
D0
:
RD
WR
CS
256KB
#4
A17
A0
:
D7
D0
:
RD
WR
CSBộ Bộ nhớ gồm nhớ gồm 4 chip 256Kx8 4 chip 256Kx8
dùng một dùng một chip chip giải mã giải mã 2 2- -4 4
8088
Minimum
Mode
A17
A0
:
D7
D0
:
MEMR
MEMW
A18
256KB
#3
A17
A0
:
D7
D0
:
RD
WR
CS
A19
256KB
#2
A17
A0
:
D7
D0
:
RD
WR
CS
256KB
#1
A17
A0
:
D7
D0
:
RD
WR
CS
256KB
#4
A17
A0
:
D7
D0
:
RD
WR
CS
I1
I0
O3
O2
O1
O0Ghép nối Ghép nối các các chip chip
nhớ nhớ 8Kx8 8Kx8 với với µ µP P
8088 8088
8088
Minimum
Mode
A12
A0
:
D7
D0
:
MEMR
MEMW
A13
A14
8KB
#2
A12
A0
:
D7
D0
:
RD
WR
CS
8KB
#1
A12
A0
:
D7
D0
:
RD
WR
CS
8KB
#?
A12
A0
:
D7
D0
:
RD
WR
CS
A15
A16
A17
A18
A19
:
:8088
Minimum
Mode
A12
A0
:
D7
D0
:
MEMR
MEMW
A13
A14
8KB
#2
A12
A0
:
D7
D0
:
RD
WR
CS
8KB
#1
A12
A0
:
D7
D0
:
RD
WR
CS
8KB
#128
A12
A0
:
D7
D0
:
RD
WR
CS
A15
A16
A17
A18
A19
:
:
Bộ Bộ nhớ gồm nhớ gồm 128 128
chip 8Kx8 chip 8Kx88088
Minimum
Mode
A12
A0
:
D7
D0
:
MEMR
MEMW
A13
A14
8KB
#2
A12
A0
:
D7
D0
:
RD
WR
CS
8KB
#1
A12
A0
:
D7
D0
:
RD
WR
CS
8KB
#128
A12
A0
:
D7
D0
:
RD
WR
CS
A15
A16
A17
A18
A19
:
:
Bộ Bộ nhớ gồm nhớ gồm 128 128
chip 8Kx8 chip 8Kx8Dải địa Dải địa chỉ chỉ của của Chip #__ Chip #__
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- -----
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----- -----
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)8088
Minimum
Mode
A12
A0
:
D7
D0
:
MEMR
MEMW
A13
A14
8KB
#2
A12
A0
:
D7
D0
:
RD
WR
CS
8KB
#1
A12
A0
:
D7
D0
:
RD
WR
CS
8KB
#128
A12
A0
:
D7
D0
:
RD
WR
CS
A15
A16
A17
A18
A19
:
:
Bộ Bộ nhớ gồm nhớ gồm 128 128
chip 8Kx8 chip 8Kx8Phát biểu bài toán Phát biểu bài toán
Thiết kế bộ nhớ cho hệ Thiết kế bộ nhớ cho hệ vi vi xử lý xử lý 8088 8088 thoả thoả
mãn các yêu cầu mãn các yêu cầu: :
ROM ROM có có dung dung lượng lượng 2Kx8 2Kx8 chiếm dụng các chiếm dụng các
địa chỉ từ FFFFFh trở xuống địa chỉ từ FFFFFh trở xuống
RWM RWM có có dung dung lượng lượng 2Kx8 2Kx8 chiếm dụng các chiếm dụng các
địa chỉ tiếp theo ngay sau địa chỉ tiếp theo ngay sau ROM ROM
Chỉ được phép sử dụng Chỉ được phép sử dụng: :
EPROM 2716 2Kx8, SRAM 4016 2Kx8 EPROM 2716 2Kx8, SRAM 4016 2Kx8
Chip Chip giải mã giải mã 74LS138 74LS138 và các cổng và các cổng logic logicBước Bước 1: Vẽ 1: Vẽ bản đồ bộ nhớ cần thiết kế bản đồ bộ nhớ cần thiết kế
FFFFFh
00000h
FF800h
FF000h
FF7FFh
ROM
RWM
Chưa sử dụng
2K
2K
Các Địa chỉ
biênBước Bước 2: 2: Chuyển các địa chỉ biên từ Chuyển các địa chỉ biên từ H sang B H sang B
0000 0000 0000 0000 1 1000 000 1111 1111 1111 1111 FF800 FF800
1111 1111 1111 1111 1 1111 111 1111 1111 1111 1111 FFFFF FFFFF
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)Bước Bước 2: 2: Chuyển các địa chỉ biên từ Chuyển các địa chỉ biên từ H sang B H sang B
0000 0000 0000 0000 0 0000 000 1111 1111 1111 1111 FF000 FF000
1111 1111 1111 1111 0 0111 111 1111 1111 1111 1111 FF7FF FF7FF
AAAA AAAA
3210 3210
AAAA AAAA
7654 7654
AAAA AAAA
1198 1198
10 1000 00
AAAA AAAA
1111 1111
5432 5432
AAAA AAAA
1111 1111
9876 9876
A19 A19
đến đến
A0 A0
(HEX) (HEX)Nhận xét Nhận xét
Khi các địa chỉ dành cho Khi các địa chỉ dành cho ROM ROM được được
phát lên phát lên A A- -Bus: A19 Bus: A19 - - A12 = 1 A12 = 1 và và
A11 = 1 A11 = 1
Khi các địa chỉ dành cho Khi các địa chỉ dành cho RWM RWM được được
phát lên phát lên A A- -Bus: A19 Bus: A19 - - A12 = 1 A12 = 1 và và
A11 = 0 A11 = 0Bước Bước 3: Vẽ 3: Vẽ mạch giải mã địa mạch giải mã địa
chỉ bộ nhớ chỉ bộ nhớ
Ghép các chân dữ liệu của các Ghép các chân dữ liệu của các chip chip
nhớ với nhớ với D D- -Bus Bus
Ghép các chân địa chỉ và các chân Ghép các chân địa chỉ và các chân
điều khiển điều khiển: :
Khi Khi vi vi xử lý truy cập các cổng xử lý truy cập các cổng I/O I/O thì thì
các các chip chip nhớ bị cấm nhớ bị cấm ( (Khi Khi IO/M = 1) IO/M = 1)
Khi Khi vi vi xử lý truy cập bộ nhớ xử lý truy cập bộ nhớ (IO/M = (IO/M =
0) 0) thì chỉ có một thì chỉ có một chip chip nhớ làm việc nhớ làm việc
Có thể có nhiều lời giải khác nhau Có thể có nhiều lời giải khác nhau74LS138: 74LS138: Một Một chip chip giải mã giải mã 3 3- -8 8
74LS138
C
B
A
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
G1
G2A
G2B
74LS138
A2
A1
A0
E3
E2
E1
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
U1
74LS138Bộ Bộ nhớ cần thiết kế nhớ cần thiết kế
8088
Minimum
Mode
A17
A0
:
D7
D0
:
MEMR
MEMW
A18
A19
2Kx8
4016
A10
A0
:
D7
D0
:
OE
WE
CS
2Kx8
2716
A10
A0
:
D7
D0
:
OE
CE
74LS138
C
B
A
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
G1
G2A
G2B
Bài giảng Kỹ thuậtVi xử lý
Ngành Điện tử-Viễn thông
Đại học Bách khoa Đà Nẵng
của Hồ Viết Việt, Khoa ĐTVT
Tài liệu tham khảo
[1] Kỹ thuật vi xử lý, Văn Thế Minh, NXB Giáo dục, 1997
[2] Kỹ thuật vi xử lý và Lập trình Assembly cho hệ vi xử
lý, Đỗ Xuân Tiến, NXB Khoa học & kỹ thuật, 2001Chương 5
Thiết kế các cổng I/O
5.1 I/O được phân vùng nhớ và I/O tách biệt
- I/O được phân vùng nhớ (Memory Mapped I/O)
- I/O tách biệt (Isolated I/O)
5.2 Các chip MSI dùng làm cổng I/O
-Cổng ra
-Cổng vào
5.3 Chip 8255
-Sơ đồ chân, Sơ đồ khối chức năng
- Các mode hoạt động
-Giải mã địa chỉ
-Lập trình cho 82555.1 Cần phân biệt2kiểu thiết kế
•I/O được phân vùng nhớ (Memory mapped I/O):
-1cổng được xem như mộtônhớ
-1cổng có địa chỉ 20-bit
- được truy cập khi IO/M = 0
- không cần mạch giải mã địa chỉ riêng
• I/O tách biệt (isolated I/O)
-1cổng được xem đúng là 1 cổng
- 1cổng có địa chỉ 16-bit, 12-bit, 8-bit
- được truy cập khi IO/M = 1
-cần mạch giải mã địa chỉ I/O riêng5.2 Các chip MSI thường dùng làm cổng I/O
• 74LS373
• 74LS374
• 74LS244
• 74LS245
• Khi số lượng cổng ít và cố định
• Cách mắc mạch sẽ quyết định cho chip là
cổng ra hay cổng vào và địa chỉ của nóSử dụng 74LS245 làm cổng ra
:
mov al, 55
mov dx, F000
out dx, al
:
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
74LS245
B0
B1
B2
B3
B4
B5
B6
B7
A0
A1
A2
A3
A4
A5
A6
A7
EDIR 5V
A
1
5
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOWSử dụng 74LS373 làm cổng ra
:
mov al, 55
mov dx, F000
out dx, al
:
A
1
5
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOW
74LS373
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
D0
D1
D2
D3
D4
D5
D6
D7
OE LESử dụng 74LS245 làm cổng vào
:
mov dx, F000
in al, dx
: A
1
5
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOR
5V
74LS245
B0
B1
B2
B3
B4
B5
B6
B7
A0
A1
A2
A3
A4
A5
A6
A7
EDIRCổng raCổng vào5.3 Chip LSI thường dùng làm cổng I/O
• PPI 8255
• Khi số lượng cổng I/O nhiều và không cố
định
• Cách mắc mạch sẽ quyết định địa chỉ cho
các cổng còn vai trò của cổng sẽ được
quyết định bởi phần mềm8255 PPISơ đồ khối chức năng của 8255Các mode làm việc
• Mode 0
- PA, PB, PCH (CU) và PCL (CL)
-Có thể là Input hoặcOutput
-Việc Nhập hoặc Xuất dữ liệu là độc lập
• Mode 1
- PA, PB
-Có thể là Input hoặcOutput
-Việc Nhập hoặc Xuất dữ liệu là phụ thuộc vào một số
bít của PC (các tín hiệu handshaking)
• Mode 2
-PA
-PAvừa là Input vừa là Output
-Việc Nhập/Xuất dữ liệu vớiPAlà phụ thuộc vào một số
bít của PC (các tín hiệu handshaking)Nhóm làm việc
• Nhóm A: PA và PCH
• Nhóm B: PB và PCL
• Định cấu hình làm việc cho 1 chip 8255:
Gửi1 Từđiều khiển định cấu hình đến
thanh ghi điều khiển của chip đó
•Lập/xoá một bit củaPC:Gửi1 Từđiều
khiển Lập/Xoá bit đến thanh ghi điều khiển
của chip đóTừ điều khiển định cấu hình làm việc cho một chip 8255Từ điều khiển lập/xoá bit cho một chip 8255The 8255 Programmable Peripheral Interface
• Intel has developed several peripheral controller chips designed to support the 80x86
processor family. The intent is to provide a complete I/O interface in one chip.
• 8255 PPI provides three 8 bit input ports in one 40 pin package making it more
economical than 74LS373 and 74LS244
• The chip interfaces directly to the data bus of the processor, allowing its functions to be
programmed; that is in one application a port may appear as an output, but in another,
by reprogramming it as an input. This is in contrast with the 74LS373 and 74LS244
which are hard wired and fixed.
8255 Pins
• PA0 - PA7: input, output, or bidirectional port
• PB0 - PB7: input or output
• PC0 - PC7: This 8 bit port can be all input or output. It can also be split into two parts,
CU (PC4 - PC7) and CL (PC0 - PC3). Each can be used for input and output.
• RD or WR
- IOR and IOW of the system are connected to these two pins
• RESET
• A0, A1, and CS
- CS selects the entire chip whereas A0 and A1 select the specific port (A, B, or C) or
Control Register.Giải mã địa chỉ cho 8255Mode 0 - Simple input/output
• Simple I/O mode: any of the ports A, B, CL, and CU can be programmed as input or
output.
• Example: Configure port A as input, B as output, and all the bits of port C as output
assuming a base address of 50h
• Control word should be 1001 0000b = 90h
MOV AL, 90h
OUT 53h,AL
IN AL, 50h
OUT 51h, AL
OUT 52h, AL
Mode 1: I/O with Handshaking Capability
• Handshaking refers to the process of communicating back and forth between two
intelligent devices
• Example. Process of communicating with a printer
- a byte of data is presented to the data bus of the printer
- the printer is informed of the presence of a byte of data to be printed by
activating its strobe signal
- whenever the printer receives the data it informs the sender by
activating an output signal called ACK
- the ACK signal initiates the process of providing another byte of data to
the printer
• 8255 in mode 1 is equipped with resources to handle handshaking
signalsMode 1 Strobed Output Signals
• OBFa (output buffer full for port A)
- indicates that the CPU has written a byte of data into port A
- must be connected to the STROBE of the receiving equipment
• ACKa (acknowledge for port A)
- through ACK, 8255 knows that data at port A has been picked up by the receiving
device
- 8255 then makes OBFa high to indicate that the data is old now. OBFa will not go low
until the CPU writes a new byte of data to port A.
• INTRa (interrupt request for port A)
- it is the rising edge of ACK that activates INTRa by making it high. INTRa is used to
get the attention of the microprocessor.
- it is important that INTRa is high only if INTEa, OBFa, ACKa are all high
- it is reset to zero when the CPU writes a byte to port AMode 1 Input Ports with Handshaking Signals
• STB
- When an external peripheral device provides a byte of data to an input port, it informs
the 8255 through the STB pin. STB is of limited duration.
• IBF (Input Buffer Full) - In response to STB, the 8255 latches into its internal register
the data present at PA0-PA7 or PB0-PB7.
- Through IBF it indicates that it has latched the data but it has not been
read by the CPU yet.
- To get the attention of the CPU, it IBF activates INTR
• INTR
- Falling edge of RD makes INTR low
- The RD signal from the CPU is of limited duration and when it goes high the 8255 in
turn makes IBF inactive by setting it low.
- IBF in this way lets the peripheral know that the byte of data was latched by the 8255
and read into the CPU as well.Lập trình cho 8255Lời giảiLập trình cho 8255
BALời giảiTạo chuỗi xung bằng phần mềm
Bài giảng Kỹ thuậtVi xử lý
Ngành Điện tử-Viễn thông
Đại học Bách khoa Đà Nẵng
của Hồ Viết Việt, Khoa ĐTVT
Tài liệu tham khảo
[1] Kỹ thuật vi xử lý, Văn Thế Minh, NXB Giáo dục, 1997
[2] Kỹ thuật vi xử lý và Lập trình Assembly cho hệ vi xử
lý, Đỗ Xuân Tiến, NXB Khoa học & kỹ thuật, 2001Chương 6
Các kiểuI/O
6.1 Thăm dò (Polling)
6.2 I/O điều khiển bằng ngắt (Interrupt)
-
6.3 DMA (Direct Memory Access)Thăm dò
mov dx, F000
L1: in al, dx
cmp al, FF
je L1
:
:
A
1
5
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
74LS245
B0
B1
B2
B3
B4
B5
B6
B7
A0
A1
A2
A3
A4
A5
A6
A7
E DIR
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOR
5VThe Circuit
A
1
5
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOR
5V
74LS245
B0
B1
B2
B3
B4
B5
B6
B7
A0
A1
A2
A3
A4
A5
A6
A7
EDIR
A
1
5
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOW
74LS373
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
D0
D1
D2
D3
D4
D5
D6
D7
OE LEBài toán
•Chương trình tạo ra hiệu ứng "LED chạy":
- Ban đầu LED chạy từ trên xuống
- Khi nhấn phím thấp nhất thì LED thay đổi
hướng chạy
- Khi nhấn phím cao nhất thì chương trình
kết thúcChương trình
mov dx, F000
mov ah, 00
mov al, 01
L1: out dx, al
mov cx, FFFF
L2: dec cx
jnz L2
cmp ah, 00
jne L3
rol al, 1
cmp al, 01
jne L1
jmp L4
L3: ror al, 1
cmp al, 80
jne L1
L4: mov bl, al
in al, dx
cmp al, FF
je L6
test al, 01
jnz L5
xor ah, FF
jmp L6
L5: test al, 80
jz L7
L6: mov al, bl
jmp L1
L7:Khuyết điểm của thăm dò
•Tốn nhiều thời gian
•NgườI sử dụng có thể nhả phím trước khi
lệnh in al, dx được thực hiện, do đó
bộ vi xi xử lý sẽ không biết rằng ngườI sử
dụng đã nhấn phím
• Làm sao để khắc phục các khuyết điểm
đó?Khuyết điểm của thăm dò
mov dx, F000
mov ah, 00
mov al, 01
L1: out dx, al
mov cx, FFFF
L2: dec cx
jnz L2
cmp ah, 00
jne L3
rol al, 1
cmp al, 01
jne L1
jmp L4
L3: ror al, 1
cmp al, 80
jne L1
L4: mov bl, al
in al, dx
cmp al, FF
je L6
test al, 01
jnz L5
xor ah, FF
jmp L6
L5: test al, 80
jz L7
L6: mov al, bl
jmp L1
L7:Ngắt là gì?Thăm dò
While studying, I'll
check the bucket every 5
minutes to see if it is
already full so that I can
transfer the content of
the bucket to the drum.
Input
Device
Memory
µP
instruction
THĂM DÒNgắt
I'll just study. When the
speaker starts playing
music it means that the
bucket is full. I can then
transfer the content of
the bucket to the drum.
Input
Device
Memory
µP
instruction
INTERRUPT
Interrupt
requestInterrupt- Ngắt
•Bộ vi xử lý không cầnphải kiểm tra tính
sẵnsàngcủathiếtbị I/O.
• Các thiết bị I/O sẽ báo cho vi xử lý biết khi
chúng đã sẵn sàng
•Bộ vi xử lý có thể làm công việc khác khi
thiết bị I/O không có nhu cầu trao đổI dữ
liệuInterrupt- Ngắt
•Mộtsố thuậtngữ cầnnhớ:
- Yêu cầu ngắt
- Đầu vào ngắt
- Đầu ra chấp nhận ngắt
-Chương trình con phục vụ ngắt
- Vector ngắt
-Số ngắt
-Bảng các vector ngắtInterrupt Service Routine (ISR) - Chương trình con phục vụ ngắt
Interrupt vector - Vector ngắt
• Là chương trình được thực hiện khi có
một yêu cầu ngắt được chấp nhận
•Kết thúc bằng lệnh IRET
• Địa chỉ của chương trình con phục vụ ngắt
• Bao gồm4 byte:
- 2 byte cho địa chỉ Offset
- 2 byte cho địa chỉ SegmentInterrupt Vector Number
Số ngắt
•Làmộtsốđượcdùng để phân biệtcác
yếucầungắt. Bởi vì có thể có nhiềuhơn
mộtthiếtbị phát yêu cầungắt đếnbộ vi xử
lý cho nên để cho bộ vi xử lý có thể nhận
biết được thiết bị thì mỗI thiết bị sẽ được
gán cho một số ngắt
•Tronghệ thống 8088, co thể có đến 256
số ngắt(từ 00h đếnFFh)Interrupt Vector Table
Bảng các vector ngắt
• Là vùng nhớ được dành riêng để lưu trữ
các vector ngắt
•Có thể xem như là một mảng các vector
ngắt
-Mảng này có 256 phần tử
-Mỗi phần tử gồm 4 byte: 2 byte đầu lưu địa
chỉ offset, 2 byte sau lưu địa chỉ segment
- Các vector ngắt được lưu trữ theo trật tự tăng
dần của số ngắtBảng các vector ngắtPhản ứng củavixử lý khi không có
ngắt
• Khi bật công tấc nguồnhoặcnhấn nút reset.
1. Bộ vi xử lý đượckhởi động:
- (IP) = 0000h
- (CS) = FFFFh
-IF = 0
2. Bộ vi xử lý tìm và lấy 1 byte lệnh.
3. IP tăng lên 1.
4. Bộ vi xử lý giải mã và thựchiệnlệnh nếutấtcả các byte lệnh
củamộtlệnh đã đượclấy.
5. Quay trỏ lại bước2.Phản ứng củavixử lý khi có ngắt
•Thiếtbị I/O đưayêucầungắt đếnbộ vi xử lý bằng cách làm
cho đầuvàongắtINTR chuyển sang mức cao.
6. Bộ vi xử lý sẽ hoàn thành lệnh đang thực hiện trước khi chấp
nhận ngắt
7. Bộ vi xử lý chấpnhậnngắtbằng cách đưaratínhiệuchấp
nhậnngắt ở mứcthấptừ chân INTA. Lúc này thiết bị I/O sẽ
làm cho tín hiệu ở INTR chuyển về mức thấp.
8. Thiếtbị I/O sẽđưasố ngắt đượcgánchonó đếnbộ vi xử lý
thông qua D-Bus. Bộ vi xử lý sẽ lưu trữ số ngắt này vào một
thanh ghi tạm thờiPhản ứng của vi xử lý khi có ngắt
9. Bộ vi xử lý lưugiátrị hiệnthời của thanh ghi cờ vào stack.
10. Bộ vi xử lý xoá cờ ngắt
11. Bộ vi xử lý lưugiátrị hiệnthời củaCS vàostack.
12. Bộ vi xử lý lưugiátrị hiệnthời của IP vào stack.
13. Bộ vi xử lý nhân số ngắtvới 4. Kếtquả này chính là địachỉ
của nơi lưu trữ vector ngắt tương ứng trong bảng các vector
ngắt. Hai byte đầutiêncủavector ngắt được copy vào IP và
hai byte tiếp theo được copy vào CS.
14. Quay trở về bước2.8088 và một thiết bị ra đơn giản
A
1
5
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOW
74LS373
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
D0
D1
D2
D3
D4
D5
D6
D7
OE LE8088 và một thiết bị vào đơn giản
A
1
5
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
74LS245
B0
B1
B2
B3
B4
B5
B6
B7
A0
A1
A2
A3
A4
A5
A6
A7
E DIR
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOR
5V8088 và thiết bị vào hoạt động theo cơ chế ngắt
INTR
A
1
5
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
74LS245
B7
B6
B5
B4
B3
B2
B1
B0
A7
A6
A5
A4
A3
A2
A1
A0
E
DIR
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOR
5V
INTR
INTA8088 và một thiết bị vào hoạt động theo cơ chế ngắt
INTR DQ set
Q clr
5V
5V
A
1
5
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
74LS245
B0
B1
B2
B3
B4
B5
B6
B7
A7
A6
A5
A4
A3
A2
A1
A0
E
DIR
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOR
5V
5V
INTR
INTA8088 và một thiết bị vào hoạt động theo cơ chế ngắt
A
1
5
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
74LS245
B7
B6
B5
B4
B3
B2
B1
B0
A7
A6
A5
A4
A3
A2
A1
A0
E
DIR
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOR
5V
INTR DQ set
Q clr
5V
5V
INTR
INTA
INTA8088 và một thiết bị vào hoạt động theo cơ chế ngắt
A
1
5
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
74LS245
B7
B6
B5
B4
B3
B2
B1
B0
A7
A6
A5
A4
A3
A2
A1
A0
E
DIR
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOR
5V
INTR DQ set
Q clr
5V
5V
INTR
INTA
INTA
74LS245
B7
B6
B5
B4
B3
B2
B1
B0
A7
A6
A5
A4
A3
A2
A1
A0
E
DIR
D7
D6
D5
D4
D3
D2
D1
D0
INTA
5V8088 và một thiết bị vào hoạt động theo cơ chế ngắt
A
1
5
8088
Minimum
Mode
A18
A0
:
D7
D6
IOR
IOW
A19
D5
D4
D3
D2
D1
D0
74LS245
B7
B6
B5
B4
B3
B2
B1
B0
A7
A6
A5
A4
A3
A2
A1
A0
E
DIR
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOR
5V
INTR DQ set
Q clr
5V
5V
INTR
INTA
INTA
74LS245
B7
B6
B5
B4
B3
B2
B1
B0
A7
A6
A5
A4
A3
A2
A1
A0
E
DIR
D7
D6
D5
D4
D3
D2
D1
D0
INTA
5V
RESET
INT 3A
1
5
8088
Minimum
Mode
A19
A0
:
D7
D6
IOR
IOW
D5
D4
D3
D2
D1
D0
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0
IOR
5V
74LS245
B0
B1
B2
B3
B4
B5
B6
B7
A0
A1
A2
A3
A4
A5
A6
A7
EDIR
A
1
5
A
1
4
A
1
3
A
1
2
A
1
1
A
1
0
A
9
A
8
A
7
A
6
A
5
A
4
A
3
A
2
A
1
A
0IOW
74LS373
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
D0
D1
D2
D3
D4
D5
D6
D7
OE LEChương trình chính
mov ax,0000
mov ds, ax
mov bx, 000C
mov ax, 2800
mov [bx], ax
mov ax, 5000
mov [bx+02], ax
mov dx, F000
mov ah, 00
mov al, 01
L1: cmp ah, 88
je L4
out dx, al
mov cx, FFFF
L2: dec cx
jnz L2
cmp ah, 00
jne L3
rol al, 1
jmp L1
L3: ror al, 1
jmp L1
L4:
ISR bắt đầu từ 52800h Kết thúcChương trình con phục vụ ngắt(ISR)
mov bl, al
in al, dx
test al, 01
jnz S1
xor ah, FF
jmp S2
S1: test al, 80
jnz S2
mov ah, 88
S2: mov al, bl
iret82598259Khởi động 8259ICWICW1, ICW2ICW3, ICW4OCW1 và OCW2OCW38259 đơn
ICW1: 13H
ICW2: 08H
ICW3: 09HVí dụ:Mạch điều khiển ngắt ở PC8259s nối tầng8259s nối tầng
Bạn đang đọc truyện trên: Truyen247.Pro