Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

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

Tags: #giao#trinh