Thanh ghi dữ liệu DX Data: DX dùng để định địa chỉ gián tiếp trong các thao tác vào ra, nó cũng còn đượcsử dụng chứa toán hạn, kết quả trong phép nhân và chia.. Cả hai DI và SI thích h
Trang 1Phần 1 GIỚI THIỆU CHUNG
CHƯƠNG DẪN NHẬP
_ oOo _
Ngày nay, trên thế giới khoa học kỹ thuật phát triển nhanh chóng, đặc biệt làngành điện_điện tử Những tiến bộ này ngày càng được ứng dụng rộng rãi trongcông nghiệp cũng như trong đời sống sinh hoạt hằng ngày của con người Hệ thống
vi xử lý hay còn gọi là máy tính điện tử là một trong những ứng dụng đó, nó là thiết
bị xử lý thông tin, điều khiển các thiết bị bên ngoài hay các thiết bị công nghiệpmột cách tự động
Trước nhu cầu thực tế, kit vi xử lý là một công cụ dạy và học không nhữnggiúp cho sinh viên nghiên cứu học tập, mà còn có thể ứng dụng mô phỏng hoạtđộng của một máy tính điện tử, đưa những tiến bộ của khoa học kỹ thuật dẫn vàođời sống hiện đại Trong khả năng và kiến thức đã học, tôi quyết tâm thực hiện đề
tài: “THIẾT KẾ – THI CÔNG KIT VI XỬ LÝ 8086” để đáp ứng nhu cầu trên.
Vi xử lý là một hệ thống số dựa trên cơ sở linh kiện chủ yếu là bộ vi xử lý(CPU) Tùy thuộc vào cấu trúc của bộ vi xử lý riêng biệt và phần điều khiển mà tacó thể bao gồm nhiều loại vi mạch Dưới sự điều khiển bằng chương trình một bộ
vi xử lý thực hiện các phép tính số học và logic, đồng thời tạo ra những tín hiệuđiều khiển cho bộ nhớ và thiết bị vào ra Những mệnh lệnh này gọi là chương trìnhnguồn và được chứa trong bộ nhớ chỉ đọc (ROM), khi mất điện dữ liệu trong bộnhớ này không bị mất, khi Reset máy chương trình này sẽ thi hành trước tiên khởitạo cho máy làm việc Khi làm việc CPU đọc những lệnh đó ra rồi thực hiện chúng
Do đó ta có thể nói bộ vi xử lý là cấu trúc phần cứng được xử lý bằng phần mềm.Đề tài này không chỉ giúp cho sinh viên hòan thành luận văn tốt nghiệp màcòn hình thành trong mỗi sinh viên những kinh nghiệm, sáng tạo và năng động Saunày đề tài sẽ kết hợp với các ngành chuyên môn khác để phát triển mô hình nàyđược hoàn thiện hơn
Trang 2CHƯƠNG CƠ SỞ LÝ LUẬN
_ oOo _
1) Xác định nhiệm vụ nghiên cứu :
Việc chọn đề tài xuất phát từ hai lý do:
- Khách quan: hiện nay các nền công nghiệp có nhu cầu hiện đại hóa các
thiết bị theo xu hướng cải tiến hóa các thiết bị bằng cơ khí sang thiết bịđiều khiển tự động ứng dụng kỹ thuật điện tử
- Chủ quan: do nhu cầu học tập, nghiên cứu, rèn luyện kỹ năng thực hành,
ứng dụng vốn kiến thức khoa học kỹ thuật tiên tiến trực tiếp vào lĩnh vựcsản xuất
Nhiệm vụ nghiên cứu nhằm đạt được các mục đích chủ yếu:
+ Mục đích trước mắt: thỏa mãn về cơ bản các yêu cầu đề ra theo phương
châm “Học đi đôi với hành”
+ Mục đích sau cùng: Tích lũy kinh nghiệm, rèn luyện và nâng cao năng
lực, tạo bản lĩnh để sẵn sàng tham gia lao động sản xuất, hòa nhập vào bước tiếncủa thế hệ
2) Phân tích tài liệu liên hệ:
Trong thời gian nghiên cứu đề tài, người nghiên cứu đã thống nhất tham khảomột số tài liệu có liên quan trong khoảng thời gian cho phép
- Phương pháp luận nghiên cứu khoa học: tìm hiểu về cấu trúc hình thức củamột đề tài nghiên cứu khoa học và phương pháp tư duy để giải quyết vấnđề
- Kỹ thuật vi xử lý Trần Văn Trọng: Tài liệu cung cấp về cấu trúc của vi xửlý 8086
- Sơ đồ chân linh kiện bán dẫn Dương Minh Trí: cung cấp sơ đồ chân vàbảng trạng thái họat động của các IC và các linh kiện bán dẫn
- Cấu trúc máy tính: Lê Anh Việt: Tài liệu cung cấp kiến thức cơ bản về cấutrúc máy tính, tổ chức CPU, hợp ngữ và cách lập trình
- The 8086/8088 Family Design Programing and Interfacing – Johnuffnbeck: tài liệu cung cấp những kỹ thuật kết nối vi xử lý và những phầnmềm ứng dụng
- Kỹ thuật vi xử lý – Văn Thế Minh: tài liệu cung cấp kỹ thuật giao tiếp vớicác thiết bị ngoại vi
Trang 3II KẾ HOẠCH NGHIÊN CỨU:
1) Dàn ý nghiên cứu:
Phần I: Giới thiệu chung
Phần II: Thiết kế phần cứng Kit 8086
Phần III: Xây dựng phần mềm hệ thống
Phần IV: Thi công Kit 8086
2) Đối tượng nghiên cứu:
Vi xử lý là trung tâm điều khiển các đối tượng, điều khiển hệ thống như máytự động, dây chuyền sản xuất… Để hệ thống xử lý thi hành các chức năng điềukhiển như mong muốn, chúng ta phải lập trình bằng ngôn ngữ tương ứng với hệ vixử lý Vì thế đối tượng nghiên cứu chính là thiết kế khối điều khiển tương quangiữa phần cứng và phần mềm để vận hành đúng chức năng họat động thực sự củamáy
Trang 4Chương I CẤU TRÚC BỘ VI XỬ LÝ 8086
_ oOo _
Bên trong gồm hai khối chính:
- Khối thực hiện EU (Execution Unit)
- Khối giap tiếp bus (Bus Interface Unit)
Hàng đợi lệnh
Arithmetic logic
unit (ALU)
Bus dữ liệu nội
Các bus hệ thống
Trang 5Bộ vi xử lý thực hiện các lệnh theo các bước sau:
- Lấy lệnh từ bộ nhớ
- Đọc toán hạng (nếu lệnh yêu cầu)
Các thanh ghi dữ liệu (Data Register):
Các thanh ghi chỉ số và con trỏ (Index & Pointer Register):
Các thanh ghi đoạn (Segment Register):
Các thanh ghi trạng thái và điều khiển (Status & Control Register):
Có bốn thanh ghi dữ liệu ký hiệu lần lượt là: AX, BX, CX, DX, được ngườilập trình sử dụng cho các thao tác với dữ liệu Mặc dù vi xử lý có thể thao tác vớidữ liệu trong bộ nhớ, nhưng một lệnh như vậy sẽ được thực hiện nhanh hơn trongthanh ghi (cần ít chu kỳ đồng hồ hơn) Đó cũng là nguyên nhân tại sao các bộ vi xửlý hiện đại có xu hướng nhiều thanh ghi
AHALBHBLCHCLDHDL AX (Accumulator)
BX (Base)
CX (Count)
DX (Data)
Con trỏ nền (Base Pointer)Chỉ số nguồn (Source Index)Chỉ số đích (Destnation Index)
Đoạn dữ liệu (Data Segment)Đoạn Stack (Stack Segment)Đoạn thêm (Extra Segment)IPFlagCon trỏ lệnh (Intruction Pointer)
Cờ
Trang 6Các byte cao và byte thấp trong thanh ghi được truy cập độc lập: Byte cao củathanh ghi AX được gọi là AH và byte thấp được gọi là AL Tương tự như vậy chocác byte cao và byte thấp của các thanh ghi BX CX DX lần lượt là BH & BL CH &
CL, DH & DL Nhờ điều này mà ta có nhiều thanh ghi hơn khi làm việc với các sốliệu có kích thước byte dài Trong đa số lệnh các thanh ghi dữ liệu được chọn tùy ýnhưng các thanh ghi này lại có chức năng riêng cố định trong một số ít lệnh
Thanh ghi tích lũy AX (Accumulator):
Là thanh ghi được sử dụng nhiều nhất trong các lệnh số học – logic và truyềndữ liệu bởi vì việc sử dụng thanh ghi này tạo ra mã máy ngắn nhất
Trong các thao tác nhân hoặc chia một trong các số hạn tham gia phải chứatrong AH hoặc AL, các thao tác vào/ra cũng sử dụng thanh ghi AH hoặc AL
Thanh ghi cơ sở BX (Base):
Thanh ghi BX được dùng cho tính toán địa chỉ trong phương pháp định địa chỉgián tiếp
Thanh ghi đếm CX (Count):
Việc thực hiện các chương trình lập được thực hiện dễ dàng nhờ thanh ghi CX,trong đó CX đóng vai trò là bộ đếm vòng lập Một thí dụ khác của việc sử dụngthanh ghi CX đó là lệnh REP (Repeat) lệnh này điều khiển một lớp các lệnhchuyên về các thao tác chuỗi CL cũng được sử dụng là một biến đếm trong cáclệnh dịch hay quay các bit
Thanh ghi dữ liệu DX (Data):
DX dùng để định địa chỉ gián tiếp trong các thao tác vào ra, nó cũng còn đượcsử dụng chứa toán hạn, kết quả trong phép nhân và chia
Thanh ghi con trỏ và chỉ số:
Các thanh ghi SP, BP, SI, DI thường trỏ tới các ô nhớ (tức là chức các địa chỉoffset của các ô nhớ đó) Khác với thanh ghi đoạn, các thanh ghi con trỏ và ngănxếp được sử dụng trong các thao tác số học và một số thao tác khác nhau
Thanh ghi con trỏ – ngăn xếp SP (Stack Pointer):
Di chuyển từ địa chỉ cao đến địa chỉ thấp, dùng để kết hợp với thanh ghi đoạnStack SS (Stack Segment) để lưu trữ địa chỉ trở về hoặc dữ liệu vào trong ngănxếp
Thanh ghi con trỏ cơ sở BP (Base Pointer):
Thanh ghi này được dùng để truy cập dữ liệu trong ngăn xếp mà không làmthay đổi SP Tuy nhiên, khác với SP thanh ghi BP cũng còn được sử dụng đễ truycập dữ liệu ở các đoạn khác
Thanh ghi chỉ số nguồn SI (Source Index):
Thanh ghi SI được sử dụng để trỏ tới các ô nhớ trong đoạn dữ liệu được địnhbởi thanh ghi đoạn dữ liệu DS (Data Segment), có thể truy cập dễ dàng các ô nhớliên tiếp bằng cách tăng SI
Thanh ghi chỉ số đích DI (Destination Index):
Trang 7Thanh ghi DI có chức năng tương tự như thanh ghi SI và được dùng kết hợpvới thanh ghi đoạn thêm ES (Extra Segment) Cả hai DI và SI thích hợp trong cácthao tác sao chép, di chuyển hoặc so sánh các khối dữ liệu có dung lượng đến64KB.
Thanh ghi con trỏ lệnh IP (Intruction Pointer):
8086 không thực hiện lệnh trực tiếp trong bộ nhớ mà lệnh được lấy ở hàng đợilệnh có cấu tạo giống như một thanh ghi dịch (FIFO: First In First Out: vào trước ratrước) chứa các mã lệnh cung cấp bởi khối BIU Thanh ghi IP chỉ đến lệnh tiếptheo chưa được nhập vào hàng đợi lệnh và được dùng kết hợp với thanh ghi CS.Thanh ghi IP được cập nhật mỗi khi có một lệnh được thực hiện xong, khác với cácthanh ghi khác, IP không bị tác động trực tiếp bởi các lệnh
Thanh ghi cờ (Flag Register):
Thanh ghi cờ của 8086 có độ dài 16bit (2byte) byte thấp chứa các bit trạngthái giống như trong 80854321 phản ánh trạng thái của vi xử lý, byte cao chứa 1bit trạngthái đó là bit 11 và 3 bit điều khiển dùng để điều khiển hoạt động của vi xử lý Sauđây là cấu tạo của thanh ghi cờ trong 8086:
+ Cờ chẳn lẻ PF:
Sau các lệnh số học hoặc logic đối với các lệnh byte nếu số lượng số ‘1’ trongbyte kết quả là chẳn thì cờ PF được thiết lập là ‘1’ ngược lại là ‘0’nếu là lẻ, đối vớicác lệnh word chỉ xét các byte thấp
+ Cờ nhớ phụ AF:
Trang 8Cờ nhớ phụ được thiết lập nếu có nhớ (cộng) hoặc có thiếu (trừ) từ phân nửadưới đến phân nửa trên của toán hạn (đối với lệnh byte đó là bit 3 và đối với lệnhword là bit 7) cờ AF được sử dụng trong các thao tác với số BCD.
+ Cờ ngắt IF:
Cờ ngắt được sử dụng để điều khiển các ngắt phần cứng bên ngoài, nếu cờnày được thiết lập các ngắt phần cứng có thể ngắt 8086 Khi xóa IF, các ngắt bênngoài không còn tác dụng nữa (bị che) Thực ra vẫn còn một ngắt cứng không cheđược NMI (Non Maskable Interrupt)
Trước khi vi xử lý trao quyền điều khiển cho một phục ngắt nó xóa cả IF và
TF, như vậy phục ngắt đó sẽ không bị ngắt Tất nhiên một phục vụ ngắt có thể đổicờ để cho phép ngắt khi nó đang thi hành
+ Cờ tràn OF:
Cờ tràn là ‘1’ khi có hiện tượng tràn và ngược lại nó bằng ‘0’ Hiện tượng tràncho thấy một sự thật là phạm vi biểu diễn các số trong máy tính là có giới hạn.Phạm vi biểu diễn các số có dấu trong một word từ –32768 đến +32767 vàtrong một byte từ –126 đến +127
Đối với các số không dấu từ 0 đến 65432154321354321 cho một word và từ 0 đến 25432154321 chomột byte Nếu kết quả của một phép tính vượt ra ngoài phạm vi này thì hiện tượngtràn sẽ xảy ra và kết quả nhận được bị cắt bớt sẽ không phải là kết quả đúng
+ Cờ điều khiển DF:
Là một trong ba cờ điều khiển dùng điều khiển các thao tác của vi xử lý côngdụng của DF là dịch hướng cho các thao tác chuỗi, các thao tác này được thực hiệnbởi hai thanh ghi chỉ số SI & DI, nội dung của hai thanh ghi này sẽ tự động tăng lênkhi DF = 0 và giảm xuống khi DF =1
2) Khối giao tiếp (BIU):
Khối giao tiếp làm đơn giản việc liên lạc giữa EU và bộ nhớ hoặc các vimạch vào ra Nó có nhiệm vụ gởi các địa chỉ, số liệu và tín hiệu điều khiển vàocác bus, BIU & EU liên hệ với nhau bằng các bus nội bộ, khi EU đang thi hành mộtlệnh, BIU nạp 6 byte mã lệnh tiếp theo vào và đặt chúng vào hàng đợi lệnh, mục
Trang 9đích của việc này là làm tăng tốc độ của vi xử lý Nếu EU cần liên lạc với bộ nhớhay thiết bị ngoại vi, BIU sẽ treo các lệnh nhận trước và thực hiện thực hiện cácthao tác cần thiết BIU cấu tạo gồm các thanh ghi đoạn và con trỏ lệnh dùng đểchứa địa chỉ các ô nhớ.
a) Các thanh ghi đoạn:
Được dùng để lưu trữ địa chỉ của các lệnh và dữ liệu trong bộ nhớ, vi xử lýdựa trên các giá trị này để truy cập bộ nhớ
Bộ nhớ là tập hợp các byte ô nhớ, mỗi byte có một địa chỉ xác định bắt đầu từ
0 8086 gán cho mỗi ô nhớ một địa chỉ vật lý 20 bit Như vậy, nó có thể định địa chỉđến 220 byte (tương đương 1MB) ô nhớ, các byte đầu tiên của bộ nhớ có địa chỉnhư sau:
………… Hvà cứ tiếp tục cho đến giá trị lớn nhất là FFFFFH
Do các địa chỉ quá lớn (20 bit) không thể chứa trong một thanh ghi của 8086(16 bit) nên 8086 chia bộ nhớ thành các đoạn bộ nhớ (Memory Segment)
Một đoạn bộ nhớ là một khối gồm 216 (64K) ô nhớ liên tiếp nhau, mỗi đoạnđược xác định bằng một địa chỉ đoạn bắt đầu từ địa chỉ 0, địa chỉ đoạn là một số 16bit nên địa chỉ đoạn lớn nhất là FFFF Bên trong mỗi đoạn số ô nhớ được xác địnhbằng địa chỉ tương đối (offset), đó là số byte tính từ đầu đoạn, với một đoạn 64K thìoffset cũng là một số 16 bit, byte đầu tiên trong đoạn có offset bằng 0 và byte cuốicùng bằng FFFF
Một ô nhớ có thể được xác định bằng địa chỉ đoạn:địa chỉ tương đối trongđoạn (segment:offset) và được gọi là địa chỉ logic
Thí dụ: ô nhớ A4FB:4872 có địa chỉ đoạn là A4FB và địa chỉ offset là 4872.
Để tìm địa chỉ vật lý của ô nhớ trước tiên ta dịch địa chỉ đoạn về bên trái 4 bit vàsau đó cộng với địa chỉ offset, như vậy địa chỉ vật lý của ô nhớ A4FB:4872 đượctính như sau: A4FB0
4872A9822
Trang 10Trong bộ nhớ đoạn 0 bắt đầu từ địa chỉ 0000:0000 = 00000 và kết thúc ở0000:FFFF = 0FFFF, đoạn 1 bắt đầu từ địa chỉ 0001:0000 = 00010 và kết thúc ở địachỉ 0001:FFFF = 1000F Như vậy, có rất nhiều sự chồng nhau giữa các đoạn Cácđoạn bắt đầu từ các địa chỉ cách nhau 16byte và địa chỉ đầu của mỗi đoạn luôn kếtthúc bằng các số 0 16byte được gọi là một khúc (Paragraph), các địa chỉ chia hếtcho 16 (các địa chỉ kết thúc bằng 0) là các biên giới khúc (Paragraph Boundary)
c) Các đoạn của chương trình:
Mỗi đoạn chương trình ngôn ngữ máy bao gồm các lệnh và dữ liệu, còn mộtvùng đặc biệt trong RAM gọi là ngăn xếp (stack) Mã lệnh, dữ liệu và ngăn xếpcủa chương trình được nạp vào các đoạn bộ nhớ khác nhau đó là đoạn mã (codesegment), đoạn dữ liệu (data segment), đoạn ngăn xếp (stack segment)
Để theo dõi các đoạn khác nhau của chương trình 8086 được cung cấp 4 thanhghi đoạn để chứa các địa chỉ đoạn, các thanh ghi CS, DS, SS lần lược chứa các địachỉ đoạn mã, đoạn dữ liệu, và đoạn ngăn xếp Nếu chương trình muốn truy cập đếnmột dữ liệu thứ hai nó có thể sử dụng thanh ghi đoạn thêm ES (extra segment).Một chương trình không phải bao giờ cũng cần chiếm hết một đoạn 64KB, dođặc điểm chồng nhau giữa các đoạn cho phép các đoạn của một chương trình nhỏhơn 64KB có thể đặt gần lại với nhau Tại một thời điểm, chỉ có các ô nhớ đượcđịnh địa chỉ bởi 4 thanh ghi đoạn mới có thể truy cập, nghĩa là chỉ có 4 đoạn bộ nhớlà tác động Tuy nhiên nội dung của các thanh ghi đoạn có thể thay đổi bởi chươngtrình để truy cập đến các đoạn khác nhau
d) Hàng đợi lệnh:
Như ta đã biết, để tăng tốc độ vi xử lý, khối BIU tiếp nhận các lệnh và đưavào hàng đợi lệnh (Queue) trong khi đó khối EU đang thi hành lệnh Hàng đợi lệnhcó thể nhận 6 byte mã lệnh, các lệnh của 8086 có độ dài từ 1 đến 6 byte, nếu lệnhchưa vào đầy đủ trong hàng đợi lệnh thì khối EU sẽ chờ cho đến khi lệnh nạp hếtvào hàng đợi lệnh
II CHỨC NĂNG CỦA 8086:
1) Sơ đồ chân của 8086:
8086 là vi xử lý 16 bit nó gồm 16 đường dữ liệu và 20 đường địa chỉ, cácđường dữ liệu từ D0 đến D154321 và các đường địa chỉ từ A0 đến A154321 hoạt động theophương pháp đa lộ thời gian
8086 có thể làm việc ở hai chế độ:
- Chế dộ Minimum
- Chế độ Maximum
Trong chế độ minimum, 8086 điều khiển các thiết bị bằng các tín hiệu điềukhiển của chính nó, trong chế độ này hỗ trợ bộ xử lý toán học 8087
Trong chế độ maximum cần thiết phải kết hợp với vi mạch điều khiển bus
8288 để tạo ra các tín hiệu đọc – ghi cho bộ nhớ và các thiết bị ngoại vi và chế độnày cho phép làm việc với 8087
Trang 11Sau đây là sơ đồ chân của 8086 ở cả hai chế độ minimum và maximum:
2) Chức năng của các chân của 8086:
INTR- Interrupt Request (input):
Mức cao ở ngõ này báo cho 8086 biết có một yêu cầu ngắt (thuờng được gởitới từ vi mạch xử lý ngắt 82543219), tín hiệu ngắt tại chân này có thể bị che bằng phầnmềm Khi vi xử lý chấp nhận yêu cầu ngắt, nó sẽ đưa ra một chu kỳ chấp nhậnngắt và vi mạch xử lý ngắt phải gởi địa chỉ của ngắt lên bus dữ liệu tương ứng vớichu kỳ thứ hai
NMI (Non Maskable Interrupt):
Đây là ngắt không che được, tác động ở mức cao vi xử lý nhảy đến địa chỉngắt số 2 trong bảng vector ngắt và không tạo ra chu kỳ chấp nhận ngắt
Reset (input):
Ngõ vào mức cao đặt vi xử lý về trạng thái ban đầu sau ít nhất 4 chu kỳ đồng
1 2 3 4 54321
6 7 8 9 10 11 12 13 14 154321
16 17 18 19 20
40 39 38 37 36 354321
34 33 32 31 30 29 28 27 26 254321
24 23 22 21
WR (LOCK) M/IO (S2) DT/R (S1) DEN (S0) ALE (QS0) INTA (QS1) TEST
READY RESET
8086 CPU
Hình 1.2: Sơ đồ chân 8086
Trang 12vậy chỉ thị được thực hiện đầu tiên chứa ở ô nhớ FFFF0 quá trình chuyển tiếp từmức cao xuống mức thấp được đồng bộ bởi chu kỳ đồng bộ từ vi mạch tạo xungđồng hồ 8284.
Ready (input):
Tín hiệu báo đã hoàn tất thao tác truyền dữ liệu của bộ nhớ hoặc thiết bị vào– ra, tác động ở mức cao, vi xử lý sẽ đợi nếu tín hiệu này ở mức thấp
AD0… AD154321 - Address/Data bus (input/output):
Giống như trong 80854321, các đường địa chỉ - dữ liệu này làm việc theo nguyêntắc đa lộ thời gian, là địa chỉ trong chu kỳ T1 và là dữ liệu trong chu kỳ T2, T3, Tw,
T4, tác động ở mức cao, có cấu tạo ba trạng thái và ở trạng thái tổng trở cao tronglúc vi xử lý ‘Interrup acknowlegde’ và ‘Hodl acknowleagde’
A16/S3 …… A19/S6 – Addres/Status (output):
Trong chu kỳ T1 là 4 bit địa chỉ cao khi thao tác với bộ nhớ, trong lúc thao tácvới thiết bị vào-ra chân này có gía trị thấp Trong cả hai thao tác cũng như vào – racác bit này là trạng thái trong các chu kỳ T2, T3, Tw, T4 Trạng thái bit cao cho phépngắt, S54321 được cập nhật tại mỗi thời điễm bắt đầu của mỗi chu kỳ đồng hồ S3 & S4
cho biết thanh ghi đoạn đang được sử dụng, thông tin này cần thiết cho processor xác định vị trí của toán hạng Có cấu tạo ba trạng thái và trạng thái tổngtrở cao khi vi xử lý ‘Hold acknowlegde’
Co-S3 S4 Thanh ghi đoạn được chọn0
011
0101
Thanh ghi đoạn thêm
Thanh ghi đoạn ngăn xếp
Thanh ghi đoạn lệnh
Thanh ghi đoạn dữ liệu Hai bit S3 & S4 để chọn các thanh ghi đoạn
BHE/S7 – Bus high enable / status (output):
Kết hợp với bit địa chỉ A0 để xác định chế độ truyền dữ liệu, BHE ở mức thấptrong chu kỳT1 của các thao tác đọc – ghi và chấp nhận ngắt khi một byte đượctruyền trong byte cao của bus dữ liệu S7 có hiệu lực trong các chu kỳ T2, T3 & T4,cấu tạo ba trạng thái và trạng thái tổng trở cao khi vi xử lý ở chế độ ‘Hold’
BHE A0 Kiểu truyền dữ liệu0
011
0101
Truy xuất 16 bit Truy xuất byte cao từ địa chỉ lẻTruy xuất byte thấp địa chỉ chẵn
Trang 13 M/IO (output):
Ngỏ ra trạng thái giống như bit S0 ở chế độ maximum dùng để báo vị trí đangtruy xuất dữ liệu Mức cao là bộ nhớ và mức thấp là khối vào-ra Cấu tạo ba trạngthái, tổng trở cao khi vi xử lý ở chế độ ‘Hold acknowlegde’
WR – write (output):
Tín hiệu ra điều khiển thao tác ghi vào bộ nhớ hoặc khối vào-ra tùy theo giátrị của ngõ M/IO Tác động mức thấp ở T2, T3 và Tw của mỗi chu kỳ ghi, cấu tạo batrạng thái và trạng thái tổng trở cao khi vi xử lý ở chế độ ‘Hold acknowlegde’
INTRA – Interrup Acknowlegde (output):
Tín hiệu chấp thuận ngắt, tác động mức thấp tại T2, T3 và Tw dùng để đưa địachỉ của ngắt lên bus dữ liệu
ALE – Adress Latch Enable
Tín hiệu điều khiển chốt địa chỉ 74LS373 hoặc 8282/8283 tác động mức caotrong khoảng T1 của mỗi chu kỳ bus :
+ Khi ALE = 1 các bit AD0 … AD154321 là địa chỉ
Hold (input):
Tín hiệu vào cho biết một linh kiện đòi quyền sử dụng bus, tác động ở mứccao
HLDA – Hold acknowlegde (output):
Tín hiệu ra ở mức cao cho biết yêu cầu Hold được chấp thuận, vi xử lý sẽ treobus nội bộ và các đường điều khiển của nó ở trạng thái tổng trở cao
DT/R – Data Transmit/Receive (output):
Tín hiệu ra dùng để điều khiển hướng truyền dữ liệu của vi mạch thu - phát.Cấu tạo ba trạng thái và trạng thái tổng trở cao khi vi xử lý ở chế độ ‘Holdacknowlegde’
DEN – Data enable (output):
Tín hiệu ra ở mức thấp cho mỗi chu kỳ thao tác bộ nhớ và I/O và cả INTRAđiều khiển ngõ ra cho phép của 8286/8287 trong hoạt động thu – phát dữ liệu Cấutạo ba trạng thái, trạng thái tổng trở cao khi vi xử lý ở chế độ ‘Hold acknowlegde’
S0, S1, S2 (thông tin trạng thái):
Vi mạch 8288 dựa trên các thông tin này để thực hiện các thao tác điều khiển.Cấu tạo ba trạng thái, trạng thái tổng trở cao khi ‘Hold acknowlegde’ Tác động
Trang 14mức cao Một sự thay đổi bất kỳ của tín hiệu này trong chu kỳ T4 được dùng đểđánh dấu thời điểm bắt đầu của chu kỳ bus và trở về thụ động ở trong T3 hoặc Tw
xác định điểm kết thúc của chu kỳ bus
S2 S1 S0 Thông tin điều khiển
01010101
Chấp nhận ngắt
Đọc từ cổng
Viết ra cổngDừng
Nhập mã lệnh
Đọc từ bộ nhớ
Viết ra bộ nhớ
+ Xung bề rộng chu kỳ đồng hồ được gởi đến 8086 cho biết quá trình ‘Hold’kết thúc và vi xử lý trở lại quản lý bus xau khi chấm dứt chu kỳ đồng hồ kế tiếp.Nếu yêu cầu này xảy ra trong khi vi xử lý đang truy xuất bộ nhớ, nó sẽ treo bustrong khoảngT4 nếu thỏa những diều kiện sau đây:
- Yêu cầu xảy ra trong khi hoặc trư-ùc T2
- Chu kỳ hiện hành không phải là byte thấp của word (ở địa chỉ lẻ)
- Chu kỳ hiện hành không ở trạng thái chấp nhận ngắt
- Không có chỉ thị khóa
Nếu bus không bận khi có yêu cầu thì có hai trường hợp sẽ xảy ra
- Bus sẽ treo ở chu kỳ đồng hồ kế tiếp
- Một chu bộ nhớ sẽ khởi động trong vòng 3 chu kỳ đồng hồ
Trang 15Ngõ ra cho biết trạng thái của hàng đợi lệnh, những thông tin này cần thiếtcho Co-processor.
QS0 QS1 Trạng thái hàng đợi lệnh0
011
0101
Không hoạt động Xóa nội dung hàng đợi kệnh
Nạp byte mã lệnh đầu tiên vào thanh ghi lệnh
Nạp byte mã lệnh tiếp theo của lệnh nhiều byte
- Ở hai chế độ nêu trên tôi thực hiện chỉ nghiên cứu chế độ minimum
AD 0 AD 154321
A 16 A 19
8086 CPU
STB OE
T OE
73LS373
OCTAL LATCH
Hình 1.3: Mô phỏng kết nối hệ thống vi xử lý 8086
Trang 163) Giản đồ thời gian của chu kỳ bus:
Một chu kỳ bus
Chu kỳ ghi
Trang 17a) Giải thích giản đồ thời gian đọc và ghi:
+ Ở chu kỳ T 1 :
Trong chu kỳ này địa chỉ của bộ nhớ hay thiết bị ngoại vi đưa ra trên cácđường địa chỉ hoặc địa chỉ dữ liệu và địa chỉ trạng thái Các tín hiệu điều khiểnALE, DT/R, M/IO cũng được đưa ra để giúp hoàn tất việc giữ thông tin địa chỉ này
+ Ở chu kỳ T 2 :
Trong chu kỳ này CPU đưa ra các tín hiệu điều khiển RD hoặc WR, DEN vàtín hiệu dữ liệu trên D0 D154321 nếu là lệnh ghi DEN thường dùng để mở các bộ đệmcủa bus dữ liệu nếu chúng được dùng trong hệ thống Tại cuối chu kỳ T2 CPU lấymẫu tín hiệu Ready để xử lý trong chu kỳ tiếp theo khi nó phải làm việc với bộnhớ, thiết bị ngoại vi chậm
+ Ở chu kỳ T 3 :
Trong chu kỳ này CPU dàng thời gian cho bộ nhớ hay thiết bị ngoại vi truycập dữ liệu Nếu là chu kỳ đọc dữ liệu thì tại cuối T3 CPU sẽ lấy mẫu tín hiệu củabus dữ liệu Nếu tại cuối chu kỳ T2 mà CPU phát hiện ra tín hiệu Ready = 0 thìCPU tự xen vào T3 một chu kỳ T để tạo chu kỳ đợi Tw = n * T nhằm kéo dài thờigian để thực hiện lệnh, tạo điều kiện cho bộ nhớ và thiết bị ngoại vi chậm có đủthời gian hoàn tất công việc đọc-ghi dữ liệu
+ Ở chu kỳ T 4 :
Trong chu kỳ này các tín hiệu trên bus được giải hoạt (đưa về trạng tháikhông tích cực) để chuẩn bị cho chu kỳ bus mới Tín hiệu WR trong khi chuyểntrạng thái từ ‘0’ lên ‘1’ sẽ kích họat trạng thái ghi vào bộ nhớ hay thiết bị ngoại vi
b) Nguyên tắc thực hiện chương trình của vi xử lý 8086:
Các chỉ thị của 8086 có độ dài 1 byte đến 6 byte, từng chỉ thị được khối thựchiện lấy ra từ hàng đợi lệnh sau đó giải mã và thực hiện Các mã lệnh khác tiếptheo lại được nạp vào hàng đợi lệnh bởi khối BIU:
IP
BB 00 02 6B 07 43
BB00028B07430307
28A00123454321
28A067
+
Hình 1.54321: Quá trình nạp hàng đợi lệnh của BIU
Trang 18c) Truy xuất bộ nhớ và sự sắp xếp các đoạn:
8086 có thể quản lý đến 1MB bộ nhớ, để đánh địa chỉ được 1MB (1.048.5432176byte) cần phải có 20 đường địa chỉ BIU xác định địa chỉ vật lý này bằng cách cộngđịa chỉ segment với địa chỉ offset Trước tiên nhân địa chỉ segment với 16 (vì dịchsang trái 4bit) và sau đó cộng với offset, tổng số nhận được chính là địa chỉ vật lýcủa ô nhớ và sẽ được đưa vào bus địa chỉ
Địa chỉ offset được lấy ra từ một thanh ghi của khối EU (thanh ghi dữ liệu, chỉsố hoặc bộ đếm lệnh) Thanh ghi này được BIU sắp xếp cố định thành từng cặp.Hình trên sẽ mô tả việc sắp xếp các thanh ghi để xác định địa chỉ vật lý
354321280+
8B 07
3412
3543212801
Hình 1.6: Truy xuất dữ liệu trong bộ nhớ
Đoạn lệnh (CS)Đoạn ngăn xếp (SS)Đoạn dữ liệu (DS)Đoạn thêm (ES)
offsetIP
SP, BP
BX, SI, DI hoặc hằng số
DI (trong các lệnh chuổi)
Hình 1.7: Sắp xếp các thanh ghi đoạn
Trang 19Chương II KHẢO SÁT TỔNG QUÁT
TẬP LỆNH VI XỬ LÝ 8086
_ oOo _
Vi xử lý 8086 có nhiều phương pháp định địa chỉ và cũng có nhiều khả năngkết hợp các phương pháp đó lại với nhau Tuy nhiên, một lệnh chỉ cần 6 byte đểmã hóa, và byte bắt đầu là mã công tác (Operations code), byte tiếp theo chứa kiểuđịa chỉ và tiếp theo đó có thể là một hoặc hai byte dùng để chứa địa chỉ Các bytecuối cùng gồm một hoặc hai chứa toán hạng 8 hoặc 16 bit
Thực tế để biểu diển dạng thức các byte dùng để mã hóa lệnh Mov Ta thấyrằng để mã hóa lệnh Mov ta phải cần ít nhất là hai byte, trong đó 6 bit của byteđầu dùng để chứa mã lệnh Đối với lệnh Mov để chuyển dữ liệu kiểu:
- Thanh ghi thanh ghi
- Bộ nhớ thanh ghi
Thì bit đầu (opcode) này luôn là ‘100010’ (đối với thanh ghi đoạn thì khác).Đối với bit ‘D’ dùng để chỉ hướng đi của dữ liệu
D = 0 thì dữ liệu đi từ thanh ghi cho bởi 3 bit của REG
D = 1 dữ liệu đi đến thanh ghi cho bởi 3 bit REG
Đối với bit W dùng để chỉ rằng một byte (W = 0) hoặc một từ (W = 1) sẽ đượcchuyển
Disp: displacement (dịch chuyển)
II CÁC PHƯƠNG PHÁP ĐỊNH ĐỊA CHỈ CỦA VI XỬ LÝ 8086:
Phương pháp định địa chỉ (Addressing Mode) là cách để CPU tìm thấy toánhạng cho các lệnh của nó khi hoạt động Một bộ vi xử lý có thể có nhiều chế độđịnh địa chỉ
Các chế độ định địa chỉ này được xác định ngay từ khi chế tạo ra bộ vi xử lývà sau này người ta lấy đó để làm chuẩn mà không thay đổi
Ngoài các phương pháp định địa chỉ: tức thời, trực tiếp, gián tiếp giống nhưcủa 80854321, vi xử lý 8086 còn có thêm các cách định địa chỉ khác và được phân loạinhư sau:
Trừ thanh ghi đoạn
D W Mod
Địa chỉ trực tiếp phần thấp
Địa chỉ trực tiếp phần cao
hoặc
Trang 20- Định địa chỉ bằng thanh ghi.
- Định địa chỉ tức thời
- Định địa chỉ trực tiếp
- Định địa chỉ gián tiếp
- Định địa chỉ tương đối
Bằng cách kết hợp các phương pháp định địa chỉ khác nhau trong một chỉ thị,có thể tạo ra nhiều khả năng phức tạp để truy xuất toán hạng (operand) các thiết bịvào – ra chỉ được truy cập bằng các phương pháp trực tiếp và gián tiếp Thứ tự môtả byte của một word được lưu trong bộ nhớ giống như qui định của 80854321, có nghĩalà các byte thấp (LSB) ở địa chỉ thấp và các byte cao (MSB) được đặt ở địa chỉ caohơn kế cận
Trong các trình bày sau đây, bộ đếm chương trình PC (Program Counter) chứađịa chỉ offset của chỉ thị kế tiếp sẽ thực hiện, chỉ thị này đã sẵn sàng trong hàng đợilệnh Con trỏ lệnh IP trỏ đến địa chỉ cao hơn, đó là byte tiếp theo sẽ được BIUnhập vào hàng đợi lệnh
1) Các phương pháp định địa chỉ thông dụng:
1.1) Định địa chỉ tức thời:
Trong phương pháp này toán hạng nguồn chính là dữ liệu cần xử lý của chỉthị
Thí dụ: Mov ax, 1200
AX BX CX DX
SP BP SI DI
CS DS SS ES
2300
B8 00 12
O D I T S Z A P C
O D I T S Z A P C
FI
AX BX CX DX
SP BP SI DI
CS DS SS ES
0103
Hình 2.1 :Phương pháp định địa chỉ tức thời
Mov Ax, 1200
Trang 211.2) Phương pháp định địa chỉ trực tiếp:
Trong chỉ thị bao gồm địa chỉ offset của toán hạng, địa chỉ đoạn được quy địnhlà nội dung của thanh ghi DS
Thí dụ: Mov ax, [0230]
AX BX CX DX
SP BP SI DI
CS DS SS ES
2300
B8 00 12
O D I T S Z A P C
FI
AX BX CX DX
SP BP SI DI
CS DS SS ES
0103
Hình 2.2: Phương pháp định địa chỉ trực tiếp
2780
2780
00 12
00 12
2080
2080Mov ax, [0230]
Trang 221.3) Định địa chỉ gián tiếp:
Trong phương pháp truy xuất gián tiếp các cổng luôn luôn tác động đến thanhghi DX, nội dung của DX là địa chỉ 16 bit của cổng Số lượng cổng là 64B
Thí dụ: IN AL, DX
1.4) Định địa chỉ tương đối:
Trong phương pháp định địa chỉ tương đối, thanh ghi BX hoặc BP chứa địa chỉ
cơ sở, các địa chỉ này là offset của toán hạng Địa chỉ tương đối có thể được dùngchung với địa chỉ trực tiếp hoặc gián tiếp
Thí dụ: Mov AX, [BX]
Hình 2.3:Phương pháp định địa chỉ gián tiếp
AX BX CX DX
SP BP SI DI
CS DS SS ES
2300
8B 07
O D I T S Z A P C
FI
AX BX CX DX
SP BP SI DI
CS DS SS ES
0103
2780
2780
00 12
00 12
2080
2080
0280
0280
AX BX CX DX
SP BP SI DI
DS SS ES
SP BP SI DI
CS DS SS ES
1C
260I/O
Trang 232) Khảo sát tổng quát tập lệnh 8086:
Tập lệnh của 8086 gồm 9 nhóm lệnh:
- Nhóm lệnh truyền số liệu
- Nhóm lệnh số học
- Nhóm lệnh thao tác chuổi
- Nhóm lệnh logic
- Nhóm lệnh xử lý bit
- Nhóm lệnh điều khiển chương trình
- Nhóm lệnh ngôn ngữ bậc cao
- Nhóm lệnh ở chế độ bảo vệ
- Nhóm lệnh điều khiển các bộ vi xử lý
Qua những nhóm lệnh giới thiệu trên nhóm thực hiện đề tài chỉ khảo sátnhững nhóm lệnh thông dụng nhằm phục vụ cho việc lập trình bằng ngôn ngữ máy
2.1) Nhóm lệnh truyền số liệu:
Các lệnh truyền dữ liệu sẽ sao chép dữ liệu giữa thanh ghi với thanh ghi, vớibộ nhớ hoặc với khối vào-ra Chúng có thể sử dụng nhiều cách định địa chỉ khácnhau Trong cách viết lệnh dưới dạng gợi nhớ: toán hạng đầu tiên là thanh ghi đíchhoặc địa chỉ đích và tiếp sau dấu phẩy là thanh ghi nguồn hoặc địa chỉ nguồn Khácvới 80854321, trong 8086 tất cả các lệnh truyền dữ liệu đều dùng lệnh “Mov”
Truyền từ thanh ghi vào thanh ghi:
Mov (Reg1), (Reg2)
Nội dung (Reg2) được sao chép vào (Reg1)
Thí dụ: Mov AL, BL
Sao chép nội dung BL vào thanh ghi AL
Truyền từ thanh ghi vào bộ nhớ:
Mov (Mem), (Reg)
Đối với lệnh byte, nội dung của thanh ghi được đưa vào địa chỉ của ô nhớ Đốivới lệnh word thì nội dung của thanh ghi được đưa vào hai ô nhớ có địa chỉ lần lượclà (Mem) và (Mem + 1)
Thí dụ: Mov [1200], BL
Sao chép nội dung của thanh ghi BL vào ô nhớ có địa chỉ tương đối là 1200
Truyền từ ô nhớ vào thanh ghi:
Mov (Reg), (Mem)
Đối với lệnh byte, nội dung ô nhớ được chép vào thanh ghi Đối với lệnhword, nội dung của 2 ô nhớ (Mem) và (Mem + 1) được chép vào thanh ghi
Trang 24Chú ý: nếu sử dụng AL hoặc AX trong các lệnh truyền từ thanh ghi vào ô nhớ
và ngược lại sẽ nhận được mã công tác ngắn hơn khi sử dụng các thanh ghi khác
Truyền tức thời vào thanh ghi:
Mov (Reg), (Data)
Trong lệnh này, dữ liệu được truyền tức thời vào thanh ghi
Thí dụ: Mov BL, 20
Giá trị 20 được đưa vào thanh ghi BL
Truyền tức thời vào bộ nhớ:
Mov (Mem), (Data)
Trong lệnh byte dữ liệu được truyền tức thời vào ô nhớ có địa chỉ (Mem).Trong lệnh word dữ liệu được truyền tức thời vào 2 ô nhớ có địa chỉ (Mem) và(Mem + 1)
Thí dụ: Mov [1200], 543210
Giá trị 543210 được đưa vào ô nhớ có địa chỉ 1200
Mov Word PTR [1200], 543210Giá trị Word 00543210 được đưa vào 2 ô nhớ bắt đầu tại địa chỉ 1200, 543210 (LSB)vào địa chỉ 1200, 00 (MSB) vào địa chỉ 1201
- Truy xuất trực tiếp cổng:
IN (Reg), (Port)Đọc nội dung của cổng vào thanh ghi thanh ghi sử dụng là AL (dạng byte) và
AX (dạng Word), địa chỉ cổng là một số 8 bit
OUT (Reg), (Port)Xuất nội dung của thanh ghi ra cổng
- Truy xuất gián tiếp cổng:
IN (Reg), DXĐọc nội dung của cổng có địa chỉ chứa trong DX vào thanh ghi Thanh ghi sửdụng là AL hoặc AX, địa chỉ cổng là số 16 bit
OUT DX, (Reg)Gởi nội dung thanh ghi ra cổng có địa chỉ chứa trong DX
2.2) Nhóm lệnh số học:
Bao gồm các phép tính cơ bản (cộng, trừ, nhân và chia) và phép so sánh, toánhạng có thể là dữ liệu 8 bit hoặc 16 bit, kết quả có thể là 8 bit, 16 bit hoặc 32 bit.Các toán hạng được chứa trong thanh ghi bộ nhớ tức thời Tùy theo thao tác, kếtquả có thể được chứa trong 1 hoặc 2 thanh ghi trong bộ nhớ
Phép cộng:
Vi xử lý 8086 thực hiện phép cộng có lưu ý số nhớ hoặc không lưu ý số nhớ 8bit hoặc 16 bit
+ Số hạng đầu tiên được chứa trong các thanh ghi dữ liệu (AX, BX, CX,
DX, AH, AL, BH …), trong một thanh ghi chỉ số hoặc một ô nhớ Số hạng thứ hai cóthể là tức thời trong thanh ghi hoặc trong bộ nhớ Hai số hạng không thể cùng ở
Trang 250 1 0 1 1 1
trong bộ nhớ, kết quả phép cộng được chứa trong toán hạng thứ nhất Sau đây làbảng liệt kê lệnh cộng dưới dạng gợi nhớ:
ADD (accu), (data)
ADD (mem), (data)
ADD (reg), (data)
ADD (reg1), (reg2)
ADD (reg), (mem)
ADD (mem), (reg)
ADC (accu), (data)ADC (mem), (data)ADC (reg), (data)ADC (reg1), (reg2)ADC (reg), (mem)ADC (mem), (reg)
ADD AX, 12543210
ADD Byte PTR [0900],543210
ADD BL, 543210ADC AL, AHADD CX, [0800]
ADC [0600], DL
Phép trừ:
8086 có thể thực hiện phép trừ với 8 bit hoặc 16 bit, lệnh SBB có lưu ý sốthiếu và lệnh SUB không lưu ý số thiếu Sau đây là bảng liệt kê lệnh trừ dưới dạnggợi nhớ:
SUB (accu), (data)
SUB (mem), (data)
SUB (reg), (data)
SUB (reg1), (reg2)
SUB (reg), (mem)
SUB (mem), (reg)
SBB (accu), (data)SBB (mem), (data)SBB (reg), (data)SBB (reg1), (reg2)SBB (reg), (mem)SBB (mem), (reg)
SUB AX, 1230SBB Byte PTR [54321000], 90SUB BL, 543210
SBB AL, DLSUB CX, [1230]
SBB [0300], DL
Phép so sánh
Trong phép so sánh hai toán hạng cần so sánh được trừ với nhau nhưng nộidung của các thanh ghi và ô nhớ không bị thay đổi, kết qủa so sánh chỉ ảnh hưởngđến thanh ghi cờ sẽ được minh họa ở hình sau:
AX BX CX DX
SP BP SI DI
CS DS SS ES
39 08
O D I T S Z A P C
FI
AX BX CX DX
SP BP SI DI
CS DS SS ES
0102
0246
Trang 2608154321
2780
0 0 0 0 1 0
Nhóm lệnh logic:
8086 thực hiện được các phép tính logic : AND ,OR , EXOR, và phép đảo NOT Các địa chỉ giống như phép cộng:
Các dạng gợi nhớ của phép Logic:
Dạng gợi nhớ của phép AND:
AND (mem), (reg)AND (reg), (mem)AND (reg1), (reg2)AND (mem), (data)AND (reg), (data)AND (accu), (data) Dạng gợi nhớ của phép OR
NOT (mem) Dạng gợi nhớ của phép EXORXOR (mem), (reg)
Hình 2.6: Phương pháp định địa chỉ tương đối
AX BX CX DX
SP BP SI DI
CS DS SS ES
2300
23 07
O D I T S Z A P C
FI
AX BX CX DX
SP BP SI DI
CS DS SS ES
0102
2780
2780
391A
39 1A
2080
0280
0280
0280
Trang 27XOR (reg), (mem)XOR (reg1), (reg2)XOR (mem), (data)XOR (reg), (data)XOR (accu), (data)
Nhóm lệnh quay:
8086 có các lệnh quay, dịch dữ liệu 8 bit và 16 bit, có thể dịch nhiều bit bằngmột lệnh trong trường số lần dịch chứa trong CL Thao tác quay có thể quay quaCarry hoặc không
Dạng gợi nhớ của phép quay không qua Carry:
+ Quay phải:
ROL (mem), (count)ROL (reg), (count) + Quay trái:
ROR (mem), (count)ROR (reg), (count)
Nhóm lệnh nhảy có điều kiện:
Các lệnh nhảy có điều kiện của 8086 luôn luôn dài hai byte và chỉ thực hiệncác bước nhảy bằng (Short Jmp) Byte thứ nhất là mã công tác, Byte thứ hai làkhoảng cách nhảy dưới dạng số bù hai, có tổng cộng 31 điều kiện nhảy Cấu tạotổng quát một lệnh nhảy có điều kiện được trình bày như sau:
Hình 2.7: Phương pháp định địa chỉ tức thời
AX BX CX DX
SP BP SI DI
CS DS SS ES
2300
B8 00 12
O D I T S Z A P C
FI
AX BX CX DX
SP BP SI DI
CS DS SS ES
01054321
Trang 28Dạng gợi nhớ của lệnh nhảy có điều kiện:
JC (CF=1)JNC (CF=0)
JNZ (Z=0 )
JE (ZF=1)JNE (ZF=0)
Lệnh gọi chương trình phụ:
Chương trình phụ được gọi bằng lệnh Call và chấm dứt bằng lệnh Ret Vixử lý 8086 chỉ có các lệnh gọi không điều kiện được trình bày dưới dạnggợi nhớ như sau:
CALL (addr)CALL [(addr)]
CALL BXCALL Seg : Offset
CALL 0200CALL [0200]
CALL 23543210 : 0200Các lệnh Call được phân loại dựa theo vị trí của chương trình phụ trong bộnhớ gồm hai loại:
- Chương trình phụ nằm trong đoạn mã hiện hành
- Chương trình phụ nằm ngoài đoạn mã hiện hành
Trong trường hợp chương trình phụ nằm trong đoạn mã hiện hành thì địa chỉđọan trong thanh ghi CS không thay đổi, thanh ghi trạng thái và con trỏ lệnhsẽ được lưu vào ngăn xếp Sau đó địa chỉ của chương trình phụ sẽ được nạpvào con trỏ lệnh khối BIU xóa nội dung của các hàng đợi lệnh và thay vào đónội dung của ô nhớ được chỉ định bởi lệnh Call
Trong trường hợp chương trình phụ nằm ngoài đoạn mã hiện hành, thanh ghitrạng thái và địa chỉ seg:offset sẽ được cất vào ngăn xếp
Trang 29Trong thiết kế tôi đã phải tính toán lựa chọn qua các công đọan:
- Linh kiện phải có sẵn trên thị trường
- Linh kiện phải phù hợp với hệ thống
- Hệ thống đơn giản tiết kiệm
- Kết nối sao cho phần mềm đơn giản nhất, mà phần cứng không qúaphức tạp, cồng kềnh
- IC 8086 đa hợp các đường địa chỉ và dữ liệu từ AD0 – AD154321 với nhau,nên muốn sử dụng được phải kết hợp với IC giải đa hợp các đường địachỉ và dữ liệu riêng biệt
I IC chốt 74LS373:
1) Tổng quát:
Trong thiết kế tôi chọn IC chốt 74LS373 làm nhiệm vụ tách riêng từngđường địa chỉ và dữ liệu, đây là IC chốt 8 bit với 8 trạng thái ngõ ra theoBus, những ứng dụng của hệ thống được tổ chức FLIP-FLOP (F-F) cho dữliệu qua Ngõ cho phép chốt (LE) ở mức cao khi LE là thấp dữ liệu đượcchốt, dữ liệu xuất trên Bus khi ngõ ra cho phép OE là thấp Khi OE cao thìBus ngõ ra sẽ ở trạng thái cao
IC 74LS373 là IC chốt tốc độ cao, công suất thấp, 8D FF với đặc điểmnhững ngõ vào D cho mỗi FF và ba trạng thái ngõ ra của những Bus ứngdụng đã định hướng Xung Clock đệm vào ngõ ra OE là chung cho tất cảcác FF
2) Sơ đồ chân 74LS373:
D0 – D7 : Data input
LE : Cho phép
OE : Cho phép xuất
O0 – O7 : Ngõ ra
Trang 30Bảng sự thật:
HHLL
LLLH
HLXX
HL
Q0
Z
Thông số ngưỡng:
VccTAIOHIOL
Nguồn cung cấpNhiệt độ hoạt độngDòng ra cao
V
oCmAmA
3) Sơ đồ mô phỏng kết nối 74LS373 với 8086:
Trang 31II IC ĐỆM 74LS244:
Để nâng cao khả năng tải của các bus, để đảm nhận việc nuôi các mạch bênngoài, các tín hiệu ra của CPU cần phải được khuếch đại thông qua các mạch đệmmột chiều, hai chiều với các đầu ra thường hay đầu ra ba trạng thái đó là IC74LS244
IC 74LS244 là một vi mạch có 8 bộ đệm và bộ lái đường được thiết kế nhưnhững bộ lái địa chỉ nhớ
Sơ đồ chân 74LS244:
LHX
LHZ
Thông số ngưỡng:
Vcc Nguồn cung cấp 4,454321 54321,0 54321,254321 V
TA Nhiệt độ hoạt động 0 2,54321 70 oC
III MẠCH TẠO XUNG NHỊP 8284:
Cho dù làm việc ở chế độ nào đi nửa CPU 8086 luôn cần xung nhịp để hoạtđộng, mạch tạo xung nhịp 8284 sẽ đảm nhận việc tạo xung nhịp clock cho CPU
8086 Mạch tạo xung nhịp không những cung cấp xung clock với tần số thích hợpcho toàn bộ mà nó còn có ảnh hưởng tới việc đồng bộ tín hiệu Reset và tín hiệuReady của CPU
H: mức điện thế caoL: mức điện thế thấpX: không quan tâmZ: tổng trở cao
1 2 3 4 54321
6 7 8 9 10
20 19 18 17 16 154321
14 13 12 11
Trang 321) Sơ đồ chân 8284:
2) Chức năng các chân 8284:
AEN1, AEN2: tín hiệu cho phép chọn đầu vào tương ứng RDY1, RDY2làm tín hiệu báo trạng thái của bộ nhớ và thiết bị ngoại vi
RDY1, RDY2: cùng với AEN1, AEN2 dùng gây ra các chu kỳ đợi ở CPU
ASYNC: chọn đồng bộ hai tầng hay đồng bộ một tầng cho tín hiệuRDY1, RDY2 Trong chế đồng bộ một tầng (ASYNC = 1) tín hiệu RDY có ảnhhưởng đến tín hiệu Ready đến tận sườn xuống của xung đồng hồ tiếp theo Còntrong chế độ đồng bộ hai tầng (ASYNC = 0) tín hiệu RDY chỉ có ảnh hưởng tới tínhiệu Ready khi có sườn xuống của xung đồng hồ tiếp theo
Ready: nối đến đầu vào Ready của CPU Tín hiệu này được đồng bộ vớicác tín hiệu RDY1 và RDY2
X1, X2: nối với hai chân của thạch anh tạo dao động chuẩn với tần số fx,thạch anh này là bộ phận của một mạch dao động bên trong 8284 có nhiệm vụ tạoxung chuẩn dùng làm tín hiệu đồng hồ cho toàn hệ thống
F/C: dùng để chọn nguồn tín hiệu chuẩn cho 8284, khi chân này ở mứccao thì xung đồng hồ bên ngoài sẽ được dùng làm xung nhịp cho 8284, ngược lại thìxung đồng hồ của mạch dao động bên trong dùng thạch anh sẽ được chọn làm xungnhịp
EFI: lối vào cho xung từ bộ dao động ngoài
CLK: xung nhịp
3
x clk
f
f với độ rỗng 543210% dàng cho thiết bị ngoại vi
OSC xung nhịp đã được khuếch đại có tần số bằng f x của bộ dao động
RES chân khởi động, nối với mạch RC để 8284 có thể tự khởi động khibật nguồn
Reset: nối vào Reset của 8086 và là tín hiệu khởi động lại cho toàn bộ hệthống
1 2 3 4 54321
6 7 8 9
18 17 16 154321
14 13 12 11 10
CSYNCPCLK
READY
CKLGND
ASYNCEFIF/COSCRESRESET
8284
Hình II.4: Sơ đồ chân 8284
Trang 33 CSYNC: lối vào cho xung đồng bộ chung khi trong hệ thống có các 8284dùng dao động ngoài tại chân EFI Khi dùng mạch dao động trong thì phải nối masschân này.
Hình trên biểu diễn các đường nối tín hiệu chính của 8284 Mạch 8284 nhậnxung khởi động từ bên ngoài thông qua mạch RC, khi bắt đầu bật điện hoặc xungkhởi động lại khi bấm công tắc K từ xung này 8284 có nhiệm vụ đưa ra xung khởiđộng đồng bộ cho CPU cùng với tất cả các thành phần khác của hệ thống
IV TỔNG QUAN VỀ BỘ NHỚ:
Trước khi nói về kết nối bộ nhớ với vi xử lý 8086 nhóm thực hiện nói qua vềbộ nhớ bán dẫn thường dùng để kết nối với vi xử lý Bao gồm:
- Bộ nhớ cố định ROM (Read Only Memory – Bộ nhớ chỉ đọc), thôngtin trong bộ nhớ sẽ không mất đi khi mạch bị mất điện nguồn cung cấp
- Bộ nhớ bán cố định EPROM (Erasable Programnable ROM) là bộ nhớROM có thể lập trình được bằng xung điện và xóa được bằng tia cực tím
- Bộ nhớ không cố định RAM (Random Access Memory – Bộ nhớ truycập ngẫu nhiên) Trong nội dung đề tài nhóm thực hiện dùng SRAM (Static RAM –RAM tĩnh, trong đó mỗi phần tử nhớ là một mạch lật hai trạng thái ổn định) vàDRAM (Dynamic RAM – RAM động, trong đó mỗi phần tử nhớ là một tụ điện rấtnhỏ được chế tạo bằng công nghệ MOS) để kết nối với vi xử lý
Mỗi bộ nhớ thường được chế tạo nên từ nhiều vi mạch nhớ Một vi mạch nhớthường có cấu trúc tiêu biểu như sau:
Theo sơ đồ trên ta thấy một vi mạch nhớ có các nhóm tín hiệu sau:
WR: Write – ghiWE: Write Enable-cho phép đọc
OE: Output Enable-đầu vào điều khiển
CS: Chip Select- chân chọn
RD: Read – đọc
Tín hiệu dữ liệu
CS OEChân chọn RD
Hình II.6: Sơ đồ một vi mạch nhớ
RESET
RESETF/
X1X2
RESK
Khởi động hệ thống
8284
Hình II.54321: Sơ đồ các đường tín hiệu chính của 8284
Trang 34- Nhóm tín hiệu địa chỉ:
Các tín hiệu địa chỉ có tác dụng chọn ra một ô nhớ (một từ nhớ) cụ thểđể ghi/đọc Các ô nhớ có độ dài khác nhau tùy theo nhà sản xuất: 1, 4, 8… bit Sốđường tín hiệu địa chỉ có liên quan đến dung lượng của mạch nhớ Với một mạchnhớ có n bit địa chỉ thì dung lượng của mạch nhớ đó là 2n từ nhớ
Thí dụ: với bộ nhớ 8 bit ta có n = 8 nên dung lượng bộ nhớ là 2543216 byte(28=2543216 byte), 16 bit nên n = 16 ta có dung lượng bộ nhớ là 6543215432136 byte…
- Nhóm tín hiệu dữ liệu:
Các tín hiệu dữ liệu thường là đầu ra đối với mạch ROM hoặc đầu vào/ra dữliệu chung đối với RAM Cùng tồn tại mạch nhớ RAM với đầu ra và đầu vào dữliệu riêng biệt, đối với RAM loại này khi dùng trong mạch bus dữ liệu người sửdụng phải nối hai đầu đó lại Các mạch nhớ thường có đầu ra dữ liệu kiểu ba trạngthái, số đường dữ liệu quyết định độ dài từ nhớ của mạch nhớ
- Nhóm tín hiệu chọn vi mạch:
Các tín hiệu chọn là CS (Chip Select) hoặc CE (Chip Enable) thường đượcdùng để chọn vi mạch nhớ cụ thể để ghi/đọc Tín hiệu chọn ở các mạch RAMthường là CS, còn ở các mạch ROM thường là CE Các tín hiệu chọn thường nốivới đầu ra của bộ giãi mã địa chỉ
Khi một mạch nhớ không được chọn thì bus dữ liệu của nó bị treo
- Nhóm tín hiệu điều khiển:
Tín hiệu điều khiển cần có trong tất cả các mạch nhớ Các mạch ROM thườngcó một đầu vào điều khiển OE (Output Enable) để cho phép dữ liệu được xuất rabus Một mạch nhớ không được mở bởi OE thì bus dữ liệu của nó bị treo
Một mạch RAM nếu chỉ có một tín hiệu điều khiển thì thường đó là R/W đểđiều khiển quá trình ghi đọc Nếu mạch nhớ RAM có hai tín hiệu điều khiển thìthường là WE (Write Enable) để điều khiển ghi và OE để điều khiển đọc Hai tínhiệu này phải ngược pha nhau để điều khiển việc đọc và ghi của mạch nhớ
Một thông số đặc trưng khác của bộ nhớ là thời gian truy xuất tac Nói chung,nó được định nghĩa như là thời gian kể từ có xung địa chỉ trên bus địa chỉ cho đếnkhi có dữ liệu ra ổn dịnh trên bus dữ liệu Thời gian truy xuất của bộ nhớ phụ thuộcrất nhiều vào công nghệ chế tạo của nó Các bộ nhớ làm bằng công nghệ lưỡngcực có thời gian truy xuất nhỏ (10 30 ns) còn bộ nhớ làm bằng công nghệ MOScó thời gian truy xuất lớn hơn nhiều ( > 1543210 ns)
Bộ nhớ được sử dụng trong việc kết nối kit 8086 là EPROM 2764:
Trang 35Các chế độ hoạt động của EPROM 2764:
VlXXVlX
VhXVlVhX
VccVcc21V21V21V
OutTắtInOutTắt
1 2 3 4 54321
6 7 8 9 10 11 12 13 14
28 27 26 254321
24 23 22 21 10 19 18 17 16 154321
OECS
CS từ bộ giãi mã
MEMR
Hình II.8: Mô hình kết nối bộ giải mã với bộ nhớ
Trang 362) RAM 62256:
Sơ đồ chân:
Bảng trạng thái làm việc:
Sơ đồ kết nối bộ nhớ RAM với vi xử lý:
Thực hiện việc giải mã bằng các vi mạch giãi mã: 74LS138, 74LS139,74LS1454321, 74LS1543214
Khi muốn có nhiều đầu ra chọn từ bộ giải mã mà vẫn dùng các mạch logicđơn giản thì việc thiết kế trở nên rất cồng kềnh do số lượng các mạch tăng lên.Trong trường hợp như vậy ta thường sử dụng các mạch giải mã có sẵn Một trongcác mạch giãi mã có sẵn hay sử dụng là các IC 74138, 74139, 741543214, 741454321…
1 2 3 4 54321
6 7 8 9 10 11 12 13 14
28 27 26 254321
24 23 22 21 10 19 18 17 16 154321
WEOE
MEMWMEMR
BHECS
EVEN
Hình II.10: Sơ đồ kết nối RAM với vi xử lý
Trang 37V IC GIẢI MÃ 74LS138:
1) Sơ đồ chân 74LS138:
Bảng trạng thái :
2) Mạch giãi mã cụ thể như sau:
1 2 3 4 54321
6 7 8
16 154321
14 13 12 11 10 9
ABCE1E2E3O7GND
O0O1O2O3O4O54321
Bus A Bus B
Trang 38Chương II
VI MẠCH GIÃI MÃ HIỂN THỊ 8279
_ oOo _
1) Sơ đồ khối:
- 8279 có một bộ nhớ RAM 16 byte dùng để hiển thị và một bộ nhớRAM dùng để chứa mã của phím nhấn Trong 8279 có một thanh ghi đệm dữ liệu,khi dữ liệu được vi xử lý gởi tới thì nó được chuyển tới thanh ghi này Ngoài ra
8279 còn chứa thanh ghi trạng thái để chỉ trạng thái của 8279 tại một thời điểm
register
8 byte FIFO sensor memonyStatus register
Scan counter
Hình III.1: Sơ đồ khối vi mạch giải mã hiển thị 8279
Trang 392) Sơ đồ chân 8279:
3) Sơ đồ logic:
1 2 3 4 54321
6 7 8 9 10 11 12 13 14 154321
16 17 18 19 20
40 39 38 37 36 354321
34 33 32 31 30 29 28 27 26 254321
24 23 22 21
CLKIRO
8279
Hình III.2: Sơ đồ chân 8279
CPU Interface
Display data
KeydataScan
DATARDWRCSA0RESET
D
RL0SHIFTCNTR/
RL7-STBSL0-SL3
OUT A0
A3-OUT B0
B3-Hình III.3: Sơ đồ Logic 8279
Trang 404) Tên các chân 8279:
DB7 – DB0 I/O Data Bus (Bi-direction)
8279 kết nối với vi xử lý thông qua 3 bus gồm bus dữ liệu D7-D0, bus địa chỉcó 1 đường A0, bus điều khiển RD\, WR\, CE\, Reset, IRQ, CLK giống như 80854321A.Tín hiệu chọn CE\ được kết nối với một ngã ra nào đó của IC giãi mã địa chỉ
IO hoặc IC giãi mã địa chỉ bộ nhớ Nếu xem 8279 là một bộ nhớ thì bộ nhớ này cóhai ô nhớ
II CẤU TRÚC PHẦN MỀM CỦA 8279:
IC 8279 có 1 đường địa chỉ A0 có chức năng lựa chọn như sau:
- A0 = 0: 8279 xem dữ liệu từ vi xử lý gởi đến để chọn dữ liệu hiển thị
- A0 = 1: 8279 xem dữ liệu từ vi xử lý gởi đến là dữ liệu của lệnh điềukhiển 8279
Các lệnh điều khiển 8279:
Keyboard/Display Mode Set:
DD = 00: hiển thị 8 ký tự – lối vào trái
DD = 01: hiển thị 16 ký tự – lối vào trái
DD = 10: hiển thị 8 ký tự – lối vào phải
DD = 11: hiển thị 16 ký tự – lối vào phải
Ba bit KKK :
000 endcode scan keyboard – 2 key lockout
001 decode scan keyboard – 2 key lockout