Từ điều khiển khởi đầu này chỉ dùng đến khi bít SNGL thuộc từ điều khiển khởi đầu ICW1 có giá trị 0, nghĩa là trong hệ có các mạch 8259A làm việc ở chế độ nối tầng. ICW3 cho mạch chủ: d[r]
(1)-1-
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG *****
PHẠM HỒNG DUY
BÀI GIẢNG
KỸ THUẬT VI XỬ LÝ
(2)-2-
Lời nói đầu
Các vi xử lý đóng vai trị quan trọng hệ thống số chúng sử dụng nhiều ứng dụng hệ thống điều khiển, hệ thống thông tin liên lạc Tài liệu giới thiệu khái niệm hệ vi xử lý tập trung trình bày vi xử lý Intel 8086 ghép nối tiêu biểu để tạo nên hệ vi xử lý 8086, tiền than hệ vi xử lý x86 sau Các kiến thức thu nhận từ việc xây dựng hệ vi xử lý 8086 bổ ích cho việc phát triển hệ vi xử lý phức tạp hệ thống nhúng
Cấu trúc tài liệu sau
Chương giới thiệu khái niệm tổng quan hệ vi xử lý phận cấu thành hệ vi xử lý nói chung Chương tóm tắt trình phát triển phân loại vi xử lý đến
Chương trình bày chi tiết vi xử lý Intel 8086 bao gồm sơ đồ khối cách tổ chức nhớ Ngoài ra, chương giới thiệu tập lệnh x86 trình thực lệnh
Chương cung cấp kiến thức để lập trình với vi xử lý 8086 cách giới thiệu cấu trúc chương trình cấu trúc rẽ nhánh lặp tiêu biểu kết hợp với ví dụ
Chương tập trung giới thiệu cách thức ghép nối vi xử lý 8086 với thiết bị khác để tạo thành hệ vi xử lý Chương trình bày chu trình đọc/ghi vi xử lý 8086 Đây sở để tiến hành ghép nối liệu với thiết bị khác nhớ hay thiết bị vào/ra khác Chương giới thiệu chế truyền thông nối tiếp cách thức ghép nối với vi xử lý 8086
(3)-3-
Chương trình bày sơ khái niệm hệ vi điều khiển (hay hệ vi xử lý vi mạch) Chương cịn cung cấp thơng tin hệ vi điều khiển Intel 8051 số ứng dụng
Chương 7, chương cuối cùng, giới thiệu số vi xử lý tiên tiến Sun Microsystems Intel dựa kiến trúc IA-32 IA-64
Tài liệu biên soạn dựa tham khảo tài liệu đặc biệt “Kỹ thuật Vi xử lý” tác giả Văn Thế Minh dựa trao đổi kinh nghiệm giảng dạy với đồng nghiệp phản hồi sinh viên Học viện Cơng nghệ Bưu Viễn thơng Tài liệu dùng làm tài liệu học tập cho sinh viên đại học, cao đẳng ngành công nghệ thông tin Trong q trình biên soạn, dù có nhiều cố gắng song khơng tránh khỏi thiếu sót, nhóm tác giả mong nhận góp ý cho thiếu sót ý kiến cập nhật hồn thiện nội dung tài liệu
(4)-4- Mục lục
Chương I. Tổng quan vi xử lý hệ vi xử lý 6
I.1 Giới thiệu vi xử lý
I.2 Hệ vi xử lý
I.3 Các đặc điểm cấu trúc vi xử lý
I.3.1 Cấu trúc 9
I.3.2 Kiến trúc RISC CISC 11
I.3.3 Các đặc điểm 12
I.4 Lịch sử phát triển phân loại vi xử lý 12
I.4.1 Giai đoạn 1971-1973 12
I.4.2 Giai đoạn 1974-1977 13
I.4.3 Giai đoạn 1978-1982 13
I.4.4 Giai đoạn 1983-1999 13
I.4.5 Giai đoạn 2000-2006 14
I.4.6 Giai đoạn 2007-nay 15
Chương II. Bộ vi xử lý Intel 8086 16
II.1 Cấu trúc bên 8086/8088 16
II.1.1 Sơ đồ khối 16
II.1.2 Các đơn vị chức năng: BIU, EU, ghi buýt 17
II.1.3 Phân đoạn nhớ 8086/8088 20
II.2 Bộ đồng xử lý toán học 8087 21
II.3 Tập lệnh 8086/8088 22
II.3.1 Khái niệm lệnh, mã hố lệnh q trình thực lệnh 22
II.3.2 Các chế độ địa 8086/8088 23
II.3.3 Tập lệnh 8086/8088 27
II.4 Ngắt xử lý ngắt 8086/8088 33
II.4.1 Sự cần thiết phải ngắt CPU 33
II.4.2 Các loại ngắt hệ 8088 33
II.4.3 Đáp ứng CPU có yêu cầu ngắt 34
II.4.4 Xử lý ưu tiên ngắt 36
Chương III. Lập trình hợp ngữ với 8086/8088 37
III.1 Giới thiệu khung chương trình hợp ngữ 37
III.1.1 Cú pháp chương trình hợp ngữ 37
III.1.2 Dữ liệu cho chương trình 38
III.2 Cách tạo chạy chương trình hợp ngữ 48
III.3 Các cấu trúc lập trình 49
III.4 Giới thiệu số chương trình cụ thể 55
III.4.1 Ví dụ 56
III.4.2 Ví dụ 56
III.4.3 Ví dụ 58
III.4.4 Ví dụ 60
III.4.5 Ví dụ 61
Chương IV. Phối ghép vi xử lý với nhớ thiết bị vào/ra 62
IV.1 Các tín hiệu vi xử lý mạch phụ trợ 62
IV.1.1 Các tín hiệu 8086/8088 62
IV.1.2 Phân kênh để tách thông tin việc đệm cho buýt 66
IV.1.3 Mạch tạo xung nhịp 8284 67
(5)-5-
IV.1.5 Biểu đồ thời gian lệnh ghi/đọc 70
IV.2 Phối ghép vi xử lý với nhớ 72
IV.2.1 Giới thiệu nhớ 72
IV.2.2 Giải mã địa cho nhớ 74
IV.3 Phối ghép vi xử lý với thiết bị vào 79
IV.3.1 Giới thiệu thiết bị vào/ra 79
IV.3.2 Giải mã địa thiết bị vào 80
IV.4 Giới thiệu số vi mạch hỗ trợ vào 82
IV.4.1 Ghép nối song song dùng 8255A 83
IV.4.2 Truyền thông nối tiếp dùng 8251 87
Chương V. Tổng quan phương pháp vào liệu 94
V.1 Giới thiệu 94
V.2 Vào/ra phương pháp thăm dò 95
V.3 Vào/ra ngắt 96
V.3.1 Giới thiệu 96
V.3.2 Bộ xử lý ngắt ưu tiên 8259 96
V.4 Vào/ra truy nhập trực tiếp nhớ (Direct memory Access) 107
V.4.1 Khái niệm phương pháp truy nhập trực tiếp vào nhớ 107
V.4.2 Các phương pháp trao đổi liệu 109
V.4.3 Bộ điều khiển truy nhập trực tiếp vào nhớ Intel 8237A 110
Chương VI. Các vi điều khiển 121
VI.1 Giới thiệu vi điều khiển hệ nhúng 121
VI.1.1 Giới thiệu 121
VI.1.2 Các kiểu vi điều khiển 121
VI.2 Họ vi điều khiển Intel 8051 122
VI.2.1 Sơ đồ khối 123
VI.2.2 Các ghi 124
VI.2.3 Tập lệnh 125
VI.3 Giới thiệu số ứng dụng tiêu biểu vi điều khiển 125
VI.3.1 Chuyển đổi số tương tự (D/A) 126
VI.3.2 Chuyến đổi tương tự số (A/D) 127
Chương VII. Giới thiệu số vi xử lý tiên tiến 129
VII.1 Các vi xử lý tiên tiến dựa kiến trúc Intel IA-32 129
VII.1.1Giới thiệu IA-32 129
VII.1.2Các vi xử lý hỗ trợ IA-32 131
VII.2 Các vi xử lý tiên tiến dựa kiến trúc Intel IA-64 132
VII.3 Các vi xử lý tiên tiến Sun Microsystems 134
(6)Chương I. Tổng quan vi xử lý hệ vi xử lý I.1 Giới thiệu vi xử lý
Một máy tính thơng thường bao gồm khối chức như: khối xử lí trung tâm CPU (Central Processing Unit), nhớ, khối phối ghép với thiết bị ngoại vi (I/O, input/output) Tuỳ theo quy mô, độ phức tạp hiệu khối chức kể mà người ta phân máy tính điện tử sử dụng thành loại sau:
Máy tính lớn (Mainframe) là loại máy tính thiết kế để giải toán lớn với tốc
độ nhanh Máy tính thường làm việc với số liệu từ 64 bít lớn trang bị nhiều xử lý tốc độ cao nhớ lớn Chính máy tính lớn kích thước vật lý Chúng thường dùng để tính tốn điều khiển hệ thống thiết bị dùng quân hệ thống máy móc chương trình nghiên cứu vũ trụ, để xử lý thông tin ngành ngân hàng, ngành khí tượng, cơng ty bảo hiểm Loại máy lớn máy lớn gọi supercomputer (như loại máy Y-MP/832 Cray)
Máy tính (Minicomputer) dạng thu nhỏ kích thước tính
của máy tính lớn Nó đời nhằm thoả mãn nhu cầu sử dụng máy tính cho ứng dụng vừa phải mà dùng máy tính lớn vào gây lãng phí Máy tính thường dùng cho tính tốn khoa học kỹ thuật, gia công liệu quy mô nhỏ hay để điều khiển quy trình cơng nghệ Tiêu biểu cho nhóm loại máy VAX 6360 Digital Equipment Corporation MV/8000II Data genaral
Máy vi tính (Microcomputer) loại máy tính thơng dụng Một máy vi tính
có thể vi điều khiển (microcontroller), máy vi tính vi mạch (one-chip microcomputer), hệ vi xử lí có khả làm việc với số liệu có độ dài bít, bít, bít, 16 bít lớn Hiện số máy vi tính có tính so sánh với máy tính con, làm việc với số liệu có độ dài từ 32 bít (thậm chí 64 bít) Ranh giới để phân chia máy vi tính máy tính ngày khơng rõ nét
(7)Chương I Tổng quan vi xử lý hệ vi xử lý
-7- I.2 Hệ vi xử lý
Bộ vi xử lý thành phần bản, khơng thiếu để tạo nên máy vi tính Trong thực tế vi xử lý cịn phải kết hợp thêm với phận điện tử khác nhớ phối ghép vào/ra để tạo nên hệ vi xử lý hoàn chỉnh Cần lưu ý rằng, để hệ thống có cấu trúc trên, thuật ngữ “hệ vi xử lý” mang ý nghĩa tổng quát so với thuật ngữ “máy vi tính”, máy vi tính ứng dụng cụ thể cảu hệ vi xử lý Hình I-1 giới thiệu sơ đồ khối tổng quát hệ vi xử lý
Hình I-1 Sơ đồ khối hệ vi xử lý
Trong sơ đồ ta thấy rõ khối chức hệ vi xử lý gồm:
Khối xử lý trung tâm (Central Processing unit, CPU)
Bộ nhớ bán dẫn (ROM-RAM)
Khối phối ghép với thiết bị ngoại vi (Input/Output - I/O)
Các buýt truyền thông tin
Ba khối chức đầu liên hệ với thông qua qập đường day để truyền tín hiệu gọi chung Buýt hệ thống Buýt hệ thống bao gồm buýt thành phần ứng với tín hiệu địa chỉ, liệu điều khiển ta có buýt địa chỉ, buýt liệu bt điều khiển
CPU đóng vai trị chủ đạo hệ vi xử lý Đây mạch vi điện tử có độ tích hợp cao Khi hoạt động, CPU đọc mã lệnh được ghi dạng bít bít từ nhớ, sau giải mã các lệnh thành dãy xung điều khiển ứng với thao tác lệnh để điều khiển khối khác thực từng bước thao tác Để làm việc bên CPU có ghi dùng để chứa địa lệnh thực gọi thanh ghi trỏ
lệnh (Instruction Pointer, IP) hoặc bộ đếm chương trình (Program Counter, PC), một số
thanh ghi đa khác bộ tính tốn số học lơ-gíc (Arithmetic Logic Unit ALU) để Bộ xử lý trung
tâm (CPU)
Thanh ghi
Bộ nhớ (ROM-RAM)
Thanh ghi
Phối ghép vào/ra (I/O)
Thanh ghi
Thiết bị vào
Thiết bị
Buýt địa
Buýt điều khiển
(8)Chương I Tổng quan vi xử lý hệ vi xử lý
-8-
thao tác với liệu Ngoài cịn có hệ thống mạch điện tử phức tạp để giải mã
lệnh và từ tạo xung điều khiển cho toàn hệ
Bộ nhớ bán dẫn hay gọi bộ nhớ là phận khác quan trọng hệ
vi xử lý Tại (trong ROM) ta chứa chương trình điều khiển hoạt động tồn hệ để bật điện CPU lấy lệnh từ để khởi động hệ thống Một phần chương trình điều khiển hệ thống, chương trình ứng dụng, liệu kết chương trình thường đặt RAM Các liệu chương trình muốn lưu trữ lâu dài có dung lượng lớn đặt nhớ
Khối phối ghép vào/ra (I/O) tạo khả giao tiếp hệ vi xử lý với giới bên
ngoài Các thiết bị ngoại vi bàn phím, chuột, hình, máy in, chuyển đổi số/tương tự (D/A Converter, DAC) chuyển đổi tương tự/số (A/D Converter, ADC), ổ đĩa từ liên hệ với vi xử lý qua phận Bộ phận phối ghép cụ thể buýt hệ thống với giới bên thường gọi là cổng Như ta có các cổng vào để lấy thơng tin từ ngồi vào cổng ra để đưa thông tin từ Tùy theo nhu cầu cụ thể cơng việc, mạch cổng xây dựng từ mạch lôgic đơn giản từ vi mạch chuyên dụng lập trình
Buýt địa (address bus) thường có từ 16, 20, 24, 32 hay 64 đường dây song song
chuyển tải thơng tin bít địa Khi đọc/ghi nhớ CPU đưa buýt địa ô nhớ liên quan Khả phân biệt địa (số lượng địa cho ô nhớ mà CPU có quản lý được) phụ thuộc vào số bít buýt địa Ví dụ CPU có số đường dây địa N=16 có khả địa hóa 2N = 65536 =64 kilô ô nhớkhác (1K= 210 =1024) Khi đọc/ghi với cổng vào/ra CPU đưa buýt địa bít địa tương ứng cổng Trên sơ đồ khối ta dễ nhận tính một chiều buýt địa qua chiều mũi tên Chỉ có CPU có khả đưa địa buýt địa
Buýt liệu (data bus) thường có từ 8, 16, 20, 24, 32, 64 ( hơn) đường dây tùy
theo vi xử lý cụ thể Số lượng đường dây định số bít liệu mà CPU có khả xử lý lúc Chiều mũi tên sus số liệu buýt chiều, nghĩa liệu truyền từ CPU (dữ liệu ra) hoặc truyền đến CPU (dữ liệu vào) Các phần tử có đầu nối thẳng với buýt liệu phải trang bị đầu tạng thái để ghép vào hoạt động bình thường với buýt
Buýt điều khiển (control bus) thường gồm hàng chục đường dây tín hiệu khác
Mỗi tín hiệu điều khiển có một chiều định vì hoạt động CPU đưa tín hiệu điều khiển tới khối khác hệ Đồng thời CPU nhận tín hiệu điều khiển từ khối để phối hợp hoạt động tồn hệ Các tín hiệu hình vẽ thể đường có mũi tên chiều, điều khơng phải để tính hai chiều tín hiệu mà tính hai chiều nhóm tín hiệu
(9)Chương I Tổng quan vi xử lý hệ vi xử lý
-9-
là phối hợp hoạt động ghi ngồi nói để thực hiện biến đổi
dữ liệu hoặc sự trao đổi liệu theo yêu cầu định trước
I.3 Các đặc điểm cấu trúc vi xử lý
I.3.1 Cấu trúc
Như trình bày phần trên, vi xử lý đơn vị xử lý trung tâm CPU máy vi tính Như sức mạnh xử lý máy vi tính định lực vi xử lý Trên nguyên tắc, vi xử lý chia thành đơn vị chức Hình I-2
I.3.1.1 Các ghi
Số lượng, kích cỡ kiểu ghi thay đổi từ vi xử lý sang vi xử lý khác Tuy nhiên, ghi thực thao tác tương tự Cấu trúc ghi đóng vai trị quan trọng việc thiết kế kiến trúc vi xử lý Đồng thời, cấu trúc ghi với loại vi xử lý cụ thể cho biết mức độ thuận lợi dễ dùng lập trình cho vi xử lý Dưới ghi nhất:
i Thanh ghi lệnh: lưu lệnh Sau nạp mã lệnh từ nhớ, vi xử lý lưu mã lệnh ghi lệnh Giá trị ghi vi xử lý giải mã để xác định lệnh Kích cỡ từ (word) vi xử lý định kích cỡ ghi Ví dụ, vi xử lý 32 bít có ghi lệnh 32 bít
Đơn vị điều khiển CU
B
uýt d
ữ
li
ệu
Đơn vị số học lơ-gíc ALU
Các ghi
Hình I-2 Sơ đồ khối chức vi xử lý
(10)Chương I Tổng quan vi xử lý hệ vi xử lý
-10-
ii Bộ đếm chương trình: chứa địa lệnh hay mã thực thi (op-code) Thông thường, ghi chứa địa câu lệnh kế Thanh ghi có đặc điểm sau:
1 Khi khởi động lại, địa lệnh thực nạp vào ghi
2 Để thực lệnh, vi xử lý nạp nội dung đếm chương trình vào buýt địa đọc nhớ địa Giá trị đếm chương trình tự động tăng theo lơ-gíc vi xử lý Như vậy, vi xử lý thực lệnh chương trình có lệnh làm thay đổi trật tự tính tốn
3 Kích cỡ đếm chương trình phụ thuộc vào kích cỡ bt địa Nhiều lệnh làm thay đổi nội dung ghi so với trình tự thơng
thường Khi đó, giá trị ghi xác định thông qua địa chỉ định lệnh
iii Thanh ghi địa nhớ: chứa địa liệu Vi xử lý sử dụng địa trỏ trực tiếp tới nhơ Giá trị địa liệu trao đổi xử lý
iv Thanh ghi dùng chung: gọi ghi gộp (accumulator) Thanh ghi thường ghi bít dùng thể lưu hầu hết kết tính tốn đơn vị xử lý sơ học lơ-gíc ALU Thanh ghi dùng để trao đổi liệu với thiết bị vào/ra
I.3.1.2 Đơn vị xử lý số học lơ-gíc ALU
ALU thực tất thao tác xử lý liệu bên vi xử lý phép toán lơ-gíc, số học Kích cỡ ghi ALU tương ứng với kích cỡ từ vi xử lý Vi xử lý 32 bít có ALU 32 bít Một vài chức tiêu biểu ALU:
1 Cộng nhị phân phép lơ-gíc Tính số bù liệu
3 Dịch quay trái phải ghi dùng chung I.3.1.3 Đơn vị điều khiển CU
Chức đơn vị điều khiển CU đọc giải mã lệnh từ nhớ chương trình Để thực lệnh, CU kích hoạt khối phù hợp ALU vào mã lệnh (op-code) ghi lệnh Mã lệnh xác định thao tác để CU thực thi CU thông dịch nội dung ghi lệnh sau sinh chuỗi tín hiệu kích hoạt tương ứng với lệnh nhận Các tín hiệu kích hoạt khối chức phù hợp bên ALU
CU sinh tín hiệu điều khiển dẫn tới thành phần khác vi xử lý qua buýt điều khiển Ngoài ra, CU đáp ứng lại tín hiệu điều khiển buýt điều khiển phận khác gửi tới Các tín hiệu thay đổi theo loại vi xử lý Một số tín hiệu điều khiển tiêu biểu khởi động lại RESET, đọc ghi (R/W), tín hiệu ngắt (INT/IRQ), …
I.3.1.4 Thực chương trình
(11)Chương I Tổng quan vi xử lý hệ vi xử lý
-11-
2 Giải mã (Decode) Vi xử lý giải mã hay dịch lệnh nhờ đơn vị điều khiển CU CU nhập nội dung ghi lệnh giải mã để xác định kiểu lệnh
3 Thực (Execute) Vi xử lý thực lệnh nhờ CU Để hoàn thành nhiệm vụ, CU sinh chuỗi tín hiệu điều khiển tương ứng với lệnh
Quá trình lặp lặp lại câu lệnh cuối chương trình Trong vi xử lý tiên tiến trình thực lệnh cải tiến cho phép nhiều lệnh thực xen kẽ với Tức là, câu lệnh thực mà không cần chờ câu lệnh thời kết thúc Kỹ thuật gọi kỹ thuật đường ống (pipeline) Việc thực xen kẽ cho phép nâng cao tốc độ thực vi xử lý làm giảm thời gian chạy chương trình
I.3.2 Kiến trúc RISC CISC
Có hai kiển kiến trúc vi xử lý: máy tính với tập lệnh rút gọn (Reduced Instruction Set RISC) máy tính với tập lệnh phức tạp (Complex Instruction Set Computer-CISC) Vi xử lý RISC nhấn mạnh tính đơn giản hiệu Các thiết kế RISC khởi đầu với tập lệnh thiết yếu vừa đủ RISC tăng tốc độ xử lý cách giảm số chu kỳ đồng hồ lệnh Mục đích RISC tăng tốc độ hiệu dụng cách chuyển việc thực thao tác không thường xuyên vào phần mềm thao tác phổ biến phần cứng thực Như làm tăng hiệu máy tính Các đặc trưng vi xử lý kiểu RISC:
1 Thiết kế vi xử lý RISC sử dụng điều khiển cứng (hardwired control) khơng sử dụng vi mã Tất lệnh RISC có định dạng cố định việc sử dụng vi mã không cần thiết
2 Vi xử lý RISC xử lý hầu hết lệnh chu kỳ
3 Tập lệnh vi xử lý RISC chủ yếu sử dụng lệnh với ghi, nạp lưu Tất lệnh số học lơ-gíc sử dụng ghi, cịn lệnh nạp lưu dùng để truy nhập nhớ
4 Các lệnh có định dạng cố định chế độ địa Vi xử lý RISC có số ghi dùng chung
6 Vi xử lý RISC xử lý vài lệnh đồng thời thường áp dụng kỹ thuật đường ống (pipeline)
Vi xử lý RISC thường phù hợp với ứng dụng nhúng Vi xử lý hay điều khiển nhúng thường nhúng hệ thống chủ Nghĩa là, thao tác điều khiển thường che dấu khỏi hệ thống chủ Ứng dụng điều khiển tiêu biểu cho ứng dụng nhúng hệ thống tự động hóa văn phịng máy in lade, máy đa chức Vi xử lý RISC phù hợp với ứng dụng xử lý ảnh, rơ-bốt đồ họa nhờ có mức tiêu thụ điện thấp, thực thi nhanh chóng
(12)Chương I Tổng quan vi xử lý hệ vi xử lý
-12-
Ưu điểm CISC chương trình phức tạp cần vài lệnh với vài chu trình nạp cịn RISC cần số lượng lớn lệnh để thực nhiệm vụ Tuy nhiên, RISC cải thiện hiệu đáng kể nhờ xung nhịp nhanh hơn, kỹ thuật đường ống tối ưu hóa q trình biên dịch Hiện nay, vi xử lý CISC sử dụng phương pháp lai, với lệnh đơn giản CISC sử dụng cách tiếp cận RISC để thực thi xen kẽ (kỹ thuật đường ống) với câu lệnh phức tạp sử dụng vi chương trình để đảm bảo tính tương thích
I.3.3 Các đặc điểm
Từ cấu trúc vi xử lý, rút đặc điểm cấu trúc sau:
Tốc độ xung nhịp Vi xử lý thiết bị số nên sử dụng tín hiệu xung nhịp (clock) để đồng hoạt động Tốc độ xung nhịp lớn vi xử lý chạy nhanh
Khối lượng liệu xử lý được: thể qua kích cỡ ghi liệu Với kích cỡ ghi liệu 32 bít, vi xử lý có khả đọc/ghi byte cho thao tác với nhớ
Dung lượng nhớ trực tiếp: thể qua dung lượng ghi địa Với dung lượng 32 bít, vi xử lý quản lý trực tiếp 4GB nhớ
Năng lực tính toán: định lực số học lơ-gíc Bên cạnh thao tác số học thơng thường cần có đơn vị chức phục vụ yêu cầu chuyên biệt khác đơn vị xử lý dấu phẩy động cho tinh toán số thực
Khả thực lệnh: thể lực độ phức tạp đơn vị điều khiển Đơn vị cho phép q trình xử lý đơn giản hay phức tạp xen kẽ lệnh nhằm nâng cao hiệu vi xử lý chu kỳ lệnh Các thiết kế phức tạp cho phép đơn vị điều khiển thực nhiều lệnh chu trình I.4 Lịch sử phát triển phân loại vi xử lý
Phần giới thiệu trính phát triển vi xử lý qua giai đoạn từ năm 1971 tập chung chủ yếu vào sản phẩm hãng Intel hãng sản xuất vi xử lý hàng đầu đồng thời hãng triển khai nhiều công nghệ giúp nâng cao hiệu vi xử lý đặc biệt lĩnh vực máy vi tính
I.4.1 Giai đoạn 1971-1973
Năm 1971, phát triển vi mạch dùng cho máy tính cầm tay, Intel cho đời vi xử lý 4004 (4 bít) Rockwell International, IPM-16 (16 bít) National Semiconductor
Đặc điẻm chung vi xử lý hệ là:
Độ dài từ thường bít (cũng dài hơn)
Công nghệ chế tạo PMOS với đặc điểm mật độ phần tử nhỏ, tốc độ thấp, giá thành rẻ có khả đưa dịng tải nhỏ
(13)Chương I Tổng quan vi xử lý hệ vi xử lý
-13-
Tập lệnh đơn giản phải cần nhiều mạch phụ trợ tạo nên hệ vi xử lý hoàn chỉnh
I.4.2 Giai đoạn 1974-1977
Các vi xử lý đại diện hệ vi xử lý bít 6502 MOS Technology, 6800 6809 Motorola, 8080 8085 Intel đặc biệt vi xử lý Z80 Zilog Các vi xử lý có tập lệnh phong phú thường có khả phân biệt địa nhớ với dung lượng đến 64KB Có số vi xử lý cịn có khả phân biệt 256 địa cho thiết bị ngoại vi (họ Intel Zilog) Chúng sử dụng rộng rãi công nghiệp để tạo máy tính bít tiếng thời Apple II Commodore 64 Tất vi xử lý thời kì sản xuất công nghệ NMOS (Với mật độ điện tủ đơn vị diện tích cao so với công nghệ PMOS) CMOS (tiết kiệm điện tiêu thụ) cho phép đạt tốc độ từ 1-8 s/lệnh với tần số đồng hồ fclk = 1-5 MHz
I.4.3 Giai đoạn 1978-1982
Các vi xử lý hệ có đại diện vi xử lý 16 bít 8086/80186/80286 Intel 86000/86010 Motorola Một điều tiến hẳn so với vi xử lý bít hệ trước vi xử lý 16 bít có tập lệnh đa dạng với lệnh nhân, lệnh chia lệnh thao tác với chuỗi kí tự Khả phân biệt địa cho nhớ cho thiết bị ngoại vi vi xử lý hệ lớn (từ 1MB đến 16 MB cho nhớ tới 64 K địa cho thiết bị ngoại vi họ Intel) Đây vi xử lý dùng máy IBM PC, PC/XT, PC/AT máy Macintosh Apple Phần lớn vi xử lý hệ sản xuất công nghệ HMOS cho phép đạt tốc độ từ 0, 1-1s/lệnh với tần số đồng hồ fclk =5-10 MHz
I.4.4 Giai đoạn 1983-1999
(14)Chương I Tổng quan vi xử lý hệ vi xử lý
-14-
trong máy tính lớn vào vi xử lí: chế xử lý xen kẽ liên tục dòng mã
lệnh(pipeline), nhớ đệm (cache), nhớ ảo Các vi xử lý có bộ quản lý nhớ
(Memory Management Unit-MMU) Chính nhờ cải tiến mà vi xử lý hệ có khả cạnh tranh với máy tính nhỏ nhiều lĩnh vực ứng dụng Phần lớn vi xử lý hệ sản xuất công nghệ HCMOS
Bên cạnh vi xử lý vạn truyền thống thường dùng để xây dựng
máy tính với tập lệnh phức tạp (Complex Instruction Set Computer, CISC) nói trên,
trong thời gian xuất vi xử lý cải tiến dùng để xây dựng máy tính với
tập lệnh rút gọn (Reduced Instruction Set Computer, RISC) với nhiều tính so
sánh với máy tính lớn hệ trước Đó vi xử lý Alpha Digital, PowerPC tổ hợp hãng Apple- Motorola- IBM Sự đời vi xử lý loại RISC bắt đầu cho hệ khác lịch sử phát triển hệ vi xử lý I.4.5 Giai đoạn 2000-2006
Các vi xử lý Intel thời gian thể quan điểm nâng cao hiệu vi xử lý hệ thống máy tính việc nâng cao xung nhịp Phiên Intel Pentium tăng xung nhịp từ 1,5 GHz năm 2000 tới 3GHz vào năm 2002 Vi kiến trúc tiêu biểu cho vi xử lý Netburst với khả nâng cao xung nhịp gấp lần xung nhịp hệ thống Ngoài ra, Intel giới thiệu công nghệ siêu phân luồng tăng hiệu cho hệ thống đa nhiệm đa luồng Về lơ-gíc, chương trình phần mềm sử dụng vi xử lý vi xử lý vật lý
Việc nâng cao xung nhịp nhanh chóng đẩy vi xử lý tới ngưỡng vật lý điện nhiệt tỏa Thực tế cho thấy phương pháp hiệu để tăng hiệu hệ thống Hãng AMD, đối thủ cạnh tranh trực tiếp Intel, nhấn mạnh việc tăng hiệu qua việc nâng cao tốc độ thực lệnh chu kỳ máy AMD hãng tích hợp nhiều giải mã điều khiển nhớ vào bên đơn vị xử lý trung tâm CPU, nhớ đệm mức lớn tới 128KB Các vi xử lý Athlon 64, Opteron vi xử lý tiêu biểu AMD, có tốc độ xung nhịp thấp hiệu khơng thua Intel Đặc biệt tiêu thụ điện mức tỏa nhiệt tốt hẳn Intel nhờ có cơng nghệ kiểm sốt tiêu thụ điện
Trong giai đoạn chứng kiến bùng nổ việc phát triển vi xử lý cho máy tính xách tay Yêu cầu quan trọng với thiết bị hiệu xử lý đủ mạnh mức tiêu thụ điện phải đủ thấp để máy tính hoạt động lâu dài pin Các vi xử lý di động Intel Pentium Mobile triển khai giải pháp dung hòa hai yêu cầu nâng cao khả xử lý lệnh chu kỳ xung nhịp, nâng cao đệm mức lên 1MB, kiểm soát xung nhịp vi xử lý (Speedstep) theo yêu cầu ứng dụng Bộ vi xử lý di động hoạt động tần số 1,6GHz giảm xuống tới 200MHz rỗi có hiệu ngang ngửa với Pentium tần số 2GHz
(15)Chương I Tổng quan vi xử lý hệ vi xử lý
-15-
lý riêng biệt vi mạch Ngay sau đó, AMD đưa vi xử lý đa nhân Athlon×2 Thực tế cho thấy thiết kế AMD mang lại hiệu tốt so với Intel I.4.6 Giai đoạn 2007-nay
Giai đoạn tiếp tục chứng kiến gia tăng số nhân bên vi xử lý hãng sản xuất vi xử lý Intel AMD Ngoài yêu cầu tiêu thụ điện tỏa nhiệt vi xử lý quan tâm Intel cải tiến thiết kế vi kiến trúc nhân (Core micro-architecture) thay Netburst đưa hệ vi xử lý hai nhân Core-2 Bộ vi xử lý khắc phục điểm yếu hệ trước đặc biệt tương quan hiệu mức tiêu thụ điện Năm 2006 chứng kiến kiện Intel đưa vi xử lý với bốn nhân cho môi trường máy chủ Intel Xeon Quadcore 5355 máy vi tính Intel Core-2 Extreme QX6700 Việc kết hợp với cơng nghệ siêu phân luồng vi xử lý Core i7 Intel cho phép nâng số vi xử lý lơ-gíc lên tới cho các chương trình ứng dụng
(16)Chương II. Bộ vi xử lý Intel 8086 II.1 Cấu trúc bên 8086/8088
Intel 8086 vi xử lý 16 bít Intel vi xử lý hỗ trợ tập lệnh x86 Ngồi Intel giới thiệu 8088 tương thích với 8086 độ rộng buýt liệu nửa (8 bít) Vi xử lý sử dụng nhiều lĩnh vực khác nhau, máy IBM PC/XT Các vi xử lý thuộc họ sử dụng rộng rãi thời gian tới tính kế thừa sản phẩm họ x86 Các chương trình viết cho 8086/8088 chạy hệ thống tiên tiến sau
II.1.1 Sơ đồ khối
Trong sơ đồ khối, vi xử lý 8086 có hai khối BIU EU Về chi tiết, vi xử lý bao gồm đơn vị điều khiển, số học lơ-gíc, hàng đợi lệnh tập ghi Chi tiết khối đơn vị chức trình bày phần sau
(17)Chương II Bộ vi xử lý Intel 8086
-17-
II.1.2 Các đơn vị chức năng: BIU, EU, ghi buýt
II.1.2.1 Đơn vị giao tiếp buýt thực thi EU
Theo sơ đồ khối Hình II-1 CPU 8086 có khối chính: khối phối ghép buýt BIU (Bus Interface Unit) và khối thực lệnh EU (Execution Unit) Việc chia CPU thành phần làm việc đồng thời có liên hệ với qua đệm lệnh làm tăng đáng kể tốc độ xử lý CPU Các buýt bên CPU có nhiệm vụ chuyển tải tín hiệu khối Trong số buýt có buýt liệu 16 bít ALU, buýt tín hiệu điều khiển EU buýt hệ thống BIU Trước buýt vào buýt vi xử lý, tín hiệu truyền buýt thường cho qua đệm để nâng cao tính tương thích cho nối ghép nâng cao phối ghép
BIU đưa địa chỉ, đọc mã lệnh từ nhớ, đọc/ghi liệu từ vào cổng nhớ Nói cách khác BIU chịu trách nhiệm đưa địa buýt trao đổi liệu với buýt
EU bao gồm đơn vị điều khiển, khối có mạch giải mã lệnh Mã lệnh đọc vào từ nhớ đưa đến đầu vào giải mã, thông tin thu từ đầu đưa đến mạch tạo xung điều khiển, kết ta thu dãy xung khác kênh điều khiển (tuỳ theo mã lệnh) để điều khiển hoạt động phận bên bên CPU Ngồi ra, EU cịn có khối số học lôgic (Arithmetic and Logic Unit ALU) dùng để thực thao tác khác với toán hạng lệnh Tóm lại, CPU hoạt động EU cung cấp thông tin địa cho BIU để khối đọc lệnh liệu, cịn thân đọc lệnh giải mã lệnh
Trong BIU cịn có bộ nhớ đệm lệnh với dung lượng byte dùng để chứa mã lệnh để chờ EU xử lý (bộ đệm lệnh gọi hàng đợi lệnh).
II.1.2.2 Các ghi
II.1.2.2.a Các ghi đoạn
Thông thường nhớ chương trình máy tính chia làm đoạn phục vụ chức khác đoạn chứa câu lệnh, chứa liệu Trong thực tế vi xử lý 8086 cung cấp các ghi 16 bít liên quan đến địa đầu đoạn kể chúng gọi ghi đoạn (Segment Registers) cụ thể:
Thanh ghi đoạn mã CS (Code-Segment),
Thanh ghi đoạn liệu DS (Data sement)
Thanh ghi đoạn ngăn xếp SS (Stack segment)
Thanh ghi đoạn liệu phụ ES (Extra segment)
(18)Chương II Bộ vi xử lý Intel 8086
-18-
II.1.2.2.b Các ghi đa
Trong khối EU có bốn ghi đa 16 bít AX, BX, CX, DX Điều đặc biệt cần chứa liệu bít ghi tách thành hai ghi bít cao thấp để làm việc độc lập, tập ghi AH AL, BH BL, CH CL, DH DL (trong H phần cao, L phần thấp) Mỗi ghi dùng cách vạn để chứa tập liệu khác có cơng việc đặc biệt định thao tác với vài ghi Chính ghi thường gán cho tên có ý nghĩa Cụ thể:
AX (accumulator): chứa Các kết qủa thao tác thường chứa (kết phép nhân, chia) Nếu kết bít ghi AL coi ghi tích luỹ
BX (base): ghi sở thường chứa địa sở bảng dùng lệnh XLAT
CX (count): đếm CX thường dùng để chứa số lần lặp trường hợp lệnh LOOP (lặp), CL thường cho ta số lần dịch quay lệnh dịch quay ghi
DX (data): ghi liệu DX BX tham gia thao tác phép nhân chia số 16 bít DX thường dùng để chứa địa cổng lệnh vào/ liệu trực tiếp
II.1.2.2.c Các ghi trỏ số
Trong 8088 cịn có ba ghi trỏ hai ghi số 16 bít Các ghi (trừ IP) dùng ghi đa năng, ứng dụng ghi chúng ngầm định ghi lệch cho đoạn tương ứng Cụ thể:
IP: trỏ lệnh (Instruction Pointer) IP trỏ vào lệnh thực nằm đoạn mã CS Địa đầy đủ lệnh ứng với CS:IP xác định theo cách nói
BP: trỏ sở (Base Pointer) BP trỏ vào liệu nằm đoạn ngăn xếp SS Địa đầy đủ phần tử đoạn ngăn xếp ứng với SS:BP xác định theo cách nói
SP: trỏ ngăn xếp (Stack Pointer) SP trỏ vào đỉnh thời ngăn xếp nằm đoạn ngăn xếp SS Địa đỉnh ngăn xếp ứng với SS:SP xác định theo cách nói
SI: số gốc hay nguồn (Source Index) SI vào liệu đoạn liệu DS mà địa cụ thể đầy đủ ứng với DS:SI xác định theo cách nói
(19)Chương II Bộ vi xử lý Intel 8086
-19-
II.1.2.2.d Thanh ghi cờ FR (Flag Register)
Đây ghi đặc biệt CPU, bít dùng để phản ánh trạng thái định kết phép toán ALU thực trạng thái hoạt động EU Dựa vào cờ người lập trình có lệnh thích hợp cho vi xử lý (các lệnh nhảy có điều kiện) Thanh ghi cờ gồm 16 bít người ta dùng hết bít để làm bít cờ hình vẽ
U không sử dụng
C CF (Carry Flag): cờ nhớ CF = có nhớ muợn từ bít có nghĩa lớn MSB (Most Significant Bit)
P PF (Parity Flag): cờ parity PF phản ánh tính chẵn lẻ tổng số bít có kết Cờ PF =1 tổng số bít kết chẵn (even parity)
A AF (Auxiliary Carry Flag): cờ nhớ phụ có ý nghĩa ta làm việc với số BCD (Binary Coded Decimal) AF = có nhớ muợn từ số BCD thấp (4 bít thấp) sang số BCD cao (4 bít cao)
Z ZF (Zero Flag): cờ rỗng ZF =1 kết =
S SF (sign flag): cờ dấu SF = kết âm
O OF (Overflow Flag): cò tràn OF = kết số bù vượt qua giới hạn biểu diễn dành cho
Trên bít cờ trạng thái phản ánh trạng thái khác kết sau thao tác đó, bít cờ đầu thuộc byte thấp cờ cờ giống vi xử lý bít 8085 Intel Chúng lặp xoá tuỳ theo điều kiện cụ thể sau thao tác ALU Ngoài ra, vi xử lý 8086/8088 cịn có cờ điều khiển sau (các cờ lập xoá lệnh riêng):
T TF (Trap Flag): cờ bẫy TF = CPU làm việc chế độ chạy lệnh (chế độ dùng cần tìm lỗi chương trình)
I IF (Interrupt Enable Flag): cờ cho phép ngắt IF = CPU cho phép yêu cầu ngắt (che được) tác động
D DF (Direction Flag): cờ hướng DF = CPU làm việc với chuỗi ký tự theo thứ tự từ phải sang trái (vì D cờ lùi)
(20)Chương II Bộ vi xử lý Intel 8086
-20- II.1.3 Phân đoạn nhớ 8086/8088
Khối BIU đưa buýt địa 20 bít địa chỉ, 8086/8088 có khả phân biệt 220 = 1.048.576 = 1M nhớ hay 1Mbyte, nhớ thường tổ chức theo byte Nói cách khác: khơng gian địa 8088 1Mbyte Trong không gian 1Mbyte nhớ cần chia thành vùng khác (điều có lợi làm việc chế độ nhiều người sử dụng đa nhiệm) dành riêng để:
Chứa mã chương trình
Chứa liệu kết không gian chương trình
Tạo vùng nhớ đặc biệt gọi ngăn xếp (stack) dùng vào việc quản lý thông số vi xử lý gọi chương trình trở từ chương trình
Trong thực tế vi xử lý 8086/8088 có ghi 16 bít liên quan đến địa đầu vùng (các đoạn) kể chúng gọi ghi đoạn (Segment Registers) Đó ghi đoạn mã CS (Code-Segment), ghi đoạn liệu DS (Data Sement), ghi đoạn ngăn xếp SS (Stack Segment) ghi đoạn liệu phụ ES (Extra Segment) Các ghi đoạn 16 bít địa đầu bốn đoạn nhớ, dung lượng lớn đoạn nhớ 64 Kbyte thời điểm định vi xử lý làm việc với bốn đoạn nhớ 64 Kbyte Việc thay đổi giá trị ghi đoạn làm cho đoạn dịch chuyển linh hoạt phạm vi khơng gian Mbyte Vì đoạn nằm cách thơng tin cần lưu địi hỏi dung lượng đủ 64 Kbyte nằm trùm có đoạn khơng cần dùng hết đoạn dài 64 Kbyte đoạn khác bắt đầu nối tiếp sau Điều cho phép ta truy nhập vào đoạn nhớ (64 Kbyte) nằm toàn không gian MByte
Nội dung ghi đoạn xác định địa ô nhớ nằm đầu đoạn Địa gọi địa sở Địa ô nhớ khác nằm đoạn tính cách cộng thêm vào địa sở giá trị gọi địa lệch hay độ lệch (Offset), ứng với khoảng lệch địa ô nhớ cụ thể so với đầu đoạn Độ lệch xác định ghi 16 bít khác đóng vai trị ghi lệch (offset register) mà ta trình bày sau Cụ thể, để xác định địa vật lý 20 bít ô nhớ đoạn CPU 8086/8088 phải dùng đến ghi 16 bít: ghi để chứa địa sở, chứa độ lệch Từ nội dung cặp ghi tạo địa vật lý theo cơng thức sau:
Địachỉvậtlý=Thanh_ghi_đọan×16+Thanh_ghi_lệch
Việc dùng ghi để ghi nhớ thông tin địa thực chất để tạo loại địa gọi địa logic ký hiệu sau:
Thanh_ghi_đoạn: Thanh_ghi_lệch hay segment: offset
(21)Chương II Bộ vi xử lý Intel 8086
-21-
lý để đưa lên buýt địa Việc chuyển đổi tạo địa thực (phần tử Hình II-1)
Ví dụ: cặp CS:IP địa lệnh thực đoạn mã Tại thời điểm ta có CS = F00H IP = FFF0H
CS:IP~F000Hx16 + FFF0H = F000H + FFF0H = FFFF0H
Do tổ chức nên dẫn đến tính đa trị ghi đoạn ghi lệch địa logic ứng với địa vật lý Từ địa vật lý ta tạo giá trị khác ghi đoạn ghi lệch
Ví dụ: Địa vật lý 12345H tạo từ giá trị: Thanh ghi đoạn Thanh ghi lệch
1000H 2345H
1200H 0345H
1004H 2305H
II.2 Bộ đồng xử lý tốn học 8087
Như trình bày phần trước, 8086/8088 khơng có thao tác với số thực Để làm việc này, hệ vi xử lý cần có đồng xử lý tốn học 80x87 hỗ trợ CPU việc tính tốn biểu thức dùng dấu chấm động cộng, trừ, nhân, chia số dấu chấm động, thức, logarit, … Chúng cho phép xử lý phép toán nhanh nhiều so với 8086/8088 8087 gồm đơn vị điều khiển (CU – Control Unit) dùng để điều khiển buýt đơn vị số học (NU – Numerical Unit) để thực phép toán dấu chấm động mạch tính lũy thừa (exponent module) mạch tính phần định trị (mantissa module) Khác với 8086, thay dùng ghi rời rạc ngăn xếp ghi
(22)Chương II Bộ vi xử lý Intel 8086
-22-
Đơn vị điều khiển nhận giải mã lệnh, đọc ghi toán hạng, chạy lệnh điều khiển riêng 8087 Do đó, CU đồng với CPU NU thực công việc tính tốn CU bao gồm điều khiển bt, đệm liệu hàng lệnh
Ngăn xếp ghi có tất ghi từ R0 ÷ R7, ghi dài 80 bít bít 79 bít dấu, bít 64 ÷ 78 dùng cho số mũ phần lại phần định trị Dữ liệu truyền ghi thực nhanh 8087 có độ rộng buýt liệu 84 bít khơng cần phải biến đổi định dạng Ngay sau khởi động lại PC, đồng xử lý kiểm tra xem có nối với PC hay không điều chỉnh độ dài hàng lệnh cho phù hợp với CPU (nếu dùng 8086 độ dài byte)
II.3 Tập lệnh 8086/8088
II.3.1 Khái niệm lệnh, mã hố lệnh q trình thực lệnh
Lệnh vi xử lý ghi ký tự dạng gợi nhớ (memonic) để người sử dụng để nhận biết Đối với thân vi xử lý lệnh cho mã hố dạng số (cịn gọi mã máy) dạng biểu diễn thơng tin mà máy hiểu Vì lệnh vi xử lý cho dạng mã nên sau nhận lệnh, vi xử lý phải thực việc giải mã lệnh sau thực lênh
Một lệnh có độ dài vài byte tuỳ theo vi xử lý Số lượng bít n dùng để mã hóa vi lệnh (opcode) cho biết số lượng tối đa lệnh (2n) có vi xử lý Với byte vi xử lý mã hố tối đa 256 lệnh Trong thực tế việc ghi lệnh hồn tồn đơn giản Việc mã hố lệnh cho vi xử lý phức tạp bị chi phối nhiều yếu tố khác Đối với vi xử lý 8086/8088 lệnh có độ dài từ đến byte Ta lấy trường hợp lệnh MOV để giải thích cách ghi lệnh nói chung 8086/8088
Lệnh MOV đích, gốc dùng để chuyển liệu ghi ô nhớ Chỉ nguyên với ghi 8086/8088, ta đặt ghi vào vị trí tốn hạng đích tốn hạng gốc ta thấy phải cần tới nhiều mã lệnh khác để mã hoá tổ hợp
(23)Chương II Bộ vi xử lý Intel 8086
-23-
Bít D dùng để hướng liệu D = liệu đến ghi cho bít REG bít MOD (chế độ) với bít M/R (bộ nhớ/thanh ghi) tạo bít dùng để chế độ địa cho toán hạng lệnh
Bảng cho ta thấy cách mã hoá chế độ địa (cách tìm tốn hạng bít này)
Ghi chú:
addr8, addr16 tương ứng với địa 16 bít
Các giá trị cho cột 2, 3, (ứng với MOD =00, 01, 10) địa hiệu dụng (EA) cộng với DS để tạo địa vật lý (riêng BP phải cộng với SP)
II.3.2 Các chế độ địa 8086/8088
Chế độ địa (addressing mode) cách để CPU tìm thấy tốn hạng cho lệnh hoạt động Một vi xử lý có nhiều chế độ địa Các chế độ địa xác định từ chế tạo bi xử lý sau thay đổi Bộ vi xử lý 8088 họ 80x86 nói chung có chế độ địa sau:
1 Chế độ địa gi (register addressing mode) Chế độ địa tức (immediate addressing mode) Chế độ địa trực tiếp (direct addressing mode)
(24)Chương II Bộ vi xử lý Intel 8086
-24-
6 Chế độ địa tương đối số (indexed relative addressing mode) Chế độ địa tương đối số sở (based indexed relative addressing
mode)
II.3.2.1 Chế độ địa ghi
Trong chế độ địa này, người ta dùng ghi bên CPU toán hạng để chứa liệu cần thao tác Vì thực lệnh đạt tốc độ truy nhập cao so với lệnh có truy nhập đên nhớ
Ví dụ II-1
MOV BX, DX ; chuyển nội dung DX vào BX MOV DS, AX ; chuyển nội dung AX vào DX
ADD AL, DL ; cộng nội dung AL DL đưa vào II.3.2.2 Chế độ địa tức
Trong chế độ địa này, tốn hạng đích ghi hay nhớ, cịn tốn hạng nguồn số vị trí tốn hạng sau mã lệnh Chế độ địa dùng để nạp liệu cần thao tác vào ghi (ngoại trừ ghi đoạn cờ) vào ô nhớ đoạn liệu DS
Ví dụ II-2
MOV CL, 100 ; chuyển 100 vào CL
MOV AX, 0FF0H ; chuyển 0FF0H vào AX để đưa
MOV DS, AX ; vào DS (vì khơng thể chuyểntrực tiếp vào ghi đoạn)
MOV [BX], 10 ; DS:BX II.3.2.3 Chế độ địa trực tiếp
Trong chế độ địa toán hạng chứa địa lệnh nhớ dùng chứa liệu cịn tốn hạng ghi mà khơng ô nhớ Nếu so sánh với chế độ địa tức ta thấy sau mã lệnh khơng phải tốn hạng mà địa lệch toán hạng Xét phương diện địa địa trực tiếp
Ví dụ II-3
MOV AL, [1234H] ;chuyển nhớ DS:1234 vào AL
MOV [4320H], CX ;chuyển CX vào ô nhớ liên tiếp DS:4320 DS:4321 II.3.2.4 Chế độ gián tiếp qua ghi
Trong chế độ địa toán hạng ghi sử dụng để chứa địa lệch nhớ chứa liệu, cịn tốn hạng ghi mà khơng ô nhớ (8086/8088 không cho phép quy chiếu nhớ lần lệnh)
(25)Chương II Bộ vi xử lý Intel 8086
-25-
MOV AL, [BX] ; chuyển ô nhớ có địa DS:BX vào AL MOV [SI], CL ; chuyển CL vào nhớ có địa DS:SI
MOV [DI], AX ; chuyển AX vào ô nhớ liên tiếp DS:DI DS: (DI + 1) II.3.2.5 Chế độ địa tương đối sở
Trong chế độ địa ghi sở BX BP số biểu diễn giá trị dịch chuyển (displacement values) dùng để tính địa hiệu dụng toán hạng vùng nhớ DS SS Sự có mặt giá trị dịch chuyển xác định tính tương đối địa so với địa sở
Ví dụ II-5
MOV CX, [BX] +10 ; chuyển ô nhớ liên tiếp có địa DS: [BX + 10] ; DS: [BX + 10] vào CX
MOV CX, [BX+10] ; cách viết khác lệnh MOV CX, 10 [BX] ; cách viết khác lệnh đầu MOV AL, [BP] +5 ; chuyển ô nhớ SS: [BP+5] vào AL
ADD AL, Table [BX] ; cộng AL với ô nhớ BX bảng table ; (bảng nằm DS), kết dựa vào AL Trong ví dụ trên:
10 giá trị cụ thể cho biết mức dịch chuyển toán hạng Table tên mảng biểu diễn kiểu dịch chuyển mảng (phần tử đầu tiên) so với địa đầu đoạn liệu DS
[BX + 10] [BP+5] gọi địa hiệu dụng (Effective Address EA theo cách gọi Intel)
DS: [BX + 10] SS: [BP+5] logic tương ứng với địa vật lý
Theo cách định nghĩa địa hiệu dụng phần tử thứ BX (kể từ 0) mảng Table [BX] thuộc đoạn DS EA = Table+BX phần tử EA = Table
II.3.2.6 Chế độ địa tương đối số sở
Kết hợp hai chế độ địa chỉ số sở ta có chế độ địa chỉ số sở Trong chế độ địa ta dùng ghi sở lẫn ghi số để tính địa tốn hạng Nếu ta dùng thêm thành phần biểu diễn dịch chuyển địa ta có chế độ địa phức tạp nhất: chế độ địa tương đối số sở Ta thấy chế độ địa phù hợp cho việc địa hoá mảng hai chiều
Ví dụ II-6
MOV AX, [ BX ] [SI ]+8 ;chuyển ô nhớ liên tiếp có địa
; DS:[BX+SI+8] DS:[BX+SI+9] vào AX
(26)Chương II Bộ vi xử lý Intel 8086
-26-
MOV CL, [BP+DI+5] ; chuyển ô nhớ SS:[BP+DI+5] vào CL II.3.2.7 Tổng kết chế độ địa
Các chế địa trình bày tóm tắt lại Bảng II-1 Bảng II-1 Tóm tắt chế độ địa
Chế độ địa Toán hạng Thanh ghi đoạn ngầm
định
Thanh ghi Reg
Tức Data
Trực tiếp [offset] DS
Gián tiếp qua ghi
[BX] [SI] [DI] DS DS DS
Tương đối sở [BX]+disp
[BP] +DISP
DS SS Tương đối số [DI]+Disp
[SI]+ DISP
DS DS
Tương đối số sở
[BX]+[DI]+DISP [BX]+[SI]+DISP [BP]+[DI]+DISP [BP]+[SI]+DISP DS DS SS SS
II.3.2.8 Phương pháp bỏ ngầm định ghi đoạn (segment override)
Như phần trước nói, ghi đoạn ghi lệch ngầm định kèm với cặp dùng để địa hoá toán hạng vùng khác nhớ Bảng II-2 cặp đôi ngầm định cácthan ghi đoạn ghi lệch thường dung Vì tính ngầm định nên lệnh ta cần viểt ghi lệch đủ sở để tính đia tốn hạng
Tuy nhiên, ngồi tổ hợp ngầm định kể, 8086/8088 cho phép ta làm việc với tổ hợp ngầm định kể, 8086/8088 cho phép ta làm việc với tổ hợp khác ghi đoạn ghi lệch Muốn loại vỏ tổ hợp ngầm định nói trên, viết lệnh ta phải ghi rõ ghi đoạn dùng để tính địa kèm thêm dấu chấm trước ghi lệch
Bảng II-2 Các cặp ghi đoạn ghi lệch ngầm định
Thanh ghi đoạn CS DS ES SS
Thanh ghi lệch IP SI, DI, BX DI SP, BP
(27)Chương II Bộ vi xử lý Intel 8086
-27-
Nếu ta muốn thay đổi, khơng lấy tốn hạng đoạn liệu DS, mà lại lấy toán hạng đoạn liệu phụ ES để đưa vào AL, ta phải viết lại lệnh thành
MOV AL, ES:[BX]
Trong ta dùng ES: để loại bỏ ghi đoạn ngầm định DS để rõ ghi đoạn dùng lệnh ES
II.3.3 Tập lệnh 8086/8088
Bộ xử lý 8086 có tập lệnh gồm 111 lệnh, chiều dài lệnh từ byte đến vài byte Tập lệnh 8086 hỗ trợ nhóm thao tác
II.3.3.1 Các lệnh trao đổi liệu
Các câu lệnh nhóm cho phép trao đổi liệu ghi ô nhớ hay thiết bị vào/ra với ô nhớ ghi Kích cỡ liệu cho phép với câu lệnh byte (8 bít) word (16 bít) Như câu lệnh trao đổi liệu giúp nạp liệu cần thiết cho thao tác tính tốn vi xử lý Ngồi lệnh cho phép lưu kết tính tốn nhớ thiết bị ngoại vi
Bảng II-3 Các lệnh trao đổi liệu
Mã gợi nhớ Chức
MOV Di chuyển byte hay word ghi ô nhớ
IN, OUT Đọc, ghi byte hay word cổng ô nhớ
LEA Nạp địa hiệu dụng
PUSH, POP Nạp vào, lấy word ngăn xếp XCHG Hoán đổi byte hay word
II.3.3.1.a MOV – Chuyển byte hay word
Viết lệnh: MOV Đích, Gốc Mơ tả: Đích Gốc
Trong tốn hạng đích gốc tìm theo chế độ địa khác phải có độ dài không phép đồng thời ô nhớ ghi đoạn
Lệnh khơng tác động đến cờ Ví dụ:
MOV AL, 74H ; AL 74
MOV CL, BL ; CL BL
MOV DL, [SI] ; DL [DS:SI]
(28)Chương II Bộ vi xử lý Intel 8086
-28-
II.3.3.1.b LEA - Nạp địa hiệu dụng vào ghi
Viết lệnh: LEA Đích, Gốc
Trong đó:
+ Đích thường ghi: BX, CX, DX, BP, SI, DI + Gốc tên biến đoạn DS rõ lệnh ô nhớ cụ thể Mơ tả: Đích Địa lệch Gốc,
Đích Địa hiệu dụng Gốc
Đây lệnh để tính địa lệch biến địa ô nhớ chọn làm gốc nạp vào ghi chọn
Lệnh khơng tác động đến cờ Ví dụ:
LEA DX, MSG ; nạp địa lệch tin MSG vào DX LEA CX, [BX] [DI] ; nạp vào CX địa hiệu dụng
; BX DI ra: EA =BX+DI
II.3.3.1.c IN- Đọc liệu từ cổng vào ghi ACC
Viết lệnh: IN ACC, Port Mô tả: ACC <- [Port]
Trong [Port ] liệu cổng có địa Port Port địa bít cổng, có giá trị khoảng 00H…FFH Như ta có khả sau:
+Nếu ACC AL liệu bít đưa vào từ cổng Port
+Nếu ACC AX liệu 16 bít đưa vào từ cổng Port cổng Port+1 Có cách khác để biểu diễn địa cổng thông qua ghi DX Khi dùng ghi DX để chứa địa cổng ta có khả địa cổng hố mềm dẻo Lúc địa cổng nằm dải 0000H FFFFH ta phải viết lệnh theo dạng:
IN ACC, DX
Trong DX phải gắn từ trước giá trị ứng với địa cổng Lệnh không tác động đến cờ
II.3.3.1.d OUT - Ghi liệu từ Acc cổng)
Viết lệnh: OUT Port, Acc
Mô tả: Acc [port]
Trong [port]là liệu cổng có địa Port Port địa bít cổng, có giá trị khoảng 00H FFH Như ta có khả sau:
(29)Chương II Bộ vi xử lý Intel 8086
-29-
+ Nếu Acc AX liệu 16 bít đưa cổng port cổng port +1 Có cách khác để biểu diễn địa cổng thông qua ghi DX Khi dùng ghi DX để chứa địa cổng ta có khả địa hoá cổng mềm dẻo Lúc địa cổng nằm dải 0000H FFFFH ta phải viết lệnh theo dạng:
OUT DX, Acc
Trong DX phải gán từ trước giá trị ứng với địa cổng Lệnh không tác động đến cờ
II.3.3.2 Các lệnh tính tốn số học lơ gíc
Đây nhóm lệnh thực tính tốn chủ yếu vi xử lý 8086/8088 Bảng II-4 Các lệnh số học lơ gíc
Mã gợi nhớ Chức
NOT Đảo (bù một) byte hay word
AND Phép byte word
OR Phép byte word
XOR Phép loại trừ byte word
SHL, SHR Dịch trái, dịch phải lơgíc byte hay word Số bước CL xác định
SAL, SAR Dịch trái, dịch phải số học byte hay word Số bước CL xác định
ROL, ROR Quay trái, quay phải byte hay word Số bước CL xác định
ADD, SUB Cộng trừ byte word
ADC, SBB Cộng trừ byte word có nhớ
INC, DEC Tăng, giảm
NEG Đảo byte word (bù 2)
CMP So sánh hai byte word
MUL, DIV Nhân, chia byte word khơng dấu IMUL, IDIV Nhân chia byte word có dấu
II.3.3.2.a ADD-Cộng toán hạng
Viết lệnh: ADD Đích, Gốc
Mơ tả: Đích Đích + Gốc
Trong tốn hạng đích gốc tìm theo chế độ địa khác Nhưng phải chứa liệu có độ dài không phép đồng thời nhó khơng ghi đoạn Có thể tham khảo ví dụ lệnh ADC
(30)Chương II Bộ vi xử lý Intel 8086
-30-
II.3.3.2.b MUL - Nhân số không dấu
Viết lệnh: MUL Gốc
Trong tốn hạng Gốc số nhân tìm theo chế độ địa khác
Mô tả: tuỳ theo độ dài tốn hạng Gốc ta có trường hợp tổ chức phép nhân, chỗ để ngầm định cho số bị nhân kết quả:
Nếu Gốc số bít: ALGốc,
số bị nhân phải số bít đặt AL sau nhân: AX tích,
Nếu Gốc số 16 bít: AXGốc,
số bị nhân phải số 16 bít đặt AX sau nhân: DXAX tích
Nếu byte cao (hoặc 16 bít cao) 16 (hoặc 32) bít kết chứa CF=OF=0
Như cờ CF OF báo cho ta biết bỏ số kết Ví dụ: Nếu ta cần nhân số bít với số 16 bít, ta để số 16 bít Gốc số bít AL Số bít AL cần phải mở rộng sang AH cách gán AH=0 để làm cho số bị nhân nằm AX Sau việc dùng lệnh MUL Gốc kết có cặp DXAX
Cập nhật: CF, OF
Không xác định: AF, PF, SF, ZP
II.3.3.2.c DIV – Chia số dấu
Viết lệnh: DIV Gốc
Trong tốn hạng Gốc số chia tìm theo chế độ địa khác
Mô tả: tuỳ theo độ dài tốn hạng gốc ta có trường hợp bố trí phép chia Các chỗ
để ngầm định cho số bị chia kết quả:
Nếu Gốc số bít: AX/Gốc Số bị chia phải số khơng dấu 16 bít đặt AX
Nếu Gốc số 16 bít: DXAX/Gốc Số bị chia phải số khơng dấu 32 bít đặt cặp ghi DXAX
Nếu thương số ngun làm trịn theo số ngun sát đuôi
Nếu Gốc = thương thu lớn FFH FFFFH (tuỳ theo độ dài tốn hạng Gốc) 8088 thực lệnh ngắt INT
Không xác định: AF, CF, OF, PF, SF, ZP
II.3.3.2.d CMP- So sánh byte hay word
(31)Chương II Bộ vi xử lý Intel 8086
-31-
Mơ tả: Đích – Gốc
Trong tốn hạng đích gốc tìm theo chế độ địa khác Nhưng phải chứa liệu có độ dài khơng phép đồng thời ô nhớ
Lệnh tạo cờ, không lưu kết so sánh, sau so sánh tốn hạng khơng bị thay đổi Lệnh thường dùng để tạo cờ cho lệnh nhảy có điều kiện (nhảy theo cờ)
Các cờ theo quan hệ đích gốc so sánh số không dấu: CF ZF
Đích = Gốc Đích > Gốc Đích > Gốc
Cập nhật: AF, CF, OF, PF, SF, ZP
II.3.3.2.e AND - Phép toán hạng
Viết lệnh: AND Đích, Gốc
Mơ tả: Đích - Đích, Gốc
Trong tốn hạng đích gốc tìm theo chế độ địa khác Nhưng phải chứa liệu độ dài không phép đồng thời ô nhớ không ghi đoạn Phép AND thường dùng để che đi/giữ lại vài bít tốn hạng cách nhân logic tốn hạng với tốn hạng tức có bít 0/1 chỗ cần che đi/giữ nguyên tương ứng (tốn hạng tức lúc cịn gọi mặt nạ)
Xoá: CF, OF
Cập nhật: PF, SF, ZP, PF có nghĩa tốn hạng bít
Khơng xác định: AF
Ví dụ:
AND AL, BL ;AL, AL BL theo bít AND BL, 0FH ;che bít cao BL II.3.3.3 Điều khiển, rẽ nhánh lặp
(32)Chương II Bộ vi xử lý Intel 8086
-32-
Bảng II-5 Các lệnh rẽ nhánh lặp tiêu biểu
Mã gợi nhớ Chức
JMP Nhảy không điều kiện
JA (JNBE) Nhảy lớn
JAE (JNB) Nhảy lớn JB (JNAE) Nhảy bé
JBE (JNA) Nhảy bé
JE (JZ) Nhảy nêu
JC, JNC Nhảy cờ nhớ đặt, xóa JO, JNO Nhảy cờ tràn đặt, xóa JS, JNS Nhảy cờ dấu đặt, xóa
LOOP Lặp không điều kiện, số lần lặp CX xác định LOOPE (LOOPZ) Lặp (cờ không) số lần lặp CX
xác định
LOOPNE (LOOPNZ) Lặp khơng (cờ khơng xóa) số lần lặp CX xác định
CALL, RET Gọi hàm, trở từ hàm
INT Ngắt mềm
IRET Quay trở từ đoạn chương trình ngắt
II.3.3.3.a JMP - Nhảy (vơ điều kiện) đến đích
Lệnh khiến cho vi xử lý 8086/8088 bắt đầu thực lệnh địa mô tả lệnh Lệnh phân biệt nhảy xa nhảy gần theo vị trí câu lệnh Tuỳ thuộc vào độ dài bước nhảy phân biệt kiểu lệnh nhảy gần nhảy xa với độ dài lệnh khác Lệnh nhảy đến nhãn ngắn shortlabel lệnh nhảy tương đối Nơi đến phải nằm phạm vi từ -128 đến +127 so với vị trí lệnh nhảy Tốn hạng nguồn lệnh byte độ dời để cộng thêm vào ghi IP Byte độ dời mở rộng dấu trước cộng vào ghi IP
- Ví dụ :
JMP SHORT 18h JMP 0F008h
JMP DWORD PTR [3000h] Lệnh không tác động đến cờ
II.3.3.3.b LOOP -Lặp lại đoạn chương trình nhãn CX=0
(33)Chương II Bộ vi xử lý Intel 8086
-33-
Lệnh dùng để lặp lại đoạn chương trình (gồm lệnh nằm khoảng từ nhãn NHAN đến hết lệnh LOOP NHAN) số lần lặp CX=0 Điều có nghĩa trước vào vịng lặp ta phải đưa số lần lặp mong muốn vào ghi CX sau lần thực lệnh LOOP NHAN đồng thời CX tự động giảm (CX CX-1)
Lệnh không tác động đến cờ II.3.3.4 Điều khiển vi xử lý
Các câu lệnh tác động lên ghi cờ thay đổi trạng thái hoạt động vi xử lý Bảng II-6 Các lệnh điều khiển vi xử lý tiêu biểu
Mã gợi nhớ Chức
STC, CLC, CMC Lập, xóa cờ nhớ STD, CLD Lập xóa cờ hướng
STI, CLI Lập xóa cờ cho phép ngắt
PUSHF, POPF Nạp vào, lấy ghi cờ tới/từ ngăn xếp
NOP Khơng làm
WAIT Chờ tín hiệu TEST
HLT Treo vi xử lý
II.4 Ngắt xử lý ngắt 8086/8088
II.4.1 Sự cần thiết phải ngắt CPU
Ngắt việc tạm dừng việc chương trình chạy để CPU chạy chương trình khác nhằm xử lý yêu cầu bên đưa tới CPU yêu cầu vào/ra yêu cầu bên CPU lỗi tính tốn Trong cách tổ chức trao đổi liệu thơng qua việc thăm dị trạng thái sẵn sàng thiết bị ngoại vi, trước tiến hành trao đổi liệu CPU phải dành toàn thời gian vào việc xác định trạng thái sẵn sàng làm việc thiết bị ngoại vi Để tận dụng khả CPU để làm thêm nhiều công việc khác nữa, có yêu cầu trao đổi liệu u cầu CPU tạm dừng cơng việc để phục vụ việc trao đổi liệu Sau hồn thành việc trao đổi dữliệu CPU lại phải quay để làm tiếp công việc bị gián đoạn
Khi nghiên cứu tín hiệu CPU8086/ 8088, vi mạch có chân tín hiệu cho yêu cầu ngắt che INTR khơng che NMI, chân sử dụng vào việc đưa yêu cầu ngắt từ bên đến CPU
II.4.2 Các loại ngắt hệ 8088
Trong hệ vi xử lý 8088 xếp nguyên nhân gây ngắt CPU vào nhóm sau:
(34)Chương II Bộ vi xử lý Intel 8086
-34-
ảnh hưởng trực tiếp tới trạng thái cờ IF vi xử lý, tức ảnh hưởng tới việc CPU có nhận biết yêu cầu ngắt chân hay không Yêu cầu ngắt chân INTR có kiểu ngắt N nằm khoảng 0-FFH Kiểu ngắt phải đưa vào buýt liệu để CPU đọc có xung chu kỳ trả lời chấp nhận ngắt
Nhóm ngắt mềm: CPU thực lệnh ngắt dạng INT N, N số hiệu (kiểu) ngắt nằm khoảng 00-FFH (0-255)
Nhóm tượng ngoại lệ: ngắt lỗi nảy sinh trình hoạt động CPU phép chia cho 0, xảy tràn tính tốn
u cầu ngắt CPU kiểm tra thường xuyên chu kỳ đồng hồ cuối lệnh Bảng II-1 trình bày cách đơn giản để đưa số hiệu ngắt N vào buýt liệu tạo yêu cầu ngắt đưa vào chân INTR vi xử lý 8086/8088
Giả thiết thời điểm định có yêu cầu ngắt IRi tác động có xung yêu cầu ngắt đến CPU Tín hiệu IRi đồng thời đưa qua mạch khuếch đại đệm để tạo số hiệu ngắt tương ứng, số hiệu ngắt CPU đọc vào đưa tín hiệu trả lời
Bảng II-7 Quan hệ IRi số hiệu ngắt N tương ứng
IR6 IR5 IR4 IR3 IR2 IR1 IR0 N
1 1 1 FEH (254)
1 1 1 FDH (253)
1 1 1 FBH (251)
1 1 1 F7H (247)
1 1 1 EFH (239)
1 1 1 DFH (223)
0 1 1 1 BFH (191)
II.4.3 Đáp ứng CPU có yêu cầu ngắt
Khi có yêu cầu ngắt kiểu N đến CPU yêu cầu phép, CPU thực công việc sau:
1 SP SP-2, [SP] FR, [SP] nhớ SP
(chỉ đỉnh ngắn xếp, cất ghi cờ vào đỉnh ngăn xếp) IF 0, TF
(cấm ngắt khác tác động vào CPU, cho CPU chạy chế độ bình thường)
3 SP SP-2, [SP] CS
(chỉ đỉnh ngăn xếp, cất phần địa đoạn địa trở vào đỉnh ngăn xếp)
(35)Chương II Bộ vi xử lý Intel 8086
-35-
(chỉ đỉnh ngăn xếp, cất phần địa lệch địa trờ vào đỉnh ngăn xếp)
5 [N*4] IP, [N*4+2] CS
(lấy lệnh địa chương trình phục vụ ngắt kiểu N tương ứng bảng vectơ ngắt)
6 Tại cuối chương trình phục vụ ngắt, gặp lệnh IRET [SP] IP, SP SP+2
[SP] CS, SP SP+2 [SP] FR, SP SP+2
(bộ vi xử lý quay lại chương trình địa trở với giá trị cũ ghi cờ lấy từ ngăn xếp)
Về mặt cấu trúc chương trình, có ngắt xảy chương trình tạm dừng việc thực lưu ghi cần thiết ghi cờ Sau trỏ lệnh CPU trỏ tới đoạn mã chương trình phục vụ ngắt Khi chương trình phục vụ ngắt kết thúc, CPU khôi phục lại trạng thái ghi chương trình đặt trỏ lệnh vị trí bị ngừng phục vụ ngắt Dưới danh sách số kiểu ngắt đặc biệt xếp vào đầu dãy ngắt mềm INT N sau:
+ INT 0: Ngắt mềm phép chia cho số gây ra,
+ INT1: Ngắt mềm để chạy lệnh ứng với trường hợp cờ TF=1, + INT2: Ngắt cứng tín hiệu tích cực chân NMI gây ra,
+ INT3: Ngắt mềm để đặt điểm dừng chương trình địc + IN T4: (Hoặc lệnh INTO): ngắt mềm ứng với trường hợp cờ tràn OF=1
Các kiểu ngắt khác cịn lại dành cho nhà sản xuất cho người sử dụng định nghĩa:
+ INT 5-INT 1FH; dành riêng cho Intel vi xử lý cao cấp khác, + INT 20H-INT FFH: dành cho người sử dụng
(36)Chương II Bộ vi xử lý Intel 8086
-36-
Bảng II-8 Bảng vectơ ngắt 8086/8088 1KB RAM 03FEH-03FFH CS chương trình phục vụ ngắt INT FFH 03FCH-03FDH IP chương trình phục vụ ngắt INT FFH 0082H-0083H CS chương trình phục vụ ngắt INT 20H 0080H-0081H IP chương trình phục vụ ngắt INT 20H 000AH-000BH CS chương trình phục vụ ngắt INT 0008H-0009H IP chương trình phục vụ ngắt INT 0006H-0007H CS chương trình phục vụ ngắt INT 0004H-0005H IP chương trình phục vụ ngắt INT 0002H-0003H CS chương trình phục vụ ngắt INT 0000H-0001H IP chương trình phục vụ ngắt INT II.4.4 Xử lý ưu tiên ngắt
Có vấn đề thực tế đặt thời điểm có nhiều yêu cầu ngắt thuộc loại ngắt khác địi hỏi CPU phục vụ CPU phải có chế để xử lý yêu cầu ngắt Cơ chế phổ biến chia ngắt theo mức ưu tiên CPU 8086/8088 có khả phân biệt mức ưu tiên khác cho loại ngắt (theo thứ tự từ cao xuống thấp) sau:
+ ngắt trong: INT (phép chia cho 0), INT N, INTO cao + ngắt không che NMI
+ ngắt che INTR
+ ngắt để chạy lệng INT thấp
(37)Chương III.Lập trình hợp ngữ với 8086/8088 III.1 Giới thiệu khung chương trình hợp ngữ
III.1.1 Cú pháp chương trình hợp ngữ
Một chương trình hợp ngữ bao gồm dịng lệnh, dịng lệnh lệnh thật dạng ký hiệu (symbolic), mà đơi cịn gọi dạng gợi nhớ (mnemonic) vi xử lý, hướng dẫn cho chương trình dịch (assembler directive) Lệnh gợi nhớ dịch mã máy hướng dẫn cho chương trình dịch khơng dịch có tác dụng dẫn riêng thực cơng việc Các dịng lệnh viết chữ hoa chữ thường chúng coi tương đương dịng lệnh chương trình dịch khơng phân biệt kiểu chữ
Một dịng lệnh chương trình hợp ngữ có trường sau (khơng thiết phải có đủ hết tất trường):
Tên Mã lệnh Các toán dạng Chú giải Một ví dụ dịng lệnh gợi nhớ:
TIEP: MOV AH, [BX] [SI] ; nạp vào AH nhớ có địa DS: (BX+SI)
Trong ví dụ trên, trường tên ta có nhãn TIEP, trường mã lệnh ta có lệnh MOV, trường tốn hạng ta có ghi AH, BX SI phần giải gồm có dịng
; nạp vào AH nhớ có địa DS: (BX+SI)
Một ví dụ khác dịng lệnh với hướng dẫn cho chương trình dịch:
MAIN PROC
MAIN ENDP
Trong ví dụ này, trường tên ta có tên thủ tục MAIN, trường mã lệnh ta có lệnh giả PROC ENDP Đây lệnh giả dùng để bắt đầu kết thúc thủ tục có tên MAIN
a) Trường tên
Trường tên chứa nhãn, tên biến tên thủ tục Các tên nhãn chương trình dịch gán địa cụ thể nhớ Tên nhẵn có độ dài 31 ký tự, không chứa dấu cách không bắt đầu số Các ký tự đặc biệt khác dùng tên ? @_$% Nếu dấu chấm (' ') dùng phải đặt vị trí tên Một nhãn thường kết thúc dấu hai chấm (:)
(38)Chương III Lập trình hợp ngữ với 8086/8088
-38-
Trong trường mã lệnh nói chung có lệnh thật lệnh giả Đối với lệnh thật trường chứa mã lệnh gợi nhớ Mã lệnh chương trình dịch dịch mã máy Đối với hướng dẫn chương trình dịch trường chứa lệnh giả không dịch mã máy
c) Trường toán hạng
Đối với lệnh trường chứa tốn hạng lệnh Tùy theo loại lệnh mà ta có 0, tốn hạng lệnh Trong trường hợp lệnh với toán hạng thơng thường ta có tốn hạng đích gốc, cịn trường hợp lệnh với tốn hạng ta có tốn hạng đích toán hạng gốc
Đối với hướng dẫn chương trình dịch trường chứa thơng tin khác liên quan đến lệnh giả hướng dẫn
d) Trường giải
Lời giải thích trường giải phải bắt đầu dấu chấm phẩy (;) Trường giải dành riêng cho người lập trình để ghi lời giải thích cho lệnh chương trình với mục đích giúp cho người đọc chương trình dễ hiểu thao tác chương trình Thơng thường lời giải cần phải mang đủ thơng tin để giải thích thao tác lệnh hoàn cảnh cụ thể có ích cho người đọc
III.1.2 Dữ liệu cho chương trình
Dữ liệu chương trình hợp ngữ đa dạng Các liệu cho dạng số hệ hai, hệ mười, hệ mười sáu dạng ký tự Khi cung cấp số liệu cho chương trình, số cho hệ phải kèm hệ (trừ hệ mười khơng cần trường hợp ngầm định assembler) Riêng số hệ mười sáu số bắt đầu chữ (a f A F) ta phải thêm trước để chương trình dịch hiểu số hệ mười sáu tên nhãn
Ví dụ số viết đúng:
0011B ; Số hệ hai
1234 ; Số hệ mười
0ABBAH ; Số hệ mười sáu 1EF1H ; Số hệ mười sáu
Nếu liệu ký tự chuỗi ký tự chúng phải đóng cặp dấu trích dẫn đơn kép, thí dụ 'A' hay "abcd" Chương trình dịch dịch ký tự mã ASCII tương ứng Vì cung cấp liệu kiểu ký tự cho chương trình ta dùng thân ký tự đóng dấu trích dẫn mã ASCII Ví dụ, ta sử dụng liệu ký tự "0" mã ASCII tương ứng 30H, ta dùng '$' 26H 34
III.1.2.1Biến
(39)Chương III Lập trình hợp ngữ với 8086/8088
-39-
một địa định nhớ Để định nghĩa kiểu liệu khác ta thường dùng lệnh giả sau:
DB (define byte) : định nghĩa biến kiểu byte DW (define word) : định nghĩa biến kiểu từ DD (define double word) : định nghĩa biến kiểu từ kép a) Biến byte
Biến kiểu byte chiếm byte nhớ Hướng dẫn chương trình dịch để định nghĩa biến kiểu byte có dạng tổng quát sau:
Tên DB giá_ trị_khởi_đầu
Ví dụ:
B1 DB
Ví dụ định nghĩa biến byte có tên B1 dành byte nhớ cho để chứa giá trị khởi đầu
Nếu lệnh ta dùng dấu? thay vào vị trí số biến B1 dành chỗ nhớ không gán giá trị khởi đầu Cụ thể dòng lệnh giả:
B2 DB ?
chỉ định nghĩa biến byte có tên B2 dành cho byte nhớ
Một trường hợp đặc biệt biến byte biến ký tự Ta có định nghĩa biến kỳ tự sau:
C1 DB ' $'
C2 DB 34
b) Biến từ
Biến từ định nghĩa theo cách giống biến byte Hướng dẫn chương trình dịch để định nghĩa biến từ có dạng sau:
Tên DB giá_ trị_khởi_đầu
Ví dụ:
W1 DW 40
Ví dụ định nghĩa biến từ có tên W1 dành byte nhớ cho để chứa giá trị khởi đầu 40
Chúng ta sử dụng dấu? để định nghĩa dành byte nhớ cho biến từ W2 mà khơng gán giá trị đầu cho dòng lệnh sau:
W2 DW ?
c) Biến mảng
(40)Chương III Lập trình hợp ngữ với 8086/8088
-40- Ví dụ:
M1 DB 4, 5, 6, 7, 8,
Ví dụ định nghĩa biến mảng có tên M1 gồm byte dành chỗ cho nhớ từ địa ứng với M1 để chứa giá trị khởi đầu 4, 5, 6, 7, 8, Phần tử đầu tỏng mảng có địa trùng với địa M1, phần tử thứ hai có địa M1+1
Khi muốn khởi đầu phần tử mảng với giá trị dùng thêm tốn tử DUP lệnh
Ví dụ:
M2 DB 100 DUP (0) M3 DB 100 DUP (?)
Ví dụ định nghĩa biến mảng tên M2 gồm 100 byte, dành chỗ nhớ cho để chứa 100 giá trị khởi đầu biến mảng khác tên M3 gồm 100byte, dành sẵn chỗ cho nhớ để chứa 100 giá trị chưa khởi đầu
Tốn tử DUP lồng để định nghĩa mảng Ví dụ: dịng lệnh
M4 DB 4, 3, 2, DUP(1, DUP(5), 6) Sẽ định nghĩa mảng M4 tương đương với lệnh sau: M4 DB 4, 3, 2, 1, 5, 5, 6, 1, 5, 5,
Một điều cần ý vi xử lý Intel, ta có từ đặt nhớ byte thấp đặt vào nhớ có địa thấp, byte cao đặt vào ô nhớ có địa cao Cách lưu giữ số liệu kiểu cịn thấy máy VAX Digital số hãng khác thường gọi 'quy ước đầu bé' (little endian, byte thấp cất địa thấp) Cũng nên nói thêm vi xử lý motorola lại có cách cất số liệu theo thứ tự ngược lại hay gọi 'quy ước đầu to' (big endian byte cao cất địa thấp)
Ví dụ: Sau định nghĩa biến từ có tên WORDA sau:
WORDA DW 0FFEEH
Thì nhớ thấp (EEH) để địa WORDA byte cao (FFH) để địa tiếp theo, tức WORDA+1
d) Biến kiểu xâu kí tự
Biến kiểu xâu kí tự trường hợp đặc biệt biến mảng, phần tử mảng kí tự Một xâu kí tự định nghĩa kí tự mã ASCII kí tự Các ví dụ sau lệnh định nghĩa xâu kí tự gắn cho tên khác nhau:
STR1 DB 'string'
(41)Chương III Lập trình hợp ngữ với 8086/8088
-41- STR3 DB 73h, 74h, 'x' 'i', 6Eh, 67h e) Hằng có tên
Các chương trình hợp ngữ thường gán tên để làm cho chương trình trở nên dễ đọc Hằng kiểu số hay kiểu ký tự Việc gán tên cho thực nhờ lệnh giả EQU sau:
CR EQU 0Dh ;CR carriage return LE EQU 0Ah ;LF line feed
Trong ví dụ lệnh giả EQU gán giá trị số 13 (mã ASCII kí tự trở đầu dòng) cho tên CR 10 (mã ASCII ký tựu thêm dòng mới) cho tên LF
Hằng chuỗi ký tự ví dụ sau gán chuỗi ký tự cho tên:
CHAO EQU 'Hello'
ta sử dụng để định nghĩa biến mảng khác MSG DB CHAO, '$'
Vì lệnh giả EQU khơng dành chỗ nhớ cho tên nên ta đặt tự chỗ thích hợp bên chương trình Tuy nhiên thực tế người ta thường đặt định nghĩa đoạn liệu
III.1.2.2Khung chương trình hợp ngữ
Một chương trình mã máy nhớ thường bao gồm vùng nhớ khác để chứa mã lệnh, chứa liệu chương trình vùng nhớ khác dùng làm ngăn xếp phục vụ hoạt động chương trình Chương trình viết hợp ngữ phải có cấu trúc tương tự để dịch tạo mã tương ứng với chương trình mã máy nói Để tạo sườn chương trình hợp ngữ sử dụng cách định nghĩa đơn giản mơ hình nhớ dành cho chương trình ghi đoạn
III.1.2.2.aKhai báo quy mơ sử dụng nhớ
Kích thước nhớ dành cho đoạn mã đoạn liệu chương trình xác định nhờ hướng dẫn chương trình dịch MODEL sau (hướng dẫn phải đặt trước hướng dẫn khác chương trình hợp ngữ, sau hướng dẫn loại CPU):
MODEL Kiểu_ kích_thước_bộ_nhớ
Có nhiều Kiểu_ kích_thước_bộ_nhớ cho chương trình với địi hỏi dung lượng nhớ khác Đối với ta thông thường ứng dụng địi hỏi mã chương trình dài cần chứa đoạn (64KB), liệu cho chương trình nhiều cần chứa đoạn, thích hợp nên chọn Kiểu_ kích_thước_bộ_nhớ Small (nhỏ) tất mã liệu gói trọn đoạn chọn Tiny (hẹp):
(42)Chương III Lập trình hợp ngữ với 8086/8088
-42-
Ngồi Kiểu_ kích_thước_bộ_nhớ nhỏ hẹp nói trên, tuỳ theo nhu cầu cụ thể MASM cho phép sử dụng Kiểu_ kích_thước_bộ_nhớ khác liệt kê Bảng III-1
Bảng III-1 Các kiểu kích thước nhớ cho chương trình hợp ngữ
Kiểu kích thước Mô tả
Tiny (Hẹp) Mã lệnh liệu gói gọn đoạn
Small (Nhỏ) Mã lệnh gói gọn đoạn, liệu nằm đoạn
Medium (Trung bình)
Mã lệnh khơng gói gọn đoạn, liệu nằm đoạn
Compact(Gọn) Mã lệnh khơng gói gọn đoạn, liệu khơng gói gọn đoạn
Large (lớn)
Mã lệnh khơng gói gọn đoạn, liệu khơng gói gọn đoạn, khơng có mảng lớn 64KB
Huge (Đồ sộ)
Mã lệnh khơng gói gọn đoạn, liệu khơng gói gọn đoạn, mảng lớn 64KB
III.1.2.2.bKhai báo đoạn ngăn xếp
Việc khai báo đoạn ngăn xếp để dành vùng nhớ đủ lớn dùng làm ngăn xếp phục vụ cho hoạt động chương trình có chương trình Việc khai báo thực nhờ hướng dẫn chương trình dịch sau
Stack Kích_thước
Kích_thước định số byte dành cho ngăn xếp Nếu ta khơng khai Kích_thước chương trình dịch tự động gán cho Kích_thước giá trị KB, kích thước ngăn xếp lớn ứng dụng thơng thường Trong thực tế tốn ta thông thường với 100-256 byte đủ để làm ngăn xếp ta khai báo kích thước sau:
Stack 100 Khai báo đoạn liệu
Đoạn liệu chứa toàn định nghĩa cho biến chương trình Các nên định nghĩa để đảm bảo tính hệ thống ta để chúng chương trình nói phần
Việc khai báo đoạn liệu thực nhờ hướng dẫn chương trình dịch DATA, việc khai báo thực tiếp sau lệnh thích hợp Điều minh hoạ thí dụ đơn giản sau:
Data
(43)Chương III Lập trình hợp ngữ với 8086/8088
-43-
CR DB 13
LF EQU 10
III.1.2.2.cKhai báo đoạn mã
Đoạn mã chứa mã lệnh chương trình Việc khai báo đoạn mã thực nhờ hướng dẫn chương trình dịch CODE sau:
CODE
Bên đoạn mã, dòng lệnh phải tổ chức cách hợp lý, ngữ pháp dạng chương trình (CTC) cần thiết kèm theo chương trình (ctc) Các chương trình gọi lệnh CALL có mặt bên chương trình
Một thủ tục định nghĩa nhờ lệnh giả PROC ENDP Lệnh giả PROC để bắt đầu thủ tục lệnh giả ENDP dùng để kết thúc Như chương trình định nghĩa lệnh giả PROC ENDP theo mẫu sau:
Tên_CTC Proc
; Các lệnh thân chương trình CALL Tên_ ctc; gọi ctc
Tên_CTC Endp
Giống chương trình định nghĩa dạng thủ tục nhờ lệnh giả PROC ENDP theo mẫu sau:
Tên_ctc Proc
; lệnh thân chương trình RET
Tên_ctc Endp
Trong chương trình nói trên, ngồi lệnh giả có tính nghi thức bắt buộc ta cần ý đến bố trí lệnh gọi (CALL) chương trình lệnh (RET) chương trình
III.1.2.2.dKhung chương trình hợp ngữ để dịch chương trình EXE
Từ khai báo đoạn chương trình nói ta xây dựng khung tổng quát cho chương trình hợp ngữ với kiểu kích thước nhớ nhỏ Sau khung cho chương trình hợp ngữ để sau dịch (assembled), nối (linked) máy IBM PC tạo tệp chương trình chạy (executable) với đuôi EXE
Model small Stack 100 Data
(44)Chương III Lập trình hợp ngữ với 8086/8088
-44- Code
MAIN Proc
; Khởi đầu cho DS MOV AX, @Data MOV DS, AX
; Các lệnh chương trình để ; Trở DOS dùng hàm 4CH INT 21H MOV AH, 4CH
INT 21 H MAIN Endp
; chương trình (nếu có) để END MAIN
Trong khung chương trình trên, dịng cuối chương trình ta dùng hướng dẫn chương trình dịch END MAIN để kết thúc tồn chương trình Ta có nhận xét MAIN tên chương trình quan trọng thực chất nơi bắt đầu lệnh chương trình đoạn mã
Khi chương EXE nạp vào nhớ Hệ điều hành DOS tạo mảng gồm 256 byte gọi đoạn mào đầu chương trình (Program Segment Prefix - PSP) dùng để chứa thông tin liên quan đến chương trình ghi DS ES Do DS ES không chứa giá trị địa đoạn liệu cho chương trình Để chương trình chạy ta phải có lệnh sau để khởi đầu cho ghi DS (hoặc ES cần):
MOV AX, @Data MOV DS, AX
Trong @Data tên đoạn liệu Data định nghĩa hướng dẫn chương trình dịch dịch tên @Data thành giá trị số đoạn liệu Ta phải dùng ghi AX làm trung gian cho việc khởi đầu DS vi xử lý 8086/8088, Vì lí kỹ thuật, khơng cho phép chuyển giá trị số (chế độ địa tức thì) vào ghi đoạn Thanh ghi AX thay ghi khác
Sau ví dụ chương trình hợp ngữ viết để dịch chương trình với EXE cho chạy, chương trình lên hình lời chào 'Hello' nằm hai dịng trống cách dòng mang dấu nhắc DOS
Ví dụ III-1 Chương trình Hello EXE Model Small
Stack 100 Data
CRLF DB 13, 10, ' $ '
MSG DB ' Hello!$ '
Code MAIN Proc
; khởi đầu ghi DS
(45)Chương III Lập trình hợp ngữ với 8086/8088
-45-
MOV DS, AX
; đầu dòng dùng hàm INT 21H
MOV AH,
LEA DX, CRLF
INT 21H
; thị lời chào dùng hàm INT 21H
MOV AH,
LEA DX, MSG
INT 21H
; đầu dòng dùng hàm INT 21H
MOV AH,
LEA DX, CFLF
INT 21H
; trở DOS dùng hàm INT 21H
MOV AH, 4CH
INT 21H
MAIN Endp
END MAIN
Trong ví dụ sử dụng dịch vụ có sẵn (các hàm 4CH) ngắt INT 21H DOS máy IBM PC để thị xâu ký tự trở DOS cách thuận lợi
III.1.2.2.e Khung chương trình hợp ngữ để dịch chương trình COM
Nhìn vào khung chương trình hợp ngữ để dịch tệp chương trình EXE ta thấy có mặt đầy đủ đoạn Trên máy tính IBM PC ngồi tệp chương trình với EXE Chúng ta cịn có khả dịch chương trình hợp ngữ có kết cấu thích hợp loại tệp chương trình chạy kiểu khác với đuôi COM Đây chương trình ngắn gọn đơn giản nhiều so với tệp chương trình EXE, đoạn mã, đoạn liệu đoạn ngăn xếp gộp lại đoạn đoạn mã Như ta có ứng dụng mà liệu mã chương trình khơng u cầu nhiều khơng gian nhớ, ta ghép ln liệu, mã chương trình ngăn xếp chung vào đoạn mã tạo tệp COM Với việc tạo tệp tiết kiệm khơng gian nhớ phải lưu trữ ổ đĩa Để dịch chương trình COM chương trình nguồn hợp ngữ phải kết cấu cho thích hợp với mục đích
(46)Chương III Lập trình hợp ngữ với 8086/8088
-46- Ví dụ III-2 Khung chương trình COM Model Tiny
Code
ORG 100h
START: JMP CONTINUE
; định nghĩa cho biến để
CONTINUE:
MAIN Proc
; lệnh chương trình để INT 20H ; Trở DOS
MAIN Endp
; chương trình (nếu có) để END START
So sánh khung với khung cho chương trình EXE ta thấy khung khơng có khai báo đoạn ngăn xếp đoạn liệu, khai báo quy mô sử dụng nhớ kiểu Tiny Ở đầu đoạn mã lệnh giả ORG (origin: điểm xuất phát) lệnh JMP (nhảy) Lệnh giả ORH 100H dùng để gán địa bắt đầu cho chương trình 100H đoạn mã, chừa lại vùng nhớ với dung lượng 256 byte (từ địa đến địa 255) cho đoạn mào đầu chương trình (PSP)
Lệnh JMP sau nhãn START dùng để nhảy qua phần nhớ dành cho việc định nghĩa khai báo liệu (về nguyên tắc, liệu đặt đầu cuối đoạn mã, ta đặt đầu đoạn mã để áp dụng định nghĩa đơn giản nói) Đích lệnh nhảy phần đầu chương trình Hình III-1 biểu diễn việc chương trình kiểu COM nạp vào xếp đoạn mã nhớ
Theo Hình III-1 ta thấy chương trình COM nạp vào nhớ sau vùng PSP chương trình EXE Ngăn xếp cho chương trình COM xếp đặt cuối đoạn mã, đỉnh ngăn xếp lúc ban đầu nhớ có địa FFFEH
Trong trường hợp chương trình kiểu COM bị hạn chế
Dung lượng nhớ cực đại đoạn 64KB, tức ta phải ln chắn chương trình ứng dụng phải có số lượng byte mã máy liệu cho chương trình khơng lớn
(47)Chương III Lập trình hợp ngữ với 8086/8088
-47- Địa lệch
000H Đoạn đầu chương trình (PSP)
0100H JMP CONTINUE IP
Dữ liệu nằm
FFFEH
CONTINUE:
(chiều tiến mã & liệu)
(chiều tiến ngăn xếp)
SP
Hình III-1 Tệp chương trình COM nhớ
Tóm lại phải chắn đảm bảo xảy tượng trùm vào thông tin vùng mã lệnh liệu Khi kết thúc chương trình kiểu COM, để trở DOS ta dùng ngắt INT 20H DOS để làm cho chương trình gọn Tất nhiên ta dùng hàm 4CH ngắt INT 21H dùng chương trình để dịch tệp EXE
Để kết thúc tồn chương trình ta dùng hướng dẫn chương dịch END kèm theo nhãn START tương ứng với địa lệnh chương trình đoạn mã
Sau ví dụ chương trình hợp ngữ để dịch tệp chương trình chạy với COM
Ví dụ III-3 Chương trình Helo COM Model Tiny Code ORG 100H
START: IMP CONTINUE CRLF DB 13, 10, '$' MSG DB !Hello! $' CONTINUE:
MAIN Proc
; đầu dòng dùng hàm INT 21H
MOV AH,
LEA DX, CRLF
(48)Chương III Lập trình hợp ngữ với 8086/8088
-48- ; thị lời chào
MOV AH,
LEA DX, CRLF
INT 21H
; trở DOS
INT 20H
MAIN Endp
END START
Trong Ví dụ III-3 ta không cần đến thao tác khởi đầu cho ghi DS, ta phải làm Ví dụ III-1, chương trình COM khơng có đoạn liệu nằm riêng rẽ
Cuối để kết thúc phần nói chương trình kiểu COM EXE ta đưa hình ảnh chương trình chúng tải vào nhớ để tiện so sánh (Hình III-2)
III.2 Cách tạo chạy chương trình hợp ngữ
Như nói phần trước, máy IBM PC phương tiện lý tưởng để tạo thử nghiệm chương trình hợp ngữ 8086/88 Các bước để làm cơng việc liệt kê sau:
1 Dùng phần mềm soạn thảo văn (SK, NCedit ) để tạo tệp văn chương trình gốc hợp ngữ Tệp phải gán đuôi ASM
2 Dùng chương trình dịch MASM để dịch tệp ASM mã máy dạng tệp OBJ Nếu bước chương trình có lỗi cú pháp ta phải quay lại bước để sửa lại chương trình gốc
Chương trình
PSP 100h
SS CS DS ES
Chương trình
PSP Stack
100h
.COM EXE
(49)Chương III Lập trình hợp ngữ với 8086/8088
-49-
3 Dùng chương trình LINK để nối hay nhiều tệp OBJ lại với thành tệp chương trình chạy với EXE
4 Nếu chương trình gốc viết để dịch kiểu COM ta phải dùng chương trình EXE2BIN (đọc EXEtoBIN) DOS để dịch tiếp tệp EXE tệp chương trình chạy với COM
5 Cho chạy chương trình vừa dịch
III.3 Các cấu trúc lập trình
Ngày nay, tiến hành việc thiết kế hệ thống người ta thường dùng phương pháp
thiết kế từ xuống Bản chất phương pháp thiết kế ta chia chương
trình tổng thể thành khối chức nhỏ hơn, khối chức nhỏ lại chia tiếp thành khối chức nhỏ nữa, việc phân chia chức phải làm khối nhỏ trở thành khối chức đơn giản dễ thực
Trong thực khối chức thành phần, thông thường người ta sử dụng cấu trúc lập trình để thực nhiệm cụ khối Điều làm cho chương trình viết trở thành có cấu trúc với ưu điểm dễ phát triển, dễ hiệu chỉnh cải tiến dễ lập tài liệu
Tạo tệp văn chương trình *.asm
Dùng MASM để dịch mã máy *.obj
Dùng LINK để nối tệp obj lạithành *.exe
Dịch ra.com?
Dùng EXE2BIN để dịch *.exe thành *.com
Cho chạy chương trình
s đ
(50)Chương III Lập trình hợp ngữ với 8086/8088
-50-
Để giải công việc khác thông thường viết chương trình ta cần đến cấu trúc lập trình sau:
+ Cấu trúc
+ Cấu trúc lựa chọn (IF-THEN-ELSE) + Cấu trúc lặp (WHILE DO)
Thay đổi cấu trúc chút ít, ta tạo thêm cấu trúc khác có tác dụng viết chương trình:
+ cấu trúc chọn kiểu IF-THEN + cấu trúc chọn kiểu CASE,
+ cấu trúc lặp kiểu REPEAT-UNTIL + cấu trúc lặp kiểu FOR-DO
Đặc điểm chung tất cấu trúc lập trình tính cấu trúc chi có lối vào cấu trúc lối để khỏi cấu trúc
III.3.1.1Cấu trúc
Cấu trúc tuấn tự cấu trúc thông dụng đơn giản Trong cấu trúc lệnh xếp tuần tự, lệnh lệnh Sau thực xong lệnh cuối cấu trúc cơng việc phải làm hoàn tất
Ngữ pháp:
Lệnh
Lệnh
Lệnh n Bài tập III-1
Các ghi CX BX chứa giá trị biến c b Hãy tính giá trị biểu thức a = 2(c+b) chứa kết ghi AX
Giải
Ta thực cơng việc mẫu chương trình sau: XOR AX, AX ;tổng AX lúc đầu ADD AX, BX ;cộng thêm b
ADD AX, CX ;cộng thêm c
(51)Chương III Lập trình hợp ngữ với 8086/8088
-51- III.3.1.2Cấu trúc IF - THEN
IF Điều kiện THEN công việc
Từ ngữ pháp cấu trúc IF-THEN ta thấy thoả mãn Điều kiện Cơng việc thực khơng Cơng việc bị bỏ qua Điều tương đương với việc dùng lệnh nhảy có điều kiện để bỏ qua thao tác náo chương trình hợp ngữ
Bài tập III-2
Gán cho BX giá trị tuyệt đối AX Giải
Để thực phép gán BX AX ta dùng lệnh sau:
CMP AX, ; AX<0?
JNL GAN ; không, gán
NEG AX ; đào dấu,
GAN: MOV BX, AX ; lối cấu trúc III.3.1.3Cấu trúc IF - THEN - ELSE
IF ĐiềuKiện THEN CôngViệc1 ELSE CôngViệc2
Từ ngữ pháp cấu trúc IF-THEN-ELSE ta thấy thoả mãn Điều kiện Cơngviệc1 thực khơng Cơngviệc2 thực Điều tương đương với việc dùng lệnh nhảy có điều kiện không điều kiện để nhảy đến nhãn chương hợp ngữ
Bài tập III-3
Gán cho CL giá trị bít dấu AX Giải
Ta thực cơng việc mẩu chương trình sau:
Điều kiện
Công việc S
ai Đ
úng
Hình III-6.Cấu trúc IF-THEN
Điều kiện S
ai
Đ
úng Công việc Công việc
(52)Chương III Lập trình hợp ngữ với 8086/8088
-52-
CMP AX, ; AX>0?
JNS DG ;
MOV CL, l ; sai, cho CL
JMP RA ; di
DG: XOR CL, CL ; cho CL
RA: ; lối cấu trúc
III.3.1.4Cấu trúc CASE
CASE Biểuthức
Giátrị1: Côngviệc1
Giátrị2: Côngviệc2
GiátrịN: CôngviệcN
END CASE
Từ ngữ pháp cấu trúc ta thấy Biểuthức có Giátrị1 Cơngviệc1 thực Biểuthức có Giátrị2 Cơngviệc2 thực tiếp tục CôngviệcN Điều tương đương với việc dùng lệnh nhảy có điều kiện nhảy không điều kiện để nhảy nhãn chương trình hợp ngữ Cấu trúc CASE thực cấu trúc lựa chọn lồng
Bài tập III-4
Dùng CX để biểu giá trị khác AX theo quy tắc sau: AX < CX =-1
AX = CX =0 AX > CX =1
Biểuthức
Cơngviệc1 Cơngviệc2 CơngviệcN
Giátrị1 Giátrị2 GiátrịN
(53)Chương III Lập trình hợp ngữ với 8086/8088
-53- Giải
Ta thực cơng việc mẫu chương trình sau: CMP AX, ; Kiểm tra dấu AX JL AM ; AX<0
JE KHONG ; AX =0 JG DUONG ; AX > AM: MOV CX, -1
JMP RA DUONG: MOV CX,
JMP RA KHONG: XOR CX CX
RA: ; lối cấu trúc III.3.1.5Cấu trúc lặp FOR - DO
FOR Số lần lặp DO Công việc
Từ ngữ pháp cuả cấu trúc FOR - DO ta thấy Công việc thực lặp lặp lại tất Số lần lặp lại Điều hoàn toàn tương đươg với việc dùng lệnh LOOP hợp ngữ để lặp lại CX lần Công việc đó, trước ta phải gán Số lần lặp cho ghi CX
Bài tập III-5
Hiển thị dịng kí tự '$' hình Giải
Một dịng hình máy IBM PC chứa nhiều 80 kí tự Khởi đầu đếm
Cơng việc
Giảm đếm
sai Bộ đếm=0
đúng
(54)Chương III Lập trình hợp ngữ với 8086/8088
-54-
Ta sử dụng hàm ngắt 21H để hiển thị kí tự Ta phải lặp lại cơng việc 80 lần thảy lệnh LOOP Muốn dùng lện này, từ đầu ta phải nạp vào ghi CX số lần hiển thị, nội dung CX tự động giảm đi1 tác động lệnh LOOP
Sau mẩu chương trình thực công việc trên:
MOV CX, 80 ; số lần thị CX
MOV AH, ; AH chứa số hiệu hàm thị, MOV DL, '$' ; DL chứa kí tự cần thị, HIEN: INT 21H ; thị
LOOP HIEN ; dịng kí tự
RA: ; lối cấu trúc
III.3.1.6Cấu trúc lặp WHILE - DO
WHILE Điều kiện DO Công việc
Từ ngữ pháp cấu trúc WHILE - DO ta thấy: Điều kiện kiểm tra Côg việc lặp lặp lại chừng Điều kiện cịn Điều hợp ngữ hồn toàn tương đương với việc dùng lệnh CMP để kiểm tra Điều kiện sau dùng lệnh nhảy có điều kiện để khỏi vịng lặp
Bài tập III-6
Đếm số ký tự đọc từ bàn phím, gặp ký tự CR thơi Giải
Ta thực cơng việc mẩu chương trình sau:
XOR CX, CX ; tổng số ký tự đọc lúc đầu MOV AH, ; hàm đọc ký tự từ bàn phím TIEP: INT 21H ; đọc ký ự, Al chứa mã ký tự
CMP AL, 13 ; đọc CR? JE RA ; đúng,
INC CX ; sai, thêm ký tự vào tổng
RA: ; lối cấu trúc
Điều kiện
Công việc sai
đúng sai
đúng Điều kiện
Công việc
(55)Chương III Lập trình hợp ngữ với 8086/8088
-55- III.3.1.7 Cấu trúc lặp REPEAT - UNTIL
REPEAT Công việc UMTIL Điều kiện
Từ ngữ pháp cấu trúc REPEAT - UNTIL ta thấy: Công việc thực Điều có nghĩa cơng việc thực lần Điều kiện kiểm tra sau Cơng việc lặp lặp lại Điều kiện thoả mãn Điều hợp ngữ hoàn toàn tương đương với việc dùng lệnh CMP để kiểm tra Điềukiện sau dùng lệnh nhảy có điều kiện để khỏi vòng lặp
Bài tập III-7
Đọc ký tự từ bàn phím gặp '$' thơi Giải
Ví dụ làm phần cơng việc ví dụ trước Tại ta phải đọc ký tự đọc
Ta tực cơng việc mẩu chương trình sau: MOV Ah, ; hàm đọc ký tự bàn phím TIEP: INT 21H ; đọc ký tự
CMP AL, '$' ; đọc đôla ? RA: ; lối cấu trúc III.4 Giới thiệu số chương trình cụ thể
Trong phần ta xét số chương trình cho ứng dụng cụ thể, thơng qua ví dụ ta học lệnh, cách lập chương trình với cách tổ chức liệu để giải toán cụ thể Một số chương trình liên quan đến vấn đề khác chưa đề cập đến từ trước đến nêu chương tương ứng sau chương
Trước giới thiệu ví dụ ta hệ thống lại vài hàm loại ngắt có máy IBM PC với hệ điều hành MS DOS hay chưa dùng ví dụ nêu trước sau
Bảng III-2 Một số dịch vụ ngắt DOS
Ngắt INT 20H dành riêng để kêt thúc chương trình loại COM Hàm ngắt INT 21H: đọc ký tự từ bàn phím
Vào: AH =
Ra: AL = mã ASCH ký tự cần thị
Al = ký tự gõ vào từ phím chức Hàm ngắt INT 21H: ký tự lên hình Vào: AH =
DL = mã ASCH ký tự cần thị
Hàm ngắt INT 21H: chuỗi ký tự với $ cuối lên hình Vào: AH =
DX = địa lệch chuỗi ký tự cần thị
(56)Chương III Lập trình hợp ngữ với 8086/8088
-56- III.4.1 Ví dụ
Trong phần đầu chương trình hợp ngữ ta có giới thiệu chương trình lời chào băng tiếng Anh "Hello" Bây ta phải thêm lời chào tiếng Việt không dấu "Chao ban" nằm cách lời chào "Hello" trước số dịng định
Giải
Ta sử dụng phương pháp dùng chương trình mẫu trước để thị lời chào 'tây', dòng giãn cách lời chào 'ta' Trong ví dụ ta bỏ bớt dòng cách đầu cuối để chương trình đỡ rườm rà
Model Small Stack 100 Data
CRLF DB 13, 10, '$'
Chao tay DB 'hello!$'
ChaoTa DB 'Chao ban!$'
Code MAIN Proc
MOV AX, @ Data ; khởi đầu ghi DS MOV DS, AX
; thị lời chào dùng hàm INT 21H MOV AH,
LEA DX, ChaoTay INT 21H
; cách dòng dùng hàm INT 21H LEA DX, CELF
MOV CX, ;CX chứa số dòng cách +1 LAP: INT 21H
LOOP LAP
; thị lời chào dùng hàm INT 21H LEA DX, ChaoTa
INT 21H
; trở DOS dùng hàm CH INT 21H MOV AH, 4CH
INT 21H MAIN Endp
END MAIN
Trong chương trình ta dùng ghi CX để chứa số dòng phải giãn cách Với cách làm muốn thay đổi số dòng dãn cách lời chào ta lời chào tây, ta phải gắn giá trị khác cho ghi CX
III.4.2 Ví dụ
(57)Chương III Lập trình hợp ngữ với 8086/8088
-57- Giải
Muốn có số dịng cách thay đổi theo ý muốn lời chào ta tây chạy chương trình mà khơng phải thay giá trị cho ghi CX chương trình ví dụ trước, ta cần dùng thêm biến để chứa số dịng cách viết chương trình cho cho chạy chương trình có thêm phần đối thoại để người sử dụng thay đổi giá trị số dịng giãn cách
Sau chương trình thực cơng việc trên: Model Small
Stack 100 Data
CRLF DB 13, 10, '$'
ChaoTay DB 'Hello!S'
ChaoTa DB 'Chao ban!S'
Thongbao DB 'go vao so dong cach:S'
SoCRLF DB ?
Code MAIN Proc
MOV AX, @Data ; khởi đầu ghi DS
MOV DS, AX
; thông báo dùng hàm INT 21H MOV AH,
LEA DX, Thongbao INT 21H
; đọc số dòng cách dùng hàm INT 21H MOV AH,
INT 21H ; đọc số dòng cách
AND AL, OFH ; đổi hệ hai
MOV SoCRLE, AL ; cất
; cách dòng dùng hàm INT 21H MOV AH,
LEA DX, CRLF INT 21H
; hiển thị lời chào dùng hàm INT 21H MOV AH,
LEA DX, ChaoTay INT 21H
(58)Chương III Lập trình hợp ngữ với 8086/8088
-58- XOR CX, CX
MOV CL, SoCRLE ; CX chứa số dòng cách LAP: INT 21H
LOOP LAP
; thị lời chào dùng hàm INT 21H LEA DX, ChaoTa
INT 21H
; trở DOS dùng hàm 4CH INT 21H MOV AH, 4CH
INT 21H MAIN Endp
END MAIN
Trong ví dụ có điều cần ý đọc ký tự từ bàm phím (trong trường hợp cụ thể số dịng cách) ta thu ghi AL mã ASCII ký tự (số) gõ Để sử dụng trường hợp cụ thể giá trị số cất biến SoCRLF, ta phải biến đổi mã ASCII thành hệ số hai Để đối mã ASCII số trị số ngược lại ta cần nhớ giá trị số mã ASCII số có khoảng cách 30H Ví dụ số có mã ASCII 39H (có thể viết "9"), tương tự số có mã ASCII 30H (có thể viết "0") Như việc biến đổi mã ASCII (giả thiết có sẵn AL) giá trị số thực lệnh sau:
+ SUB AL, 30H + AND AL, 0FH
Tương tự vậy, việc biến đổi ngược lại từ số hệ hai (thường giả thiết có sẵn ghi DL) mã ASCII (để đưa lên mãn hình) làm lệnh sau:
+ ADD DL, 30H + OR DL, 30H III.4.3 Ví dụ
Đọc từ bàn phím số hệ hai (dài 16 bít), kết đọc để ghi BX Sau nội dung ghi BX hình
Giải
Công việc thực chất gồm hai phần, phần đầu ta phải đọc số hệ hai cất BX, phần ta phải đưa nội dung ghi BX hình
Sau chương trình thực cơng việc trên: Model Small
(59)Chương III Lập trình hợp ngữ với 8086/8088
-59-
TBao DB 'Go vao so he hai (max 16 bít, '
DB 'CR de thoi):$'
Code MAIN proc
MOV AX, @ Data
MOV DS, AX
MOV AH, ; thị thông báo LEA DX, TBao
INT 21H
XOR BX, BX ; BX chứa kết quả, lúc đầu MOV AH, ; hàm đọc số từ bàn phím TIEP: INT 21H
CMP AL, 13 ; CR? JF THOIDOC ; đúng, đọc
AND AL, OFH ; không, đổi mã ASCII số SHL BX, ; dịch trái BX bít để lấy chỗ OR BL, AL ; chèn bít vừa đọc vào kết JMP TIEP ; đọc tiếp ký tự
THOIDOC:MOV CX, 16 ; CX chứa số bít BX MOV AH, ; hàm ký tự
HIEN:XOR DL, DL ; xoá DL để chuẩn bị đổi ROL BX, ; đưa bít MSB BX sang CF ADC DL, 30H ; đổi giá trị bít ASCII
INT 21H ; hiển thị bít BX LOOP HIEN ; lặp lại hết MOV AH, 4CH ; trở DOS INT 21H
MAIN Endp
END MAIN
Chương trình hợp ngữ cho cơng việc nêu hình thành từ phần, phần với chức đọc phần với chức thị
Thuật toán cho phần đọc: đọc ký tự số, chuyển mã ASCII số chèn số đọc vào BX theo thứ tự từ phải qua trái, lặp lại công việc số khác
Thuật toán cho phần thị ngược lại so với phần đọc: lấy bít số BX theo thứ tự từ trái qua phải, đổi số mã ASCII cho thị hình, lặp lại công việc cho số khác
(60)Chương III Lập trình hợp ngữ với 8086/8088
-60-
Một số nhận xét rút đọc chương trình trên:
Lệnh xóa ghi BX cần thiết để sau gõ vào bít ta khơng thiết phải gõ đủ 16 bít mà xác định giá trị ghi
Trong chương trình ta dùng lệnh ROL để quay trịn ghi BX, sau quay thị tất 16 bít BX ta bảo toàn giá trị ghi BX lúc đầu Để so sánh, phần thay lệnh quay ROL ta dùng lệnh dịch SHL ta thị ghi BX, sau thị xong trị nguyên thủy ghi BX, sau thị xong giá trị nguyên thuỷ ghi BX bị trình dịch gây nên
Trong chương trình ta dùng lệnh cộng có nhớ ADC cách hiệu dụng để lấy bít ghi BX từ giá trị cờ CF đổi ln mã ASCII cần thiết cho việc thị
III.4.4 Ví dụ
Trong ghi BX có sẵn số hệ mười sáu, số biểu diễn ô màu:
Hãy lập trình để biến đổi ghi BX thành:
(Ví dụ: lúc đầu ghi BX chứa giá trị 1234H sau biến đổi, BX chứa giá trị 3241H v v )
Giải
Thực chất kiểu toán cụ thể này, sau xem xét dạng thức ghi BX trước sau biến đổi, ta thấy thu kết mơt cách đơn giản cách quay trái ghi BX ngun gốc bít sau quay tiếp ghi BH bít
Sau chương trình thực cơng việc Model Small
Stack 100 Code MAIN Proc
MOV CL,
ROL BX, CL ; quay BX bít MOV CL,
ROR BH, CL ; tráo bít thấp cao BH MOV AH, 4CH ; trở DOS
(61)Chương III Lập trình hợp ngữ với 8086/8088
-61- END MAIN
III.4.5 Ví dụ
Có chuỗi ký tự thường nhớ Hãy tạo chuỗi ký tự chữ hoa từ chuỗi cất chuỗi nhớ
Giải:
Ví dụ ví dụ trước khác chút việc xử lý ký tự chuỗi, phần lệnh có tính chất chuẩn bị trước sau thao tác với chuỗi coi Để giải tốn ứng dụng lệnh LODSB STOSB với chuỗi cho Thuật toán là:
Lấy ký tự chuỗi gốc (cũ) lệnh LODSB,
Biến đổi thành chữ hoa cách trừ 20H,
Cất ký tự biến đổi vào chuỗi đích (mới) lệnh STOSB
Sau cách tổ chức liệu chương trình cho tốn với độ dài chuỗi byte Để minh hoạ cách thao tác khác so với cách ví dụ trước ví dụ dùng cách thao tác lùi chuỗi ký tự
Model Small Stack 100 Data
Str1 DB 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h' Tbao DB 'chuỗi đổi: ', 10, 13
DB '$' Code
MAIN Proc
MOV AX, @Data ; khởi đầu đầu cho DS ES MOV DS, AX
MOV ES, AX
LEA SI, Str1+7 ; SI vào cuối chuỗi cũ LEA DI, Str2+7 ; DI vào cuối chuỗi
STD ; định hướng lùi
MOV CX, ; CX chứa số byte phải đổi LAP: LODSB ; lấy ký tự chuỗi cũ
SUB AL, 20H ; đổi thành chữ hoa
STOSB ; cất vào chuỗi LOOP LAP ; làm hết
LEA DX, Tbao ; chuẩn bị chuỗi MOV AH,
INT 21H
MOV AH, 4CH ; DOS INT 21H
MAIN Endp
(62)Chương IV. Phối ghép vi xử lý với nhớ thiết bị vào/ra IV.1 Các tín hiệu vi xử lý mạch phụ trợ
IV.1.1 Các tín hiệu 8086/8088
Hình vẽ cho thấy tính hiệu 8086 Các tín hiệu 8086 8088 khác số lượng kênh liệu 8086 có 16 đường liệu 8088 có đường liệu Dưới trình bày ý nghĩa tín hiệu 8086,
Chức tín hiệu chân cụ thể sau:
ADO – AD15 [I;O: tín hiệu vào ra]: Các chân dồn kênh cho tín hiệu buýt liệu buýt địa Xung ALE báo cho mạnh ngồi biết đường có tín hiệu liệu (ALE = 0) địa (ALE = 1) Các chân trạng thái trở kháng cao P chấp nhận treo
A16/S3, A17/S4, A18/S5, A19/S6 [O]: Các chân dồn kênh địa phần cao trạng thái Địa A16 - A19 truyền chân ALE = cịn AEL = chân có tín hiệu trạng thái S3 - S6 Các chân trạng thái trở kháng cao P chấp nhận treo Việc kết hợp S3 S4 để biểu diễn truy nhập
các ghi bảng
(63)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-63-
Bảng IV-1 Các bít trạng thái việc truy nhập ghi đoạn S4 S3 Truy nhập đến
0 Đoạn liệu phụ Đoạn ngăn xếp
1 Đoạn mã không đoạn 1 Đoạn liệu
RD [O]: Xung cho phép đọc Khi RD = buýt liệu sẵn sàng nhận số liệu từi nhớ thiết bị ngoại vi Chân RD trạng thái trở kháng cao P chấp nhận treo
READY [I]: Tín hiệu báo cho CPU biết tình trạng sẵn sàng thiết bị ngoại vi hay nhớ Khi READY = CPU thực ghi/đọc mà khơng cần chèn thêm chu kỳ đợi Ngược lại thiết bị ngoại vi hay nhớ có tốc độ hoạt động chậm, chúng đưa tín hiệu READY = để báo cho CPU biết Lúc CPU tự kéo dài thời gian thực lệnh ghi/đọc cách chèn thêm chu kỳ đợi
INTR [I]: Tín hiệu u cầu ngắt che Khi có u cầu ngắt mà cờ cho phép ngắt IF = CPU kết thúc lệnh làm dở, sau vào chu kỳ chấp nhận ngắt đưa bên ngồi tín hiệu INTA =
TEST [I]: Tín hiệu chân kiểm tra lệnh WAIT Khi CPU thực lệnh WAIT mà lúc tín hiệu TEST=1, chờ tín hiệu TEST= thực lệnh
NMI [I]: Tín hiệu u cầu ngắt khơng che Tín hiệu khơng bị khống chế cờ IF CPU nhận biết tác động sườn lên xung yêu cầu ngắt Nhận yêu cầu CPU kết thúc lệnh làm dở, sau chuyển sang thực chương trình phục vụ ngắt kiểu INT2
RESET [I]: tín hiệu khởi động lại 8086/8088 RESET = kéo dài thời gian chu kỳ đồng hồ 8086/8088 bị buộc phải khởi động lại: xố ghi DS, ES, SS, IP FR bắt đầu thực chương trình địa CS:IP=FFFF:0000H (chú ý cờ IF để cấm yêu cầu ngắt khác tác động vào CPU cờ TF0 để vi xử lý không -bị đặt chế độ chạy lệnh)
CLK [I]: Tín hiệu đồng hồ (xung nhịp) Xung nhịp có độ rỗng 77% cung cấp nhịp làm việc cho CPU
Vcc [I]: Chân nguồn Tại CPU cung cấp 5V10% 340mA
GND [O]: Hai chân nguồn để nối với điểm 0V nguồn nuôi
MN/MX [I]: Chân điều khiển hoạt động CPU theo chế độ MIN/MAX Do 8086/8088 làm việc chế độ khác nên có số chân tín hiệu phụ thuộc vào chế độ
a) Chế độ MIN (Chân MN/MX cần nối thẳng vào +5V mà không qua điện trở) o Trong chế độ MIN tất tín hiệu điều khiển liên quan đến thiết bị
(64)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-64-
8086/8088 Vì việc phối ghép với thiết bị dễ dàng tận dụng phối ghép ngoại vi sẵn nên giảm giá thành hệ thống o IO/ [O]: Tín hiệu phân biệt thời điểm định phần tử
các thiết bị vào/ra (IO) nhớ (M) chọn làm việc với CPU Trên buýt địa lúc có địa tương ứng thiết bị Chân trạng thái trở kháng cao P chấp nhận treo
o WR[O]: Xung cho phép ghi Khi CPU đưa =0 buýt liệu liệu ổn định chúng ghi vào nhớ thiết bị ngoại vi thời điểm WR= Chân WR trạng thái trở kháng cao P chấp nhận treo o INTA [O]: Tín hiệu báo cho mạch bên ngồi biết CPU chấp nhận yêu cầu ngắt INTR Lúc CPU đưa INTA = để báo chờ mạch đưa vào số hiệu ngắt (kiểu ngắt) buýt liệu
o ALE [O]: Xung cho phép chốt địa Khi ALE = có nghĩa buýt dồn kênh AD có địa thiết bị vào/ra hay ô nhớ ALE không bị thả nối (trong trạng thái trở kháng cao) CPU bị treo ALE =
o DT/ [O]: Tín hiệu điều khiển đệm chiều buýt liệu để chọn chiều chuyển vận liệu buýt D Chân trạng thái trở kháng cao P chấp nhận treo
o DEN [O]: Tín hiệu báo cho bên biết lúc buýt dồn kênh AD có liệu ổn định Chân trạng thái trở kháng cao P chấp nhận treo o HOLD [I]: Tín hiệu yêu cầu treo CPU để mạch thực việc trao đổi liệu với nhớ cách truy nhập trực tiếp Khi HOLD = CPU 8086 tự tách hệ thống cách treo tất buýt A, buýt D, buýt C (các buýt trạng thái trở kháng cao) để điều khiển DMA (DMA contrroller, DMAC) lấy quyền điều khiển hệ thống để làm công việc trao đổi liệu
Bảng IV-2 Các chu kỳ buýt qua tín hiệu SS0, IO/M , DT/R
IO/M DT/R SS0 Chu kỳ điều khiển buýt
0 0 Đọc mã lệnh
0 Đọc nhớ
0 Ghi nhớ
0 1 Buýt rôĩ (nghĩ)
1 0 Chấp nhận yêu cầu ngắt
1 Đọc thiết bị ngoại vi
1 Ghi thiết bị ngoại vi
1 1 Dừng (halt)
M
WR
(65)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-65-
Bít S6 = liên tục, bít S5 phản kánh giá trị bít IF ghi cờ Hai bít S3 S4 phối hợp với để việc truy nhập ghi đoạn
o HLDA [O]: Tín hiệu báo cho bên biết yêu cầu treo CPU để dùng buýt chấp nhận, CPU 8086/8088 treo buýt A, buýt D số tín hiệu buýt C
o SSO [O]: Tín hiệu trạng thái dùng kết hợp với IO/M DT/R để giải mã chu kỳ hoạt động buýt
b) Chế độ MAX (Chân MN/MX nối đất)
o Trong chế độ MAX số tín hiệu điều khiển cần thiết tạo sở tín hiệu trạng thái nhờ dùng thêm bên ngồi mạch điều khiển buýt 8288 Chế độ MAX sử dụng hệ thống có mặt đồng xử lý toán học 8087
o S2 [O]: Các chân trạng thái dùng chế độ MAX để ghép với mạch điều khiển buýt 8288 Các tín hiệu 8288 dùng để tạo tín hiệu điều khiển chu kỳ hoạt động bt Các tín hiệu điều khiển bảng
Bảng IV-3 Các tín hiệu điều khiển 8288
S S1 S0 Chu kỳ điều khiển buýt Tín hiệu
0 0 Chấp nhận yêu cầu ngắt INTA
0 Đọc thiết bị ngoại vi IORC
0 Ghi thiết bị ngoại vi IOWC, AIOWC
0 1 Dừng (halt) Không
1 0 Đọc mã lệnh MRDC
1 Đọc nhớ MRDC
1 Ghi nhớ MWTC, AMWC
1 1 Buýt rỗi (nghĩ) Không
o RQ/GT0 RQ/GT1 [I/O]: Các tín hiệu yêu cầu dùng buýt xử lý khác thông báo chấp nhận treo CPU vi xử lý khác dùng buýt RQ/GT0 có mức ưu tiên RQ/GT1
o LOCK[O]: Tín hiệu CPU đưa để cấm xử lý khác hệ thống dùng buýt thi hành lệnh đặt sau tiếp đầu LOCK o QS0 QS1 [O]: Tín hiệu thơng báo trạng thái khác đệm lệnh (hàng đợi lệnh) Bảng IV-4 cho biết trạng thái đệm lệnh mã hoá tín hiệu
Trong hệ vi xử lý với có mặt đồng hồ xử lý tốn học 8087, tín hiệu mạch 8087 dùng để đồng q trình hoạt động với vi xử lý 8086/8088
1
(66)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-66-
Bảng IV-4 Các trạng thái lệnh đệm QS1 QS0 Trạng thái lệnh đệm
0 Không hoạt động
0 Đọc byte mã lệnh từ đệm lệnh Đọc lệnh rỗng
1 Đọc byte từ đệm lệnh IV.1.2 Phân kênh để tách thông tin việc đệm cho buýt
Để giảm bớt khó khăn mặt cơng nghệ việc phải chế tạo nhiều chân cho tín hiệu vi mạch CPU, người ta tìm cách hạn chế số chân vi mạch cách dồn kênh nhiều tín hiệu chân Ví dụ chân AD0 – AD16 8086 dồn kênh để có
thể đưa bên ngồi thơng tin địa liệu Khi nhận tín hiệu bên vi mạch, ta phải tiến hành tách tín hiệu để tái tạo lại tín hiệu gốc cho buýt độc lập (buýt địa buýt liệu) Việc thực cách sử dụng vi mạch chức thích hợp bên ngồi (thơng thường mạch chốt) Ta phải làm tương tự chân dồn địa chỉ/trạng thái Để hỗ trợ cho việc tách thông tin này, CPU đưa thêm xung ALE cho ALE mức cao có tác dụng báo cho bên ngồi biết lúc thơng tin địa chân dồn kênh có giá trị Xung ALE dùng để mở mạch chốt tách thông tin địa bị dồn kênh
Muốn nâng cao tải bt để đảm nhận việc ni mạch bên ngồi Các tín hiệu vào CPU cần phải khuếch đại thông qua mạch đệm chiều hai chiều với đầu thường đầu trạng thái
Hình IV-3 cho thấy ví dụ đơn giản tổ chức việc tách tín hiệu địa từ tín hiệu dồn kênh chỉ/dữ liệu địa chỉ/điều khiển mạch chốt 74LS373 việc sử dụng khuếch đại đệm 74LS244 74LS245 cho tín hiệu vi xử lý 8086/8088 làm việc chế độ MAX
(67)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-67- IV.1.3 Mạch tạo xung nhịp 8284
Cho dù làm việc chế độ MIN hay MAX, CPU 8086/8088 cần xung nhịp (xung đồng hồ) từ mạch tạo xung nhip 8284 Mạch tạo xung nhịp cung cấp xung nhịp với tần số thích hợp cho tồn hệ mà cịn có ảnh hưởng tới việc đồng tín hiệu RESET tín hiệu READY CPU (Hình IV-4) Ý nghĩa tín hiệu
AEN1, AEN2: Tín hiệu cho phép chọn đầu vào tương ứng RDY1, RDY2 làm tín hiệu báo tình trạng sẵn sàng nhớ thiết bị ngoại vi
RDY1, RDY2: với AEN1, AEN2dùng để tạo chu kỳ đợi CPU
ASYNC: Chọn đồng hai tầng đồng tầng cho tín hiệu RDY1, RDY2
Trong chế độ đồng tầng (ASYNC= 1) tín hiệu RDY có ảnh hưởng đến tín hiệu READY tới sườn xuống xung đồng hồ Còn chế độ đồng hai tầng (ASYNC= 0) tín hiệu RDY có ảnh hưởng đến tín hiệu READY có sườn xuống xung đồng hồ
READY: Nối đến đầu READY CPU Tín hiệu đồng với tín hiệu RDY1, RDY2
X1, X2: Nối với hai chân thạch anh với tần số fx, thạch anh phận
của mạch dao động bên 8284 có nhiệm vụ tạo xung chuẩn dùng làm tín hiệu đồng hồ cho toàn hệ thống
74LS245 x2 8284A Clock Generator RDY Vcc 8086 CPU CLK READY RESET MN/MX# S0# S1# S2# 8288 Bus Controller MRDC# MWTC# AMWC# IORC# IOWC# AIOWC# INTA# CLK 74LS373 x3 ADDR/DATA LE OE# ALE DEN DT/R# BHE # AD15:AD0 A19:A16 74LS245 x2 EN# DIR D15:D0 A19:A0, BHE# ADDR/Data INTR
8086 Chế độ max
(68)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-68-
F/C: Dùng để chọn nguồn tín hiệu chuẩn cho 8284 Khi chân mức cao xung đồng hồ bên ngồi dùng làm xung nhịp cho 8284, ngược lại xung đồng hồ mạch dao động bên dùng thạch anh chọn để làm xung nhịp
EFI: lối vào cho xung từ dao động ngoại
CLK: Xung nhịp fCLK=fx/3với độ rỗng 77% nối đến chân CLK 8086/8088
PCLK: Xung nhịp fCLK=fx/6với độ rỗng 50% dành cho thiết bị ngoại vi
OSC: Xung nhịp khuếch đại có tần số fx dao động
RES : Chân khởi động, nối với mạch RC để 8284 để tự khởi động bật nguồn
RESET: Nối vào RESETcủa 8086/8088 tín hiệu khởi động lại cho tồn hệ
CSYNC: Lối vào cho xung đồng chung hệ thống có 8284 dùng dao động ngồi chân (Hình IV-4)
Hình IV-4 biểu diễn đường nối tín hiệu 8086/8088 8284 Mạch 8284 nhận xung khởi động từ bên ngồi thơng qua mạch RC có nguồn xung khởi động lại bấm công tắc K Từ xung 8284 có nhiệm vụ đưa xung khởi động đồng cho CPU với tất thành phần khác hệ thống
IV.1.4 Mạch điều khiển buýt 8288
Như giới thiệu phần trước, vi mạch 8288 mạch điều khiển buýt, lấy số tín hiệu điều khiển CPU cung cấp tất tín hiệu điều khiển cần thiết cho hệ vi xử lý CPU 8086 làm việc chế độ MAX Sơ đồ chân tín hiệu 8288
(69)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-69- Các tín hiệu 8288 bao gồm:
S2, S1, S0 [I, I, I]: tín hiệu trạng thái lấy thẳng từ CPU Tuỳ theo tín hiệu mà mạch 8288 tạo tín hiệu điều khiển khác chân để điều khiển hoạt động thiết bị nối với CPU Bảng mơ tả tín hiệu vào
CLK [I]: Đây đầu vào nối với xung đồng hồ hệ thống (từ mạch 8284) dùng để đồng toàn xung điều khiển từ mạch 8288
CEN [I]: Là tín hiệu đầu vào phép đưa tín hiệu DEN tín hiệu điều khiển khác 8288
IOB [I]: tín hiệu để điều khiển mạch 8288 làm việc chế độ buýt khác Khi IOB = 8288 làm việc chế độ buýt vào/ra, IOB = mạch 8288 làm việc chế độ buýt hệ thống (như máy IBM PC)
MRDC[O]: tín hiệu điều khiển đọc nhớ Nó kích hoạt nhớ đưa liệu buýt
MWTC[O]AMWC[O]: tín hiệu điều khiển ghi nhớ ghi nhớ kéo dài
Đó thực chất tín hiệu giống MEMW, AMWC(advanced memory write command) hoạt động sớm lên chút để tạo khả cho nhớ chậm có thêm thời gian ghi
IORC [O]: tín hiệu điều khiển đọc thiết bị ngoại vi Nó kích hoạt thiết bị chọn để thiết bị đưa liệu buýt
IOWC[O]AIOWC[O]: tín hiệu điều khiển đọc thiết bị ngoại vi đọc
thiết bị ngoại vi kéo dài Đó thực chất tín hiệu giống IOW,
AIOWC (advanced I/O write command) hoạt động sớm lên chút để tạo khả
năng cho nhớ chậm có thêm thời gian ghi
INTA [O]: đầu để thông báo CPU chấp nhận yêu cầu ngắt thiết bị ngoại vi lúc thiết bị ngoại vi phải đưa số hiệu ngắt buýt để CPU đọc
DT/R [O]: tín hiệu để điều khiển hướng liệu hệ vào hay so với CPU (DT/R = 0: CPU đọc liệu, DT/R = CPU ghi liệu)
(70)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-70-
Trong máy IBM PC tín hiệu nối đến chân DIR mạch đệm chiều 74LS245 để điều khiển liệu từ CPU đến buýt hệ thống ghi ngược lại, từ buýt hệ thống đến CPU đọc
DEN [O]: tín hiệu để điều khiển buýt liệu trở thành buýt cục hay buýt hệ thống
Trong máy IBM PC tín hiệu sử dụng với tín hiệu mạch điều khiển ngắt PIC 8259 để tạo tín hiệu điều khiển cực G mạch đệm chiều 74LS245
MCE/PDEN[O]: tín hiệu dùng để định chế độ làm việc cho mạch điều khiển ngắt PIC 8259 để làm việc chế độ chủ
ALE [O]: tín hiệu cho phép chốt địa chân dồn kênh địa - liệu AD0 - AD7, tín hiệu thường nối với chân G mạch 74LS373 để điều khiển mạch chốt lấy địa
IV.1.5 Biểu đồ thời gian lệnh ghi/đọc
Hình IV-6 Hình IV-7 biểu đồ thời gian đơn giản hố tín hiệu CPU 8086/8088 cho lệnh ghi/đọc nhớ thiết bị ngoại vi
Một chu kỳ ghi/đọc bình thường (còn gọi chu kỳ buýt) CPU kéo dài chu kỳ đồng hồ Các chu kỳ đồng hồ đánh dấu T1, T2, T3 T4 Nếu CPU làm việc với tần số đồng hồ 5MHz chu kỳ đồng hồ kéo dài T=200ns chu kỳ buýt kéo dài 4*T=800ns
Chúng ta mơ tả tóm tắt tượng xảy chu kỳ T nói Chu kỳ T1:
Trong chu kỳ địa nhớ hay thiết bị ngoại vi đưa đường địa chỉ, địa chỉ/dữ liệu địa chỉ/ trạng thái Các tín hiệu điều khiển ALE, DT/ ,IO/
cũng đưa để giúp việc hồn tất việc giữ thơng tin địa Chu kỳ T2:
Trong chu CPU đưa tín hiệu điều khiển , tín hiệu liệu D0 - D7 lệnh ghi thường dùng để mở đệm buýt liệu chúng dùng hệ Tại cuối kỳ T2 (và chu kỳ T Tw, có)
CPU lấy mẫu tín hiệu READY để xử lý chu kỳ phải làm việc với nhớ thiết bị ngoại vi chậm
R M
RD WR DEN
(71)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-71-
ALE
T1
CLOCK
T2 T3 T4
AD15 - AD0
A19/S6 - A16/S3 DT/R IO/M _ WR DEN
A19 - A0
from 74LS373 to memory
A19 - A16 S6 - S3
A19 - A0 from 74LS373
A15 – A0 D15 - D0 (tới buýt )
2 xung nhịp Độ rộng xung
ghi
Chờ liệu Trễ điều khiển
Hình IV-7 Biểu đồ ghi đơn giản hóa
ALE
T1
CLOCK
T2 T3 T4
AD15 - AD0
A19/S6 - A16/S3 DT/R IO/M RD DEN
A19 - A16 S6 - S3
Truy nhập địa chỉ Trễ địa chỉ Xác lập dữ liệu
Dữ liệu ngoài Rác
A15 – A0
Xung đọc
(72)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-72- Chu kỳ T3:
Trong chu kỳ CPU dành thời cho nhớ hay thiết bị ngoại vi nhập liệu Nếu chu kỳ đọc liệu cuối T3 CPU lấy mẫu tín hiệu buýt liệu
Nếu cuối chu kỳ đồng hồ T2 (hoặc chu kỳ T Tw) mà CPU phát
tín hiệu READY=0 (do nhớ hay thiết bị ngoại vi đưa đến) CPU tự xen vào sau T3 vài chu kỳ T để tạo chu kỳ đợi Tw = n*T nhằm kéo dài thời gian thực lệnh, tạo điều kiện
cho nhớ thiết bị ngoại vi có đủ thời gian hoàn tất việc ghi/đọc liệu Chu kỳ T4:
Trong chu kỳ tín hiệu buýt đưa trạng thái bị động để chuẩn bị cho chu kỳ buýt Tín hiệu WR chuyển trạng thái từ lên kích hoạt động q trình đưa vào nhớ hay thiết bị ngoại vi
Trên biểu đồ đọc ghi biểu diễn thông số quan trọng mặt thời gian liên quan đến tốc độ hoạt động tối thiểu cần thiết nhớ thiết bị ngoại vi chúng muốn làm việc với CPU 5MHz
Trong biểu đồ thời gian đọc (Hình IV-6) ta thấy việc truy nhập nhớ kéo dài khoảng thời gian từ T1 - T3 (gần chu kỳ đồng hồ 3*T = 600 ms) Trong tổng số thời gian phải tính đến thời gian trễ chuyền địa ttrễ địa = 110ns, thời gian giữ liệu
khi đọc tgiữR = 30 ns thời gian trễ việc truyền tín hiệu qua mạch đệm nhiều
ttrễ đệm = 40ns Như nhớ nối với 8086/8088 - 5MHz cần phải có thời gian truy nhập
nhỏ hơn:
3*T - ttrễ địa - tgiữR - ttrễ đệm = 600 - 110 - 30 - 40 = 420ns
Mặt khác với CPU 8086/8088 5MHz độ rộng xung đọc TRD = 325ns, thời
gian đủ dài nhớ với thời gian truy nhập cỡ 420ns làm việc
Trong biểu đồ thời gian ghi (Hình IV-7) ta thấy phải có thời gian giữ liệu tối thiểu để ghi tgiữW = 88ns sau WR đột biến từ lên thực tế thời gian gần
bằng nhớ thông dụng Độ dài xung ghi CPU 8086/8088 - 5MHz tWR = 340ns phù hợp với nhớ với thời gian truy nhập cỡ 450ns
IV.2 Phối ghép vi xử lý với nhớ
IV.2.1 Giới thiệu nhớ
Các nhớ bán dẫn thường dùng với vi xử lý bao gồm:
Bộ nhớ cố định ROM (Read Only Memory, nhớ có nội dung ghi sẵn để đọc ra) Thông tin ghi mạch không bị mất nguồn điện nuôi cho mạch
(73)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-73-
Bộ nhớ không cố định RAM (Random Access Memory, nhớ truy nhập ngẫu nhiên) thông tin ghi mạch bị mất nguồn điện nuôi cho mạch Trong nhớ RAM ta phân biệt loại RAM tĩnh (Static RAM hay SRAM, phần tử nhỏ mạch lật hay trạng thái ổn định) loại RAM động (Dynamic RAM hay DRAM, phần tử nhớ tụ điện nhỏ chế tạo công nghệ MOS)
Một nhớ thường chế tạo nên từ nhiều vi mạch nhớ Một vi mạch nhớ thường có dạng cấu trúc tiêu biểu hình sau
Theo sơ đồ khối ta thấy l vi mạnh nhớ có nhóm tín hiệu sau: a) Nhóm tín hiệu địa chỉ:
Các tín hiệu địa có tác dụng chọn nhớ Các nhớ có độ dài khác (cịn gọi từ nhớ) tuỳ theo nhà sản xuất: 1, 4, 8, bít Số đường tín hiệu địa có liên quan đến dung lượng mạch nhớ Với mạch nhớ có m bít địa dung lượng mạnh nhớ 2m từ nhớ Ví dụ, với m = 10 ta có dung lượng mạch nhớ 1K nhớ (1 kilô = 210
= 1024) với m=20 ta có dung lượng mạch nhớ 1M ô nhớ (1 Mêga = 220
= 1048576) b) Nhóm tín hiệu liệu:
Các tín hiệu liệu thường đầu mạch ROM đầu vào/ra liệu chung (hai chiều) mạch RAM Ngồi có mạch nhớ RAM với đầu đầu vào liệu riêng biệt Các mạch nhớ thường có đầu liệu kiểu trạng thái Số đường dây liệu định độ dài từ nhớ mạch nhớ Thông thường người ta hay nói rõ dung lượng độ dài từ nhớ lúc Ví dụ mạch nhớ dung lượng Kx8 (tức 1KB) 16Kx4
c) Nhóm tín hiệu chọn vi mạch (chọn vỏ):
Các tín hiệu chọn vi mạch CS (chip select) CE(Chip enable) thường dùng để tạo vi mạch nhớ cụ thể để ghi/đọc Tín hiệu chọn vi mạch
(74)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-74-
mạch RAM thường la CS, cịn mạch ROM thường CE Các tín hiệu chọn vi mạch thường nối với đầu giải mã địa Khi mạnh nhớ không chọn bt liệu bị treo (ở trạng thái trở kháng cao)
d) Nhóm tín hiệu điều khiển:
Tín hiệu điều khiển cần có tất mạch nhớ Các mạch nhớ ROM thường có đầu vào điều khiển OE (output enable) phép liệu đưa buýt Một mặt mạch nhớ khơng mở OE bt liệu bị treo Một mạch nhớ RAM có tín hiệu điều khiển thường R/W để điều khiển q trình ghi/đọc Nếu mạch nhớ RAM có hai tín hiệu điều khiển thường WE(write enable) để điều khiển ghi OE để điều khiển đọc Hai tín hiệu phải loại trừ lẫn (ngược pha) để điều khiển việc ghi/đọc mạch nhớ
Một thông số đặc trưng khác nhớ thời gian truy nhập tac định nghĩa
là thời gian kể từ có xung địa buýt địa có liệu ổn định buýt liệu Thời gian thâm nhậm nhớ phụ thuộc nhiều vào cơng nghệ chế tạo nên Các nhớ làm cơng nghệ lưỡng cực có thời gian truy nhập nhỏ (10 - 30ns) nhớ làm cơng nghệ MOS có thời gian truy nhập lớn nhiều (cỡ 150ms nữa)
IV.2.2 Giải mã địa cho nhớ
IV.2.2.1 Giới thiệu
Mỗi mạch nhớ nối ghép với CPU cần phải CPU tham chiếu xác thực thao tác ghi/đọc Điều có nghĩa mạch nhớ phải gán cho vùng riêng biệt có địa xác định nằm không gian địa tổng thể nhớ Việc gán địa cụ thể cho mạch nhớ thực nhờ xung chọn vi mạch lấy từ mạch giải mã địa Việc phân định không gian địa tổng thể thành nhớ khác để thực chức định gọi phân vùng nhớ Ví dụ, CPU 8086/8088 không gian địa tổng thể dành cho nhớ 1MB, vùng nhớ dung lượng KB kể từ địa thấp 00000H thiết phải dành cho RAM (vì bảng gồm 256 vectơ ngắt 8086/8088), cịn vùng nhớ có chứa địa FFFF0H lại thiết phải dành cho ROM hay EPROM (vì FFFF0H địa bắt đầu đoạn mã khởi động CPU)
Về nguyên tắc giải mã địa khái quát thường có cấu tạo Hình IV-9 Đầu vào giải mã tín hiệu địa tín hiệu điều khiển Các tín hiệu địa gồm bít địa có quan hệ định với tín hiệu chọn vỏ đầu Thường tín hiệu địa tương ứng với dải địa cấp cho vi mạch nhớ sinh tín hiệu chọn vỏ tương ứng Tín hiệu điều khiển thường tín hiệu IO/ dùng để phân biệt đối tượng mà CPU chọn làm việc nhớ hay thiết bị vào/ra Mạch giải mã khâu tăng
(75)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-75-
thêm trễ thời gian tín hiệu từ CPU tới nhớ thiết bị ngoại vi Tuỳ theo quy mô mạch giải mã mà ta có đầu hay nhiều tín hiệu chọn vỏ
Giải mã đầy đủ cho mạch nhớ đòi hỏi ta phải đưa đến đầu vào mạch giải mã tín hiệu địa cho tín hiệu đầu chọn riêng mạch nhớ định Trong trường hợp ta phải dùng tổ hợp đầy đủ đầu vào địa tương ứng để chọn mạch nhớ, xung nhận từ mạch giải mã việc chọn mạch nhớ vùng định chọn mạch nhớ vùng nhớ khác Nói cách khác, từ tổ hợp tín hiệu địa chỉ, giải mã sinh tín hiệu chọn vỏ ứng với không gian địa cấp cho vi mạch nhớ
Giải mã địa thiếu hay giải mã rút gọn ta dùng nhóm số tín hiệu địa để sinh tín hiệu chọn vỏ cho mạch nhớ Như vậy, từ tổ hợp tín hiệu địa sinh nhiều tín hiệu chọn vỏ khác Vì sử dụng tín hiệu nên mạch giải mã thiếu cần linh kiện lại làm tính đơn trị xung chọn thu đầu
Ví dụ: Chíp nhớ C có dung lượng 10000H ô nhớ gán cho dải địa từ 00000H-0FFFFH Để sinh tín hiệu chọn vỏ cho C ta sử dụng tín hiệu địa A16 mức thấp (A16=0) bốn tín hiệu A16-A19 mức thấp (A16= =A19=0) Với
trường hợp thứ ta có giải mã thiếu A16=0 yêu cầu truy nhập tới dải địa
chỉ 20000H-2FFFFH
Thông thường thiết kế mạch giải mã người ta hay tính đơi chút để dự phịng, cho sau có thay đổi phải tăng thêm dung lượng nhớ sử dụng mạch giải mã thiết kế Nói cách khác, hệ thống mở rộng thêm khơng gian nhớ bổ sung thêm vi mạch nhớ Phần xem xét số phương pháp thực mạch giải mã địa nhớ
IV.2.2.2 Thực mạch giải mã mạch lơ-gíc đơn giản
Các mạch lơ-gíc đơn giản bao gồm mạch AND, OR, NOT hay kết hợp NAND, NOR Bằng mạch kiểu ta xây dựng mạch giải mã địa đơn giản với số đầu hạn chế Các mạch lơ-gíc làm nhiệm vụ tổ hợp tín hiệu địa điều khiển
(76)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-76-
đọc/ghi nhớ cho với tổ hợp địa cho trước sinh tín hiệu chọn vỏ tương ứng
Hình IV-10 giới thiệu mạch giải mã cho mạch EPROM 2716 có dung lượng 2K nhớ chứa bít, làm việc dải địa FF800H-FFFFFH Do mạch nhớ có dung lượng 2K tương ứng với dải địa 0FFH-7FFH (tương ứng với A0 A10) Như vậy, số lượng
tín hiệu địa dùng sinh tín hiệu kích hoạt chíp nhớ A11-A19 Với dải địa cho
trước FF800H-FFFFFH tổ hợp A11= =A19=1 sinh tín hiệu chọn vỏ cho EPROM
2716 Bên cạnh đó, ta cần phối hợp với tín hiệu điều khiển IO/ RD (ở mức thấp) để tạo tín hiệu chọn vỏ
Như hình vẽ, tín hiệu địa tín hiệu đảo IO/ liên kết trực tiếp với phép lơ-gíc AND đảo Do tín chất mạch AND kết tổ hợp Đầu tất đầu vào Đầu mạch NAND OR với RD (mức thấp) để sinh tín hiệu chọn vỏ (kích hoạt) Tương tự, tính chất mạch OR đầu tất đầu vào nên tín hiệu chọn vỏ tín hiệu sinh ứng với thao tác truy nhập tới dải địa FF800H-FFFFFH Như vậy, mạch giải mã mạch giải mã đầy đủ
IV.2.2.3 Thực giải mã dùng mạch giải mã tích hợp
Khi ta muốn có nhiều đầu chọn vỏ từ giải mã mà dùng mạch logic đơn giản thiết kế trở nên cồng kềnh số lượng mạch tăng lên Trong trường hợp ta thường sử dụng mạch giải mã tích hợp có sẵn Một mạch giải mã hay sử dụng 74LS138 cho phép giải mã tín hiệu đầu vào thành tín hiệu đầu hình
M
M
(77)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-77-
Giả sử cần xây dựng mạch giải mã cho không gian nhớ 256KB tương ứng với dải địa F8000H-FFFFFH mạch nhớ 2732 có dung lượng 4K×8 Từ dải địa gán dung lượng mạch nhớ, thấy từ tín hiệu địa A13
tới A19 cần phải sinh tín hiệu kích hoạt vi mạch nhớ ứng với dải địa bảng
dưới đây:
Bảng IV-5 Dải tín hiệu mạch nhớ 2732 Địa A19-A16 A15 A14 A13 A12
F8 1111 0
F9 1111 0
FA 1111 1
FB 1111 1
FC 1111 1 0
FD 1111 1
FE 1111 1
FF 1111 1 1
Qua bảng trên, ta thấy có tín hiệu A12-A14 thay đổi cịn A15-A19
khơng đổi Như ta sử dụng mạch giải mã 74LS138 để sinh tín hiệu chọn vỏ cho mạch nhớ hình sau:
Trong hình vẽ đây, tín hiệu A12-A14 nối trực tiếp vào tín hiệu đầu vào
(A-C) 74LS138 Các tín hiệu địa cịn lại A15-A19 tín hiệu điều khiển IO/
được nối vào tín hiệu điều khiển 74LS138 (G2A, G2B) Tín hiệu G1 ln mức lơ-gíc Các đầu 74LS138 nối với mạch nhớ ứng với dải địa gán trước
Tại thí dụ ta thấy mạch giải mã có sẵn 74LS138 có số lượng đầu vào địa đầu vào cho phép hạn chế Nếu ta có số lượng đầu vào cho địa lớn mà ta lại phải giải mã đầy đủ để thực giải mã hoàn chỉnh ta phải dùng thêm mạch logic phụ Đây lý để người ta thay giải mã kiểu giải mã dùng PROM
M
(78)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-78-
hoặc PLA (programable logic array) với ưu điểm chúng có nhiều đầu vào cho bít địa thích hợp hệ vi xử lý sau với không gian địa lớn
IV.2.2.4 Thực giải mã dùng PROM
Việc sử dụng nhớ ROM làm giải mã lợi dụng số lượng lớn tín hiệu địa đầu vào, điều khiển liệu mạch nhớ ROM Với tổ hợp tín hiệu địa điều khiển đầu vào, mạch nhớ ROM sinh nhóm tín hiệu kênh liệu Trạng thái tín hiệu liệu tùy thuộc vào giá trị lưu vào ROM trước Nếu tín hiệu loại trừ lẫn tín hiệu liệu dùng làm tín hiệu chọn vi mạch nhớ
Để trình bày ứng dụng PROM việc thực giải mã ta lấy lại ví dụ phân vùng nhớ cho ROM phần trước Tại ta dùng mạch PROM 256 byte để làm giải mã Trong bảng mẫu bít để ghi vào PROM cho trường hợp ứng dụng cụ thể
Bảng IV-6 Mẫu liệu ghi vào ROM A
7 A6 A5 A4 A3 A2 A1 A0 _O0 _O1 _O2 _O3 _O4 _O5 _O6 _O7
1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1
1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1
1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1
1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1
1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1
1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1
1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
(79)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-79-
Theo bảng trên, dải địa từ F8H-FFH ROM ta ghi giá trị cho tín hiệu liệu đầu có tín hiệu mức thấp cịn tất tín hiệu cịn lại mức cao Ngồi nhớ này, tất ô nhớ khác ROM điền giá trị FFH
Mạch giải mã cho nhớ PROM thể hình so với cách thực giải mã 74LS138 dùng đến mạch phụ điều làm giảm đáng kể kích thước vật lý giải mã Ngồi ta dễ dàng thay đổi địa mạch nhớ cách thay đổi vị trí giá trị liệu mạch nhớ giải mã ROM
IV.3 Phối ghép vi xử lý với thiết bị vào
IV.3.1 Giới thiệu thiết bị vào/ra
Đối với 8086/8088 (hay họ 80x86 nói chung) có cách phối ghép CPU với thiết bị ngoại vi (các cổng vào/ra, I/O):
a) Thiết bị vào/ra có khơng gian địa tách biệt (Hình IV-14)
Trong cách phối ghép này, nhớ dùng toàn khơng gian 1MB mà CPU dành cho Các thiết bị ngoại vi (các cổng) dành riêng không gian 64KB cho loại cổng vào Để phân biệt thao tác truy nhập, ta phải dùng tín hiệu IO/ =1, lệnh trao đổi liệu cách thích hợp cho khơng gian Với thiết bị cần sử dụng câu lệnh IN, OUT để trao đổi liệu
b) Thiết bị vào/ra nhớ có chung không gian địa
Trong cách phối ghép này, nhớ thiết bị ngoại vi chia khơng gian địa 1MB mà CPU 8086/8088 có khả địa hóa Các thiết bị ngoại vi chiếm vùng khơng gian 1MB, phần lại nhớ Tất nhiên trường hợp ta dùng chung tín hiệu IO/ =0 lệnh trao đổi liệu kiểu lệnh MOV cho nhớ thiết bị ngoại vi
M
M
(80)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-80- IV.3.2 Giải mã địa thiết bị vào
IV.3.2.1 Giới thiệu
Việc giải mã địa cho thiết bị vào/ra gần giống giải mã địa cho mạch nhớ Ta nhấn mạnh việc giải mã địa cho cổng Thơng thường cổng có địa bít A0-A7, số hệ vi xử lý khác (như máy IBM PC) cổng có 16 bít A0 - A15 Tuỳ theo độ dài tốn hạng lệnh hay 16 bít ta có cổng bít có địa liên để tạo nên từ với độ dài tương ứng Trong thực tế có hệ sử dụng hết 256 cổng vào/ra khác nên ta xét giải mã địa bít A0-A7 mạch giải mã thơng dụng có sẵn (như 74LS138) để tạo xung chọn thiết bị
Các mạch giải mã đơn giản tạo từ mạch lơ-gíc đơn giản sau:
Trong trường hợp cần nhiều xung chọn đầu cho cổng vào/ra có địa liên tiếp, ta dùng mạch giải mã có sẵn kiểu 74LS138 Như hình trình bày mạch tương tự dùng 74LS138 để giải mã địa cho cổng vào cổng Trên sở mạch ta phối hợp với hai tín hiệu đọc ghi để tạo tín hiệu chọn cho việc đọc/ghi cổng vào/ra cụ thể
Hình IV-16 Giải mã địa cổng dùng 74LS138 Hình IV-15 Giải mã thiết bị dùng cổng lơ-gíc
(81)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-81- IV.3.2.2 Các mạch cổng đơn giản
Trong thực tế có nhiều vi mạch tổ hợp cỡ vừa dùng làm cổng phối ghép với vi xử lý để vào/ra liệu Các mạch thường cấu tạo từ mạch chốt bít có đầu trạng thái (74LS373: kích theo mức; 74LS374: kích theo sườn), mạch khuếch đại đệm chiều bít đầu trạng thái (74LS245) Chúng dùng phối ghép đơn giản để làm cho CPU thiết bị ngoại vi hoạt động tương thích với nhau, ví dụ để đệm buýt mạch cổng để tạo tín hiệu móc nối Dưới số ví dụ
Hình IV-17 biểu diễn ghép nối 8086 với bàn phím 16 số dạng tiếp điểm Vi mạch 74LS374 dùng để điều khiển tín hiệu hàng 74LS244 dùng để điều khiển tín hiệu cột bàn phím Nguyên tắc hoạt động phím sau Nếu tín hiệu X mức cao (lơ-gíc 1) đi-ốt khóa lại, nên tiếp điểm Y có đóng xuống hay khơng đầu O ta ln thu điện áp 5V (khơng có dịng điện) Nếu tín hiệu X mức thấp (lơ-gíc 0), đi-ốt mở tiếp điểm Y đóng xuống đầu O ta thu điện áp 0V Bằng cách quét hàng đọc cột ta xác định phím bấm Giả sử tín hiệu địa giải mã vi mạch đệm cổng 374 0AH 244 0BH, đoạn mã sau cho phép xác định phím C có bấm hay không:
Hang EQU 0AH
Cot EQU 0BH
MOV AL,11111110b ; Chỉ có D0=0 OUT Hang, AL
Ktra: IN AL, Cot ; Đọc tín hiệu cột
AND AL,00001000b ; Giữ lại bít D3 ứng với phím C
JNZ Ktra ; Khơng bấm
; Phím C bấm
(82)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-82-
Hình IV-18 biểu diễn mạch hiển thị số sử dụng vi mạch 7447 LED bảy đoạn 7447 cho phép điều khiển LED bảy đoạn cách giải mã số BCD đầu vào (A-D) sinh tín hiệu kích hoạt led LED bảy đoạn (a-g) Để tiết kiệm chi phí, 7447 dùng chung cho LED bảy đoạn Việc kích hoạt LED bảy đoạn điều khiển thông qua cổng A transitor Q1-Q7, liệu số cần hiển thị gửi qua cổng B
Đoạn mã sau dùng để kiểm tra hệ thống LED cách hiển thị LED số Chú ý để bật LEDi ta cần đưa tín hiệu liệu Di=0 cổng 0AH tới transitor Qi tương
ứng
DK_LED EQU 0AH ; Cổng điều khiển LED DL_LED EQU 0BH ; Cổng liệu hiển thị
MOV AL,FFH ; Tắt tất LED OUT DK_LED, AL
MOV CX,16 ; Trễ
Tre: NOP
LOOP Tre
MOV AL,8 ; Đưa số 7447 OUT DL_LED,AL
XOR AL,AL ; Đặt AL=0
OUT DK_LED,AL ; Bật tất LED IV.4 Giới thiệu số vi mạch hỗ trợ vào
Để thực trao đổi liệu vào/ra, vi xử lý sử dụng số vi mạch chuyên dụng cho phép trao đổi liệu kiểu song song Intel 8255A hỗ trợ cổng liệu bít
(83)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-83-
hay trao đổi liệu nối tiếp Intel 8251 hay 8250 Hai phương pháp có ưu nhược điểm riêng Với việc trao đổi liệu song song, kênh liệu ghép nối trực tiếp với thiết bị bên ngồi mà khơng cần phải thực việc biến đổi tín hiệu, tốc độ trao đổi liệu lớn, nhiên khoảng cách ghép nối thiết bị ngắn Ghép nối nối tiếp cho phép mở rộng cự ly ghép nối thiết bị, nhiên tốc độ trao đổi liệu hạn chế phải thực việc biến đổi liệu kênh liệu song song hệ vi xử lý thành chuỗi tín hiệu nối tiếp
Phần giới thiệu ghép nối liệu song song sử dụng vi mạch Intel 8255A truyền thông nối tiếp sử dụng vi mạch Intel 8251A
IV.4.1 Ghép nối song song dùng 8255A
IV.4.1.1 Giới thiệu 8255A
Vi mạch 8255A thiết bị giao tiếp ngoại vi lập trình (Programmable Peripheral Interface-PPI) dùng cho hệ thống máy tính Intel Thiết bị lập trình mà khơng cần thiết bị logic ngồi để giao tiếp với thiết bị ngoại vi Dưới sơ đồ khối Hình IV-19
Các tín hiệu 8255A có ý nghĩa sau :
CS: Chọn chíp (mức thấp) PA7-PA0: Cổng A
RD: Đọc (mức thấp) PB7-PB0: Cổng B
WR: Ghi (mức thấp) PC7-PC0: Cổng C
A0A1: Chọn cổng D7-D0: Dữ liệu
Vi mạch 8255A cung cấp cổng vào/ra A,B, C có độ rộng bít, chia làm nhóm A, B Các cổng lập trình để làm việc ba chế độ:
a) Chế độ 0: Vào/ra sở:
Hình IV-19 Sơ đồ khối 8255A
Đệm dữ liệu
Lơ-gíc điều khiển ghi/đọc
Điều khiển nhóm A
Điều khiển nhóm B
Nhóm A Cổng A
(8)
Nhóm A Cổng C
(4)
Nhóm B Cổng C
(4)
Nhóm B Cổng B
(84)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-84-
Chế độ cung cấp thao tác vào/ra đơn giản cho cổng, cổng khơng có tín hiệu kết nối Các cổng A, B C chia thành cổng bít (A,B) cổng bít (C thấp PC0-PC3, C cao PC4-PC7) Bất kỳ cổng dùng
làm cổng vào/ra
b) Chế độ 1: Vào/ra thăm dò
Chế độ cung cấp hai cổng A,B, cổng có kênh liệu bít tín hiệu điều khiển lấy từ cổng C Dữ liệu kênh vào hay Các nhóm tín hiệu điều khiển vào/ra sau:
Đầu vào Đầu
STB: Kiểm tra đầu vào (mức thấp) IBF: Dữ liệu sẵn sàng (mức cao) INTR: Báo ngắt CPU (mức cao)
OBF: Dữ liệu sẵn sàng (mức thấp) ACK: Nhận xong liệu (mức thấp) INTR: Báo ngắt CPU (mức cao)
Các tín hiệu điều khiển hai cổng A B lấy từ cổng C sau:
Hình IV-21 Ghép nối tín hiệu điều khiển chế độ Hình IV-20 Các chế độ
Buýt địa Buýt điều khiển
(85)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-85-
Các tín hiệu điều khiển biến đổi hình vẽ
Với cổng A tín hiệu điều khiển hoạt động sau:
OBFA (Đệm PA đầy) Tín hiệu báo cho thiết bị ngoại vi biết CPU ghi liệu vào cổng để chuẩn bị đưa Tín hiệu thường nối với STB thiết bị nhận
ACKA (Trả lời nhận liệu) Đây tín hiệu thiết bị ngoại vi cho biết nhận liệu từ PA 8255A
INTRA (Yêu cầu ngắt từ PA) Đây kết thu từ quan hệ tín hiệu khác 8255A trình đối thoại với thiết bị ngoại vi, dùng để phản ảnh yêu cầu ngắt PA tới CPU (xem biểu đồ quan hệ tín hiệu hình 5.38)
INTEA tín hiệu mạch lật bên 8255A phép/cấm yêu cầu ngắt INTRA PA INTEA lập/xố thơng qua bit PC6 PC
Các tín hiệu điều khiển vào thay đổi hình vẽ
(86)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-86-
STB (Cho phép chốt liệu): Khi liệu sẵn sàng để đọc vào PA, thiết bị ngoại vi phải dùng STB để báo cho 8255A biết để chốt
dữ liệu
IBF (Đệm vào đầy): Sau 8255A chốt liệu thiết bị ngoại vi đưa đến đưa tín hiệu IBF để báo cho thiết bị ngoại vi biết chốt xong
INTR : Tín hiệu để báo cho CPU biết có liệu sẵn sàng để đọc từ PA Đây kết thu từ quan hệ tín hiệu khác 8255A trình đối thoại với thiết bị ngoại vi
c) Chế độ 2: Vào/ra hai chiều
Chế độ áp dụng cho cổng A tất tín hiệu cổng C dùng làm tín hiệu kết nối Hình IV-24 Các tín hiệu kết nối biến đổi tuỳ thuộc theo liệu gửi hay đọc từ cổng A
IV.4.1.2 Lập trình 8255A
Các ghi 8255A xác định qua tính hiệu địa A0A1 sau
A1 A0 Thanh ghi
x x Không sử dụng
0 Cổng A (PA)
0 Cổng B (PB)
1 Cổng C (PC)
1 Điều khiển
Ý nghĩa bít ghi điều khiển chế độ hoạt động Hình IV-25 Chú ý bít có nghĩa lớn ghi điều khiển nhận giá trị Thanh ghi dùng để xác lập trạng thái tín hiệu điều khiển cổng C 8255A hoạt động chế độ
(87)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-87- IV.4.2 Truyền thông nối tiếp dùng 8251
IV.4.2.1 Giới thiệu truyền thông nối tiếp
Việc truyền thông tin phận nằm gần hệ thống vi xử lý thực thơng qua bt song song mở rộng qua mạch phối ghép song song byte truyền tập đường dẫn mạch in dây cáp trường hợp cần phải truyền thông tin thiết bị cách xa nhau, ta dùng
(88)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-88-
tập đường dây mà phải có cách truyền khác để đảm bảo chất lượng tín hiệu tiết kiệm số đường dây dẫn cần thiết Từ yêu cầu đời phương pháp truyền thơng tin nối tiếp, tín hiệu truyền liên tiếp bít đường dây (như đường điện thoại chẳng hạn) Ở đầu thu tín hiệu nối tiếp biến đổi ngược lại để tái tạo hiệu dạng song song thích hợp cho việc xử lý Trong thực tế có phương pháp truyền thông tin kiểu nối tiếp: đồng không đồng
Trong phương pháp truyền đồng bộ, liệu truyền theo khối với tốc độ xác định Khối liệu trước truyền bổ sung thêm phần tử đặc biệt đẩu cuối tạo thành khung Các phần tử dùng để đánh dấu điểm bắt đầu khối liệu hay thông tin giúp phát lỗi trình truyền Hình IV-27 biểu diễn cấu trúc khung liệu để truyền đồng Đây thực chất cách điều khiển hướng ký ký tự đặc biệt dùng để đánh dấu phần khác khung
Trong cách truyền thông dị bộ, liệu truyền theo ký tự riêng biệt Độ dài ký tự thay đổi từ đến bít Ký tự cần truyền gắn thêm bít đánh dấu đầu để báo bắt đầu kí tự (Start bit) hai bít báo kết thúc kí tự (Stop bit), bít kiểm tra tính tồn vẹn liệu (Parity bit) Vì kí tự nhận dạng riêng biệt nên truyền vào lúc Giữa kí tự truyền có khoảng cách thời gian Dạng thức liệu truyền theo phương pháp dị thể hình
Tốc độ truyền liệu theo phương pháp nối tiếp đo bít/chu kỳ Ngồi người ta hay dùng đơn vị baud Đó giá trị nghịch đạo thời gian lần thay đổi mức tín hiệu, với liệu có hai mức (0 1) thay đổi mức tín hiệu mã hố bít tốc độ baud tốc độ bít/s Trong phương pháp mã hóa khác, người ta có
Hình IV-27 Cấu trúc khung đồng
(89)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-89-
thể mã hóa nhiều bít thơng tin trạng thái tín hiệu Các giá trị tốc độ truyền thường gặp thực tế 2400, 4800, 600
Để tạo điều kiện dễ dàng cho việc phối ghép đường truyền nối tiếp với hệ vi xử lý để giảm tối đa mạch phụ thêm Người ta chế tạo vi mạch tổ hợp cỡ lớn lập trình có khả hồn thành cơng việc cần thiết phối ghép mạch thu phát dị vạn (N8250/16450 National Semiconductor universal asynchronous receiver - transmitter USART) mạch thu phát đồng - dị bỏ vạn 8251A Intel (universal synchronous - asynchronous receiver - transmitter USART)
Với mạch phối ghép trên, việc truyền tin dị chẳng hạn thực nhờ 1USART đầu phát USART khác đầu thu Khi có kí tự để phát 8251A tạo khung cho kí tự cách gắn thêm vào mã kí tự bít start, parity stop gưỉ liên tiếp bít đường truyền Bên phía thu, 8521A khác nhận kí tự tháo bỏ khung, kiểm tra parity, chuyển sang dạng song song để CPU đọc
IV.4.2.2 Mạch USART 8251A
IV.4.2.2.aSơ đồ khối tín hiệu
Trong phần ta giới thiệu mạch 8251A, mạch USART dùng cho hai kiểu truyền thông tin nối tiếp đồng Sơ đồ khối mạch 8251A Intel biểu diễn hình
Các tín hiệu mạch 8251A hầu hết giống tín hiệu 8086/8088 Chân chọn vỏ 8251A phải nối với đầu mạch giải mã địa để đặt mạch 8251A vào địa Các tín hiệu cần giải thích thêm gồm:
(90)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-90-
+ CLK [I]: Chân nối đến xung đồng hồ hệ thống
+ TxRDY [0]: Tín hiệu báo đệm giữ rỗng (sẵn sàng nhận ký tự từ CPU) + RxRDY [0]: Tín hiệu báo đệm thu đầy (có ký hiệu nằm chờ CPU đọc vào) + TxEMPTY [0]: Tín hiệu báo đệm thu đệm phát rỗng
+ C/D [I]: CPU thao tác với ghi lệnh / ghi liệu 8251A, C/D=1 ghi lệnh chọn làm việc Chân thường nối với A0 buýt địa để với tín hiệu WR RD chọn ghi bên 8251A
+ RxC [I] TxC [I]: Xung đồng hồ cung cấp cho ghi dịch phần thu phần phát Thường nối chung để phần thu phần phát làm việc với tầng số nhịp Tần số khung đồng hồ đưa đến chân RxC TxC chọn cho bội số (cụ thể gấp 1, 16 64) tốc độ thu hay tốc độ phát theo yêu cầu
+ hai cặp tín hiệu yêu cầu thiết bị modem sẵn sàng trả lời modem với tín hiệu yêu cầu
+ cặp tín hiệu yêu cầu modem sẵn sàng phát đáp ứng modem với tín hiệu yêu cầu
+ SYNDET/BRKDET [O]: 8251A làm việc chế độ không đồng bộ, RxD = kéo dài thời gian ký tự chân có mức cao để báo việc truyền đường truyền bị gián đoạn Khi 8251A làm việc chế độ đồng bộ, phần thu tìm thấy ký tự đồng rong tin thu chân có mức cao
Đệm phần phát mạch 8251A loại đệm kép, bao gồm đệm giữ đệm phát Trong ký tự chuyển đệm phát ký tự khác đưa từ CPU sang đệm giữ Các tín hiệu TxRDY TxEMPTY cho biết trạng thái đệm mạch 8251A hoạt động Khi đệm phần thu đầy có tin shiệu RxRDY = Nếu phần thu nhận ký tự mà CPU không kịp thời đọc ký tự cũ bị bị đè ký tự nhận Hiện tượng gọi thu đè
IV.4.2.2.bCác ghi bên 8251A
Như nói chân C/D (giải sử nối vào A0 buýt địa chỉ) tín
hiệu WR RD chọn ghi bên mạch USART, ghi đệm liệu thu, ghi đệm liệu phát, ghi trạng thái ghi điều khiển (Bảng IV-7)
Bảng IV-7 Các ghi bên 8251A
A0 RD WR Chọn
0 Thanh ghi đệm liệu thu Thanh ghi đệm liệu phát 1 Thanh ghi trạng thái 1 Thanh ghi điều khiển DSR DTR
(91)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-91- Thanh ghi chế độ:
Trong từ chế độ, ký tự cần truyền ta chọn số bít (kiểu mã) ký tự, số bít stop tốc độ truyền Nếu có sẵn tầng số xung đồng hồ cho phần thu phần phát (giả sử Fdk) ta muốn truyền (thu/phát) liệu vưói tốc độ X baud, ta phải chọn hệ số nhân
tốc độ truyền k cho thỏa mãn biểu thức
Fdk = X K, X tốc độ truyền tiêu chuẩn
Ví dụ: ta có tần số xung đồng hồ phát 19 200Hz ta muốn truyền liệu với tốc độ 200 baud ta phải ghi từ chế độ có bít cuối 10 để chọn hệ số nhân tốc độ truyền 16, 1200 x 16 = 19 200 Với việc dùng tần số đồng hồ cho phần thu/ phát cao so với tốc độ truyền ta giảm lỗi truyền thơng tin
Hình giới thiệu giá trị ghi lệnh hoạt động chế độ truyền đồng Ở chế độ ta quan tâm tới tốc độ phát, thay vào ta cần xác định số lượng ký tự đồng độ dài ký tự truyền
(92)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-92-
Thanh ghi lệnh:
Thanh ghi trạng thái
Giá trị bít ghi cho ta biết tình trạng hoạt động 8251A
IV.4.2.2.c Lập trình 8251A
Để lập trình cho 8251A trước tiên ta cần xác lập chế độ hoạt động cách tính giá trị ghi chế độ gửi cổng điều khiển Để gửi nhận liệu ta cần liên tục kiểm tra trạng thái 8251A theo lưu đồ đọc/ghi đơn giản sau:
(93)Chương IV.Phối ghép vi xử lý với nhớ thiết bị vào/ra
-93-
Hình IV-35 giới thiệu mạch giải mã địa cho 8251A ghép nối tín hiệu nối chuẩn RS232 Vi mạch 8251A hoạt động cổng 78H 79H (0111 100x) Lưu đồ đọc triển khai sau:
DK EQU 79H ; Thanh ghi điều khiển
TThai EQU 79H : Thanh ghi trạng thái
DL EQU 78H ;Thanh ghi liệu
khoitao: MOV AL, 11001111b ; Xác lập chế độ 8251A dị bít stop, OUT DK,AL ; bít liệu không chẵn lẻ, tốc độ x64 Ktra: IN AL, TThai ; Kiểm tra trạng thái
AND AL,02H ; Bít ghi trạng thái RxRDY JNZ Ktra
DocDL: IN AL, DL
; Xử lý liệu
Hình IV-35 Ghép nối 8251A
(94)Chương V. Tổng quan phương pháp vào liệu V.1 Giới thiệu
Kỹ thuật trao đổi liệu máy vi tính thiết bị ngoại vi gọi vào/ra hay I/O (Input/Output) Thiết bị liên lạc với máy vi tính qua giao tiếp vào/ra Người dùng nhập chương trình liệu dùng bàn phím chạy chương trình để lấy kết Như vậy, thiết bị vào/ra kết nối tới máy vi tính cung cấp cách thức liên lạc tiện lợi với giới bên Các thiết bị vào/ra phổ biến gồm có bàn phím, hình, máy in ổ đĩa cứng
Đặc tính thiết bị vào/ra thường khác với đặc tính máy vi tính Chẳng hạn tốc độ thiết bị thường chậm máy vi tính, độ dài từ (word) định dạng liệu khác thiết bị máy tính Để hai bên liên lạc với cần có mạch giao tiếp thiết bị vào/ra máy tính Giao tiếp cung cấp trao đổi liệu vào/ra qua buýt vào/ra Bt thơng thường chuyển tải loại tín hiệu: địa thiết bị, liệu lệnh
Có ba phương pháp trao đổi liệu máy vi tính thiết bị vào/ra: vào/ra lập trình (programmed I/O) hay thăm dò, vào/ra ngắt truy nhập trực tiếp nhớ (Direct Memory Access DMA) Dùng vào/ra thăm dị, vi xử lý chạy chương trình thực toàn trao đổi liệu vi xử lý âccs thiết bị bên Đặc tính chủ yếu phương pháp thiết bị thực chức định chương trình bên tron nhớ vi xử lý Nói cách khác, vi xử lý điều khiển hoàn toàn trao đổi liệu
Với vào/ra ngắt, thiết bị bắt vi xử lý dừng việc thực chương trình thời để thiết bị có thết chạy chương trình khác gọi chương trình phục vụ ngắt Chương trình đáp ứng yêu cầu thiết bị Sau kết thúc chương trình này, câu lệnh trở từ ngắt để trả lại quyền điều khiển cho chương trình bị ngắt
Truy nhập nhớ trực tiếp kỹ thuật vào/ra mà liệu trao đổi nhớ máy tính với thiết bị ổ cứng mà không cần can thiệp vi xử lý Thông thường, phương pháp cần sử dụng vi mạch đặc biệt gọi vi mạch DMA
(95)Chương V Tổng quan phương pháp vào liệu
-95- V.2 Vào/ra phương pháp thăm dò
Vấn đề điều khiển vào/ra liệu trở nên đơn giản thiết bị ngoại lúc sẵn sàng để làm việc với CPU Ví dụ, phận nhiệt độ số (như thiết bị vào) lắp sẵn hệ thống điều khiển lúc cung cấp số đo nhiệt độ đối tượng cần điều chỉnh, đèn LED nét (như thiết bị ra) dùng để thị giá trị đại lượng vật lý định hệ thống nói lúc biểu thơng tin Như CPU muốn có thơng tin nhiệt độ hệ thống việc đọc cổng phối ghép với đo nhiệt độ, CPU muốn biểu diễn thông tin vừa đọc đèn LED việc đưa tín hiệu điều khiển tới mà khơng cần phải kiểm tra xem thiết bị có sẵn sàng làm việc hay không
Tuy nhiên thực tế lúc CPU làm việc với đối tượng "liên tục sẵn sàng" Thông thường CPU muốn làm việc với đối tượng đó, trước tiên phải kiểm tra xem thiết bị có trạng thái sẵn sàng làm việc hay khơng; có thực vào việc trao đổi liệu Như vậy, làm việc theo phương thức thăm dị thơng thường CPU chia sẻ thời gian hoạt động cho việc trao đổi liệu việc kiểm tra trạng thái sẵn sàng thiết bị ngoại vi thơng qua tín hiệu móc nối (handshake signal)
Các mạch kết nối Hình IV-17 Hình IV-18 ví dụ tiêu biểu cho phương pháp vào/ra lập trình Với bàn phím, CPU liên tục kiểm tra trạng thái phím có phím bấm CPU đọc thơng tin cổng vào để xác định phím bấm Với hiển thị LED, CPU liên tục đưa liệu cổng để thiết bị hiển thị thông tin Khi số lượng thiết bị vào/ra tăng lên thời gian dành cho việc xác định trạng thái thiết bị vào/ra tăng lên nhanh chóng Hình V-1 CPU kiểm tra
(96)Chương V Tổng quan phương pháp vào liệu
-96-
thiết bị để phát trạng thái sẵn sàng trao đổi liệu thiết bị thực lệnh trao đổi liệu Các thiết bị kiểm tra thăm dò theo trật tự ngẫu nhiên theo mức độ ưu tiên thiết bị Cách thức dù đơn giản song có nhược điểm thời gian quét trạng thái thiết bị chiếm tỷ trọng đáng kể suốt trình vào/ra thiết bị chưa có liệu để trao đổi
V.3 Vào/ra ngắt
V.3.1 Giới thiệu
Nhược điểm vào/ra thăm dị máy tính cần kiểm tra bít trạng thái cách chờ đáp ứng thiết bị vào/ra Với thiết bị chậm, việc chờ làm giảm khả xử lý liệu khác máy tính Kỹ thuật ngắt cho phép giải vấn đề
Với vào/ra ngắt, thiết bị khởi xướng việc trao đổi vào/ra Thiết bị nối với chân tín hiệu ngắt (INT) vi mạch vi xử lý Khi thiết bị cần trao đổi liệu, thiết bị sinh tín hiệu ngắt Máy tính hồn thành câu lệnh thời lưu nội dung đếm chương trình ghi trạng thái Sau đó, máy tính tự động nạp địa chương trình phục vụ ngắt vào ghi đếm chương trình Chương trình thường người dùng viết máy tính thực chương trình để trao đổi liệu với thiết bị Câu lệnh cuối chương trình khơi phục ghi đếm chương trình bị dừng ghi trạng thái vi xử lý
Vi xử lý thường cung cấp hay nhiều tín hiệu ngắt vi mạch Như vậy, để xử lý yêu cầu ngắt từ nhiều thiết bị cần có chế đặc biệt Thường có cách sau: thăm dị quay vịng Thăm dò sử dụng phần mềm chung cho tất thiết bị làm giảm tốc độ đáp ứng ngắt Khi có tín hiệu ngắt phần mềm thăm dị kiểm tra trạng thái thiết bị theo thứ tự ưu tiên bắt đầu với thiết bị ưu tiên cao Khi xác định thiết bị yêu cầu trao đổi liệu, phần mềm thăm dò chuyển quyền điều khiển cho phần mềm phục vụ ngắt V.3.2 Bộ xử lý ngắt ưu tiên 8259
(97)Chương V Tổng quan phương pháp vào liệu
-97- V.3.2.1 Các khối chức 8259A
Sơ đồ khối 8259A trình bày hình vẽ
Thanh ghi IRR: ghi nhớ yêu cầu ngắt có đầu vào IRi
Thanh ghi ISR: ghi nhớ yêu cầu ngắt phục vụ số yêu cầu ngắt IRi
Thanh ghi IMR: ghi nhớ mặt nạ ngắt yêu cầu ngắt IRi
Logic điều khiển: khối có nhiệm vụ gửi u cầu ngắt tới INTR 8086/8088 có tín hiệu chân IRi nhận trả lời chấp nhận yêu cầu ngắt INTA từ CPU để điều khiển việc đưa kiểu ngắt buýt liệu
Đệm buýt liệu: dùng để phối ghép 8259A với buýt liệu CPU
Logic điều khiển ghi/đọc: dùng cho việc ghi từ điều khiển đọc từ trạng thái 8259A
Khối đệm nối tầng so sánh: ghi nhớ so sánh số hiệu mạch 8259A có mặt hệ vi xử lý
V.3.2.2 Các tín hiệu 8259A
Một số tín hiệu mạch 8259 có tên giống tín hiệu tiêu chuẩn hệ vi xử lý 8086/8080 Ta thấy rõ hiểu ý nghĩa chúng Hình V-2 Ngồi tín hiệu ra, cịn có số tín hiệu đặc biệt khác 8259A cần phải giới thiệu thêm gồm:
+ CAS0-CAS2 [I, O]: đầu vào mạch 8259A thợ đầu
(98)Chương V Tổng quan phương pháp vào liệu
-98-
+ [I, O]: 8259A làm việc chế độ đệm bt liệu tín hiệu vào dùng lập trình để biến mạch 8259A thành mạch thợ ( ) chủ ( ); 8259A làm việc hệ vi xử lý chế độ có đệm bt liệu chân tín hiệu dùng mở đệm buýt liệu để 8086/8088 8259A thông vào buýt liệu hệ thống Lúc việc định nghĩa mạch 8259A chủ thợ phải thực thông qua từ điều khiển đầu ICW4
+ INT [O]: tín hiệu yêu cầu ngắt đến chân INTR CPU 8086/8088 + [I]: nối với tín hiệu báo chấp nhận ngắt CPU
Hình vẽ thể ghép nối 8259A với hệ thống buýt 8086/8088 Nếu hệ vi xử lý 8086/8088 làm việc chế độ MAX thường ta phải dùng mạch điều khiển buýt 8288 đệm buýt để cung cấp tín hiệu thích hợp cho buýt hệ thống Mạch 8259A phải làm việc chế độ có đệm để nối với buýt hệ thống
V.3.2.3 Lập trình cho PIC 8259A
Để mạch PIC 8259A hoạt động theo yêu cầu, sau bật nguồn cấp điện PIC cần phải lập trình cách ghi vào ghi (tương đương với cổng) bên các từ điều khiển khởi đầu (ICW) tiếp sau từ điều khiển hoạt động (OCW)
Các từ điều khiển khởi đầu dùng để tạo nên kiểu làm việc cho PIC, từ điều khiển hoạt động định cách thức làm việc cụ thể PIC Từ điều khiển hoạt động ghi ta muốn thay đổi hoạt động PIC
Các từ điều khiển nói giới thiệu cụ thể
EN / SP
0
SP SP1
EN
INTA INTA
(99)Chương V Tổng quan phương pháp vào liệu
-99-
V.3.2.3.a Các từ điều khiển khởi đầu ICW
PIC 8259A có tất từ điều khiển khởi đầu ICW1 - ICW4 Trong lập trình cho PIC khơng phải lúc ta cần dùng từ điều khiển khởi đầu có lúc ta cần ghi vào hay từ đủ Hình thể thứ tự ghi điều kiện để ghi điều khiển ICW vào 8259A
Để xác định ghi bên ta cần sử dụng tín hiệu địa A0 thứ tự ghi để
ghi liệu cho từ điều khiển Ví dụ A0 = dấu hiệu để nhận biết ICW1 đưa
vào ghi có địa chẵn PIC, cịn A0 = từ điều khiển khởi đầu ICW2,
ICW3, ICW4 đưa vào ghi có địa lẻ mạch PIC o ICW1
Bít D0 ICW1 định 8259A nối với họ vi xử lý Để làm việc với
hệ 16-32bít (8088 họ x86) ICW thiết phải có ICW4 = (và bít ICW4 bị xóa 0) Các bít cịn lại ICW1 định nghĩa cách thức tác động xung yêu cầu ngắt (tác động theo sườn hay theo mức) chân yêu cầu ngắt IR mạch 8259A việc bố trí mạch 8259A khác hệ làm việc đơn lẻ hay theo chế độ nối tầng
(100)Chương V Tổng quan phương pháp vào liệu
-100- o ICW2
Từ điều khiển khởi đầu cho phép chọn kiểu ngắt (số hiệu ngắt) ứng với bít T3-T7 cho đầu vào yêu cầu ngắt Các bít T0-T2 8259A tự động gán giá trị tùy theo đầu vào yêu cầu ngắt cụ thể IRi Ví dụ ta muốn đầu vào mạch 8259A có kiểu ngắt 40-47H ta cần ghi 40H vào bít T3-T7 Nếu làm IR0 có kiểu ngắt 40H, IR1 có kiểu ngắt 41H
o ICW3
Từ điều khiển khởi đầu dùng đến bít SNGL thuộc từ điều khiển khởi đầu ICW1 có giá trị 0, nghĩa hệ có mạch 8259A làm việc chế độ nối tầng Chính tồn loại ICW3: cho mạch 8259A chủ cho mạch 8259A thợ
ICW3 cho mạch chủ: dùng để đầu vào yêu cầu ngắt IRi có tín hiệu INT mạch thợ nối vào
ICW3 cho mạch thợ: dùng làm phương tiện để mạch nhận biết Vì từ điều khiển khởi đâùu phải chứa mã số i ứng với đầu vào Iri mạch chủ mà
(101)Chương V Tổng quan phương pháp vào liệu
-101-
mạch thợ cho nối vào Mạch thợ so sánh mã số với mã số nhận CAS2-CAS0
Nếu số hiệu ngắt đưa buýt có INTA
Ví dụ: Trong hệ vi xử lý ta có mạch 8259A chủ mạch 8259A thợ nối vào chân IR1 mạch chủ Tìm giá trị phải gán cho từ điều khiển khởi đầu ICW ? Giải: Như nói, để mạch làm việc vói ta phải gán từ điều khiển khởi đầu sau: ICW3 = 03H cho mạch chủ ICW3 = 00H cho mạch thựo thứ ICW3 = 01H cho mạch thợ thứ hai
o ICW4
Từ điều khiển khởi đầu dùng đến từ điều khiển ICW1 có IC4 = (cần thêm ICW4)
Bít PM cho ta khả chọn loại vi xử lý để làm việc với 8259A Bít PM = cho phép vi xử lý từ 8086/88 cao làm việc vưói 8259A
Bít SFNM = cho phép chọn chế độ ưu tiên cố định đặc biệt Trong chế độ yêu cầu ngắt với mức ưu tiên cao thời từ mạch thợ làm việc theo kiểu nối tầng mạch chủ nhận biết mạch chủ phải phục vụ yêu cầu ngắt mạch thợ khác với mức ưu tiên thấp Sau yêu cầu ngắt phục vụ xong chương trình phục vụ ngắt phải có lệnh kết thúc yêu cầu ngắt (EOI) đặt trước lệnh trở (IRET) đưa đến cho mạch 8259A chủ
Khi bít SFNM = chế độ ưu tiên cố định chọn (IR0: mức ưu tiên cao IR7: mức ưu tiên thấp nhất) thực đối vưói mạch 8259A khơng dùng đến ICW1 chế độ chọn ngầm định Trong chế độ ưu tiên cố định thời điểm có yêu cầu ngắt i phục vụ (bít IRi = 1) lúc ấtt yêu cầu khác vứoi ứmc ưu tiên cao hưon ngắt yêu cầu khác với mức ưu tiên thấp
(102)
Chương V Tổng quan phương pháp vào liệu
-102-
Bít BUF cho phép định nghĩa mạch 8259A để làm việc với CPU trường hợp có đệm khơng có đệm nối với bt hệ thống Khi làm việc chế độ có đệm (BUF = 1) Bít M/S = 1/0 cho phép ta chọn mạch 8259A để làm việc chế độ chủ/ thợ SP/EN trở thành đầu cho phép mở đệm để PIC CPU thơng vưói bt hệ thống
Bít AEOI = cho phép chọn cách kết thcú yêu cầu ngắt tự động Khi AEOI = 8259A tự động xóa ISRi = xung INTA cuối chuyển lên mức cao mà không làm thay đổi thứ tự ưu tiên Ngược lại Khi ta chọn cách kết thúc yêu cầu ngắt thường (AEOI = 0) chương trình phục vụ ngắt phải có thêm lệnh EOI đặt trước lệnh IRET để kết thúc cho 8259A
V.3.2.3.b Các từ điều khiển hoạt động OCW
Các từ điều khiển hoạt động OCW định mạch 8259A hoạt động sau khởi đầu từ điều khiển ICW Tất từ điều khiển ghi vào ghi PIC A0 = 0, trừ OCW1 ghi A0 =
o OCW1
OCW1 dùng để ghi giá trị bít mặt nạ vào ghi mặt nạ ngắt IMR Khi bít mặt nạ lập yêu cầu ngắt tương ứng với mặt nạ khơng 8259A nhận biết (bị che) Từ điều khiển phải đưa đến 8259A sau ghi ICW vào 8259A
Ta đọc lại IMR để xác định tình trạng mặt nạ ngắt (xem thời điểm yêu cầu ngắt bị che)
(103)Chương V Tổng quan phương pháp vào liệu
-103- OCW2
Các bít R., SL, EOI phối hợp vưói cho phép chọn cách thức kết thúc yêu cầu ngắt khác Một vài cách thcú yêu cầu ngắt tác động tới yêu cầu ngắt đích danh với mức ưu tiên giải mã hóa bít L2, L1, L0
Trước nói cách kết thúc yêu cầu ngắt cho chế độ ta cần mở dấu ngoặc để giới thiệu chế độ làm việc 8259A
Chế độ ưu tiên cố định:
Đây chế độ làm việc ngầm định 8259A sau nạp từ điều khiển khởi đầu Trong chế độ này, đầu vào IR7-IRO gán cho mức ưu tiên cố định: IRO gán cho mức ưu tiên cao IR7 mức ưu tiên thấp Mức ưu tiên giữ không thay đổi ghi mạch 8259A bị lập trình khác OCW2
Trong chế độ ưu tiên cố định thời điểm có yêu cầu ngắt i phục vụ (bít ISRi = 1) lúc tất ác yêu cầu khác với mức ưu tiên thấp bị cấm, tất yêu cầu khác vưói mức ưu tiên thấp ngắt yêu cầu khác với mức ưu tiên thấp
Chế độ quay mức ưu tiên (ưu tiên luân phiên) tự động:
Ở chế độ sau yêu cầu ngắt phục vụ xong, 8259A xố bít tương ứng ghi ISR gán cho đầu vào mức ưu tiên thấp để tạo điều kiện cho yêu cầu ngắt khác có hội phục vụ
Chế độ quay (đổi) mức ưu tiên đích danh:
Ở chế độ ta cần rõ (đích danh) đầu vào IRi nào, với i=L2L1L0, gán
(104)Chương V Tổng quan phương pháp vào liệu
-104-
Trở lại vấn đề liên quan đến OCW, ta nói rõ việc bít R, SL EOI phối hợp với để tạo lệnh quy định cách thức kết thúc yêu cầu ngắt cho chế độ làm việc khác nói đến phần
1 Kết thúc yêu cầu ngắt thường: chương trình cịn phục vụ ngắt phải có lệnh EOI đặt trước lệnh trở IRET cho 8259A Vi mạch xác định yêu cầu ngắt IRi vừa phục vụ xố bít ISRi tương ứng để tạo điều kiện cho yêu cầu ngắt ngắt khác có mức ưu tiên thấp tác động
2 Kết thúc yêu cầu ngắt thường: chương trình phục vụ ngắt phải có lệnh EOI đích danh đặt trước lệnh trở IRET cho 8259A 8259A xố đích danh bít ISRi, với i=L2L1L0 để tạo điều kiện cho yêu cầu ngắt ngắt
khác có mức ưu tiên thấp tác động
3 Quay (đổi) mức ưu tiên kết thúc yêu cầu ngắt thường: chương trình phục vụ ngắt phải có lệnh EOI đặt trước lệnh trở IRET cho 8259A 8259A xác định yêu cầu ngắt thứ i vừa phục vụ Xóa bít ISRi tương ứng gán mức ưu tiên thấp cho đầu vào IR, đầu vào IRi+1 gán
mức ưu tiên cao
Có thể theo dõi cách thức hoạt động mạch 8259A chế độ quay (đổi) mức ưu tiên kết thúc yêu cầu ngắt thường thơng qua ví dụ minh họa trình bày Hình V-10
(105)Chương V Tổng quan phương pháp vào liệu
-105-
4 Quay (đổi) mức ưu tiên chế độ kết thúc yêu cầu ngắt tự động: cần lần đưa lệnh chọn chế độ đổi mức ưu tiên kết thúc yêu cầu ngắt tự động Có thể chọn chế độ lệnh lập “chế độ quay có EOI tự động” Từ trở 8259A đổi mức ưu tiên kết thúc ngắt tự động theo cách tương tự mục Muốn bỏ chế độ ta dùng lệnh xóa “chế độ quay có EOI tự động”
5 Quay (đổi) mức ưu tiên kết thúc u cầu ngắt đích danh: chương trình cịn phục vụ ngắt phải có lệnh EOI đích danh cho 8259A đặt trước lệnh trở IRET Mạch 8259A xóa bít ISRi u cầu ngắt tương ứng gán mức ưu tiên thấp cho đầu vào IRi, với i = L2 L1 L0
6 Lập mức ưu tiên: chế độ cho phép thay đổi mức ưu tiên cố định mức ưu tiên gán trước cách gán mức ưu tiên thấp cho yêu cầu ngắt IRi đích danh với tổ hợp i = L2 L1 L0 Yêu cầu ngắt IRi+1 gán mức ưu
tiên cao OCW3
Từ điều khiển hoạt động sau ghi vào 8259A cho phép:
Chọn ghi để đọc
Thăm dò trạng thái yêu cầu ngắt cách trạng thái đầu vào yêu cầu ngắt Iri với mức ưu tiên cao nấht mã đầu vào
Thao tác với mặt nạ đặc biệt
(106)Chương V Tổng quan phương pháp vào liệu
-106-
Các ghi IRR ISR đọc sau nạp vào 8259A từ điều khiển OCW3 với bít RR = 1: bít RIS = cho phép đọc IRR Bít RIS = cho phép đọc ISR Dạng thức ghi biểu diễn hình
Bằng việc đưa vào 8259A từ điều khiển OCW3 với bít P = ta đọc buýt liệu lần đọc tiếp sau từ thăm dị, có thơng tin yêu cầu ngắt với mức ưu tiên cao hoạt động mã tương ứng với yêu cầu ngắt theo dạng thức biểu diễn
D7 D6 D5 D4 D3 D2 D1 D0
1: có ngắt X x X x Số hiệu yêu cầu ngắt
Có thể gọi chế độ thăm dò yêu cầu ngắt chế độ thường ứng dụng trường hợp có nhiều chương phục vụ ngắt giống cho yêu cầu ngắt việc chọn chương trình để sử dụng trách nhiệm người lập trình
Hình V-13 Thanh ghi IRR ISR Hình V-12 OCW3
(107)Chương V Tổng quan phương pháp vào liệu
-107-
Tóm lại, muốn dùng chế độ thăm dị 8259A để xác định yêu cầu ngắt ta cần làm thao tác sau:
- Cấm yêu cầu ngắt lệnh CLI - Ghi từ lệnh OCW3 với bít P =
- Đọc từ thăm dò trạng thái yêu cầu ngắt buýt liệu
Bít ESMM = cho phép 8259A thao tác với chế độ mặt nạ đặc biệt Bít SMM = cho phép lập chế độ mặt nạ đặc biệt Chế độ mặt nạ đặc biệt dùng để thay đổi thứ tự ưu tiên bên chương trình phục vụ ngắt Ví dụ trường hợp có yếu cầu ngắt cấm (bị che chương trình phục vụ ngắt với từ lệnh OCW1 mà ta lại muốn cho phép yêu cầu ngắt với mức ưu tiên thấp so với u cầu ngắt bị cấm tác động ta dùng chế độ mặt nạ đặc biệt Một lập, chế độ mặt nạ đặc biệt tồn bị xóa cách ghi vào 8259A từ lệnh OCW3 khác vứoi bít SMM = Mặt nạ đặc biệt không ảnh hưởng tới yêu cầu ngắt vưói mức ưu tiên cao hơn)
V.3.2.3.c Hoạt động 8086/8088 với 8259A
Cuối để có nhìn cách có hệ thống hoạt động hệ vi xử lý với CPU 8086/8088 PIC 8259A có yêu cầu ngắt, ta tóm lượt hoạt động chúng sau:
1 Khi có yêu cầu ngắt từ thiết bị ngoại vi tác động vào chân IR PIC 8259A đưa INT = đến chân INTR 8086/8088
2 8086/8088 đưa xung INTA đầu đến 8259A
3 8259A dùng xung INTA đầu thơng báo để hồn tất xử lý nội cần thiết, kể xử lý ưu tiên có nhiều yêu cầu ngắt xảy
4 8086/8088 đưa xung INTA thứ hai đến 8259A
5 Xung INTA thứ hai khiến 8259A đưa buýt liệu byte chứa thông tin số hiệu ngắt yêu cầu ngắt vừa nhận biết
6 8086/8088 dùng số hiệu ngắt để tính địa ngắt vectơ ngắt tương ứng 8086/8088 cất FR, xóa cờ IF TF cất địa trở CS:IP vào ngăn xếp 8086/8088 lấy địa CS:IP chương trình phục vụ ngắt từ bảng vectơ ngắt
thực chương trình
V.4 Vào/ra truy nhập trực tiếp nhớ (Direct memory Access) V.4.1 Khái niệm phương pháp truy nhập trực tiếp vào nhớ
(108)Chương V Tổng quan phương pháp vào liệu
-108-
Trong thực tế có ta cần trao đổi liệu thật nhanh với thiết bị ngoại vi: cần đưa liệu thị hình trao đổi liệu với điều khiển đĩa Trong trường hợp ta cần có khả ghi /đọc liệu trực tiếp với nhớ đáp ứng yêu cầu tốc độ trao đổi liệu Để làm điều hệ vi xử lý nói chung phải dùng thêm mạch chuyên dụng để điều khiển việc truy nhập trực tiếp vào nhớ DMAC (Direct Memory Access Controller)
Ví dụ minh họa điều Trong mạch DMAC 8237A Inter điều khiển việc chuyển byte mảng liệu từ nhớ thiết bị ngoại vi hết chu kỳ đồng hồ vi xử lý 8086/8088 phải làm hết cỡ chu kỳ:
; số chu kỳ đồng hồ LAP: MOV AL, (SI ) ;10
OUT PORT, AL ;10 INC SI ; LOOP LAP ; 17
; CỘNG:39 chu kỳ
Để hỗ trợ cho việc trao đổi liệu với thiết bị ngoại vi cách truy nhập trực tiếp vào nhớ CPU thường có tín hiệu u cầu treo HOLD để thiết bị cần dùng buýt cho việc trao đổi liệu với nhớ thơng qua chân mà báo cho CPU biết Đến lượt CPU, nhận u cầu treo tự treo lên (tự tách khỏi hệ thống cách đưa bít vào trạng thái trở kháng cao) đưa xung HLDA ngồi để thơng báo CPU cho phép sử dụng buýt
Sơ đồ khối hệ vi xử lý có khả trao đổi liệu theo kiểu DMA thể hình
Ta nhận thấy hệ thống này, CPU tự tách khỏi hệ thống cách tự treo (ứng với vị trí thời công tắc chuyển mạch), DMAC phải chịu trách nhiệm điều
(109)Chương V Tổng quan phương pháp vào liệu
-109-
khiển toàn hoạt động trao đổi liệu hệ thống Như vậy, DMAC phải có khả tạo tín hiệu điều khiển cần thiết giống tín hiệu CPU thân phải thiết bị lập trình Quá trình hoạt động hệ thống tóm tắt sau:
Khi thiết bị ngoại vi có yêu cầu trao đổi liệu kiểu DMA với nhớ, đưa yêu cầu DREQ=1 đến DMAC, DMAC đưa yêu cầu treo HRQ=1 đến chân HOLD CPU Nhận yêu cầu treo, CPU treo buýt trả lời chấp nhận treo qua tín hiệu HLDA=1 đến chân HACK DMAC, DMAC thông báo cho thiết bị ngoại vi thơng qua tín hiệu DACK=1 cho phép thiết bị ngoại vi trao đổi liệu kiểu DMA trình DMA kết thúc DMAC đưa tín hiệu HRQ=0
V.4.2 Các phương pháp trao đổi liệu
Trong thực tế tồn kiểu trao đổi liệu cách truy nhập trực tiếp vào nhớ sau:
Treo CPU khoảng thời gian để trao đổi mảng liệu
Treo CPU để trao đổi byte
Tận dụng thời gian không dùng buýt để trao đổi liệu V.4.2.1 Trao đổi mảng liệu
Trong chế độ CPU bị treo suốt trình trao đổi mảng liệu Chế độ dùng ta có nhu cầu trao đổi liệu với ổ đĩa đưa liệu hiển thị Các bước để chuyển mảng liệu từ nhớ thiết bị ngoại vi:
1 CPU phải ghi từ điều khiển từ chế độ làm việc vào DMAC để quy định cách thức làm việc, địa đầu mảng nhớ, độ dài mảng nhớ,
2 Khi thiết bị ngoại vi có yêu cầu trao đổi liệu, đưa DREQ =1 đến DMAC DMAC đưa tín hiệu HRQ đến chân HOLD CPU để yêu cầu treo CPU Tín hiệu
HOLD phải mức cao hết trình trao đổi liệu
4 Nhận yêu cầu treo, CPU kết thúc chu kỳ buýt tại, sau treo bt đưa tín hiệu HLDA báo cho DMAC toàn quyền sử dụng buýt DMAC đưa xung DACK để báo cho thiết bị ngoại vi biết bắt đầu trao đổi
dữ liệu
6 DMAC bắt đầu chuyển liệu từ nhớ thiết bị ngoại vi cách đưa địa byte đầu buýt địa đưa tín hiệu MEMR=O để đọc byte từ nhớ buýt liệu tiếp DMAC đưa tín hiệu IOW =0 để ghi đưa liệu thiết bị ngoại vi DMAC sau giảm đếm số byte cịn phải chuyển, cập nhật địa byte cần đọc tiếp, lặp lại cá c động tác hết số đếm (TC)
7 Quá trình DMA kết thúc, DMAC cho tín hiệu HRQ=0 để báo cho CPU biết để CPU dành lại quyền điều khiển hệ thống
V.4.2.2 Treo CPU để trao đổi byte
(110)Chương V Tổng quan phương pháp vào liệu
-110-
mất số chu kỳ đồng hồ) Do bị lấy số chu kỳ đồng hồ lên tốc độ thực công việc CPU bị suy giảm không dừng lại Cách hoạt động tương tự phần trước, có điều lần DMAC yêu cầu treo CPU thi có byte trao đổi
V.4.2.3 Tận dụng thời gian CPU không dùng buýt để trao đổi liệu
Trong cách trao đổi liệu này, ta phải có logic phụ bên cần thiết để phát chu kỳ xử lý nội CPU (không dùng đến bt ngồi) tận dụng chu kỳ vào việc trao đổi liệu thiết bị ngoại vi với nhớ Trong cách làm DMAC CPU luân phiên sử dụng buýt việc truy nhập trực tiếp nhớ kiểu không ảnh hưởng tới hoạt động bình thường CPU
V.4.3 Bộ điều khiển truy nhập trực tiếp vào nhớ Intel 8237A
V.4.3.1 Giới thiệu
DMAC 8237A thực truyền liệu theo kiểu: kiểu đọc (từ nhớ thiết bị ngoại vi), kiểu ghi (từ thiết bị ngoại vi đến nhớ) kiểu kiểm tra
Trong chế độ truyền kiểu đọc liệu đọc từ nhớ đưa thiết bị ngoại vi Trong chế độ truyền kiểu ghi liệu đọc từ thiết bị ngoại vi đưa vào nhớ Khi 8237A làm việc chế độ kiểm tra địa đưa đến nhớ DMAC không tạo xung điều khiển để tiến hành thao tác ghi/đọc nhớ hay thiết bị ngoại vi
Ngồi mạch 8237A cịn hỗ trợ việc trao đổi liệu vùng khác nhớ riêng chế độ làm việc này, liệu cần trao đổi phải di qua DMAC với tốc độ cao qua CPU với tốc độ cao qua CPU (trong trường hợp ta đọc liệu ghi tạm) Sơ đồ khối cấu trúc bên mạch 8237A -5 thể hình
(111)Chương V Tổng quan phương pháp vào liệu
-111-
Mạch DMAC 8237A chứa kênh trao đổi liệu DMA với mức ưu tiên lập trình DMAC 8237A có tốc độ truyền MB/s cho kênh, kênh truyền mơt mảng có độ dài 64KB
V.4.3.2 Các tín hiệu 8237A -5
CLK[I]:tín hiệu đồng hồ mạch để mạch làm việc tốt với hệ 8086/8088 tín hiệu CLK hệ thống thường đảo trước đưa vào CLK 8237A
CS [I]: tín hiệu chọn vỏ 8237A chân thường nối với đầu giải mã địa giải mã địa không cần dùng đến đầu vào IO/M thân DMAC cung cấp xung điều khiển hên thống
RESET[I]:tín hiệu nối với tín hiệu khởi động hệ thống Khi mạch 8237A khởi động riêng ghi mặt nạ lập cịn phận sau bị xóa:
o Thanhghi lệnh o Thanh ghi trạng thái o Thanh ghi yêu cầu DMA o Thanh ghi tạm thời
o Mạch lật byte đầu /byte cuối (First/Last)
READY[I]:tín hiệu sẵn sàng, nối với READY hệ thống để gây chu kỳ đợi thiết bị ngoại vi nhớ chậm
HLDA [I]:tín hiệu báo chấp nhân yêu cầu treo từ CPU
DREQ0-DREQ3[I]:các tín hiệu yêu cầu treo từ thiết bị ngoại vi Cực tính
của tín hiệu lập trình Sau khởi động tín hiệunày định nghĩa tín hiệu kích hoạt mức cao
DB0-DB7[I, O]:tín hiệu hai chiều nối đến buýt địa buýt lliệu hệ thống tín hiệu dùng lập trình cho DMAC DMAC hoạt động chân chứa bít địa cao A8-A15 mảng nhớ
dữ liệu cần chuyển Trong chế độ chuyển liệu vùng nhớ chân có liệu chuyển
IOR[I, O]VÀ IOW[I, O]: chân tín hiệu hai chiều dùng lập trình cho DMAC chu kỳ đọc ghi
EOP[I, O]: tín hiệu hai chiều dùng để yêu cầu DMAC kết thúc q trình DMA Khi đầu dùng để báo cho bên ngồi biết kênh chuyển xong số byte theo yêu cầu, luc thường dùng yêu cầu ngắt để CPU xử lý việc kết thúc trình DMA
A0-A3[I, O]:là tín hiệu hai chiều dùng để chọn ghi 8237A lập trình đọc (đầu vào), để chuyển bít địa thấp địa mảng nhớ cần chuyển (đầu ra)
(112)Chương V Tổng quan phương pháp vào liệu
-112-
HRQ[O]:tín hiệu yêu cầu treo đến CPU Tín hiệu thường đồng với tín hiệu CLK hệ thống đưa đến chân HOLD 8086/8088
DACK0-DACK3[0]: tín hiệu trả lời yêu cầu DMA cho kênh
Các tín hiệu lập trình để hoạt động theo mức thấp mức cao Sau khởi động, tín hiệu định nghĩa xung tích cực thấp
AEN[0]: tín hiệu cho phép mạch nối vào DB0-DB7 chốt lấy địa vùng nhớ cần trao đổi theo kiểu DMA Tín hiệu cho phép cấm mạch đệm buýt địa liệu mạch tạo tín hiệu điều khiển CPU nối vào buýt tương ứng DMAC hoạt động
ADSTB[0]: xung cho phép chốt bít địa phần cao A8-A15 có mặt DB0-DB7
MEMR[0] MEMW[0]: chân tín hiệu DMAC tạo dùng đọc/ghi nhớ hoạt động
Hình vẽ minh họa cách ghép nối tín hiệu 8237A với buýt hệ thống
V.4.3.3 Các ghi bên DMAC 8237A
Các ghi bên DMAC 8237A CPU 8086/8088 chọn để làm việc nhờ bít địa thấp A0-A3 Bảng cách thức chọn ghi
(113)Chương V Tổng quan phương pháp vào liệu
-113-
Các bảng cho biết ghi theo quan điểm ứng dụng khác để dễ tra cứu địa cho chúng lập trình với DMAC 8237A
(114)Chương V Tổng quan phương pháp vào liệu
-114-
V.4.3.3.a Thanh ghi địa thời:
Đây ghi 16 bít dùng để chứa địa vùng nhớ phải chuyển Mỗi kênh có riêng ghi để chứa địa Khi byte truyền Các ghi tự động tăng hay giảm tuỳ theo trước lập trình
V.4.3.3.b Thanh ghi số đếm thời:
Thanh ghi 16 bít dùng để chứa số byte mà kênh phải truyền(nhiều 16KB) Mỗi kênh có ghi số byte Các ghi ghi số đếm nhỏ so với số byte thực chuyển
V.4.3.3.c Thanh ghi địa sở ghi số đếm sở:
Các ghi dùng để chứa địa số đếm cho kênh chế độ tự động khởi đầu sử dụng
Trong chế độ trình DMA kết thúc ghi địa thời số đếm thời nạp lại giá trị cũ lấy từ ghi địa sở ghi số đếm sở Khi ghi địa thời số đếm thời lập trình ghi địa sở ghi số đếm sở lập trình chế độ tự khởi đầu có sử dụng hay không
V.4.3.3.d Thanh ghi lệnh:
Thanh ghi dùng để lập trình cho DMAC Nó bị xố khởi động ta sử dụng lệnh xố tồn ghi Dạng thức ghi lệnh sau
(115)Chương V Tổng quan phương pháp vào liệu
-115-
Các bít ghi định phương thức làm việc khác 8237A Ta giải thích sau ý nghĩa bít
Bít D0 cho phép DMAC dùng kênh kênh để chuyển liệu vùng nhớ Địa byte liệu vùng đích chứa ghi địa kênh Số byte chuyển đặt ghi đếm kênh Byte cần chuyển lúc đầu đọc từ vùng gốc vào ghi tạm để từ gửi đến vùng đích bước (hoạt động lệnh MOVSB với tốc độ cao)
Bít D1=1 dùng phép kênh giữ nguyên địa chế độ truyền giữ liệu vùng nhớ Điều khiến cho tồn nhớ vùng đích nạp byte liệu
Bít D2 cho phép DMAC hoạt động hay khơng
Bít D3 định byte cần chuyển truyền với hay chu kì đồng hồ
Bít D4 cho phép chọn chế độ ưu tiên cố định (kênh có mức ưu tiên cao Kênh có mức ưu tiên thấp nhất) chế độ ưu tiên luân phiên (kênh lúc đầu có mức ưu tiên cao Sau kênh chọn để chuyển liệu nhận mức ưu tiên thấp Kênh lại trở thành kênh có mức ưu tiên cao nhất)
Bít D5 cho phép chọn thời gian ghibình thường hay kéo dài cho tiết bị ngoại vi chậm Các bít D6 D7 cho phép chọn cực tính tích cực xung DRQ0-DRQ4 DACK0- DACK4
V.4.3.3.e Thanh ghi chế độ:
(116)Chương V Tổng quan phương pháp vào liệu
-116-
Trong chế độ DMA theo yêu cầu DMAC tiến hành chuyển liệu có tín hiệu EOP từ bên ngồi khơng cịn u cầu DMA (DREQ trở nên khơng tích cực)
Trong chế độ DMA chuyển byte, chừng yêu cầu DMA (DREQ tích cực) DMAC đưa HRQ=0 thời gian chu kì buýt sau lần chuyển sang byte Sau lại đưa HRQ=1 Cứ DMAC CPU luân phiên sử dụng buýt đếm hết (TC)
Trong chế độ DMA chuyển mảng, mảng gồm số byte nội dung đếm chuyển liền lúc Chân yêu cầu chuyển liệu DREQ không cần phải giữ mức tích cực suốt trình chuyển Chế độ nối tầng dùng có nhiều DMAC dùng hệ thống để mở rộng số kênh yêu cầu DMA
V.4.3.3.fThanh ghi yêu cầu:
Thanh ghi dùng để u cầu DMA thiết lập/ xố theo ý muốn chương trình Điều có lợi ta muốn chuyển liệu vùng khác nhớ lúc kênh liên quan phải lập trình chế độ chuyển mảng Dạng thức ghi yêu cầu sau:
V.4.3.3.g Thanh ghi mặt nạ riêng cho kênh:
(117)Chương V Tổng quan phương pháp vào liệu
-117-
V.4.3.3.h Thanh ghi mặt nạ tổng hợp:
Với ghi ta lập trình để cấm (Bít mặt nạ tương ứng = 1) thay cho phép hoạt động (Bít mặt nạ tương ứng = 0) kênh lệnh
V.4.3.3.i Thanh ghi trạng thái:
Thanh ghi cho phép xác định trạng thái kênh DMAC Kênh truyền xong (đạt số đếm TC), kênh có yêu cầu DMA để trao đổi liệu Khi kênh đạt TC Kênh tự động bị cấm Cấu trúc ghi trạng thái sau:
D7 D6 D5 D4 D3 D2 D1 D0
D7=1: Kênh có yêu cầu D0=1: Kênh đạt số đếm D6=1: Kênh có yêu cầu D1=1: Kênh đạt số đếm D5=1: Kênh có yêu cầu D2=1: Kênh đạt số đếm D4=1: Kênh có yêu cầu D3=1: Kênh đạt số đếm V.4.3.4 Các lệnh đặc biệt cho DMAC 8237A
Có lệnh đặc biệt để điều khiển hoạt động DMAC 8237A Các lệnh thực lệnh OUT với địa cổng xác định theo ghi mà khơng cần đến giá trị cụ thể ghi AL
1 Lệnh xóa mạch lật byte đầu/byte cuối (First/Lát, F/L): F/L mạch lật bên DMAC bít để byte ghi 16bít (thanh ghi địa ghi số đếm chọn làm việc Nếu F/L=1 thi số MSB, cịn F/L=O) số LSB Mạch lật F/L tự động thay đổi trạng thái ta ghi /đọc ghi khởi động xong F/L=O
2 Lệnh xố tồn ghi: lệnh có tác động thao tác khởi động Tất ghi bị xoá riêng ghi mặt nạ tổng hợp lập để cấm yêu cầu trao đổi liệu
3 Lệnh xoá ghi mặt nạ tổng hợp: Lệnh cho phép kênh DMAC bắt đầu yêu cầu trao đổi liệu
V.4.3.5 Lập trình cho ghi địa ghi số đếm:
(118)Chương V Tổng quan phương pháp vào liệu
-118- + xoá mặt lật F/L
+cấm yêu cầu kênh
+ghi LSB MSB ghi địa +ghi LSB MSB ghi số đếm
Dưới đoạn mã cho 8237A có địa sở 70H ghép với vi xử lý 8088 Hình V-18
ChotB EQU 010H ; Địa mạch chốt B FL EQU 07CH ; Địa mạch lật C0 EQU 070H ; Địa kênh C1 EQU 072H ; Địa kênh Dem_C1 EQU 073H ; Địa kênh
CheDo EQU 07BH ; Địa ghi chế độ Lenh EQU 078H ; Địa ghi lệnh MatNa EQU 07FH ; Địa ghi mặt nạ YeuCau EQU 079H ; Địa ghi yêu cầu TThai EQU 078H ; Địa ghi trạng thái SoByte DW 0100H ; Số byte cần chuyển
A16_19 DB 01H ; bít địa cao Nguon DW 00000H ; Địa nguồn Dich DW 04000H ; Địa đích ;
MOV AL,A16_19
OUT ChotB, AL ; Gửi địa cao mạch chốt
OUT FL, AL ; Xóa mạch lật
MOV AX, Nguon ;Địa nguồn kênh OUT C0,AL
MOV AL, AH OUT C0, AL
MOV AX, Dich ; Địa đích kênh OUT C1, AL
(119)Chương V Tổng quan phương pháp vào liệu
-119- MOV AX, SoByte
OUT Dem_C1, AL ; số byte cần chuyển vào đếm kênh MOV AL, AH
OUT Dem_C1, AL
MOV AL, 088H ; Chế độ kênh
OUT CheDo, AL
MOV AL, 085H ; Chế độ kênh
OUT CheDo, AL
MOV AL,1 ; Chuyển mảng
OUT Lenh, AL
MOV AL, 0CH ; Bỏ mặt nạ kênh 0,1 OUT MatNa, AL
MOV AL,4 ; Kênh yêu cầu DMA
OUT YeuCau, AL LAP: IN AL,TThai
TEST AL,2 ; Kiểm tra đếm kênh xong?
(120)Chương V Tổng quan phương pháp vào liệu
-120-
(121)Chương VI. Các vi điều khiển
VI.1 Giới thiệu vi điều khiển hệ nhúng
VI.1.1 Giới thiệu
Hệ vi điều khiển máy tính vi mạch cần thiết bố trí vi mạch Tất máy tính điều có số điểm chung sau:
Đơn vị xử lý trung tâm (CPU) thực chương trình
Bộ nhớ truy nhập ngẫu nhiên RAM chứa liệu thay đổi
Bộ nhớ đọc ROM chức chương trình
Các thiết bị vào/ra để liên lạc với giới bên bàn phím, hình … Hệ vi điều khiển mơ tả đặc trưng khác Nếu máy tính có đặc điểm chung chúng coi hệ vi điều khiển Hệ vi điều khiển có thể:
nhúng bên thiết bị khác (thường sản phẩm tiêu dùng) để kiểm soát chức hay hoạt động sản phẩm Hệ vi điều khiển coi điều khiển nhúng;
dùng cho nhiệm vụ chạy chương trình xác định Chương trình thường lưu ROM không thay đổi;
thiết bị tiêu thụ điện thấp Bộ vi điều khiển sử dụng pin tiêu thụ 50 mA
Bộ vi điều khiển nhận đầu vào từ thiết bị điều khiển thiết bị cách gửi tín hiệu tới phận khác thiết bị điều khiển Bộ vi điều khiển thường nhỏ chi phí thấp Bộ xử lý dùng vi điều khiển thay đổi nhiều Trong nhiều sản phẩm lò vi sóng, yêu cầu CPU thấp sức ép giá thành lại lớn nên nhà sản xuất lựa chọn vi mạch vi điều khiển chuyên dụng Đó thiết bị CPU nhúng, giá rẻ, tiêu thụ điện thấp Các vi mạch Motorola 6811 Intel 8051 ví dụ tiêu biểu Các vi mạch vi điều khiển cấp thấp thường có sẵn 1KB ROM 20 B RAM vi mạch với tín hiệu vào/ra
VI.1.2 Các kiểu vi điều khiển
(122)Chương VI Các vi điều khiển
-122-
viên phù hợp với yêu cầu chế tạo Điều tránh tình trạng thiết bị vi điều khiển phức tạp tốn để đáp ứng tất dạng ứng dụng, đồng thời, hạn chế việc số phần vi điều khiển hồn tồn khơng sử dụng chạy ứng dụng Họ vi điều khiển có tập lệnh chung, nhiên thành viên họ khác số lượng, kiểu, nhớ, cổng v v Như nhà sản xuất chế tạo thiết bị với chi phí hiệu phù hợp với yêu cầu sản xuất cụ thể
Việc mở rộng nhớ sử dụng vi mạch ROM/RAM bên vi điều khiển Mộ số vi điều khiển khơng tích hợp sẵn ROM EPROM hay EEROM Một số chức bổ sung khác tích hợp vào vi mạch vi điều khiển chuyển đổi tương tự số (Analogue-to-Digital Converter ADC) Một số vi điều khiển khác có số lượng tín hiệu để giảm thiểu chi phí Bảng liệt kê đặc tính số vi điều khiển
Bảng VI-1 Đặc tính số vi điều khiển Mơ-đen Tín hiệu:
Vào/ra
RAM (byte)
ROM (Byte)
Độ rộng từ
(bít)
Tính khác
Intel 8051 40:32 64 1K Bộ nhớ mở rộng 8K
Motorola 68HC11
52:40 256 8K Cổng nối tiếp ; chuyển đổi tương tự số
Zilog Z8820 44:40 272 8K Bộ nhớ mở rộng 128K ; cổng nối tiếp
Intel 8096 68:40 232 8K 16 Bộ nhớ mở rộng 64K ; chuyển đổi tương
tự số ;cổng nối tiếp; điều biến xung
VI.2 Họ vi điều khiển Intel 8051
Vi điều khiển 8051 lần Intel giới thiệu vào năm 1981 Đây vi điều khiển bít với 128 byte RAM 4KB ROM, cổng nối tiếp cổng bít vi mạch đơn lẻ Dòng vi điều khiển trở nên phổ biến sau Intel cho phép nhà sản xuất khác chế tạo vi điều khiển tương thích với 8051 Đến vi điều khiển 8051 thực bao gồm họ vi điều khiển ký hiệu từ 8031 tới 8751 sản xuất công nghệ NMOS CMOS với nhiều kiểu đóng gói khác Phiên nâng cao 8051 8052 có biến thể khác Các biến thể nhằm đắp ứng yêu cầu ứng dụng khác nhà phát triển
Bảng VI-2 Thông số số vi điều khiển họ 8051
Tính 8051 8052 8031
ROM 4K 8K -
RAM (Byte) 128 256 128
Bộ định thời
Tín hiệu vào/ra 32 32 32
Cổng nối tiếp 1
(123)Chương VI Các vi điều khiển
-123- VI.2.1 Sơ đồ khối
Hình VI-1 Sơ đồ khối 8051
Hình VI-1 cho thấy khối chức đặc trưng cho vi điều khiển là: ROM RAM, cổng vào/ra, định thời kênh thơng tin nối tiếp Hình VI-2 cho biết sơ đồ tín hiệu 8051, ý nghĩa tín hiệu giải thích Bảng VI-3
Hình VI-2 Sơ đồ chân tín hiệu 8051
8051 hỗ trợ cổng vào/ra số biến thể cổng hoạt động hai chế độ vào Cổng truyền thông nối tiếp thường xử lý liệu bít cho phép gửi nhận song song Cổng nối tiếp có chế độ hoạt động Chế độ 0, chân TxD sử dụng tín hiệu xung nhịp cố định mức 1/12 xung nhịp vi điều khiển chân RxD dùng để thu phát Chế độ chế độ giao tiếp UART với bít stop Chế độ giống chế độ thêm bít chẵn lẻ Chế độ giống chế độ cho phép lập trình tốc độ tín hiệu
(124)Chương VI Các vi điều khiển
-124-
Bảng VI-3 Ý nghĩa tín hiệu 8051
Tín hiệu Ý nghĩa
P0 0-P0 Tín hiệu liệu cổng P0
P1 0-P1 Tín hiệu liệu cổng P1
P2 0-P2 Tín hiệu liệu cổng P2
P3 0-P3 Tín hiệu liệu cổng P3
A8-A15 Tín hiệu địa
Xtal1-2 Tín hiệu xung nhịp
RxD Tín hiệu thu truyền thơng nối tiếp
TxD Tín hiệu phát truyền thơng nối tiếp
INT0-1 Tín hiệu ngắt 0-1 (mức thấp)
RD Đọc liệu nhớ ngồi
WR Tín hiệu ghi liệu nhớ ngồi
EA Tín hiệu truy nhập nhớ chương trình ngồi
EA=0 dùng ROM ngồi EA=1 dùng ROM
ALE Tín hiệu chốt địa P0
ALE=1 Trên nhóm cổng P0 tín hiệu địa ALE=0 Trên nhóm cổng P0 tín hiệu liệu
PSEN Tín hiệu cho phép lưu chương trình dùng đọc nhớ chương trình bên ngồi
RST Khởi động lại
Các tín hiệu ngắt 8051 chia thành loại bên bên khởi xướng Khi ngắt diễn ra, chương trình chạy bị dừng chương trình phục vụ ngắt kích hoạt Khi kết thúc, vi điều khiển quay trở lại chương trình bị dừng chưa có xảy Ngắt xảy đồng thời xử lý theo độ ưu tiên
Bộ định thời hay đếm chuỗi mạch lật thay đổi trạng thái theo tín hiệu vào/ra Hai đếm T0, T1 lập trình chia 256, 8192 hay 65536 sinh tín hiệu ngắt kết thúc Tín hiệu phát thông qua phần mềm
VI.2.2 Các ghi
Thanh ghi đếm chương trình (PC) trỏ liệu (DPTR) ghi 16 bít cho phép xác định vị trí nhớ Bộ nhớ chương trình nằm dải FFFFh 0000-0FFFh khơng gian nhớ chương trình bên vi điều khiển Con trỏ liệu chia thành hai phần thấp (8 bít) cao (8 bít)
(125)Chương VI Các vi điều khiển
-125-
dùng kèm với ghi A thao tác nhân chia Ngồi ra, 8051 cịn 32 ghi khác nằm nhớ RAM chia thành bốn băng, B0-B3, gồm ghi R0-R7
Cờ ghi bít cho biết trạng thái số lệnh gộp vào ghi từ trạng thái chương trình (Program Status Word PSW) 8051 có cờ nhớ C, phụ AC, tràn OV chẵn lẻ P Các cờ người dùng F0 GF0-1 Các cờ người dùng tùy biến theo yêu cầu người viết chương trình lưu kiện
Con trỏ ngăn xếp SP ghi bít lưu vị trí đỉnh ngăn xếp nhớ RAM 8051
Các ghi chức đặc biệt nằm nhớ RAM từ địa 00-7Fh Các ghi đặt tên riêng mã lệnh tham chiếu qua địa Ví dụ ghi A cịn tham chiếu qua địa 0E0h
VI.2.3 Tập lệnh
8051 hỗ trợ chế độ địa sau:
1 Chế độ địa trực tiếp: liệu dành cho lệnh phần mã lệnh Từ gợi nhớ cho chế độ dấu # Ví dụ MOV A, #100
2 Chế độ địa ghi: ghi lưu giá trị liệu
3 Chế độ địa trực tiếp: địa ô nhớ phần câu lệnh
4 Chế độ địa gián tiếp: giá trị ghi cho biết địa liệu Từ gợi nhớ @ Ví dụ MOV A, @R0 ; Nạp liệu nhớ có giá trị R0 vào ghi A
Tập lệnh 8051 hỗ trợ thao tác di chuyển liệu, thao tác lơ-gíc, phép tốn số học câu lệnh nhảy gọi hàm
Ví dụ VI-1
Đoạn chương trình 8051
Nhan: INC 3Ch ; Tăng giá trị ô nhớ 3Ch lên MOV A, #2Ah ; A=2Ah
XRL A, 3Ch ; XOR A với giá trị ô nhớ 3Ch
JNZ Nhan ; Nhảy tới Nhan kết XOR khác
NOP ;khơng làm
VI.3 Giới thiệu số ứng dụng tiêu biểu vi điều khiển
(126)Chương VI Các vi điều khiển
-126- VI.3.1 Chuyển đổi số tương tự (D/A)
Hình VI-3 giới thiệu kết nối vi điều khiển 8051 chuyển đổi D/A khái quát Bộ chuyển đổi D/A có đặc điểm sau:
Vout = -Vref×(byte đầu vào/100H) Vref = 10V
Thời gian chuyển đổi 5s
Trình tự điều khiển ~CS ~WR
Cổng nối với tín hiệu liệu chuyển đổi cổng dùng để điều khiển Trong ví dụ này, thiết bị tạo sóng hình sin với chu kỳ 1000Hz thay đổi theo chương trình Vref đặt -10V dạng tín hiệu đầu thay đổi từ 0V tới +9, 96V
Chương trình dùng bảng tra cứu để sinh biên độ sóng sin Chu kỳ thiết lập vào khoảng thời gian truyền liệu cho chuyển đổi Với S điểm lấy mẫu, chu kỳ ngắt Tmin= 5×S s tần số tối đa fmax = 200 000/S
Với sóng có tần số 1000Hz, cần số lượng mẫu 200 Tuy nhiên thực tế chạy chương trình cho thấy thời gian để tạo mẫu cần 6s thời gian để chuyển sang mẫu 2s Như thực tế cho phép số lượng mẫu 166
Ví dụ VI-2 Chương trình chuyển đổi D/A org 0000h
daconv: clr p3, ; Chọn chíp
mov dptr, #bang : lấy địa sở bảng repeat: mov r1, #0A6h ; Khởi tạo R1 = 166
next: mov a, r1 ; Lấy địa offset bảng movc a, @a+dptr ;Lấy giá trị mẫu
mov p1, a ; Gửi mẫu cổng clr p3,
setb p3, djnz r1, next sjmp repeat
; Bảng chuyển đổi sử dụng hàm cosin để tính giá trị biên tín hiệu đầu 83 giá
(127)Chương VI Các vi điều khiển
-127-
;trị đầu thể biên độ từ cực đại tới nhỏ 0, 83 giá trị lại từ tới cực đại Với 83
; mẫu cho nửa chu kỳ giá trị góc hàm cosin thay đổi 2, 17 độ cho mẫu
bang: db 00h ;
db ffh ; s1:FF×cos(0)
db feh ; s2:7FH+FF×cos(2, 17) db feh ; s3:7FH+FF×cos(2, 17×2) db 81h ; s42:7FH+FF×cos(88, 9)
db 00h ; s84:7FH+FF×cos(180)
db feh ; s166:7FH+FF×cos(2, 17) VI.3.2 Chuyến đổi tương tự số (A/D)
Hình VI-4 sử dụng chuyển đổi tương tự số bít có đặc tính sau: Tín hiệu lấy mẫu: Vin = Vref-, liệu =00h ; Vin=Vref+, liệu = FFh Thời gian lấy mẫu: s
Trình tự điều khiển: CS, WR RD (ở mức tích cực thấp) Trong hình vẽ, cổng 8051 nối với kênh liệu chuyển đổi cổng nối với tín hiệu điều khiển
Ví dụ VI-3 Chương trình chuyển đổi A/D
Đoạn chương trình sau số hóa tín Vref với chu kỳ 100s lưu kết vào nhớ RAM 4000h:43E7h
equ begin, 4000h ;Địa bắt đầu equ delay, 74h ;trễ 87s
equ end1, 43h ;Địa kết thúc byte cao equ end2, e8h ;Địa kết thúc byte thấp adconv: mov dptr, #begin
clr p3, ; Gửi ~CS tới A/D next: clr p3, ; Tạo xung ~WR tới A/D
setb p3, ;
clr p3, ;Tạo xung ~RD
(128)Chương VI Các vi điều khiển
-128- mov a, p1 ;Đọc liệu từ A/D setb p3, ;Kết thúc đọc mov @dptr, a ;Lưu vào RAM
inc dptr ;Tăng trỏ RAM lên mov a, dph ;Kiểm tra kết thúc
cjne a, #end1, wait mov a, dpl
cjne a, #end2, wait
sjmp done ; Kết thúc tới vị trí cuối wait: mov r1, #delay ;Trễ 87s
here: djnz r1, here sjmp next done: sjmp done
(129)Chương VII. Giới thiệu số vi xử lý tiên tiến VII.1 Các vi xử lý tiên tiến dựa kiến trúc Intel IA-32
VII.1.1 Giới thiệu IA-32
IA-32 kiến trúc 32 bít hãng sản xuất Intel phát triển lần giới thiệu vi xử lý Intel386 Kiến trúc IA-32 hỗ trợ ba chế độ hoạt động: chế độ bảo vệ (protected mode), chế độ thực (real mode) chế độ quản lý hệ thống SMM (System Management Mode) Các chế độ hoạt động định lệnh chức mà chương trình truy nhập:
Chế độ bảo vệ: chế độ xử lý Chế độ cho phép chạy phần mềm 8086 môi trường đa nhiệm bảo vệ Chế độ gọi chế độ 8086 ảo
Chế độ địa thực: Ché độ cung cấp mơi trường lập trình 8086 với số tính mở rộng chuyển sang chế độ bảo vệ Để xử lý hoạt động chế độ thông thường phải khởi động lại xử lý
Chế độ quản lý hệ thống - SMM: Chế độ cung cấp cho hệ điều hành chế suốt phục vụ nhiệm vụ cụ thể quản lý lượng hay bảo mật hệ thống Chế độ kích hoạt thơng qua tín hiệu SMM tín hiệu nhận từ điều khiển ngắt tiên tiến
Trong chế độ xử lý chuyển qua lại không gian địa riêng biệt lưu lại ngữ cảnh chương trình chạy Các đoạn mã SMM thực hoàn toàn suốt Ngay quay trở lại từ chế độ SMM, xử lý khôi phục lại trạng thái giống trước ngắt SMM xảy Bất kỳ chương trình chạy xử lý IA-32 cung cấp tài nguyên để thực lệnh, lưu đoạn mã, liệu thông tin trạng thái Các tài nguyên tạo lập nên môi trường thực thi cho chương trìnhh:
Khơng gian địa chỉ: chương trình đánh địa khơng gian nhớ tuyến tính tới 232 byte hay 4GB không gian địa vật lý lên tới 236 sử dụng cách đánh địa mở rộng
Các ghi thực thi bản: bao gồm ghi dùng chung, sáu ghi đoạn, ghi cờ trỏ lệnh EIP
(130)Chương VII Giới thiệu số vi xử lý tiên tiến
-130-
Các ghi MMX: bao gồm ghi hỗ trợ chế thực lệnh nhiều liệu với thao tác số nguyên (1 byte, byte hay byte) xếp vào gói 64 bít
Các ghi XMM: hỗ trợ thao tác số nguyên số thực xếp vào gói 128 bít
Các vi xử lý hệ sau hỗ trợ IA-32 áp dụng tính thực thi lệnh tiên tiến cho phép thực nhiều lệnh chu trình lệnh kỹ thuật đường ống, siêu vô hướng, hay siêu phân luồng Các hệ Pentium sử dụng vi kiến trúc siêu vô hướng cho phép thực lệnh chu kỳ xung nhịp với siêu đường ống 12 đoạn chế thực thi vô hướng (out-of-order execution) Vi kiến trúc Netburst Hình VII-1 Vi kiến trúc Netburst tăng cường tính kiến trúc Pentium hệ đầu việc tăng cường lực đơn vị xử lý, cao hiệu đệm tích hợp, mở rộng giao tiếp buýt Các vi xử lý IA-32 hệ hỗ trợ chế đa nhân (multi-core) bên cạnh kiến trúc siêu phân luồng cho phép chạy nhiều ứng dụng đồng thời Việc kết hợp hai kiến trúc làm cho chương trình ứng dụng sử dụng vi xử lý lơ-gíc bơ vi xử lý vật lý Bên cạnh đó, xử lý hệ hỗ trợ công nghệ ảo hóa cho phép nhiều hệ điều hành ứng dụng chạy máy ảo khác chia sẻ hệ thống phần cứng
Kiến trúc IA-32 cung cấp chức hỗ trợ hệ điều hành hay phần mềm hệ thống Với thao tác vào/ra chế độ bảo vệ, thao tác bị hạn chế thông qua:
Cờ đặc quyền IOPL (I/O privilege level) trạng thái quyền vào/ra phân đoạn trạng thái chương trình TSS (Task state segment)
Cơ chế bảo vệ đoạn trang nhớ
(131)Chương VII Giới thiệu số vi xử lý tiên tiến
-131-
Về mơ hình nhớ, chương trình khơng truy nhập trực tiếp vào nhớ vật lý Thay vào đó, chương trình sử dụng mơ hình truy nhập:
1 Tuyến tính: Chương trình coi nhớ chuỗi liên tiếp byte Đoạn mã, liệu ngăn xếp nằm không gian địa
2 Phân đoạn: Bộ nhớ chia thành không gian khác gọi đoạn Thông thường liệu, đoạn mã, ngăn xếp sử dụng đoạn khác Bộ xử lý hỗ trợ IA-32 cung cấp 16 383 đoạn với kích cỡ khác nhau, kích cỡ lớn đoạn 4GB
3 Địa thực: mơ hình nhớ 8086
4 Phân trang nhớ ảo: nhớ chương trình chia thành trang ánh xạ vào nhớ ảo Sau đó, nhớ ảo ánh xạ vào nhớ thực Nếu hệ điều hành sử dụng phân trang, chế ánh xạ hồn tồn suốt chương trình ứng dụng
VII.1.2 Các vi xử lý hỗ trợ IA-32
Với ưu công nghệ thiết kế vi kiến trúc mới, hệ vi xử lý IA-32 vượt ngưỡng tốc độ (tần số hoạt động) lực thực vi xử lý hệ trước Bảng liệt kê vi xử lý IA-32 hệ đầu khơng có đệm tích hợp vi xử lý (GP-thanh ghi dùng chung; FPU-thanh ghi dấu phẩy động)
Bảng VII-1 Vi xử lý hỗ trợ IA-32 hệ đầu
Vi xử lý Năm sản
xuất
Tần số
(MHz) Số ghi
Buýt liệu mở rộng
Bộ nhớ
tối đa Bộ đệm
80386DX 1985 20 32GP 32 4GB
Intel 486DX 1989 25 32GP
80 FPU 32 4GB 8KB L1
Pentium 1993 60 32GP
80 FPU 64 4GB 16KB L1
Pentium Pro 1995 200 32GP
80 FPU 64 64GB
16KB L1 256-512KB L2
Pentium II 1997 266
32GP 80 FPU 64 MMX
64 64GB
32KB L1 256-512KB L2
Pentium III 1999 500
32GP 80 FPU 64 MMX 128 XMM
64 64GB 32KB L1
(132)Chương VII Giới thiệu số vi xử lý tiên tiến
-132-
Bảng VII-2 Vi xử lý IA-32 hệ sau
Vi xử lý Năm sản xuất Vi kiến trúc Tần số (GHz) Số ghi
Băng thông buýt hệ
thống
Bộ nhớ
tối đa Bộ đệm
Pentium 2000 Netburst 1,
32 GP 80 FPU 64 MMX 128 XMM
3, 2GB/s 64GB 8KB L1
256KB L2
Pentium 2002
Netburst,
Siêu phân
luồng 3, 06 32 GP 80 FPU 64 MMX 128 XMM
4, 2GB/s 64GB 8KB L1
256KB L2
Pentium
M 2003 Pentium M 1,
32 GP 80 FPU 64 MMX 128 XMM
3, 2GB/s 64GB 64KB L1
1MB L2
Pentium
Extreme 2005
Netburst,
Siêu phân
luồng 3, 73 32 GP 80 FPU 64 MMX 128 XMM
8, 5GB/s 64GB 16KB L1
2MB L2
Core Duo 2006 Pentium M,
Lõi kép 2, 16
32 GP 80 FPU 64 MMX 128 XMM
5, GB/s 4GB 64KB L1
2MB L2
Atom
Z5xx 2008
Atom, Ảo
hóa 1, 86
32 GP 80 FPU 64 MMX 128 XMM
4, 2GB/s 4GB 56KB L1
512KB L2
VII.2 Các vi xử lý tiên tiến dựa kiến trúc Intel IA-64
Kiến trúc Intel IA-64 bổ sung không gian địa chương trình 64 bít hỗ trợ khơng gian nhớ vật lý tới 40 bít chế độ IA-32e so với kiến trúc IA-32 trước Kiến trúc IA-64 đảm bảo tính tương thích ngược cho phép chạy chương trình viết cho kiến trúc IA-32 Các chế độ IA-64 bao gồm:
Chế độ tương thích: cho phép chạy ứng dụng 16 32 bít mà biên dịch lại Chế độ tương tự chế độ bảo vệ IA-32 Các ứng dụng truy nhập 4GB đầu không gian nhớ tuyến tính Tuy nhiên, ứng dụng sử dụng không gian nhớ lớn với chế độ mở rộng địa vật lý
Chế độ 64 bít Cho phép chương trình truy nhập khơng gian nhớ tuyến tính 64 bít Chế độ mở rộng số lượng ghi dùng chung ghi XMM từ lên 16 Các ghi dùng chung có kích cỡ 64 bít
(133)Chương VII Giới thiệu số vi xử lý tiên tiến
-133-
REX Điều giúp cho câu lệnh cũ chuyển sang chế độ 64 bít ghi địa
Bảng VII-3 Vi xử lý hỗ trợ IA-64
Vi xử lý
Năm sản xuất
Vi kiến trúc Tần số (GHz) Số ghi Băng thông buýt hệ thống Bộ nhớ
tối đa Bộ đệm
Xeon 2004 Netburst, Siêu phân
luồng, IA-64 3,
32, 64 GP 80 FPU 64 MMX 128 XMM
6, 4GB/s 64GB 16KB L1
1MB L2
Xeon 2005 Netburst, Siêu phân
luồng, IA-64 3, 03
32, 64 GP 80 FPU 64 MMX 128 XMM
5, 3GB/s 1024GB
16KB L1 1MB L2 8MB L3 Pentium
Extreme 2005
Netburst, Siêu phân
luồng, IA-64 3, 73
32 GP 80 FPU 64 MMX 128 XMM
8, 5GB/s 64GB 16KB L1
2MB L2
Dual-Core
Xeon 2005
Netburst, Siêu phân
luồng, Đa nhân, IA-64
32, 64 GP 80 FPU 64 MMX 128 XMM
6, 4GB/s 64GB
16KB L1 2MB L2 (Tổng 4MB)
Pentium
672 2005
Netburst, Siêu phân luồng, IA-64, Ảo hóa, Đa nhân
3,
32, 64 GP 80 FPU 64 MMX 128 XMM
6, 4GB/s 64GB 16KB L1
2MB L2 Core
Extreme X6800
2006
Netburst, Siêu phân luồng, IA-64, Ảo hóa, Đa nhân
2, 93
32, 64 GP 80 FPU 64 MMX 128 XMM
8, 5GB/s 64GB 64KB L1
4MB L2
Xeon
7140 2006
Netburst, Siêu phân luồng, IA-64, Ảo hóa, Đa nhân
3, 40
32, 64 GP 80 FPU 64 MMX 128 XMM
12, GB/s 64GB
64KB L1 1MB L2 (tổng 2MB)
16MB L3 Xeon
5472 2007
Netburst, Siêu phân luồng, IA-64, Ảo hóa, Đa nhân (4 nhân)
3, 00
32, 64 GP 80 FPU 64 MMX 128 XMM
12, GB/s 256GB
64KB L1 6MB L2 (Tổng 12MB)
Atom 2008 Atom, IA-64, Ảo hóa, Đa
nhân (4 nhân) 1, 60
32, 64 GP 80 FPU 64 MMX 128 XMM
12, GB/s 64GB
56KB L1
512KB L2 (Tổng 1MB)
Core i7 2008
Netburst, Siêu phân luồng, IA-64, Ảo hóa, Đa nhân (4 nhân)
3, 20
32, 64 GP 80 FPU 64 MMX 128 XMM
6, GT/s 64GB
(134)Chương VII Giới thiệu số vi xử lý tiên tiến
-134-
VII.3 Các vi xử lý tiên tiến Sun Microsystems
Sun Microsystems hỗ trợ thiết kế xử lý mở rộng SPARC (Scalable Processor Architecture) Kiến trúc chịu ảnh hưởng máy tính Berkeley RISC I Tập lệnh tổ chức ghi xử lý SPARC giống với Berkeley RISC SPARC cho phép triển khai từ ứng dụng nhúng máy chủ lớn, tất dùng chung tập lệnh Hiện nay, xử lý SPARC thường sử dụng rộng rãi môi trường máy chủ, trạm ;àm việc sử dụng hệ điều hành SUN, Unix Linux
Bộ xử lý SPARC thường có tới 128 ghi dùng chung Tại thời điểm nào, phần mềm sử dụng tức 32 ghi bao gồm ghi toàn cục, 24 ghi ngăn xếp Các ghi ngăn xếp tạo thành cửa số ghi (register window) tối đa 32 cửa số cho phép tối ưu thao tác gọi hàm trở Mỗi cửa số có ghi cục dùng chung ghi với cửa sổ kề Các ghi chia sẻ dùng để truyền tham số giá trị trả cho hàm ghi cục dùng để lưu giá trị cục lời gọi hàm
Hầu hết lệnh xử lý SPARC sử dụng toán hạng ghi Các lệnh nạp lưu chuyên dùng để trao đổi liệu ghi nhớ Ngoài chế dộ địa ghi, SPARC sử dụng chế độ địa dịch chuyển Trong chế độ này, địa hiệu dụng toán hạng dịch chuyển đoạn tương ứng với giá trị ghi Để thực câu lệnh nạp ghi, trình thực lệnh cần thêm giai đoạn để tính địa ô nhớ
Vi xử lý hỗ trợ SPARC 32 bít phiên cho phép sử dụng 16 ghi dấu phẩy động với độ xác kép, 32 ghi với độ xác đơn Các cặp chẵn-lẻ ghi độ xác kép kết hợp với để nâng độ xác lên gấp đơi mức SPARC 64 bít phiên 9, xuất vào năm 1993, có thêm 16 ghi độ xác kép ghi khơng tách thành ghi có độ xác đơn
(135)Chương VII Giới thiệu số vi xử lý tiên tiến
-135-
Bảng VII-4 Tính số vi xử lý SPARC
Tên Tần số MHz
Năm sản xuất
Số luồng x Số nhân
Số chân tín hiệu
Đệm liệu L1
(k)
Đệm lệnh L1
(k)
Đệm L2 (k)
UltraSPARC IIs (Blackbird) 250–400 1997 1×1 521 16 16 1024 or
4096 UltraSPARC IIs
(Sapphire-Black) 360–480 1999 1×1 521 16 16
1024– 8192
UltraSPARC IIi (Sabre) 270–360 1997 1×1 587 16 16 256–
2048
UltraSPARC IIi (Sapphire-Red) 333–480 1998 1×1 587 16 16 2048
UltraSPARC IIe (Hummingbird) 400–500 1999 1×1 370 16 16 256
UltraSPARC IIi (IIe+)
(Phantom) 550–650 2000 1×1 370 16 16 512
UltraSPARC III (Cheetah) 600 2001 1×1 1368 64 32 8192
UltraSPARC III Cu (Cheetah+) 1002–1200 2001 1×1 1368 64 32 8192
UltraSPARC IIIi (Jalapo) 1064–1593 2003 1×1 959 64 32 1024
UltraSPARC IV (Jaguar) 1050–1350 2004 1×2 1368 64 32 16384
UltraSPARC IV+ (Panther) 1500–2100 2005 1×2 1368 64 64 2048
UltraSPARC T1 (Niagara) 1000–1400 2005 4×8 1933 16 3072
UltraSPARC T2 (Niagara 2) 1000–1600 2007 8×8 1831 16 4096
UltraSPARC T2 Plus (Victoria
(136)Tài liệu tham khảo
1 Crisp J Introduction to microprocessors and microcontrollers, Newnes 2004 David Calcutt, Fred Cowan,Hassan Parchizadeh, 8051 Microcontrollers An
Applications-Based Introduction, Newnes 2004
3 Douglas V Hall Microprocessor and Interfacing- programming and hardware, 2nd edition McGraw Hill 1997
4 Hari BalaKrishnan & Samel Madden The lecture notes on Computer Systems
Engineering, Open Courses Ware Massachusets Institute of Technology
5 Hồ Khánh Lâm, Kỹ thuật vi xử lý, NXB Bưu điện 2005
6 Intel Corp Intel® 64 and IA-32 Architectures Software Developer’s Manual Rafiquzzaman M Microprocessor theory and applications with 68000/68020 and
Pentium, John Wiley&Sons 2008